| /// @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 |