• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/// @file
2///  IPF specific Performance Monitor Configuration/Data Registers accessing functions
3///
4/// Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
5/// This program and the accompanying materials
6/// are licensed and made available under the terms and conditions of the BSD License
7/// which accompanies this distribution.  The full text of the license may be found at
8/// http://opensource.org/licenses/bsd-license.php.
9///
10/// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11/// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
12///
13/// Module Name: AccessPmr.s
14///
15///
16
17//---------------------------------------------------------------------------------
18//++
19// AsmReadPmc
20//
21// This routine is used to Reads the current value of Performance Monitor Configuration Register (PMC).
22//
23// Arguments :
24//
25// On Entry : The 8-bit PMC index.
26//
27// Return Value: The current value of PMC by Index.
28//
29//--
30//----------------------------------------------------------------------------------
31.text
32.type   AsmReadPmc, @function
33.proc   AsmReadPmc
34.regstk 1, 0, 0, 0
35
36AsmReadPmc::
37        srlz.i;;
38        srlz.d;;
39        mov             r8 = pmc[in0];;
40        br.ret.dpnt     b0;;
41.endp   AsmReadPmc
42
43//---------------------------------------------------------------------------------
44//++
45// AsmWritePmc
46//
47// This routine is used to write the current value to a Performance Monitor Configuration Register (PMC).
48//
49// Arguments :
50//
51// On Entry : The 8-bit PMC index.
52//            The value should be written to PMC
53//
54// Return Value: The value written to PMC.
55//
56//--
57//----------------------------------------------------------------------------------
58.text
59.type   AsmWritePmc, @function
60.proc   AsmWritePmc
61.regstk 2, 0, 0, 0
62
63AsmWritePmc::
64        mov             pmc[in0] = in1
65        mov             r8 = in1;;
66        srlz.i;;
67        srlz.d;;
68        br.ret.dpnt     b0;;
69.endp   AsmWritePmc
70
71
72//---------------------------------------------------------------------------------
73//++
74// AsmReadPmd
75//
76// This routine is used to Reads the current value of Performance Monitor Data Register (PMD).
77//
78// Arguments :
79//
80// On Entry : The 8-bit PMD index.
81//
82// Return Value: The current value of PMD by Index.
83//
84//--
85//----------------------------------------------------------------------------------
86.text
87.type   AsmReadPmd, @function
88.proc   AsmReadPmd
89.regstk 1, 0, 0, 0
90
91AsmReadPmd::
92        srlz.i;;
93        srlz.d;;
94        mov             r8 = pmd[in0];;
95        br.ret.dpnt     b0;;
96.endp   AsmReadPmd
97
98//---------------------------------------------------------------------------------
99//++
100// AsmWritePmd
101//
102// This routine is used to write the current value to Performance Monitor Data Register (PMD).
103//
104// Arguments :
105//
106// On Entry : The 8-bit PMD index.
107//            The value should be written to PMD
108//
109// Return Value: The value written to PMD.
110//
111//--
112//----------------------------------------------------------------------------------
113.text
114.type   AsmWritePmd, @function
115.proc   AsmWritePmd
116.regstk 2, 0, 0, 0
117
118AsmWritePmd::
119        mov             pmd[in0] = in1
120        mov             r8 = in1;;
121        srlz.i;;
122        srlz.d;;
123        br.ret.dpnt     b0;;
124.endp   AsmWritePmd
125