Linux Audio

Check our new training course

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