Blame view

kernel/linux-imx6_3.14.28/arch/sh/lib/div64.S 547 Bytes
6b13f685e   김민수   BSP 최초 추가
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
  /*	
   * 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