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