/// @file | |
/// IPF specific External Interrupt Control Registers accessing functions | |
/// | |
/// Copyright (c) 2006, Intel Corporation | |
/// All rights reserved. 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. | |
/// | |
/// Module Name: AccessEicr.s | |
/// | |
/// | |
//--------------------------------------------------------------------------------- | |
//++ | |
// AsmReadLid | |
// | |
// This routine is used to read the value of Local Interrupt ID Register (LID). | |
// | |
// Arguments : | |
// | |
// On Entry : | |
// | |
// Return Value: The current value of LID. | |
// | |
//-- | |
//---------------------------------------------------------------------------------- | |
.text | |
.type AsmReadLid, @function | |
.proc AsmReadLid | |
AsmReadLid:: | |
mov r8 = cr.lid;; | |
srlz.d;; | |
br.ret.dpnt b0;; | |
.endp AsmReadLid | |
//--------------------------------------------------------------------------------- | |
//++ | |
// AsmWriteLid | |
// | |
// This routine is used to write the value to Local Interrupt ID Register (LID). | |
// | |
// Arguments : | |
// | |
// On Entry : The value need to be written to LID. | |
// | |
// Return Value: The value written to LID. | |
// | |
//-- | |
//---------------------------------------------------------------------------------- | |
.text | |
.type AsmWriteLid, @function | |
.proc AsmWriteLid | |
.regstk 1, 0, 0, 0 | |
AsmWriteLid:: | |
mov cr.lid = in0 | |
mov r8 = in0;; | |
srlz.d;; | |
br.ret.dpnt b0;; | |
.endp AsmWriteLid | |
//--------------------------------------------------------------------------------- | |
//++ | |
// AsmReadIvr | |
// | |
// This routine is used to read the value of External Interrupt Vector Register (IVR). | |
// | |
// Arguments : | |
// | |
// On Entry : | |
// | |
// Return Value: The current value of IVR. | |
// | |
//-- | |
//---------------------------------------------------------------------------------- | |
.text | |
.type AsmReadIvr, @function | |
.proc AsmReadIvr | |
AsmReadIvr:: | |
mov r8 = cr.ivr;; | |
srlz.d;; | |
br.ret.dpnt b0;; | |
.endp AsmReadIvr | |
//--------------------------------------------------------------------------------- | |
//++ | |
// AsmReadTpr | |
// | |
// This routine is used to read the value of Task Priority Register (TPR). | |
// | |
// Arguments : | |
// | |
// On Entry : | |
// | |
// Return Value: The current value of TPR. | |
// | |
//-- | |
//---------------------------------------------------------------------------------- | |
.text | |
.type AsmReadTpr, @function | |
.proc AsmReadTpr | |
AsmReadTpr:: | |
mov r8 = cr.tpr;; | |
br.ret.dpnt b0;; | |
.endp AsmReadTpr | |
//--------------------------------------------------------------------------------- | |
//++ | |
// AsmWriteTpr | |
// | |
// This routine is used to write the value to Task Priority Register (TPR). | |
// | |
// Arguments : | |
// | |
// On Entry : The value need to be written to TPR. | |
// | |
// Return Value: The value written to TPR. | |
// | |
//-- | |
//---------------------------------------------------------------------------------- | |
.text | |
.type AsmWriteTpr, @function | |
.proc AsmWriteTpr | |
.regstk 1, 0, 0, 0 | |
AsmWriteTpr:: | |
mov cr.tpr = in0 | |
mov r8 = in0;; | |
srlz.d;; | |
br.ret.dpnt b0;; | |
.endp AsmWriteTpr | |
//--------------------------------------------------------------------------------- | |
//++ | |
// AsmWriteEoi | |
// | |
// This routine is used to write the value to End of External Interrupt Register (EOI). | |
// | |
// Arguments : | |
// | |
// On Entry : The value need to be written to EOI. | |
// | |
// Return Value: The value written to EOI. | |
// | |
//-- | |
//---------------------------------------------------------------------------------- | |
.text | |
.type AsmWriteEoi, @function | |
.proc AsmWriteEoi | |
AsmWriteEoi:: | |
mov cr.eoi = r0;; | |
srlz.d;; | |
br.ret.dpnt b0;; | |
.endp AsmWriteEoi | |
//--------------------------------------------------------------------------------- | |
//++ | |
// AsmReadIrr0 | |
// | |
// This routine is used to Read the value of External Interrupt Request Register 0 (IRR0). | |
// | |
// Arguments : | |
// | |
// On Entry : | |
// | |
// Return Value: The current value of IRR0. | |
// | |
//-- | |
//---------------------------------------------------------------------------------- | |
.text | |
.type AsmReadIrr0, @function | |
.proc AsmReadIrr0 | |
AsmReadIrr0:: | |
mov r8 = cr.irr0;; | |
br.ret.dpnt b0;; | |
.endp AsmReadIrr0 | |
//--------------------------------------------------------------------------------- | |
//++ | |
// AsmReadIrr1 | |
// | |
// This routine is used to Read the value of External Interrupt Request Register 1 (IRR1). | |
// | |
// Arguments : | |
// | |
// On Entry : | |
// | |
// Return Value: The current value of IRR1. | |
// | |
//-- | |
//---------------------------------------------------------------------------------- | |
.text | |
.type AsmReadIrr1, @function | |
.proc AsmReadIrr1 | |
AsmReadIrr1:: | |
mov r8 = cr.irr1;; | |
br.ret.dpnt b0;; | |
.endp AsmReadIrr1 | |
//--------------------------------------------------------------------------------- | |
//++ | |
// AsmReadIrr2 | |
// | |
// This routine is used to Read the value of External Interrupt Request Register 2 (IRR2). | |
// | |
// Arguments : | |
// | |
// On Entry : | |
// | |
// Return Value: The current value of IRR2. | |
// | |
//-- | |
//---------------------------------------------------------------------------------- | |
.text | |
.type AsmReadIrr2, @function | |
.proc AsmReadIrr2 | |
AsmReadIrr2:: | |
mov r8 = cr.irr2;; | |
br.ret.dpnt b0;; | |
.endp AsmReadIrr2 | |
//--------------------------------------------------------------------------------- | |
//++ | |
// AsmReadIrr3 | |
// | |
// This routine is used to Read the value of External Interrupt Request Register 3 (IRR3). | |
// | |
// Arguments : | |
// | |
// On Entry : | |
// | |
// Return Value: The current value of IRR3. | |
// | |
//-- | |
//---------------------------------------------------------------------------------- | |
.text | |
.type AsmReadIrr3, @function | |
.proc AsmReadIrr3 | |
AsmReadIrr3:: | |
mov r8 = cr.irr3;; | |
br.ret.dpnt b0;; | |
.endp AsmReadIrr3 | |
//--------------------------------------------------------------------------------- | |
//++ | |
// AsmReadItv | |
// | |
// This routine is used to Read the value of Interval Timer Vector Register (ITV). | |
// | |
// Arguments : | |
// | |
// On Entry : | |
// | |
// Return Value: The current value of ITV. | |
// | |
//-- | |
//---------------------------------------------------------------------------------- | |
.text | |
.type AsmReadItv, @function | |
.proc AsmReadItv | |
AsmReadItv:: | |
mov r8 = cr.itv;; | |
br.ret.dpnt b0;; | |
.endp AsmReadItv | |
//--------------------------------------------------------------------------------- | |
//++ | |
// AsmWriteItv | |
// | |
// This routine is used to write the value to Interval Timer Vector Register (ITV). | |
// | |
// Arguments : | |
// | |
// On Entry : The value need to be written to ITV | |
// | |
// Return Value: The value written to ITV. | |
// | |
//-- | |
//---------------------------------------------------------------------------------- | |
.text | |
.type AsmWriteItv, @function | |
.proc AsmWriteItv | |
.regstk 1, 0, 0, 0 | |
AsmWriteItv:: | |
mov cr.itv = in0 | |
mov r8 = in0;; | |
srlz.d;; | |
br.ret.dpnt b0;; | |
.endp AsmWriteItv | |
//--------------------------------------------------------------------------------- | |
//++ | |
// AsmReadPmv | |
// | |
// This routine is used to Read the value of Performance Monitoring Vector Register (PMV). | |
// | |
// Arguments : | |
// | |
// On Entry : | |
// | |
// Return Value: The current value of PMV. | |
// | |
//-- | |
//---------------------------------------------------------------------------------- | |
.text | |
.type AsmReadPmv, @function | |
.proc AsmReadPmv | |
AsmReadPmv:: | |
mov r8 = cr.pmv;; | |
br.ret.dpnt b0;; | |
.endp AsmReadPmv | |
//--------------------------------------------------------------------------------- | |
//++ | |
// AsmWritePmv | |
// | |
// This routine is used to write the value to Performance Monitoring Vector Register (PMV). | |
// | |
// Arguments : | |
// | |
// On Entry : The value need to be written to PMV | |
// | |
// Return Value: The value written to PMV. | |
// | |
//-- | |
//---------------------------------------------------------------------------------- | |
.text | |
.type AsmWritePmv, @function | |
.proc AsmWritePmv | |
.regstk 1, 0, 0, 0 | |
AsmWritePmv:: | |
mov cr.pmv = in0 | |
mov r8 = in0;; | |
srlz.d;; | |
br.ret.dpnt b0;; | |
.endp AsmWritePmv | |
//--------------------------------------------------------------------------------- | |
//++ | |
// AsmReadCmcv | |
// | |
// This routine is used to Read the value of Corrected Machine Check Vector Register (CMCV). | |
// | |
// Arguments : | |
// | |
// On Entry : | |
// | |
// Return Value: The current value of CMCV. | |
// | |
//-- | |
//---------------------------------------------------------------------------------- | |
.text | |
.type AsmReadCmcv, @function | |
.proc AsmReadCmcv | |
AsmReadCmcv:: | |
mov r8 = cr.cmcv;; | |
br.ret.dpnt b0;; | |
.endp AsmReadCmcv | |
//--------------------------------------------------------------------------------- | |
//++ | |
// AsmWriteCmcv | |
// | |
// This routine is used to write the value to Corrected Machine Check Vector Register (CMCV). | |
// | |
// Arguments : | |
// | |
// On Entry : The value need to be written to CMCV | |
// | |
// Return Value: The value written to CMCV. | |
// | |
//-- | |
//---------------------------------------------------------------------------------- | |
.text | |
.type AsmWriteCmcv, @function | |
.proc AsmWriteCmcv | |
.regstk 1, 0, 0, 0 | |
AsmWriteCmcv:: | |
mov cr.cmcv = in0 | |
mov r8 = in0;; | |
srlz.d;; | |
br.ret.dpnt b0;; | |
.endp AsmWriteCmcv | |
//--------------------------------------------------------------------------------- | |
//++ | |
// AsmReadLrr0 | |
// | |
// This routine is used to read the value of Local Redirection Register 0 (LRR0). | |
// | |
// Arguments : | |
// | |
// On Entry : | |
// | |
// Return Value: The current value of LRR0. | |
// | |
//-- | |
//---------------------------------------------------------------------------------- | |
.text | |
.type AsmReadLrr0, @function | |
.proc AsmReadLrr0 | |
AsmReadLrr0:: | |
mov r8 = cr.lrr0;; | |
br.ret.dpnt b0;; | |
.endp AsmReadLrr0 | |
//--------------------------------------------------------------------------------- | |
//++ | |
// AsmWriteLrr0 | |
// | |
// This routine is used to write the value to Local Redirection Register 0 (LRR0). | |
// | |
// Arguments : | |
// | |
// On Entry : The value need to be written to LRR0. | |
// | |
// Return Value: The value written to LRR0. | |
// | |
//-- | |
//---------------------------------------------------------------------------------- | |
.text | |
.type AsmWriteLrr0, @function | |
.proc AsmWriteLrr0 | |
.regstk 1, 0, 0, 0 | |
AsmWriteLrr0:: | |
mov cr.lrr0 = in0 | |
mov r8 = in0;; | |
srlz.d;; | |
br.ret.dpnt b0;; | |
.endp AsmWriteLrr0 | |
//--------------------------------------------------------------------------------- | |
//++ | |
// AsmReadLrr1 | |
// | |
// This routine is used to read the value of Local Redirection Register 1 (LRR1). | |
// | |
// Arguments : | |
// | |
// On Entry : | |
// | |
// Return Value: The current value of LRR1. | |
// | |
//-- | |
//---------------------------------------------------------------------------------- | |
.text | |
.type AsmReadLrr1, @function | |
.proc AsmReadLrr1 | |
AsmReadLrr1:: | |
mov r8 = cr.lrr1;; | |
br.ret.dpnt b0;; | |
.endp AsmReadLrr1 | |
//--------------------------------------------------------------------------------- | |
//++ | |
// AsmWriteLrr1 | |
// | |
// This routine is used to write the value to Local Redirection Register 1 (LRR1). | |
// | |
// Arguments : | |
// | |
// On Entry : The value need to be written to LRR1. | |
// | |
// Return Value: The value written to LRR1. | |
// | |
//-- | |
//---------------------------------------------------------------------------------- | |
.text | |
.type AsmWriteLrr1, @function | |
.proc AsmWriteLrr1 | |
.regstk 1, 0, 0, 0 | |
AsmWriteLrr1:: | |
mov cr.lrr1 = in0 | |
mov r8 = in0;; | |
srlz.d;; | |
br.ret.dpnt b0;; | |
.endp AsmWriteLrr1 | |