diff --git a/sys/powerpc/include/trap.h b/sys/powerpc/include/trap.h index 22bb0d252be2..a8164d0f72e1 100644 --- a/sys/powerpc/include/trap.h +++ b/sys/powerpc/include/trap.h @@ -80,6 +80,9 @@ #define EXC_HEA 0x0e40 /* Hypervisor Emulation Assistance */ #define EXC_VSX 0x0f40 /* VSX Unavailable */ +/* Power ISA 2.07+: */ +#define EXC_FAC 0x0f60 /* Facility Unavailable */ + /* The following are available on 4xx and 85xx */ #define EXC_CRIT 0x0100 /* Critical Input Interrupt */ #define EXC_PIT 0x1000 /* Programmable Interval Timer */ diff --git a/sys/powerpc/powerpc/trap.c b/sys/powerpc/powerpc/trap.c index 7c1193010032..c72b631cca45 100644 --- a/sys/powerpc/powerpc/trap.c +++ b/sys/powerpc/powerpc/trap.c @@ -135,6 +135,7 @@ static struct powerpc_exception powerpc_exceptions[] = { { EXC_PERF, "performance monitoring" }, { EXC_VEC, "altivec unavailable" }, { EXC_VSX, "vsx unavailable" }, + { EXC_FAC, "facility unavailable" }, { EXC_ITMISS, "instruction tlb miss" }, { EXC_DLMISS, "data load tlb miss" }, { EXC_DSMISS, "data store tlb miss" }, @@ -279,6 +280,11 @@ trap(struct trapframe *frame) enable_fpu(td); break; + case EXC_FAC: + sig = SIGILL; + ucode = ILL_ILLOPC; + break; + case EXC_VECAST_E: case EXC_VECAST_G4: case EXC_VECAST_G5: