ENTRY_NP(__umodsi3)
stmfd sp!, {lr}
sub sp, sp,
bl .L_udivide
add sp, sp,
mov r0, r1
ldmfd sp!, {pc}
END(__umodsi3)
ENTRY_NP(__modsi3)
stmfd sp!, {lr}
sub sp, sp,
bl .L_divide
add sp, sp,
mov r0, r1
ldmfd sp!, {pc}
.L_overflow:
mov r0,
bl PIC_SYM(_C_LABEL(raise), PLT)
mov r0,
mvn r0,
RET
END(__modsi3)
ENTRY_NP(__udivsi3)
EENTRY_NP(__aeabi_uidiv)
EENTRY_NP(__aeabi_uidivmod)
.L_udivide:
eor r0, r1, r0
eor r1, r0, r1
eor r0, r1, r0
cmp r0,
bcc .L_overflow
beq .L_divide_l0
mov ip,
movs r1, r1
bpl .L_divide_l1
orr ip, ip,
movs r1, r1, lsr
orrcs ip, ip,
b .L_divide_l1
.L_divide_l0:
mov r0, r1
mov r1,
RET
EEND(__aeabi_uidiv)
EEND(__aeabi_uidivmod)
END(__udivsi3)
ENTRY_NP(__divsi3)
EENTRY_NP(__aeabi_idiv)
EENTRY_NP(__aeabi_idivmod)
.L_divide:
eor r0, r1, r0
eor r1, r0, r1
eor r0, r1, r0
cmp r0,
bcc .L_overflow
beq .L_divide_l0
ands ip, r0,
rsbmi r0, r0,
ands r2, r1,
eor ip, ip, r2
rsbmi r1, r1,
orr ip, r2, ip, lsr
.L_divide_l1:
mov r2,
mov r3,
movs r1,r1
bpl .L_old_code
tst r1, r0
bmi .L_divide_b1
tst r1, r0, lsl
bmi .L_divide_b2
tst r1, r0, lsl
bmi .L_divide_b3
tst r1, r0, lsl
bmi .L_divide_b4
tst r1, r0, lsl
bmi .L_divide_b5
tst r1, r0, lsl
bmi .L_divide_b6
tst r1, r0, lsl
bmi .L_divide_b7
tst r1, r0, lsl
bmi .L_divide_b8
tst r1, r0, lsl
bmi .L_divide_b9
tst r1, r0, lsl
bmi .L_divide_b10
tst r1, r0, lsl
bmi .L_divide_b11
tst r1, r0, lsl
bmi .L_divide_b12
tst r1, r0, lsl
bmi .L_divide_b13
tst r1, r0, lsl
bmi .L_divide_b14
tst r1, r0, lsl
bmi .L_divide_b15
tst r1, r0, lsl
bmi .L_divide_b16
tst r1, r0, lsl
bmi .L_divide_b17
tst r1, r0, lsl
bmi .L_divide_b18
tst r1, r0, lsl
bmi .L_divide_b19
tst r1, r0, lsl
bmi .L_divide_b20
tst r1, r0, lsl
bmi .L_divide_b21
tst r1, r0, lsl
bmi .L_divide_b22
tst r1, r0, lsl
bmi .L_divide_b23
tst r1, r0, lsl
bmi .L_divide_b24
tst r1, r0, lsl
bmi .L_divide_b25
tst r1, r0, lsl
bmi .L_divide_b26
tst r1, r0, lsl
bmi .L_divide_b27
tst r1, r0, lsl
bmi .L_divide_b28
tst r1, r0, lsl
bmi .L_divide_b29
tst r1, r0, lsl
bmi .L_divide_b30
tst r1, r0, lsl
bmi .L_divide_b31
b .L_divide_b32
.L_old_code:
cmp r1, r0
bcc .L_divide_b0
cmp r1, r0, lsl
bcc .L_divide_b1
cmp r1, r0, lsl
bcc .L_divide_b2
cmp r1, r0, lsl
bcc .L_divide_b3
cmp r1, r0, lsl
bcc .L_divide_b4
cmp r1, r0, lsl
bcc .L_divide_b5
cmp r1, r0, lsl
bcc .L_divide_b6
cmp r1, r0, lsl
bcc .L_divide_b7
cmp r1, r0, lsl
bcc .L_divide_b8
cmp r1, r0, lsl
bcc .L_divide_b9
cmp r1, r0, lsl
bcc .L_divide_b10
cmp r1, r0, lsl
bcc .L_divide_b11
cmp r1, r0, lsl
bcc .L_divide_b12
cmp r1, r0, lsl
bcc .L_divide_b13
cmp r1, r0, lsl
bcc .L_divide_b14
cmp r1, r0, lsl
bcc .L_divide_b15
cmp r1, r0, lsl
bcc .L_divide_b16
cmp r1, r0, lsl
bcc .L_divide_b17
cmp r1, r0, lsl
bcc .L_divide_b18
cmp r1, r0, lsl
bcc .L_divide_b19
cmp r1, r0, lsl
bcc .L_divide_b20
cmp r1, r0, lsl
bcc .L_divide_b21
cmp r1, r0, lsl
bcc .L_divide_b22
cmp r1, r0, lsl
bcc .L_divide_b23
cmp r1, r0, lsl
bcc .L_divide_b24
cmp r1, r0, lsl
bcc .L_divide_b25
cmp r1, r0, lsl
bcc .L_divide_b26
cmp r1, r0, lsl
bcc .L_divide_b27
cmp r1, r0, lsl
bcc .L_divide_b28
cmp r1, r0, lsl
bcc .L_divide_b29
cmp r1, r0, lsl
bcc .L_divide_b30
.L_divide_b32:
cmp r1, r0, lsl
subhs r1, r1,r0, lsl
addhs r3, r3,r2, lsl
.L_divide_b31:
cmp r1, r0, lsl
subhs r1, r1,r0, lsl
addhs r3, r3,r2, lsl
.L_divide_b30:
cmp r1, r0, lsl
subhs r1, r1,r0, lsl
addhs r3, r3,r2, lsl
.L_divide_b29:
cmp r1, r0, lsl
subhs r1, r1,r0, lsl
addhs r3, r3,r2, lsl
.L_divide_b28:
cmp r1, r0, lsl
subhs r1, r1,r0, lsl
addhs r3, r3,r2, lsl
.L_divide_b27:
cmp r1, r0, lsl
subhs r1, r1,r0, lsl
addhs r3, r3,r2, lsl
.L_divide_b26:
cmp r1, r0, lsl
subhs r1, r1,r0, lsl
addhs r3, r3,r2, lsl
.L_divide_b25:
cmp r1, r0, lsl
subhs r1, r1,r0, lsl
addhs r3, r3,r2, lsl
.L_divide_b24:
cmp r1, r0, lsl
subhs r1, r1,r0, lsl
addhs r3, r3,r2, lsl
.L_divide_b23:
cmp r1, r0, lsl
subhs r1, r1,r0, lsl
addhs r3, r3,r2, lsl
.L_divide_b22:
cmp r1, r0, lsl
subhs r1, r1,r0, lsl
addhs r3, r3,r2, lsl
.L_divide_b21:
cmp r1, r0, lsl
subhs r1, r1,r0, lsl
addhs r3, r3,r2, lsl
.L_divide_b20:
cmp r1, r0, lsl
subhs r1, r1,r0, lsl
addhs r3, r3,r2, lsl
.L_divide_b19:
cmp r1, r0, lsl
subhs r1, r1,r0, lsl
addhs r3, r3,r2, lsl
.L_divide_b18:
cmp r1, r0, lsl
subhs r1, r1,r0, lsl
addhs r3, r3,r2, lsl
.L_divide_b17:
cmp r1, r0, lsl
subhs r1, r1,r0, lsl
addhs r3, r3,r2, lsl
.L_divide_b16:
cmp r1, r0, lsl
subhs r1, r1,r0, lsl
addhs r3, r3,r2, lsl
.L_divide_b15:
cmp r1, r0, lsl
subhs r1, r1,r0, lsl
addhs r3, r3,r2, lsl
.L_divide_b14:
cmp r1, r0, lsl
subhs r1, r1,r0, lsl
addhs r3, r3,r2, lsl
.L_divide_b13:
cmp r1, r0, lsl
subhs r1, r1,r0, lsl
addhs r3, r3,r2, lsl
.L_divide_b12:
cmp r1, r0, lsl
subhs r1, r1,r0, lsl
addhs r3, r3,r2, lsl
.L_divide_b11:
cmp r1, r0, lsl
subhs r1, r1,r0, lsl
addhs r3, r3,r2, lsl
.L_divide_b10:
cmp r1, r0, lsl
subhs r1, r1,r0, lsl
addhs r3, r3,r2, lsl
.L_divide_b9:
cmp r1, r0, lsl
subhs r1, r1,r0, lsl
addhs r3, r3,r2, lsl
.L_divide_b8:
cmp r1, r0, lsl
subhs r1, r1,r0, lsl
addhs r3, r3,r2, lsl
.L_divide_b7:
cmp r1, r0, lsl
subhs r1, r1,r0, lsl
addhs r3, r3,r2, lsl
.L_divide_b6:
cmp r1, r0, lsl
subhs r1, r1,r0, lsl
addhs r3, r3,r2, lsl
.L_divide_b5:
cmp r1, r0, lsl
subhs r1, r1,r0, lsl
addhs r3, r3,r2, lsl
.L_divide_b4:
cmp r1, r0, lsl
subhs r1, r1,r0, lsl
addhs r3, r3,r2, lsl
.L_divide_b3:
cmp r1, r0, lsl
subhs r1, r1,r0, lsl
addhs r3, r3,r2, lsl
.L_divide_b2:
cmp r1, r0, lsl
subhs r1, r1,r0, lsl
addhs r3, r3,r2, lsl
.L_divide_b1:
cmp r1, r0
subhs r1, r1, r0
addhs r3, r3, r2
.L_divide_b0:
tst ip,
bne .L_udivide_l1
mov r0, r3
cmp ip,
rsbmi r1, r1,
movs ip, ip, lsl
bicmi r0, r0,
rsbmi r0, r0,
RET
.L_udivide_l1:
tst ip,
mov r1, r1, lsl
orrne r1, r1,
mov r3, r3, lsl
cmp r1, r0
subhs r1, r1, r0
addhs r3, r3, r2
mov r0, r3
RET
EEND(__aeabi_idiv)
EEND(__aeabi_idivmod)
END(__divsi3)