1 //------------------------------------------------------------------------------
3 // Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
4 // Copyright (c) 2018, Pete Batard. All rights reserved.<BR>
6 // This program and the accompanying materials
7 // are licensed and made available under the terms and conditions of the BSD License
8 // which accompanies this distribution. The full text of the license may be found at
9 // http://opensource.org/licenses/bsd-license.php
11 // THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
12 // WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
14 //------------------------------------------------------------------------------
18 EXPORT __aeabi_uidivmod
20 EXPORT __aeabi_idivmod
24 AREA Math, CODE, READONLY
36 RSBS r12, r1, r0, LSR #4
39 RSBS r12, r1, r0, LSR #8
85 BMI __arm_div_negative
86 RSBS r12, r1, r0, LSR #1
89 RSBS r12, r1, r0, LSR #4
91 RSBS r12, r1, r0, LSR #8
96 RSBS r12, r1, r0, LSR #7
97 SUBCS r0, r0, r1, LSL #7
99 RSBS r12, r1, r0,LSR #6
100 SUBCS r0, r0, r1, LSL #6
102 RSBS r12, r1, r0, LSR #5
103 SUBCS r0, r0, r1, LSL #5
105 RSBS r12, r1, r0, LSR #4
106 SUBCS r0, r0, r1, LSL #4
109 RSBS r12, r1, r0, LSR #3
110 SUBCS r0, r0, r1, LSL #3
112 RSBS r12, r1, r0, LSR #2
113 SUBCS r0, r0, r1, LSL #2
115 RSBS r12, r1, r0, LSR #1
116 SUBCS r0, r0, r1, LSL #1
124 ANDS r2, r1, #0x80000000
126 EORS r3, r2, r0, ASR #32
128 RSBS r12, r1, r0, LSR #4
130 RSBS r12, r1, r0, LSR #8
134 RSBS r12, r1, r0, LSR #8
135 ORR r2, r2, #0xfc000000
138 RSBS r12, r1, r0, LSR #8
139 ORR r2, r2, #0x3f00000
142 RSBS r12, r1, r0, LSR #8
144 ORRCS r2, r2, #0x3f00
151 RSBS r12, r1, r0, LSR #7
152 SUBCS r0, r0, r1, LSL #7
154 RSBS r12, r1, r0, LSR #6
155 SUBCS r0, r0, r1, LSL #6
157 RSBS r12, r1, r0, LSR #5
158 SUBCS r0, r0, r1, LSL #5
160 RSBS r12, r1, r0, LSR #4
161 SUBCS r0, r0, r1, LSL #4
164 RSBS r12, r1, r0, LSR #3
165 SUBCS r0, r0, r1, LSL #3
167 RSBS r12, r1, r0, LSR #2
168 SUBCS r0, r0, r1, LSL #2
171 RSBS r12, r1, r0, LSR #1
172 SUBCS r0, r0, r1, LSL #1
182 ; What to do about division by zero? For now, just return.