Commit | Line | Data |
---|---|---|
1da177e4 | 1 | /* |
04c7d957 | 2 | * unsigned long __xdiv64_32(unsigned long long n, unsigned long d); |
1da177e4 LT |
3 | */ |
4 | ||
5 | #include <linux/linkage.h> | |
6 | ||
7 | .text | |
8 | ENTRY(__xdiv64_32) | |
04c7d957 | 9 | #ifdef CONFIG_CPU_LITTLE_ENDIAN |
1da177e4 LT |
10 | mov r4, r0 |
11 | mov r5, r1 | |
12 | #else | |
13 | mov r4, r1 | |
14 | mov r5, r0 | |
15 | #endif | |
16 | cmp/hs r6, r1 | |
17 | bf.s 1f | |
18 | mov #0, r2 | |
19 | ||
20 | mov r1, r2 | |
21 | mov #0, r3 | |
22 | div0u | |
23 | .rept 32 | |
24 | rotcl r2 | |
25 | div1 r6, r3 | |
26 | .endr | |
27 | rotcl r2 | |
28 | mul.l r6, r2 | |
29 | sts macl, r3 | |
30 | sub r3, r1 | |
31 | 1: | |
32 | div0u | |
33 | .rept 32 | |
34 | rotcl r0 | |
35 | div1 r6, r1 | |
36 | .endr | |
04c7d957 | 37 | #ifdef CONFIG_CPU_LITTLE_ENDIAN |
1da177e4 LT |
38 | mov r2, r1 |
39 | rts | |
40 | rotcl r0 | |
41 | #else | |
42 | rotcl r0 | |
43 | mov r0, r1 | |
44 | rts | |
45 | mov r2, r0 | |
46 | #endif |