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 --- |