--- /dev/null
+;%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