;%HEADER% | |
;/** @file | |
; Macros to work around lack of Apple support for LDR register, =expr | |
; | |
; Copyright (c) 2009, Apple Inc. All rights reserved.<BR> | |
; This program and the accompanying materials | |
; are licensed and made available under the terms and conditions of the BSD License | |
; which accompanies this distribution. The full text of the license may be found at | |
; http://opensource.org/licenses/bsd-license.php | |
; | |
; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, | |
; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. | |
; | |
;**/ | |
MACRO | |
MmioWrite32Macro $Address, $Data | |
ldr r1, = ($Address) | |
ldr r0, = ($Data) | |
str r0, [r1] | |
MEND | |
MACRO | |
MmioOr32Macro $Address, $OrData | |
ldr r1, =($Address) | |
ldr r2, =($OrData) | |
ldr r0, [r1] | |
orr r0, r0, r2 | |
str r0, [r1] | |
MEND | |
MACRO | |
MmioAnd32Macro $Address, $AndData | |
ldr r1, =($Address) | |
ldr r2, =($AndData) | |
ldr r0, [r1] | |
and r0, r0, r2 | |
str r0, [r1] | |
MEND | |
MACRO | |
MmioAndThenOr32Macro $Address, $AndData, $OrData | |
ldr r1, =($Address) | |
ldr r0, [r1] | |
ldr r2, =($AndData) | |
and r0, r0, r2 | |
ldr r2, =($OrData) | |
orr r0, r0, r2 | |
str r0, [r1] | |
MEND | |
MACRO | |
MmioWriteFromReg32Macro $Address, $Reg | |
ldr r1, =($Address) | |
str $Reg, [r1] | |
MEND | |
MACRO | |
MmioRead32Macro $Address | |
ldr r1, =($Address) | |
ldr r0, [r1] | |
MEND | |
MACRO | |
MmioReadToReg32Macro $Address, $Reg | |
ldr r1, =($Address) | |
ldr $Reg, [r1] | |
MEND | |
MACRO | |
LoadConstantMacro $Data | |
ldr r0, =($Data) | |
MEND | |
MACRO | |
LoadConstantToRegMacro $Data, $Reg | |
ldr $Reg, =($Data) | |
MEND | |
END |