]> git.proxmox.com Git - mirror_edk2.git/blob - ArmPkg/Library/CompilerIntrinsicsLib/Arm/udivsi3.S
UefiCpuPkg: Move AsmRelocateApLoopStart from Mpfuncs.nasm to AmdSev.nasm
[mirror_edk2.git] / ArmPkg / Library / CompilerIntrinsicsLib / Arm / udivsi3.S
1 #------------------------------------------------------------------------------
2 #
3 # Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
4 #
5 # SPDX-License-Identifier: BSD-2-Clause-Patent
6 #
7 #------------------------------------------------------------------------------
8
9 #include <AsmMacroIoLib.h>
10
11 .syntax unified
12
13 ASM_FUNC(__udivsi3)
14 cmp r1, #0
15 cmpne r0, #0
16 stmfd sp!, {r4, r5, r7, lr}
17 add r7, sp, #8
18 beq L2
19 clz r2, r1
20 clz r3, r0
21 rsb r3, r3, r2
22 cmp r3, #31
23 bhi L2
24 ldmfdeq sp!, {r4, r5, r7, pc}
25 add r5, r3, #1
26 rsb r3, r3, #31
27 mov lr, #0
28 mov r2, r0, asl r3
29 mov ip, r0, lsr r5
30 mov r4, lr
31 b L8
32 L9:
33 mov r0, r2, lsr #31
34 orr ip, r0, ip, asl #1
35 orr r2, r3, lr
36 rsb r3, ip, r1
37 sub r3, r3, #1
38 and r0, r1, r3, asr #31
39 mov lr, r3, lsr #31
40 rsb ip, r0, ip
41 add r4, r4, #1
42 L8:
43 cmp r4, r5
44 mov r3, r2, asl #1
45 bne L9
46 orr r0, r3, lr
47 ldmfd sp!, {r4, r5, r7, pc}
48 L2:
49 mov r0, #0
50 ldmfd sp!, {r4, r5, r7, pc}
51