]> git.proxmox.com Git - mirror_edk2.git/blobdiff - ArmPkg/Include/AsmMacroIoLib.inc
Adding support for BeagleBoard.
[mirror_edk2.git] / ArmPkg / Include / AsmMacroIoLib.inc
diff --git a/ArmPkg/Include/AsmMacroIoLib.inc b/ArmPkg/Include/AsmMacroIoLib.inc
new file mode 100644 (file)
index 0000000..23f3c44
--- /dev/null
@@ -0,0 +1,74 @@
+;%HEADER%\r
+;/** @file\r
+;  Macros to work around lack of Apple support for LDR register, =expr\r
+;\r
+;  Copyright (c) 2009, Apple, Inc.  All rights reserved.\r
+;\r
+;**/\r
+\r
+\r
+  MACRO \r
+  MmioWrite32Macro $Address, $Data \r
+  ldr  r1, = ($Address)                \r
+  ldr  r0, = ($Data)                 \r
+  str  r0, [r1]  \r
+  MEND\r
+    \r
+  MACRO \r
+  MmioOr32Macro $Address, $OrData \r
+  ldr  r1, =($Address)               \r
+  ldr  r2, =($OrData)                \r
+  ldr  r0, [r1]                      \r
+  orr  r0, r0, r2                    \r
+  str  r0, [r1] \r
+  MEND\r
+\r
+  MACRO \r
+  MmioAnd32Macro $Address, $AndData \r
+  ldr  r1, =($Address)                 \r
+  ldr  r2, =($AndData)                 \r
+  ldr  r0, [r1]                        \r
+  and  r0, r0, r2                      \r
+  str  r0, [r1] \r
+  MEND\r
+\r
+  MACRO \r
+  MmioAndThenOr32Macro $Address, $AndData, $OrData \r
+  ldr  r1, =($Address)                         \r
+  ldr  r0, [r1]                                        \r
+  ldr  r2, =($AndData)                                 \r
+  and  r0, r0, r2                                      \r
+  ldr  r2, =($OrData)                                  \r
+  orr  r0, r0, r2                                      \r
+  str  r0, [r1]          \r
+  MEND\r
+\r
+  MACRO \r
+  MmioWriteFromReg32Macro $Address, $Reg \r
+  ldr  r1, =($Address)   \r
+  str  $Reg, [r1]        \r
+  MEND\r
+\r
+  MACRO \r
+  MmioRead32Macro $Address   \r
+  ldr  r1, =($Address)         \r
+  ldr  r0, [r1]   \r
+  MEND\r
+\r
+  MACRO \r
+  MmioReadToReg32Macro $Address, $Reg \r
+  ldr  r1, =($Address)                   \r
+  ldr  $Reg, [r1]        \r
+  MEND\r
+\r
+  MACRO \r
+  LoadConstantMacro $Data \r
+  ldr  r0, =($Data) \r
+  MEND\r
+\r
+  MACRO \r
+  LoadConstantToRegMacro $Data, $Reg \r
+  ldr  $Reg, =($Data) \r
+  MEND \r
+\r
+  END\r