Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/netbsd-1-4]: src/sys/arch/x68k/x68k pullup 1.31->1.32 (minoura)



details:   https://anonhg.NetBSD.org/src/rev/723bf9eb4a5b
branches:  netbsd-1-4
changeset: 468744:723bf9eb4a5b
user:      perry <perry%NetBSD.org@localhost>
date:      Sun Jun 20 19:36:29 1999 +0000

description:
pullup 1.31->1.32 (minoura)

diffstat:

 sys/arch/x68k/x68k/trap.c |  26 ++++++++++++++++++++++++--
 1 files changed, 24 insertions(+), 2 deletions(-)

diffs (54 lines):

diff -r 2ae4e1756dd5 -r 723bf9eb4a5b sys/arch/x68k/x68k/trap.c
--- a/sys/arch/x68k/x68k/trap.c Sun Jun 20 19:34:17 1999 +0000
+++ b/sys/arch/x68k/x68k/trap.c Sun Jun 20 19:36:29 1999 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: trap.c,v 1.31 1999/03/26 23:41:39 mycroft Exp $        */
+/*     $NetBSD: trap.c,v 1.31.2.1 1999/06/20 19:36:29 perry Exp $      */
 
 /*
  * Copyright (c) 1988 University of Utah.
@@ -49,6 +49,7 @@
 #include "opt_compat_sunos.h"
 #include "opt_compat_hpux.h"
 #include "opt_compat_linux.h"
+#include "opt_fpuemulate.h"
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -404,6 +405,26 @@
                i = SIGFPE;
                break;
 
+       /*
+        * FPU faults in supervisor mode.
+        */
+       case T_ILLINST: /* fnop generates this, apparently. */
+       case T_FPEMULI:
+       case T_FPEMULD: {
+               extern label_t *nofault;
+
+               if (nofault)    /* If we're probing. */
+                       longjmp(nofault);
+               if (type == T_ILLINST)
+                       printf("Kernel Illegal Instruction trap.\n");
+               else
+                       printf("Kernel FPU trap.\n");
+               goto dopanic;
+       }
+
+       /*
+        * Unimplemented FPU instructions/datatypes.
+        */
        case T_FPEMULI|T_USER:  /* unimplemented FP instuction */
        case T_FPEMULD|T_USER:  /* unimplemented FP data type */
 #ifdef FPU_EMULATE
@@ -705,7 +726,8 @@
                break;
            }
        }
-       trapsignal(p, i, ucode);
+       if (i)
+               trapsignal(p, i, ucode);
        if ((type & T_USER) == 0)
                return;
 out:



Home | Main Index | Thread Index | Old Index