Deleted Added
full compact
pmc_mdep.h (184802) pmc_mdep.h (185363)
1/*-
2 * Copyright (c) 2003-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-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/amd64/include/pmc_mdep.h 184802 2008-11-09 17:37:54Z jkoshy $
30 * $FreeBSD: head/sys/amd64/include/pmc_mdep.h 185363 2008-11-27 09:00:47Z jkoshy $
31 */
32
33/* Machine dependent interfaces */
34
35#ifndef _MACHINE_PMC_MDEP_H
36#define _MACHINE_PMC_MDEP_H 1
37
38#ifdef _KERNEL
39struct pmc_mdep;
40#endif
41
42#include <dev/hwpmc/hwpmc_amd.h>
31 */
32
33/* Machine dependent interfaces */
34
35#ifndef _MACHINE_PMC_MDEP_H
36#define _MACHINE_PMC_MDEP_H 1
37
38#ifdef _KERNEL
39struct pmc_mdep;
40#endif
41
42#include <dev/hwpmc/hwpmc_amd.h>
43#include <dev/hwpmc/hwpmc_core.h>
43#include <dev/hwpmc/hwpmc_piv.h>
44#include <dev/hwpmc/hwpmc_tsc.h>
45
46/*
47 * Intel processors implementing V2 and later of the Intel performance
48 * measurement architecture have PMCs of the following classes: TSC,
49 * IAF and IAP.
50 */
51#define PMC_MDEP_CLASS_INDEX_TSC 0
52#define PMC_MDEP_CLASS_INDEX_K8 1
53#define PMC_MDEP_CLASS_INDEX_P4 1
44#include <dev/hwpmc/hwpmc_piv.h>
45#include <dev/hwpmc/hwpmc_tsc.h>
46
47/*
48 * Intel processors implementing V2 and later of the Intel performance
49 * measurement architecture have PMCs of the following classes: TSC,
50 * IAF and IAP.
51 */
52#define PMC_MDEP_CLASS_INDEX_TSC 0
53#define PMC_MDEP_CLASS_INDEX_K8 1
54#define PMC_MDEP_CLASS_INDEX_P4 1
54#define PMC_MDEP_CLASS_INDEX_IAF 1
55#define PMC_MDEP_CLASS_INDEX_IAP 2
55#define PMC_MDEP_CLASS_INDEX_IAP 1
56#define PMC_MDEP_CLASS_INDEX_IAF 2
56
57/*
58 * On the amd64 platform we support the following PMCs.
59 *
60 * TSC The timestamp counter
61 * K8 AMD Athlon64 and Opteron PMCs in 64 bit mode.
62 * PIV Intel P4/HTT and P4/EMT64
63 * IAP Intel Core/Core2/Atom CPUs in 64 bits mode.
64 * IAF Intel fixed-function PMCs in Core2 and later CPUs.
65 */
66
67union pmc_md_op_pmcallocate {
68 struct pmc_md_amd_op_pmcallocate pm_amd;
57
58/*
59 * On the amd64 platform we support the following PMCs.
60 *
61 * TSC The timestamp counter
62 * K8 AMD Athlon64 and Opteron PMCs in 64 bit mode.
63 * PIV Intel P4/HTT and P4/EMT64
64 * IAP Intel Core/Core2/Atom CPUs in 64 bits mode.
65 * IAF Intel fixed-function PMCs in Core2 and later CPUs.
66 */
67
68union pmc_md_op_pmcallocate {
69 struct pmc_md_amd_op_pmcallocate pm_amd;
70 struct pmc_md_iaf_op_pmcallocate pm_iaf;
71 struct pmc_md_iap_op_pmcallocate pm_iap;
69 struct pmc_md_p4_op_pmcallocate pm_p4;
70 uint64_t __pad[4];
71};
72
73/* Logging */
74#define PMCLOG_READADDR PMCLOG_READ64
75#define PMCLOG_EMITADDR PMCLOG_EMIT64
76
77#ifdef _KERNEL
78
79union pmc_md_pmc {
80 struct pmc_md_amd_pmc pm_amd;
72 struct pmc_md_p4_op_pmcallocate pm_p4;
73 uint64_t __pad[4];
74};
75
76/* Logging */
77#define PMCLOG_READADDR PMCLOG_READ64
78#define PMCLOG_EMITADDR PMCLOG_EMIT64
79
80#ifdef _KERNEL
81
82union pmc_md_pmc {
83 struct pmc_md_amd_pmc pm_amd;
84 struct pmc_md_iaf_pmc pm_iaf;
85 struct pmc_md_iap_pmc pm_iap;
81 struct pmc_md_p4_pmc pm_p4;
82};
83
84#define PMC_TRAPFRAME_TO_PC(TF) ((TF)->tf_rip)
85#define PMC_TRAPFRAME_TO_FP(TF) ((TF)->tf_rbp)
86#define PMC_TRAPFRAME_TO_USER_SP(TF) ((TF)->tf_rsp)
87#define PMC_TRAPFRAME_TO_KERNEL_SP(TF) ((TF)->tf_rsp)
88

--- 33 unchanged lines hidden ---
86 struct pmc_md_p4_pmc pm_p4;
87};
88
89#define PMC_TRAPFRAME_TO_PC(TF) ((TF)->tf_rip)
90#define PMC_TRAPFRAME_TO_FP(TF) ((TF)->tf_rbp)
91#define PMC_TRAPFRAME_TO_USER_SP(TF) ((TF)->tf_rsp)
92#define PMC_TRAPFRAME_TO_KERNEL_SP(TF) ((TF)->tf_rsp)
93

--- 33 unchanged lines hidden ---