1/* 2 * unsigned long __xdiv64_32(unsigned long long n, unsigned long d); 3 */ 4 5#include <linux/linkage.h> 6 7.text 8ENTRY(__xdiv64_32) 9#ifdef CONFIG_CPU_LITTLE_ENDIAN 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 311: 32 div0u 33 .rept 32 34 rotcl r0 35 div1 r6, r1 36 .endr 37#ifdef CONFIG_CPU_LITTLE_ENDIAN 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 47