]> git.proxmox.com Git - mirror_edk2.git/blob - MdePkg/Library/BaseLib/Ipf/AccessGcr.s
Update the copyright notice format
[mirror_edk2.git] / MdePkg / Library / BaseLib / Ipf / AccessGcr.s
1 /// @file
2 /// IPF specific Global Control Registers accessing functions
3 ///
4 /// Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>
5 /// This program and the accompanying materials
6 /// are licensed and made available under the terms and conditions of the BSD License
7 /// which accompanies this distribution. The full text of the license may be found at
8 /// http://opensource.org/licenses/bsd-license.php
9 ///
10 /// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 /// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
12 ///
13 /// Module Name: AccessGcr.s
14 ///
15 ///
16
17 //---------------------------------------------------------------------------------
18 //++
19 // AsmReadDcr
20 //
21 // This routine is used to Read the value of Default Control Register (DCR).
22 //
23 // Arguments :
24 //
25 // On Entry :
26 //
27 // Return Value: The current value of DCR.
28 //
29 //--
30 //----------------------------------------------------------------------------------
31 .text
32 .type AsmReadDcr, @function
33 .proc AsmReadDcr
34
35 AsmReadDcr::
36 mov r8 = cr.dcr;;
37 br.ret.dpnt b0;;
38 .endp AsmReadDcr
39
40 //---------------------------------------------------------------------------------
41 //++
42 // AsmWriteDcr
43 //
44 // This routine is used to write the value to Default Control Register (DCR).
45 //
46 // Arguments :
47 //
48 // On Entry : The value need to be written to DCR
49 //
50 // Return Value: The value written to DCR.
51 //
52 //--
53 //----------------------------------------------------------------------------------
54 .text
55 .type AsmWriteDcr, @function
56 .proc AsmWriteDcr
57 .regstk 1, 0, 0, 0
58
59 AsmWriteDcr::
60 mov cr.dcr = in0
61 mov r8 = in0;;
62 srlz.i;;
63 srlz.d;;
64 br.ret.dpnt b0;;
65 .endp AsmWriteDcr
66
67
68 //---------------------------------------------------------------------------------
69 //++
70 // AsmReadItc
71 //
72 // This routine is used to Read the value of Interval Timer Counter Register (ITC).
73 //
74 // Arguments :
75 //
76 // On Entry :
77 //
78 // Return Value: The current value of ITC.
79 //
80 //--
81 //----------------------------------------------------------------------------------
82 .text
83 .type AsmReadItc, @function
84 .proc AsmReadItc
85
86 AsmReadItc::
87 mov r8 = ar.itc;;
88 br.ret.dpnt b0;;
89 .endp AsmReadItc
90
91 //---------------------------------------------------------------------------------
92 //++
93 // AsmWriteItc
94 //
95 // This routine is used to write the value to Interval Timer Counter Register (ITC).
96 //
97 // Arguments :
98 //
99 // On Entry : The value need to be written to the ITC
100 //
101 // Return Value: The value written to the ITC.
102 //
103 //--
104 //----------------------------------------------------------------------------------
105 .text
106 .type AsmWriteItc, @function
107 .proc AsmWriteItc
108 .regstk 1, 0, 0, 0
109
110 AsmWriteItc::
111 mov ar.itc = in0
112 mov r8 = in0;;
113 br.ret.dpnt b0;;
114 .endp AsmWriteItc
115
116
117 //---------------------------------------------------------------------------------
118 //++
119 // AsmReadItm
120 //
121 // This routine is used to Read the value of Interval Timer Match Register (ITM).
122 //
123 // Arguments :
124 //
125 // On Entry :
126 //
127 // Return Value: The current value of ITM.
128 //
129 //--
130 //----------------------------------------------------------------------------------
131 .text
132 .type AsmReadItm, @function
133 .proc AsmReadItm
134
135 AsmReadItm::
136 mov r8 = cr.itm;;
137 br.ret.dpnt b0;;
138 .endp AsmReadItm
139
140 //---------------------------------------------------------------------------------
141 //++
142 // AsmWriteItm
143 //
144 // This routine is used to write the value to Interval Timer Match Register (ITM).
145 //
146 // Arguments :
147 //
148 // On Entry : The value need to be written to ITM
149 //
150 // Return Value: The value written to ITM.
151 //
152 //--
153 //----------------------------------------------------------------------------------
154 .text
155 .type AsmWriteItm, @function
156 .proc AsmWriteItm
157 .regstk 1, 0, 0, 0
158
159 AsmWriteItm::
160 mov cr.itm = in0
161 mov r8 = in0;;
162 srlz.d;
163 br.ret.dpnt b0;;
164 .endp AsmWriteItm
165
166
167 //---------------------------------------------------------------------------------
168 //++
169 // AsmReadIva
170 //
171 // This routine is used to read the value of Interruption Vector Address Register (IVA).
172 //
173 // Arguments :
174 //
175 // On Entry :
176 //
177 // Return Value: The current value of IVA.
178 //
179 //--
180 //----------------------------------------------------------------------------------
181 .text
182 .type AsmReadIva, @function
183 .proc AsmReadIva
184
185 AsmReadIva::
186 mov r8 = cr.iva;;
187 br.ret.dpnt b0;;
188 .endp AsmReadIva
189
190 //---------------------------------------------------------------------------------
191 //++
192 // AsmWriteIva
193 //
194 // This routine is used to write the value to Interruption Vector Address Register (IVA).
195 //
196 // Arguments :
197 //
198 // On Entry : The value need to be written to IVA
199 //
200 // Return Value: The value written to IVA.
201 //
202 //--
203 //----------------------------------------------------------------------------------
204 .text
205 .type AsmWriteIva, @function
206 .proc AsmWriteIva
207 .regstk 1, 3, 0, 0
208
209 AsmWriteIva::
210 alloc loc1=ar.pfs,1,4,0,0 ;;
211
212 mov loc2 = psr
213 rsm 0x6000 // Make sure interrupts are masked
214
215 mov cr.iva = in0
216 srlz.i;;
217 mov psr.l = loc2;;
218 srlz.i;;
219 srlz.d;;
220 mov ar.pfs=loc1 ;;
221 mov r8 = in0;;
222 br.ret.dpnt b0;;
223 .endp AsmWriteIva
224
225
226 //---------------------------------------------------------------------------------
227 //++
228 // AsmReadPta
229 //
230 // This routine is used to read the value of Page Table Address Register (PTA).
231 //
232 // Arguments :
233 //
234 // On Entry :
235 //
236 // Return Value: The current value of PTA.
237 //
238 //--
239 //----------------------------------------------------------------------------------
240 .text
241 .type AsmReadPta, @function
242 .proc AsmReadPta
243
244 AsmReadPta::
245 mov r8 = cr.pta;;
246 br.ret.dpnt b0;;
247 .endp AsmReadPta
248
249 //---------------------------------------------------------------------------------
250 //++
251 // AsmWritePta
252 //
253 // This routine is used to write the value to Page Table Address Register (PTA)).
254 //
255 // Arguments :
256 //
257 // On Entry : The value need to be written to PTA
258 //
259 // Return Value: The value written to PTA.
260 //
261 //--
262 //----------------------------------------------------------------------------------
263 .text
264 .type AsmWritePta, @function
265 .proc AsmWritePta
266 .regstk 1, 0, 0, 0
267
268 AsmWritePta::
269 mov cr.pta = in0
270 mov r8 = in0;;
271 srlz.i;;
272 srlz.d;;
273 br.ret.dpnt b0;;
274 .endp AsmWritePta