summaryrefslogtreecommitdiffstats
path: root/ArmPkg/Include/AsmMacroIoLib.inc
blob: 23f3c44d6bb789d2754776955efd196686c60007 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
;%HEADER%
;/** @file
;  Macros to work around lack of Apple support for LDR register, =expr
;
;  Copyright (c) 2009, Apple, Inc.  All rights reserved.
;
;**/


  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