/// @file | |
/// IPF specific AsmReadKrX() and AsmWriteKrX() functions, 'X' is from '0' to '6' | |
/// | |
/// Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR> | |
/// 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: AccessKr.s | |
/// | |
/// | |
//--------------------------------------------------------------------------------- | |
//++ | |
// AsmReadKr0 | |
// | |
// This routine is used to get KR0. | |
// | |
// Arguments : | |
// | |
// On Entry : None. | |
// | |
// Return Value: The value store in KR0. | |
// | |
//-- | |
//---------------------------------------------------------------------------------- | |
.text | |
.type AsmReadKr0, @function | |
.proc AsmReadKr0 | |
AsmReadKr0:: | |
mov r8 = ar.k0;; | |
br.ret.dpnt b0;; | |
.endp AsmReadKr0 | |
//--------------------------------------------------------------------------------- | |
//++ | |
// AsmWriteKr0 | |
// | |
// This routine is used to Write KR0. | |
// | |
// Arguments : | |
// | |
// On Entry : None. | |
// | |
// Return Value: The value written to the KR0. | |
// | |
//-- | |
//---------------------------------------------------------------------------------- | |
.text | |
.type AsmWriteKr0, @function | |
.proc AsmWriteKr0 | |
.regstk 1, 3, 0, 0 | |
AsmWriteKr0:: | |
alloc loc1=ar.pfs,1,4,0,0 ;; | |
mov loc2 = psr;; | |
rsm 0x6000;; // Masking interrupts | |
mov ar.k0 = in0 | |
srlz.i;; | |
mov psr.l = loc2;; | |
srlz.i;; | |
srlz.d;; | |
mov r8 = in0;; | |
mov ar.pfs=loc1 ;; | |
br.ret.dpnt b0;; | |
.endp AsmWriteKr0 | |
//--------------------------------------------------------------------------------- | |
//++ | |
// AsmReadKr1 | |
// | |
// This routine is used to get KR1. | |
// | |
// Arguments : | |
// | |
// On Entry : None. | |
// | |
// Return Value: The value store in KR1. | |
// | |
//-- | |
//---------------------------------------------------------------------------------- | |
.text | |
.type AsmReadKr1, @function | |
.proc AsmReadKr1 | |
AsmReadKr1:: | |
mov r8 = ar.k1;; | |
br.ret.dpnt b0;; | |
.endp AsmReadKr1 | |
//--------------------------------------------------------------------------------- | |
//++ | |
// AsmWriteKr1 | |
// | |
// This routine is used to Write KR1. | |
// | |
// Arguments : | |
// | |
// On Entry : None. | |
// | |
// Return Value: The value written to the KR1. | |
// | |
//-- | |
//---------------------------------------------------------------------------------- | |
.text | |
.type AsmWriteKr1, @function | |
.proc AsmWriteKr1 | |
AsmWriteKr1:: | |
mov ar.k1 = in0 | |
mov r8 = in0;; | |
br.ret.dpnt b0;; | |
.endp AsmWriteKr1 | |
//--------------------------------------------------------------------------------- | |
//++ | |
// AsmReadKr2 | |
// | |
// This routine is used to get KR2. | |
// | |
// Arguments : | |
// | |
// On Entry : None. | |
// | |
// Return Value: The value store in KR2. | |
// | |
//-- | |
//---------------------------------------------------------------------------------- | |
.text | |
.type AsmReadKr2, @function | |
.proc AsmReadKr2 | |
AsmReadKr2:: | |
mov r8 = ar.k2;; | |
br.ret.dpnt b0;; | |
.endp AsmReadKr2 | |
//--------------------------------------------------------------------------------- | |
//++ | |
// AsmWriteKr2 | |
// | |
// This routine is used to Write KR2. | |
// | |
// Arguments : | |
// | |
// On Entry : None. | |
// | |
// Return Value: The value written to the KR2. | |
// | |
//-- | |
//---------------------------------------------------------------------------------- | |
.text | |
.type AsmWriteKr2, @function | |
.proc AsmWriteKr2 | |
AsmWriteKr2:: | |
mov ar.k2 = in0 | |
mov r8 = in0;; | |
br.ret.dpnt b0;; | |
.endp AsmWriteKr2 | |
//--------------------------------------------------------------------------------- | |
//++ | |
// AsmReadKr3 | |
// | |
// This routine is used to get KR3. | |
// | |
// Arguments : | |
// | |
// On Entry : None. | |
// | |
// Return Value: The value store in KR3. | |
// | |
//-- | |
//---------------------------------------------------------------------------------- | |
.text | |
.type AsmReadKr3, @function | |
.proc AsmReadKr3 | |
AsmReadKr3:: | |
mov r8 = ar.k3;; | |
br.ret.dpnt b0;; | |
.endp AsmReadKr3 | |
//--------------------------------------------------------------------------------- | |
//++ | |
// AsmWriteKr3 | |
// | |
// This routine is used to Write KR3. | |
// | |
// Arguments : | |
// | |
// On Entry : None. | |
// | |
// Return Value: The value written to the KR3. | |
// | |
//-- | |
//---------------------------------------------------------------------------------- | |
.text | |
.type AsmWriteKr3, @function | |
.proc AsmWriteKr3 | |
AsmWriteKr3:: | |
mov ar.k3 = in0 | |
mov r8 = in0;; | |
br.ret.dpnt b0;; | |
.endp AsmWriteKr3 | |
//--------------------------------------------------------------------------------- | |
//++ | |
// AsmReadKr4 | |
// | |
// This routine is used to get KR4. | |
// | |
// Arguments : | |
// | |
// On Entry : None. | |
// | |
// Return Value: The value store in KR4. | |
// | |
//-- | |
//---------------------------------------------------------------------------------- | |
.text | |
.type AsmReadKr4, @function | |
.proc AsmReadKr4 | |
AsmReadKr4:: | |
mov r8 = ar.k4;; | |
br.ret.dpnt b0;; | |
.endp AsmReadKr4 | |
//--------------------------------------------------------------------------------- | |
//++ | |
// AsmWriteKr4 | |
// | |
// This routine is used to Write KR4. | |
// | |
// Arguments : | |
// | |
// On Entry : None. | |
// | |
// Return Value: The value written to the KR4. | |
// | |
//-- | |
//---------------------------------------------------------------------------------- | |
.text | |
.type AsmWriteKr4, @function | |
.proc AsmWriteKr4 | |
AsmWriteKr4:: | |
mov ar.k4 = in0 | |
mov r8 = in0;; | |
br.ret.dpnt b0;; | |
.endp AsmWriteKr4 | |
//--------------------------------------------------------------------------------- | |
//++ | |
// AsmReadKr5 | |
// | |
// This routine is used to get KR5. | |
// | |
// Arguments : | |
// | |
// On Entry : None. | |
// | |
// Return Value: The value store in KR5. | |
// | |
//-- | |
//---------------------------------------------------------------------------------- | |
.text | |
.type AsmReadKr5, @function | |
.proc AsmReadKr5 | |
AsmReadKr5:: | |
mov r8 = ar.k5;; | |
br.ret.dpnt b0;; | |
.endp AsmReadKr5 | |
//--------------------------------------------------------------------------------- | |
//++ | |
// AsmWriteKr5 | |
// | |
// This routine is used to Write KR5. | |
// | |
// Arguments : | |
// | |
// On Entry : None. | |
// | |
// Return Value: The value written to the KR5. | |
// | |
//-- | |
//---------------------------------------------------------------------------------- | |
.text | |
.type AsmWriteKr5, @function | |
.proc AsmWriteKr5 | |
AsmWriteKr5:: | |
mov ar.k5 = in0 | |
mov r8 = in0;; | |
br.ret.dpnt b0;; | |
.endp AsmWriteKr5 | |
//--------------------------------------------------------------------------------- | |
//++ | |
// AsmReadKr6 | |
// | |
// This routine is used to get KR6. | |
// | |
// Arguments : | |
// | |
// On Entry : None. | |
// | |
// Return Value: The value store in KR6. | |
// | |
//-- | |
//---------------------------------------------------------------------------------- | |
.text | |
.type AsmReadKr6, @function | |
.proc AsmReadKr6 | |
AsmReadKr6:: | |
mov r8 = ar.k6;; | |
br.ret.dpnt b0;; | |
.endp AsmReadKr6 | |
//--------------------------------------------------------------------------------- | |
//++ | |
// AsmWriteKr6 | |
// | |
// This routine is used to write KR6. | |
// | |
// Arguments : | |
// | |
// On Entry : None. | |
// | |
// Return Value: The value written to the KR6. | |
// | |
//-- | |
//---------------------------------------------------------------------------------- | |
.text | |
.type AsmWriteKr6, @function | |
.proc AsmWriteKr6 | |
AsmWriteKr6:: | |
mov ar.k6 = in0 | |
mov r8 = in0;; | |
br.ret.dpnt b0;; | |
.endp AsmWriteKr6 |