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