@ -196,6 +196,7 @@
ENTRY( _ _ u d i v s i 3 )
ENTRY( _ _ a e a b i _ u i d i v )
UNWIND( . f n s t a r t )
.pushsection .text .__udivsi3 , " ax"
subs r2 , r1 , #1
reteq l r
@ -219,12 +220,14 @@ UNWIND(.fnstart)
mov r0 , r0 , l s r r2
ret l r
.popsection
UNWIND( . f n e n d )
ENDPROC( _ _ u d i v s i 3 )
ENDPROC( _ _ a e a b i _ u i d i v )
ENTRY( _ _ u m o d s i 3 )
UNWIND( . f n s t a r t )
.pushsection .text .__umodsi3 , " ax"
subs r2 , r1 , #1 @ compare divisor with 1
bcc L d i v0
@ -238,12 +241,14 @@ UNWIND(.fnstart)
ret l r
.popsection
UNWIND( . f n e n d )
ENDPROC( _ _ u m o d s i 3 )
ENTRY( _ _ d i v s i 3 )
ENTRY( _ _ a e a b i _ i d i v )
UNWIND( . f n s t a r t )
.pushsection .text .__divsi3 , " ax"
cmp r1 , #0
eor i p , r0 , r1 @ save the sign of the result.
@ -280,12 +285,14 @@ UNWIND(.fnstart)
rsbmi r0 , r0 , #0
ret l r
.popsection
UNWIND( . f n e n d )
ENDPROC( _ _ d i v s i 3 )
ENDPROC( _ _ a e a b i _ i d i v )
ENTRY( _ _ m o d s i 3 )
UNWIND( . f n s t a r t )
.pushsection .text .__modsi3 , " ax"
cmp r1 , #0
beq L d i v0
@ -305,6 +312,7 @@ UNWIND(.fnstart)
rsbmi r0 , r0 , #0
ret l r
.popsection
UNWIND( . f n e n d )
ENDPROC( _ _ m o d s i 3 )
@ -313,6 +321,7 @@ ENDPROC(__modsi3)
ENTRY( _ _ a e a b i _ u i d i v m o d )
UNWIND( . f n s t a r t )
UNWIND( . s a v e { r0 , r1 , i p , l r } )
.pushsection .text .__aeabi_uidivmod , " ax"
stmfd s p ! , { r0 , r1 , i p , l r }
bl _ _ a e a b i _ u i d i v
@ -321,12 +330,15 @@ UNWIND(.save {r0, r1, ip, lr} )
sub r1 , r1 , r3
ret l r
.popsection
UNWIND( . f n e n d )
ENDPROC( _ _ a e a b i _ u i d i v m o d )
ENTRY( _ _ a e a b i _ i d i v m o d )
UNWIND( . f n s t a r t )
UNWIND( . s a v e { r0 , r1 , i p , l r } )
.pushsection .text .__aeabi_uidivmod , " ax"
stmfd s p ! , { r0 , r1 , i p , l r }
bl _ _ a e a b i _ i d i v
ldmfd s p ! , { r1 , r2 , i p , l r }
@ -334,6 +346,7 @@ UNWIND(.save {r0, r1, ip, lr} )
sub r1 , r1 , r3
ret l r
.popsection
UNWIND( . f n e n d )
ENDPROC( _ _ a e a b i _ i d i v m o d )
@ -343,16 +356,21 @@ Ldiv0:
UNWIND( . f n s t a r t )
UNWIND( . p a d #4 )
UNWIND( . s a v e { l r } )
.pushsection .text .Ldiv0 , " ax"
str l r , [ s p , #- 8 ] !
bl _ _ d i v0
mov r0 , #0 @ About as wrong as it could be.
ldr p c , [ s p ] , #8
.popsection
UNWIND( . f n e n d )
ENDPROC( L d i v0 )
/* Thumb-1 specialities */
# if d e f i n e d ( C O N F I G _ S Y S _ T H U M B _ B U I L D ) & & ! d e f i n e d ( C O N F I G _ H A S _ T H U M B 2 )
ENTRY( _ _ g n u _ t h u m b1 _ c a s e _ s q i )
.pushsection .text .__gnu_thumb1_case_sqi , " ax"
push { r1 }
mov r1 , l r
lsrs r1 , r1 , #1
@ -362,9 +380,11 @@ ENTRY(__gnu_thumb1_case_sqi)
add l r , l r , r1
pop { r1 }
bx l r
.popsection
ENDPROC( _ _ g n u _ t h u m b1 _ c a s e _ s q i )
ENTRY( _ _ g n u _ t h u m b1 _ c a s e _ u q i )
.pushsection .text .__gnu_thumb1_case_uqi , " ax"
push { r1 }
mov r1 , l r
lsrs r1 , r1 , #1
@ -374,9 +394,11 @@ ENTRY(__gnu_thumb1_case_uqi)
add l r , l r , r1
pop { r1 }
bx l r
.popsection
ENDPROC( _ _ g n u _ t h u m b1 _ c a s e _ u q i )
ENTRY( _ _ g n u _ t h u m b1 _ c a s e _ s h i )
.pushsection .text .__gnu_thumb1_case_shi , " ax"
push { r0 , r1 }
mov r1 , l r
lsrs r1 , r1 , #1
@ -387,9 +409,11 @@ ENTRY(__gnu_thumb1_case_shi)
add l r , l r , r1
pop { r0 , r1 }
bx l r
.popsection
ENDPROC( _ _ g n u _ t h u m b1 _ c a s e _ s h i )
ENTRY( _ _ g n u _ t h u m b1 _ c a s e _ u h i )
.pushsection .text .__gnu_thumb1_case_uhi , " ax"
push { r0 , r1 }
mov r1 , l r
lsrs r1 , r1 , #1
@ -400,5 +424,6 @@ ENTRY(__gnu_thumb1_case_uhi)
add l r , l r , r1
pop { r0 , r1 }
bx l r
.popsection
ENDPROC( _ _ g n u _ t h u m b1 _ c a s e _ u h i )
# endif