]> git.proxmox.com Git - mirror_edk2.git/blob - ArmPkg/Library/CompilerIntrinsicsLib/Arm/clzsi2.S
UefiCpuPkg: Move AsmRelocateApLoopStart from Mpfuncs.nasm to AmdSev.nasm
[mirror_edk2.git] / ArmPkg / Library / CompilerIntrinsicsLib / Arm / clzsi2.S
1 #------------------------------------------------------------------------------
2 #
3 # Copyright (c) 2008 - 2010, Apple Inc. All rights reserved.<BR>
4 #
5 # SPDX-License-Identifier: BSD-2-Clause-Patent
6 #
7 #------------------------------------------------------------------------------
8
9 #include <AsmMacroIoLib.h>
10
11 ASM_FUNC(__clzsi2)
12 @ frame_needed = 1, uses_anonymous_args = 0
13 stmfd sp!, {r7, lr}
14 add r7, sp, #0
15 movs r3, r0, lsr #16
16 movne r3, #16
17 moveq r3, #0
18 movne r9, #0
19 moveq r9, #16
20 mov r3, r0, lsr r3
21 tst r3, #65280
22 movne r0, #8
23 moveq r0, #0
24 movne lr, #0
25 moveq lr, #8
26 mov r3, r3, lsr r0
27 tst r3, #240
28 movne r0, #4
29 moveq r0, #0
30 movne ip, #0
31 moveq ip, #4
32 mov r3, r3, lsr r0
33 tst r3, #12
34 movne r0, #2
35 moveq r0, #0
36 movne r1, #0
37 moveq r1, #2
38 mov r2, r3, lsr r0
39 add r3, lr, r9
40 add r0, r3, ip
41 add r1, r0, r1
42 mov r0, r2, lsr #1
43 eor r0, r0, #1
44 ands r0, r0, #1
45 mvnne r0, #0
46 rsb r3, r2, #2
47 and r0, r0, r3
48 add r0, r1, r0
49 ldmfd sp!, {r7, pc}