]> git.proxmox.com Git - mirror_edk2.git/blame - ArmPkg/Include/AsmMacroIoLib.inc
Update for NetworkPkg.
[mirror_edk2.git] / ArmPkg / Include / AsmMacroIoLib.inc
CommitLineData
2ef2b01e
A
1;%HEADER%\r
2;/** @file\r
3; Macros to work around lack of Apple support for LDR register, =expr\r
4;\r
d6ebcab7
HT
5; Copyright (c) 2009, Apple Inc. All rights reserved.<BR>\r
6; This program and the accompanying materials \r
7; are licensed and made available under the terms and conditions of the BSD License \r
8; which accompanies this distribution. The full text of the license may be found at \r
9; http://opensource.org/licenses/bsd-license.php \r
10; \r
11; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
12; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
2ef2b01e
A
13;\r
14;**/\r
15\r
16\r
17 MACRO \r
18 MmioWrite32Macro $Address, $Data \r
19 ldr r1, = ($Address) \r
20 ldr r0, = ($Data) \r
21 str r0, [r1] \r
22 MEND\r
23 \r
24 MACRO \r
25 MmioOr32Macro $Address, $OrData \r
26 ldr r1, =($Address) \r
27 ldr r2, =($OrData) \r
28 ldr r0, [r1] \r
29 orr r0, r0, r2 \r
30 str r0, [r1] \r
31 MEND\r
32\r
33 MACRO \r
34 MmioAnd32Macro $Address, $AndData \r
35 ldr r1, =($Address) \r
36 ldr r2, =($AndData) \r
37 ldr r0, [r1] \r
38 and r0, r0, r2 \r
39 str r0, [r1] \r
40 MEND\r
41\r
42 MACRO \r
43 MmioAndThenOr32Macro $Address, $AndData, $OrData \r
44 ldr r1, =($Address) \r
45 ldr r0, [r1] \r
46 ldr r2, =($AndData) \r
47 and r0, r0, r2 \r
48 ldr r2, =($OrData) \r
49 orr r0, r0, r2 \r
50 str r0, [r1] \r
51 MEND\r
52\r
53 MACRO \r
54 MmioWriteFromReg32Macro $Address, $Reg \r
55 ldr r1, =($Address) \r
56 str $Reg, [r1] \r
57 MEND\r
58\r
59 MACRO \r
60 MmioRead32Macro $Address \r
61 ldr r1, =($Address) \r
62 ldr r0, [r1] \r
63 MEND\r
64\r
65 MACRO \r
66 MmioReadToReg32Macro $Address, $Reg \r
67 ldr r1, =($Address) \r
68 ldr $Reg, [r1] \r
69 MEND\r
70\r
71 MACRO \r
72 LoadConstantMacro $Data \r
73 ldr r0, =($Data) \r
74 MEND\r
75\r
76 MACRO \r
77 LoadConstantToRegMacro $Data, $Reg \r
78 ldr $Reg, =($Data) \r
79 MEND \r
2dbcb8f0 80 \r
81 MACRO\r
82 GetCorePositionInStack $Pos, $MpId, $Tmp\r
83 lsr $Pos, $MpId, #6\r
84 and $Tmp, $MpId, #3\r
85 add $Pos, $Pos, $Tmp\r
86 MEND\r
87 \r
88 ; The reserved place must be 8-bytes aligned for pushing 64-bit variable on the stack\r
89 MACRO\r
90 SetPrimaryStack $StackTop, $GlobalSize, $Tmp\r
91 and $Tmp, $GlobalSize, #7\r
92 rsbne $Tmp, $Tmp, #8\r
93 add $GlobalSize, $GlobalSize, $Tmp\r
94 sub sp, $StackTop, $GlobalSize\r
95 MEND\r
2ef2b01e
A
96\r
97 END\r