summaryrefslogtreecommitdiff
path: root/sys/arch/hppa/include
diff options
context:
space:
mode:
authorMichael Shalayeff <mickey@cvs.openbsd.org>2002-10-07 14:38:41 +0000
committerMichael Shalayeff <mickey@cvs.openbsd.org>2002-10-07 14:38:41 +0000
commit276264b6d6880707af7f40f523f8ce860f20cefa (patch)
treee2e2321ddb859dbd8c32c2f32086c896a7ad36e7 /sys/arch/hppa/include
parentd9c8c53f017f2cc45df40cda9e68668a47da4746 (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.h8
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 /* ??? */
/*