/// @file /// IPF specific Machine Specific Registers accessing functions. /// /// Copyright (c) 2008, 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. /// /// /// //--------------------------------------------------------------------------------- //++ // AsmReadMsr // // Reads the current value of a Machine Specific Register (MSR). // // Reads and returns the current value of the Machine Specific Register specified by Index. No // parameter checking is performed on Index, and if the Index value is beyond the implemented MSR // register range, a Reserved Register/Field fault may occur. The caller must either guarantee that // Index is valid, or the caller must set up fault handlers to catch the faults. This function is // only available on IPF. // // Arguments : // // On Entry : The 8-bit Machine Specific Register index to read. // // Return Value: The current value of the Machine Specific Register specified by Index. // //-- //---------------------------------------------------------------------------------- .text .type AsmReadMsr, @function .proc AsmReadMsr .regstk 1, 0, 0, 0 AsmReadMsr:: mov r8=msr[in0];; br.ret.sptk b0;; .endp AsmReadMsr //--------------------------------------------------------------------------------- //++ // AsmWriteMsr // // Writes the current value of a Machine Specific Register (MSR). // // Writes Value to the Machine Specific Register specified by Index. Value is returned. No // parameter checking is performed on Index, and if the Index value is beyond the implemented MSR // register range, a Reserved Register/Field fault may occur. The caller must either guarantee that // Index is valid, or the caller must set up fault handlers to catch the faults. This function is // only available on IPF. // // Arguments : // // On Entry : The 8-bit Machine Specific Register index to write. // The 64-bit value to write to the Machine Specific Register. // // Return Value: The 64-bit value to write to the Machine Specific Register. // //-- //---------------------------------------------------------------------------------- .text .type AsmWriteMsr, @function .proc AsmWriteMsr .regstk 2, 0, 0, 0 AsmWriteMsr:: mov msr[in0] = in1 mov r8 = in1;; srlz.d;; br.ret.sptk b0;; .endp AsmWriteMsr