1 /// Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
2 /// This program and the accompanying materials
3 /// are licensed and made available under the terms and conditions of the BSD License
4 /// which accompanies this distribution. The full text of the license may be found at
5 /// http://opensource.org/licenses/bsd-license.php
7 /// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
8 /// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
10 /// Module Name: AccessEicr.s
13 /// IPF specific External Interrupt Control Registers accessing functions
16 //---------------------------------------------------------------------------------
20 // This routine is used to read the value of Local Interrupt ID Register (LID).
26 // Return Value: The current value of LID.
29 //----------------------------------------------------------------------------------
31 .type AsmReadLid, @function
40 //---------------------------------------------------------------------------------
44 // This routine is used to write the value to Local Interrupt ID Register (LID).
48 // On Entry : The value need to be written to LID.
50 // Return Value: The value written to LID.
53 //----------------------------------------------------------------------------------
55 .type AsmWriteLid, @function
67 //---------------------------------------------------------------------------------
71 // This routine is used to read the value of External Interrupt Vector Register (IVR).
77 // Return Value: The current value of IVR.
80 //----------------------------------------------------------------------------------
82 .type AsmReadIvr, @function
92 //---------------------------------------------------------------------------------
96 // This routine is used to read the value of Task Priority Register (TPR).
102 // Return Value: The current value of TPR.
105 //----------------------------------------------------------------------------------
107 .type AsmReadTpr, @function
115 //---------------------------------------------------------------------------------
119 // This routine is used to write the value to Task Priority Register (TPR).
123 // On Entry : The value need to be written to TPR.
125 // Return Value: The value written to TPR.
128 //----------------------------------------------------------------------------------
130 .type AsmWriteTpr, @function
142 //---------------------------------------------------------------------------------
146 // This routine is used to write the value to End of External Interrupt Register (EOI).
150 // On Entry : The value need to be written to EOI.
152 // Return Value: The value written to EOI.
155 //----------------------------------------------------------------------------------
157 .type AsmWriteEoi, @function
167 //---------------------------------------------------------------------------------
171 // This routine is used to Read the value of External Interrupt Request Register 0 (IRR0).
177 // Return Value: The current value of IRR0.
180 //----------------------------------------------------------------------------------
182 .type AsmReadIrr0, @function
191 //---------------------------------------------------------------------------------
195 // This routine is used to Read the value of External Interrupt Request Register 1 (IRR1).
201 // Return Value: The current value of IRR1.
204 //----------------------------------------------------------------------------------
206 .type AsmReadIrr1, @function
215 //---------------------------------------------------------------------------------
219 // This routine is used to Read the value of External Interrupt Request Register 2 (IRR2).
225 // Return Value: The current value of IRR2.
228 //----------------------------------------------------------------------------------
230 .type AsmReadIrr2, @function
239 //---------------------------------------------------------------------------------
243 // This routine is used to Read the value of External Interrupt Request Register 3 (IRR3).
249 // Return Value: The current value of IRR3.
252 //----------------------------------------------------------------------------------
254 .type AsmReadIrr3, @function
263 //---------------------------------------------------------------------------------
267 // This routine is used to Read the value of Interval Timer Vector Register (ITV).
273 // Return Value: The current value of ITV.
276 //----------------------------------------------------------------------------------
278 .type AsmReadItv, @function
286 //---------------------------------------------------------------------------------
290 // This routine is used to write the value to Interval Timer Vector Register (ITV).
294 // On Entry : The value need to be written to ITV
296 // Return Value: The value written to ITV.
299 //----------------------------------------------------------------------------------
301 .type AsmWriteItv, @function
313 //---------------------------------------------------------------------------------
317 // This routine is used to Read the value of Performance Monitoring Vector Register (PMV).
323 // Return Value: The current value of PMV.
326 //----------------------------------------------------------------------------------
328 .type AsmReadPmv, @function
336 //---------------------------------------------------------------------------------
340 // This routine is used to write the value to Performance Monitoring Vector Register (PMV).
344 // On Entry : The value need to be written to PMV
346 // Return Value: The value written to PMV.
349 //----------------------------------------------------------------------------------
351 .type AsmWritePmv, @function
363 //---------------------------------------------------------------------------------
367 // This routine is used to Read the value of Corrected Machine Check Vector Register (CMCV).
373 // Return Value: The current value of CMCV.
376 //----------------------------------------------------------------------------------
378 .type AsmReadCmcv, @function
386 //---------------------------------------------------------------------------------
390 // This routine is used to write the value to Corrected Machine Check Vector Register (CMCV).
394 // On Entry : The value need to be written to CMCV
396 // Return Value: The value written to CMCV.
399 //----------------------------------------------------------------------------------
401 .type AsmWriteCmcv, @function
413 //---------------------------------------------------------------------------------
417 // This routine is used to read the value of Local Redirection Register 0 (LRR0).
423 // Return Value: The current value of LRR0.
426 //----------------------------------------------------------------------------------
428 .type AsmReadLrr0, @function
436 //---------------------------------------------------------------------------------
440 // This routine is used to write the value to Local Redirection Register 0 (LRR0).
444 // On Entry : The value need to be written to LRR0.
446 // Return Value: The value written to LRR0.
449 //----------------------------------------------------------------------------------
451 .type AsmWriteLrr0, @function
463 //---------------------------------------------------------------------------------
467 // This routine is used to read the value of Local Redirection Register 1 (LRR1).
473 // Return Value: The current value of LRR1.
476 //----------------------------------------------------------------------------------
478 .type AsmReadLrr1, @function
486 //---------------------------------------------------------------------------------
490 // This routine is used to write the value to Local Redirection Register 1 (LRR1).
494 // On Entry : The value need to be written to LRR1.
496 // Return Value: The value written to LRR1.
499 //----------------------------------------------------------------------------------
501 .type AsmWriteLrr1, @function