1 //------------------------------------------------------------------------------
3 // Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
4 // Copyright (c) 2018, Pete Batard. All rights reserved.<BR>
6 // SPDX-License-Identifier: BSD-2-Clause-Patent
8 //------------------------------------------------------------------------------
12 EXPORT __aeabi_uidivmod
14 EXPORT __aeabi_idivmod
18 AREA Math, CODE, READONLY
30 RSBS r12, r1, r0, LSR #4
33 RSBS r12, r1, r0, LSR #8
79 BMI __arm_div_negative
80 RSBS r12, r1, r0, LSR #1
83 RSBS r12, r1, r0, LSR #4
85 RSBS r12, r1, r0, LSR #8
90 RSBS r12, r1, r0, LSR #7
91 SUBCS r0, r0, r1, LSL #7
93 RSBS r12, r1, r0,LSR #6
94 SUBCS r0, r0, r1, LSL #6
96 RSBS r12, r1, r0, LSR #5
97 SUBCS r0, r0, r1, LSL #5
99 RSBS r12, r1, r0, LSR #4
100 SUBCS r0, r0, r1, LSL #4
103 RSBS r12, r1, r0, LSR #3
104 SUBCS r0, r0, r1, LSL #3
106 RSBS r12, r1, r0, LSR #2
107 SUBCS r0, r0, r1, LSL #2
109 RSBS r12, r1, r0, LSR #1
110 SUBCS r0, r0, r1, LSL #1
118 ANDS r2, r1, #0x80000000
120 EORS r3, r2, r0, ASR #32
122 RSBS r12, r1, r0, LSR #4
124 RSBS r12, r1, r0, LSR #8
128 RSBS r12, r1, r0, LSR #8
129 ORR r2, r2, #0xfc000000
132 RSBS r12, r1, r0, LSR #8
133 ORR r2, r2, #0x3f00000
136 RSBS r12, r1, r0, LSR #8
138 ORRCS r2, r2, #0x3f00
145 RSBS r12, r1, r0, LSR #7
146 SUBCS r0, r0, r1, LSL #7
148 RSBS r12, r1, r0, LSR #6
149 SUBCS r0, r0, r1, LSL #6
151 RSBS r12, r1, r0, LSR #5
152 SUBCS r0, r0, r1, LSL #5
154 RSBS r12, r1, r0, LSR #4
155 SUBCS r0, r0, r1, LSL #4
158 RSBS r12, r1, r0, LSR #3
159 SUBCS r0, r0, r1, LSL #3
161 RSBS r12, r1, r0, LSR #2
162 SUBCS r0, r0, r1, LSL #2
165 RSBS r12, r1, r0, LSR #1
166 SUBCS r0, r0, r1, LSL #1
176 ; What to do about division by zero? For now, just return.