/* SPDX-License-Identifier: GPL-2.0 */ /* * unsigned long __xdiv64_32(unsigned long long n, unsigned long d); */ #include <linux/linkage.h> .text ENTRY(__xdiv64_32) #ifdef CONFIG_CPU_LITTLE_ENDIAN mov r4, r0 mov r5, r1 #else mov r4, r1 mov r5, r0 #endif cmp/hs r6, r1 bf.s 1f mov #0, r2 mov r1, r2 mov #0, r3 div0u .rept 32 rotcl r2 div1 r6, r3 .endr rotcl r2 mul.l r6, r2 sts macl, r3 sub r3, r1 1: div0u .rept 32 rotcl r0 div1 r6, r1 .endr #ifdef CONFIG_CPU_LITTLE_ENDIAN mov r2, r1 rts rotcl r0 #else rotcl r0 mov r0, r1 rts mov r2, r0 #endif