]> git.proxmox.com Git - mirror_edk2.git/blame - ArmPkg/Library/CompilerIntrinsicsLib/Arm/udivmoddi4.S
UefiCpuPkg: Move AsmRelocateApLoopStart from Mpfuncs.nasm to AmdSev.nasm
[mirror_edk2.git] / ArmPkg / Library / CompilerIntrinsicsLib / Arm / udivmoddi4.S
CommitLineData
3402aac7 1#------------------------------------------------------------------------------\r
1e57a462 2#\r
3# Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>\r
4#\r
4059386c 5# SPDX-License-Identifier: BSD-2-Clause-Patent\r
1e57a462 6#\r
7#------------------------------------------------------------------------------\r
8\r
903e3124
AB
9#include <AsmMacroIoLib.h>\r
10\r
1a0db791 11 .syntax unified\r
3402aac7 12\r
903e3124 13ASM_FUNC(__udivmoddi4)\r
1e57a462 14 stmfd sp!, {r4, r5, r6, r7, lr}\r
15 add r7, sp, #12\r
16 stmfd sp!, {r10, r11}\r
17 sub sp, sp, #20\r
18 stmia sp, {r2-r3}\r
19 ldr r6, [sp, #48]\r
20 orrs r2, r2, r3\r
21 mov r10, r0\r
22 mov r11, r1\r
23 beq L2\r
24 subs ip, r1, #0\r
25 bne L4\r
26 cmp r3, #0\r
27 bne L6\r
28 cmp r6, #0\r
29 beq L8\r
30 mov r1, r2\r
31 bl ASM_PFX(__umodsi3)\r
32 mov r1, #0\r
33 stmia r6, {r0-r1}\r
34L8:\r
35 ldr r1, [sp, #0]\r
36 mov r0, r10\r
37 b L45\r
38L6:\r
39 cmp r6, #0\r
40 movne r1, #0\r
1a0db791 41 stmiane r6, {r0-r1}\r
1e57a462 42 b L2\r
43L4:\r
44 ldr r1, [sp, #0]\r
45 cmp r1, #0\r
46 bne L12\r
47 ldr r2, [sp, #4]\r
48 cmp r2, #0\r
49 bne L14\r
50 cmp r6, #0\r
51 beq L16\r
52 mov r1, r2\r
53 mov r0, r11\r
54 bl ASM_PFX(__umodsi3)\r
55 mov r1, #0\r
56 stmia r6, {r0-r1}\r
57L16:\r
58 ldr r1, [sp, #4]\r
59 mov r0, r11\r
60L45:\r
61 bl ASM_PFX(__udivsi3)\r
62L46:\r
63 mov r10, r0\r
64 mov r11, #0\r
65 b L10\r
66L14:\r
67 subs r1, r0, #0\r
68 bne L18\r
69 cmp r6, #0\r
70 beq L16\r
71 ldr r1, [sp, #4]\r
72 mov r0, r11\r
73 bl ASM_PFX(__umodsi3)\r
74 mov r4, r10\r
75 mov r5, r0\r
76 stmia r6, {r4-r5}\r
77 b L16\r
78L18:\r
79 sub r3, r2, #1\r
80 tst r2, r3\r
81 bne L22\r
82 cmp r6, #0\r
83 movne r4, r0\r
84 andne r5, ip, r3\r
1a0db791 85 stmiane r6, {r4-r5}\r
1e57a462 86L24:\r
87 rsb r3, r2, #0\r
88 and r3, r2, r3\r
89 clz r3, r3\r
90 rsb r3, r3, #31\r
91 mov r0, ip, lsr r3\r
92 b L46\r
93L22:\r
94 clz r2, r2\r
95 clz r3, ip\r
96 rsb r3, r3, r2\r
97 cmp r3, #30\r
98 bhi L48\r
99 rsb r2, r3, #31\r
100 add lr, r3, #1\r
101 mov r3, r1, asl r2\r
102 str r3, [sp, #12]\r
103 mov r3, r1, lsr lr\r
104 ldr r0, [sp, #0]\r
105 mov r5, ip, lsr lr\r
106 orr r4, r3, ip, asl r2\r
107 str r0, [sp, #8]\r
108 b L29\r
109L12:\r
110 ldr r3, [sp, #4]\r
111 cmp r3, #0\r
112 bne L30\r
113 sub r3, r1, #1\r
114 tst r1, r3\r
115 bne L32\r
116 cmp r6, #0\r
117 andne r3, r3, r0\r
118 movne r2, r3\r
119 movne r3, #0\r
1a0db791 120 stmiane r6, {r2-r3}\r
1e57a462 121L34:\r
122 cmp r1, #1\r
123 beq L10\r
124 rsb r3, r1, #0\r
125 and r3, r1, r3\r
126 clz r3, r3\r
127 rsb r0, r3, #31\r
128 mov r1, ip, lsr r0\r
129 rsb r3, r0, #32\r
130 mov r0, r10, lsr r0\r
131 orr ip, r0, ip, asl r3\r
132 str r1, [sp, #12]\r
133 str ip, [sp, #8]\r
134 ldrd r10, [sp, #8]\r
135 b L10\r
136L32:\r
137 clz r2, r1\r
138 clz r3, ip\r
139 rsb r3, r3, r2\r
140 rsb r4, r3, #31\r
141 mov r2, r0, asl r4\r
142 mvn r1, r3\r
143 and r2, r2, r1, asr #31\r
144 add lr, r3, #33\r
145 str r2, [sp, #8]\r
146 add r2, r3, #1\r
147 mov r3, r3, asr #31\r
148 and r0, r3, r0, asl r1\r
149 mov r3, r10, lsr r2\r
150 orr r3, r3, ip, asl r4\r
151 and r3, r3, r1, asr #31\r
152 orr r0, r0, r3\r
153 mov r3, ip, lsr lr\r
154 str r0, [sp, #12]\r
155 mov r0, r10, lsr lr\r
156 and r5, r3, r2, asr #31\r
157 rsb r3, lr, #31\r
158 mov r3, r3, asr #31\r
159 orr r0, r0, ip, asl r1\r
160 and r3, r3, ip, lsr r2\r
161 and r0, r0, r2, asr #31\r
162 orr r4, r3, r0\r
163 b L29\r
164L30:\r
165 clz r2, r3\r
166 clz r3, ip\r
167 rsb r3, r3, r2\r
168 cmp r3, #31\r
169 bls L37\r
170L48:\r
171 cmp r6, #0\r
1a0db791 172 stmiane r6, {r10-r11}\r
1e57a462 173 b L2\r
174L37:\r
175 rsb r1, r3, #31\r
176 mov r0, r0, asl r1\r
177 add lr, r3, #1\r
178 mov r2, #0\r
179 str r0, [sp, #12]\r
180 mov r0, r10, lsr lr\r
181 str r2, [sp, #8]\r
182 sub r2, r3, #31\r
183 and r0, r0, r2, asr #31\r
184 mov r3, ip, lsr lr\r
185 orr r4, r0, ip, asl r1\r
186 and r5, r3, r2, asr #31\r
187L29:\r
188 mov ip, #0\r
189 mov r10, ip\r
190 b L40\r
191L41:\r
192 ldr r1, [sp, #12]\r
193 ldr r2, [sp, #8]\r
194 mov r3, r4, lsr #31\r
195 orr r5, r3, r5, asl #1\r
196 mov r3, r1, lsr #31\r
197 orr r4, r3, r4, asl #1\r
198 mov r3, r2, lsr #31\r
199 orr r0, r3, r1, asl #1\r
200 orr r1, ip, r2, asl #1\r
201 ldmia sp, {r2-r3}\r
202 str r0, [sp, #12]\r
203 subs r2, r2, r4\r
204 sbc r3, r3, r5\r
205 str r1, [sp, #8]\r
206 subs r0, r2, #1\r
207 sbc r1, r3, #0\r
208 mov r2, r1, asr #31\r
209 ldmia sp, {r0-r1}\r
210 mov r3, r2\r
211 and ip, r2, #1\r
212 and r3, r3, r1\r
213 and r2, r2, r0\r
214 subs r4, r4, r2\r
215 sbc r5, r5, r3\r
216 add r10, r10, #1\r
217L40:\r
218 cmp r10, lr\r
219 bne L41\r
220 ldrd r0, [sp, #8]\r
221 adds r0, r0, r0\r
222 adc r1, r1, r1\r
223 cmp r6, #0\r
224 orr r10, r0, ip\r
225 mov r11, r1\r
1a0db791 226 stmiane r6, {r4-r5}\r
1e57a462 227 b L10\r
228L2:\r
229 mov r10, #0\r
230 mov r11, #0\r
231L10:\r
232 mov r0, r10\r
233 mov r1, r11\r
234 sub sp, r7, #20\r
235 ldmfd sp!, {r10, r11}\r
236 ldmfd sp!, {r4, r5, r6, r7, pc}\r