Deleted Added
full compact
pmc_mdep.h (184802) pmc_mdep.h (185363)
1/*-
2 * Copyright (c) 2003-2005,2008 Joseph Koshy
3 * Copyright (c) 2007 The FreeBSD Foundation
4 * All rights reserved.
5 *
6 * Portions of this software were developed by A. Joseph Koshy under
7 * sponsorship from the FreeBSD Foundation and Google, Inc.
8 *

--- 13 unchanged lines hidden (view full) ---

22 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
24 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
25 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
26 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
27 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
28 * SUCH DAMAGE.
29 *
1/*-
2 * Copyright (c) 2003-2005,2008 Joseph Koshy
3 * Copyright (c) 2007 The FreeBSD Foundation
4 * All rights reserved.
5 *
6 * Portions of this software were developed by A. Joseph Koshy under
7 * sponsorship from the FreeBSD Foundation and Google, Inc.
8 *

--- 13 unchanged lines hidden (view full) ---

22 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
24 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
25 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
26 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
27 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
28 * SUCH DAMAGE.
29 *
30 * $FreeBSD: head/sys/i386/include/pmc_mdep.h 184802 2008-11-09 17:37:54Z jkoshy $
30 * $FreeBSD: head/sys/i386/include/pmc_mdep.h 185363 2008-11-27 09:00:47Z jkoshy $
31 */
32
33#ifndef _MACHINE_PMC_MDEP_H
34#define _MACHINE_PMC_MDEP_H 1
35
36#ifdef _KERNEL
37struct pmc_mdep;
38#endif

--- 8 unchanged lines hidden (view full) ---

47 * PPRO Intel Pentium Pro, Pentium-II, Pentium-III, Celeron and
48 * Pentium-M processors
49 * PENTIUM Intel Pentium MMX.
50 * IAP Intel Core/Core2/Atom programmable PMCs.
51 * IAF Intel fixed-function PMCs.
52 */
53
54#include <dev/hwpmc/hwpmc_amd.h> /* K7 and K8 */
31 */
32
33#ifndef _MACHINE_PMC_MDEP_H
34#define _MACHINE_PMC_MDEP_H 1
35
36#ifdef _KERNEL
37struct pmc_mdep;
38#endif

--- 8 unchanged lines hidden (view full) ---

47 * PPRO Intel Pentium Pro, Pentium-II, Pentium-III, Celeron and
48 * Pentium-M processors
49 * PENTIUM Intel Pentium MMX.
50 * IAP Intel Core/Core2/Atom programmable PMCs.
51 * IAF Intel fixed-function PMCs.
52 */
53
54#include <dev/hwpmc/hwpmc_amd.h> /* K7 and K8 */
55#include <dev/hwpmc/hwpmc_core.h>
55#include <dev/hwpmc/hwpmc_piv.h>
56#include <dev/hwpmc/hwpmc_ppro.h>
57#include <dev/hwpmc/hwpmc_pentium.h>
58#include <dev/hwpmc/hwpmc_tsc.h>
59
60/*
61 * Intel processors implementing V2 and later of the Intel performance
62 * measurement architecture have PMCs of the following classes: TSC,
63 * IAF and IAP.
64 */
65#define PMC_MDEP_CLASS_INDEX_TSC 0
66#define PMC_MDEP_CLASS_INDEX_K7 1
67#define PMC_MDEP_CLASS_INDEX_K8 1
68#define PMC_MDEP_CLASS_INDEX_P4 1
69#define PMC_MDEP_CLASS_INDEX_P5 1
70#define PMC_MDEP_CLASS_INDEX_P6 1
56#include <dev/hwpmc/hwpmc_piv.h>
57#include <dev/hwpmc/hwpmc_ppro.h>
58#include <dev/hwpmc/hwpmc_pentium.h>
59#include <dev/hwpmc/hwpmc_tsc.h>
60
61/*
62 * Intel processors implementing V2 and later of the Intel performance
63 * measurement architecture have PMCs of the following classes: TSC,
64 * IAF and IAP.
65 */
66#define PMC_MDEP_CLASS_INDEX_TSC 0
67#define PMC_MDEP_CLASS_INDEX_K7 1
68#define PMC_MDEP_CLASS_INDEX_K8 1
69#define PMC_MDEP_CLASS_INDEX_P4 1
70#define PMC_MDEP_CLASS_INDEX_P5 1
71#define PMC_MDEP_CLASS_INDEX_P6 1
71#define PMC_MDEP_CLASS_INDEX_IAF 1
72#define PMC_MDEP_CLASS_INDEX_IAP 2
72#define PMC_MDEP_CLASS_INDEX_IAP 1
73#define PMC_MDEP_CLASS_INDEX_IAF 2
73
74/*
75 * Architecture specific extensions to <sys/pmc.h> structures.
76 */
77
78union pmc_md_op_pmcallocate {
79 struct pmc_md_amd_op_pmcallocate pm_amd;
74
75/*
76 * Architecture specific extensions to <sys/pmc.h> structures.
77 */
78
79union pmc_md_op_pmcallocate {
80 struct pmc_md_amd_op_pmcallocate pm_amd;
80 struct pmc_md_ppro_op_pmcallocate pm_ppro;
81 struct pmc_md_pentium_op_pmcallocate pm_pentium;
81 struct pmc_md_iaf_op_pmcallocate pm_iaf;
82 struct pmc_md_iap_op_pmcallocate pm_iap;
82 struct pmc_md_p4_op_pmcallocate pm_p4;
83 struct pmc_md_p4_op_pmcallocate pm_p4;
84 struct pmc_md_pentium_op_pmcallocate pm_pentium;
85 struct pmc_md_ppro_op_pmcallocate pm_ppro;
83 uint64_t __pad[4];
84};
85
86/* Logging */
87#define PMCLOG_READADDR PMCLOG_READ32
88#define PMCLOG_EMITADDR PMCLOG_EMIT32
89
90#ifdef _KERNEL
91
92/* MD extension for 'struct pmc' */
93union pmc_md_pmc {
94 struct pmc_md_amd_pmc pm_amd;
86 uint64_t __pad[4];
87};
88
89/* Logging */
90#define PMCLOG_READADDR PMCLOG_READ32
91#define PMCLOG_EMITADDR PMCLOG_EMIT32
92
93#ifdef _KERNEL
94
95/* MD extension for 'struct pmc' */
96union pmc_md_pmc {
97 struct pmc_md_amd_pmc pm_amd;
95 struct pmc_md_ppro_pmc pm_ppro;
96 struct pmc_md_pentium_pmc pm_pentium;
98 struct pmc_md_iaf_pmc pm_iaf;
99 struct pmc_md_iap_pmc pm_iap;
97 struct pmc_md_p4_pmc pm_p4;
100 struct pmc_md_p4_pmc pm_p4;
101 struct pmc_md_pentium_pmc pm_pentium;
102 struct pmc_md_ppro_pmc pm_ppro;
98};
99
100struct pmc;
101struct pmc_mdep;
102
103#define PMC_TRAPFRAME_TO_PC(TF) ((TF)->tf_eip)
104#define PMC_TRAPFRAME_TO_FP(TF) ((TF)->tf_ebp)
105

--- 51 unchanged lines hidden ---
103};
104
105struct pmc;
106struct pmc_mdep;
107
108#define PMC_TRAPFRAME_TO_PC(TF) ((TF)->tf_eip)
109#define PMC_TRAPFRAME_TO_FP(TF) ((TF)->tf_ebp)
110

--- 51 unchanged lines hidden ---