]> git.proxmox.com Git - mirror_edk2.git/blame - ArmPkg/Include/AsmMacroIoLib.h
ArmPkg: Fix Ecc error 8003
[mirror_edk2.git] / ArmPkg / Include / AsmMacroIoLib.h
CommitLineData
2ef2b01e
A
1/** @file\r
2 Macros to work around lack of Apple support for LDR register, =expr\r
3\r
d6ebcab7 4 Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>\r
1377db63 5 Copyright (c) 2011-2012, ARM Ltd. All rights reserved.<BR>\r
d2d0e27c 6 Copyright (c) 2016, Linaro Ltd. All rights reserved.<BR>\r
2ef2b01e 7\r
4059386c 8 SPDX-License-Identifier: BSD-2-Clause-Patent\r
2ef2b01e
A
9\r
10**/\r
11\r
12\r
cc15a619
PG
13#ifndef ASM_MACRO_IO_LIB_H_\r
14#define ASM_MACRO_IO_LIB_H_\r
2ef2b01e 15\r
d2d0e27c
AB
16#define _ASM_FUNC(Name, Section) \\r
17 .global Name ; \\r
18 .section #Section, "ax" ; \\r
19 .type Name, %function ; \\r
493b4045 20 .p2align 2 ; \\r
d2d0e27c
AB
21 Name:\r
22\r
23#define ASM_FUNC(Name) _ASM_FUNC(ASM_PFX(Name), .text. ## Name)\r
24\r
25#define MOV32(Reg, Val) \\r
26 movw Reg, #(Val) & 0xffff ; \\r
27 movt Reg, #(Val) >> 16\r
28\r
29#define ADRL(Reg, Sym) \\r
30 movw Reg, #:lower16:(Sym) - (. + 16) ; \\r
31 movt Reg, #:upper16:(Sym) - (. + 12) ; \\r
32 add Reg, Reg, pc\r
33\r
34#define LDRL(Reg, Sym) \\r
35 movw Reg, #:lower16:(Sym) - (. + 16) ; \\r
36 movt Reg, #:upper16:(Sym) - (. + 12) ; \\r
37 ldr Reg, [pc, Reg]\r
38\r
cc15a619 39#endif // ASM_MACRO_IO_LIB_H_\r