diff options
author | Michael Shalayeff <mickey@cvs.openbsd.org> | 2002-10-07 14:38:41 +0000 |
---|---|---|
committer | Michael Shalayeff <mickey@cvs.openbsd.org> | 2002-10-07 14:38:41 +0000 |
commit | 276264b6d6880707af7f40f523f8ce860f20cefa (patch) | |
tree | e2e2321ddb859dbd8c32c2f32086c896a7ad36e7 /sys/arch/hppa/include | |
parent | d9c8c53f017f2cc45df40cda9e68668a47da4746 (diff) |
on implementations w/ fpu included unimplemented instructions
are signaled through the exception trap w/ invalid opcode marked
instruction in the exception registers, not through the emulation
trap (as long as the fpu is enabled, of course).
parse emulation from the exception trap as well as the emulation
trap and fix the dispatcher into usable condition.
parse invalid op exception on trap and signal the user appropriately.
reset the exception on exec and for child on fork.
the later is appropriate since exceptions are delayed until next
fpu instruction, which was in the parent indeed, let him get it.
save parent's fpu context on fork before cipying it, if the
parent owned the fpu.
Diffstat (limited to 'sys/arch/hppa/include')
-rw-r--r-- | sys/arch/hppa/include/cpu.h | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/sys/arch/hppa/include/cpu.h b/sys/arch/hppa/include/cpu.h index 7de30854e37..3d2fcfa67d2 100644 --- a/sys/arch/hppa/include/cpu.h +++ b/sys/arch/hppa/include/cpu.h @@ -1,7 +1,7 @@ -/* $OpenBSD: cpu.h,v 1.32 2002/09/17 03:51:49 mickey Exp $ */ +/* $OpenBSD: cpu.h,v 1.33 2002/10/07 14:38:40 mickey Exp $ */ /* - * Copyright (c) 2000-2001 Michael Shalayeff + * Copyright (c) 2000-2002 Michael Shalayeff * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -82,6 +82,7 @@ extern const char *cpu_typename; #define HPPA_FPUS 0xc0 #define HPPA_FPUVER(w) (((w) & 0x003ff800) >> 11) #define HPPA_FPU_OP(w) ((w) >> 26) +#define HPPA_FPU_UNMPL 0x9 #define HPPA_FPU_I 0x01 #define HPPA_FPU_U 0x02 #define HPPA_FPU_O 0x04 @@ -89,11 +90,12 @@ extern const char *cpu_typename; #define HPPA_FPU_V 0x10 #define HPPA_FPU_D 0x20 #define HPPA_FPU_T 0x40 +#define HPPA_FPU_T_POS 25 #define HPPA_FPU_RM 0x00000600 #define HPPA_FPU_CQ 0x00fff800 #define HPPA_FPU_C 0x04000000 #define HPPA_FPU_FLSH 27 -#define HPPA_FPU_INIT (HPPA_FPU_I | HPPA_FPU_U | HPPA_FPU_O | HPPA_FPU_Z | HPPA_FPU_V) +#define HPPA_FPU_INIT (HPPA_FPU_U | HPPA_FPU_O | HPPA_FPU_Z | HPPA_FPU_V) #define HPPA_PMSFUS 0x20 /* ??? */ /* |