2 /// IPF specific External Interrupt Control Registers accessing functions
4 /// Copyright (c) 2006, Intel Corporation
5 /// All rights reserved. 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
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.
13 /// Module Name: AccessEicr.s
17 //---------------------------------------------------------------------------------
21 // This routine is used to read the value of Local Interrupt ID Register (LID).
27 // Return Value: The current value of LID.
30 //----------------------------------------------------------------------------------
32 .type AsmReadLid, @function
41 //---------------------------------------------------------------------------------
45 // This routine is used to write the value to Local Interrupt ID Register (LID).
49 // On Entry : The value need to be written to LID.
51 // Return Value: The value written to LID.
54 //----------------------------------------------------------------------------------
56 .type AsmWriteLid, @function
68 //---------------------------------------------------------------------------------
72 // This routine is used to read the value of External Interrupt Vector Register (IVR).
78 // Return Value: The current value of IVR.
81 //----------------------------------------------------------------------------------
83 .type AsmReadIvr, @function
93 //---------------------------------------------------------------------------------
97 // This routine is used to read the value of Task Priority Register (TPR).
103 // Return Value: The current value of TPR.
106 //----------------------------------------------------------------------------------
108 .type AsmReadTpr, @function
116 //---------------------------------------------------------------------------------
120 // This routine is used to write the value to Task Priority Register (TPR).
124 // On Entry : The value need to be written to TPR.
126 // Return Value: The value written to TPR.
129 //----------------------------------------------------------------------------------
131 .type AsmWriteTpr, @function
143 //---------------------------------------------------------------------------------
147 // This routine is used to write the value to End of External Interrupt Register (EOI).
151 // On Entry : The value need to be written to EOI.
153 // Return Value: The value written to EOI.
156 //----------------------------------------------------------------------------------
158 .type AsmWriteEoi, @function
168 //---------------------------------------------------------------------------------
172 // This routine is used to Read the value of External Interrupt Request Register 0 (IRR0).
178 // Return Value: The current value of IRR0.
181 //----------------------------------------------------------------------------------
183 .type AsmReadIrr0, @function
192 //---------------------------------------------------------------------------------
196 // This routine is used to Read the value of External Interrupt Request Register 1 (IRR1).
202 // Return Value: The current value of IRR1.
205 //----------------------------------------------------------------------------------
207 .type AsmReadIrr1, @function
216 //---------------------------------------------------------------------------------
220 // This routine is used to Read the value of External Interrupt Request Register 2 (IRR2).
226 // Return Value: The current value of IRR2.
229 //----------------------------------------------------------------------------------
231 .type AsmReadIrr2, @function
240 //---------------------------------------------------------------------------------
244 // This routine is used to Read the value of External Interrupt Request Register 3 (IRR3).
250 // Return Value: The current value of IRR3.
253 //----------------------------------------------------------------------------------
255 .type AsmReadIrr3, @function
264 //---------------------------------------------------------------------------------
268 // This routine is used to Read the value of Interval Timer Vector Register (ITV).
274 // Return Value: The current value of ITV.
277 //----------------------------------------------------------------------------------
279 .type AsmReadItv, @function
287 //---------------------------------------------------------------------------------
291 // This routine is used to write the value to Interval Timer Vector Register (ITV).
295 // On Entry : The value need to be written to ITV
297 // Return Value: The value written to ITV.
300 //----------------------------------------------------------------------------------
302 .type AsmWriteItv, @function
314 //---------------------------------------------------------------------------------
318 // This routine is used to Read the value of Performance Monitoring Vector Register (PMV).
324 // Return Value: The current value of PMV.
327 //----------------------------------------------------------------------------------
329 .type AsmReadPmv, @function
337 //---------------------------------------------------------------------------------
341 // This routine is used to write the value to Performance Monitoring Vector Register (PMV).
345 // On Entry : The value need to be written to PMV
347 // Return Value: The value written to PMV.
350 //----------------------------------------------------------------------------------
352 .type AsmWritePmv, @function
364 //---------------------------------------------------------------------------------
368 // This routine is used to Read the value of Corrected Machine Check Vector Register (CMCV).
374 // Return Value: The current value of CMCV.
377 //----------------------------------------------------------------------------------
379 .type AsmReadCmcv, @function
387 //---------------------------------------------------------------------------------
391 // This routine is used to write the value to Corrected Machine Check Vector Register (CMCV).
395 // On Entry : The value need to be written to CMCV
397 // Return Value: The value written to CMCV.
400 //----------------------------------------------------------------------------------
402 .type AsmWriteCmcv, @function
414 //---------------------------------------------------------------------------------
418 // This routine is used to read the value of Local Redirection Register 0 (LRR0).
424 // Return Value: The current value of LRR0.
427 //----------------------------------------------------------------------------------
429 .type AsmReadLrr0, @function
437 //---------------------------------------------------------------------------------
441 // This routine is used to write the value to Local Redirection Register 0 (LRR0).
445 // On Entry : The value need to be written to LRR0.
447 // Return Value: The value written to LRR0.
450 //----------------------------------------------------------------------------------
452 .type AsmWriteLrr0, @function
464 //---------------------------------------------------------------------------------
468 // This routine is used to read the value of Local Redirection Register 1 (LRR1).
474 // Return Value: The current value of LRR1.
477 //----------------------------------------------------------------------------------
479 .type AsmReadLrr1, @function
487 //---------------------------------------------------------------------------------
491 // This routine is used to write the value to Local Redirection Register 1 (LRR1).
495 // On Entry : The value need to be written to LRR1.
497 // Return Value: The value written to LRR1.
500 //----------------------------------------------------------------------------------
502 .type AsmWriteLrr1, @function