Changeset View
Changeset View
Standalone View
Standalone View
sys/powerpc/powerpc/trap.c
Show All 28 Lines | |||||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
* | * | ||||
* $NetBSD: trap.c,v 1.58 2002/03/04 04:07:35 dbj Exp $ | * $NetBSD: trap.c,v 1.58 2002/03/04 04:07:35 dbj Exp $ | ||||
*/ | */ | ||||
#include <sys/cdefs.h> | #include <sys/cdefs.h> | ||||
__FBSDID("$FreeBSD$"); | __FBSDID("$FreeBSD$"); | ||||
#include "opt_hwpmc_hooks.h" | |||||
#include <sys/param.h> | #include <sys/param.h> | ||||
#include <sys/kdb.h> | #include <sys/kdb.h> | ||||
#include <sys/proc.h> | #include <sys/proc.h> | ||||
#include <sys/ktr.h> | #include <sys/ktr.h> | ||||
#include <sys/lock.h> | #include <sys/lock.h> | ||||
#include <sys/mutex.h> | #include <sys/mutex.h> | ||||
#include <sys/ptrace.h> | #include <sys/ptrace.h> | ||||
#include <sys/reboot.h> | #include <sys/reboot.h> | ||||
Show All 23 Lines | |||||
#include <machine/frame.h> | #include <machine/frame.h> | ||||
#include <machine/pcb.h> | #include <machine/pcb.h> | ||||
#include <machine/psl.h> | #include <machine/psl.h> | ||||
#include <machine/slb.h> | #include <machine/slb.h> | ||||
#include <machine/spr.h> | #include <machine/spr.h> | ||||
#include <machine/sr.h> | #include <machine/sr.h> | ||||
#include <machine/trap.h> | #include <machine/trap.h> | ||||
#ifdef HWPMC_HOOKS | |||||
#include <sys/pmckern.h> | |||||
PMC_SOFT_DEFINE( , , page_fault, all); | |||||
PMC_SOFT_DEFINE( , , page_fault, read); | |||||
PMC_SOFT_DEFINE( , , page_fault, write); | |||||
#endif | |||||
/* Below matches setjmp.S */ | /* Below matches setjmp.S */ | ||||
#define FAULTBUF_LR 21 | #define FAULTBUF_LR 21 | ||||
#define FAULTBUF_R1 1 | #define FAULTBUF_R1 1 | ||||
#define FAULTBUF_R2 2 | #define FAULTBUF_R2 2 | ||||
#define FAULTBUF_CR 22 | #define FAULTBUF_CR 22 | ||||
#define FAULTBUF_R14 3 | #define FAULTBUF_R14 3 | ||||
#define MOREARGS(sp) ((caddr_t)((uintptr_t)(sp) + \ | #define MOREARGS(sp) ((caddr_t)((uintptr_t)(sp) + \ | ||||
▲ Show 20 Lines • Show All 748 Lines • ▼ Show 20 Lines | #endif | ||||
} | } | ||||
/* Fault in the page. */ | /* Fault in the page. */ | ||||
rv = vm_fault_trap(map, eva, ftype, VM_FAULT_NORMAL, signo, ucode); | rv = vm_fault_trap(map, eva, ftype, VM_FAULT_NORMAL, signo, ucode); | ||||
/* | /* | ||||
* XXXDTRACE: add dtrace_doubletrap_func here? | * XXXDTRACE: add dtrace_doubletrap_func here? | ||||
*/ | */ | ||||
if (rv == KERN_SUCCESS) | if (rv == KERN_SUCCESS) { | ||||
#ifdef HWPMC_HOOKS | |||||
pmc_soft_page_fault(ftype, frame); | |||||
#endif | |||||
return (true); | return (true); | ||||
} | |||||
if (!user && handle_onfault(frame)) | if (!user && handle_onfault(frame)) | ||||
return (true); | return (true); | ||||
return (false); | return (false); | ||||
} | } | ||||
/* | /* | ||||
▲ Show 20 Lines • Show All 166 Lines • Show Last 20 Lines |