diff options
author | bz <bz@FreeBSD.org> | 2015-03-27 08:47:16 +0000 |
---|---|---|
committer | bz <bz@FreeBSD.org> | 2015-03-27 08:47:16 +0000 |
commit | 96329446586b235e6df5def10db501060389afc5 (patch) | |
tree | 3a5666453522602a6857b111b11ea1632b206e8f | |
parent | 4fddf178d36e289e4f614f548d276ddf2bd98409 (diff) | |
download | FreeBSD-src-96329446586b235e6df5def10db501060389afc5.zip FreeBSD-src-96329446586b235e6df5def10db501060389afc5.tar.gz |
Rather than defining our own magic checks here use INKERNEL() for
the PMC_IN_KERNEL() macro definition.
Add missing macros to extract the return address (LR) from the trapframe.
Discussed with: andrew
Obtained from: Cambridge/L41
Sponsored by: DARPA, AFRL
MFC after: 2 weeks
-rw-r--r-- | sys/arm/include/pmc_mdep.h | 5 | ||||
-rw-r--r-- | sys/dev/hwpmc/hwpmc_arm.c | 1 |
2 files changed, 4 insertions, 2 deletions
diff --git a/sys/arm/include/pmc_mdep.h b/sys/arm/include/pmc_mdep.h index 43546b8..91023f4 100644 --- a/sys/arm/include/pmc_mdep.h +++ b/sys/arm/include/pmc_mdep.h @@ -56,8 +56,7 @@ union pmc_md_pmc { #define PMC_IN_KERNEL_STACK(S,START,END) \ ((S) >= (START) && (S) < (END)) -#define PMC_IN_KERNEL(va) (((va) >= USRSTACK) && \ - ((va) < VM_MAX_KERNEL_ADDRESS)) +#define PMC_IN_KERNEL(va) INKERNEL((va)) #define PMC_IN_USERSPACE(va) ((va) <= VM_MAXUSER_ADDRESS) @@ -65,6 +64,8 @@ union pmc_md_pmc { #define PMC_TRAPFRAME_TO_FP(TF) ((TF)->tf_r11) #define PMC_TRAPFRAME_TO_SVC_SP(TF) ((TF)->tf_svc_sp) #define PMC_TRAPFRAME_TO_USR_SP(TF) ((TF)->tf_usr_sp) +#define PMC_TRAPFRAME_TO_SVC_LR(TF) ((TF)->tf_svc_lr) +#define PMC_TRAPFRAME_TO_USR_LR(TF) ((TF)->tf_usr_lr) /* Build a fake kernel trapframe from current instruction pointer. */ #define PMC_FAKE_TRAPFRAME(TF) \ diff --git a/sys/dev/hwpmc/hwpmc_arm.c b/sys/dev/hwpmc/hwpmc_arm.c index 492695a..a2a25a9 100644 --- a/sys/dev/hwpmc/hwpmc_arm.c +++ b/sys/dev/hwpmc/hwpmc_arm.c @@ -36,6 +36,7 @@ __FBSDID("$FreeBSD$"); #include <machine/cpu.h> #include <machine/md_var.h> #include <machine/pmc_mdep.h> +#include <machine/stack.h> #include <vm/vm.h> #include <vm/vm_param.h> |