/// @file /// IPF specific Performance Monitor Configuration/Data Registers accessing functions /// /// Copyright (c) 2006, 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: AccessPmr.s /// /// //--------------------------------------------------------------------------------- //++ // AsmReadPmc // // This routine is used to Reads the current value of Performance Monitor Configuration Register (PMC). // // Arguments : // // On Entry : The 8-bit PMC index. // // Return Value: The current value of PMC by Index. // //-- //---------------------------------------------------------------------------------- .text .type AsmReadPmc, @function .proc AsmReadPmc .regstk 1, 0, 0, 0 AsmReadPmc:: srlz.i;; srlz.d;; mov r8 = pmc[in0];; br.ret.dpnt b0;; .endp AsmReadPmc //--------------------------------------------------------------------------------- //++ // AsmWritePmc // // This routine is used to write the current value to a Performance Monitor Configuration Register (PMC). // // Arguments : // // On Entry : The 8-bit PMC index. // The value should be written to PMC // // Return Value: The value written to PMC. // //-- //---------------------------------------------------------------------------------- .text .type AsmWritePmc, @function .proc AsmWritePmc .regstk 2, 0, 0, 0 AsmWritePmc:: mov pmc[in0] = in1 mov r8 = in1;; srlz.i;; srlz.d;; br.ret.dpnt b0;; .endp AsmWritePmc //--------------------------------------------------------------------------------- //++ // AsmReadPmd // // This routine is used to Reads the current value of Performance Monitor Data Register (PMD). // // Arguments : // // On Entry : The 8-bit PMD index. // // Return Value: The current value of PMD by Index. // //-- //---------------------------------------------------------------------------------- .text .type AsmReadPmd, @function .proc AsmReadPmd .regstk 1, 0, 0, 0 AsmReadPmd:: srlz.i;; srlz.d;; mov r8 = pmd[in0];; br.ret.dpnt b0;; .endp AsmReadPmd //--------------------------------------------------------------------------------- //++ // AsmWritePmd // // This routine is used to write the current value to Performance Monitor Data Register (PMD). // // Arguments : // // On Entry : The 8-bit PMD index. // The value should be written to PMD // // Return Value: The value written to PMD. // //-- //---------------------------------------------------------------------------------- .text .type AsmWritePmd, @function .proc AsmWritePmd .regstk 2, 0, 0, 0 AsmWritePmd:: mov pmd[in0] = in1 mov r8 = in1;; srlz.i;; srlz.d;; br.ret.dpnt b0;; .endp AsmWritePmd