summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorjake <jake@FreeBSD.org>2002-06-08 07:17:19 +0000
committerjake <jake@FreeBSD.org>2002-06-08 07:17:19 +0000
commit56400fc9010744bc5bc2c6ff85c05e71a066ec28 (patch)
treec67254f4845fdb1aeb1dfab15465911aecdd1bc0 /sys
parent51d015a4b692034f1f4136c41618f2c29f4de7f8 (diff)
downloadFreeBSD-src-56400fc9010744bc5bc2c6ff85c05e71a066ec28.zip
FreeBSD-src-56400fc9010744bc5bc2c6ff85c05e71a066ec28.tar.gz
Remove code from trap which is handled in userland now.
Diffstat (limited to 'sys')
-rw-r--r--sys/conf/files.sparc642
-rw-r--r--sys/sparc64/include/fp.h3
-rw-r--r--sys/sparc64/sparc64/machdep.c7
-rw-r--r--sys/sparc64/sparc64/trap.c22
4 files changed, 5 insertions, 29 deletions
diff --git a/sys/conf/files.sparc64 b/sys/conf/files.sparc64
index 1753ebb..534da7c 100644
--- a/sys/conf/files.sparc64
+++ b/sys/conf/files.sparc64
@@ -41,8 +41,6 @@ sparc64/sparc64/elf_machdep.c standard
sparc64/sparc64/eeprom.c optional eeprom
sparc64/sparc64/eeprom_ebus.c optional eeprom ebus
sparc64/sparc64/eeprom_sbus.c optional eeprom sbus
-sparc64/sparc64/emul.c standard
-sparc64/sparc64/fp.c standard
sparc64/sparc64/identcpu.c standard
sparc64/sparc64/in_cksum.c optional inet
sparc64/sparc64/intr_machdep.c standard
diff --git a/sys/sparc64/include/fp.h b/sys/sparc64/include/fp.h
index bdadacc..a5caf9e 100644
--- a/sys/sparc64/include/fp.h
+++ b/sys/sparc64/include/fp.h
@@ -41,9 +41,6 @@ struct fpstate {
struct pcb;
struct thread;
-void fp_init_thread(struct thread *);
-int fp_enable_thread(struct thread *, struct trapframe *);
-int fp_exception(struct thread *, struct trapframe *, int *);
/*
* Note: The pointers passed to the next two functions must be aligned on
* 64 byte boundaries.
diff --git a/sys/sparc64/sparc64/machdep.c b/sys/sparc64/sparc64/machdep.c
index f44c25f..aef5212 100644
--- a/sys/sparc64/sparc64/machdep.c
+++ b/sys/sparc64/sparc64/machdep.c
@@ -606,11 +606,8 @@ setregs(struct thread *td, u_long entry, u_long stack, u_long ps_strings)
pcb = td->td_pcb;
sp = rounddown(stack, 16);
tf = td->td_frame;
- fp_init_thread(td);
- bzero(pcb->pcb_rw, sizeof(pcb->pcb_rw));
- bzero(pcb->pcb_rwsp, sizeof(pcb->pcb_rwsp));
- pcb->pcb_nsaved = 0;
- bzero(tf, sizeof (*tf));
+ bzero(pcb, sizeof(*pcb));
+ bzero(tf, sizeof(*tf));
tf->tf_out[0] = stack;
tf->tf_out[3] = PS_STRINGS;
tf->tf_out[6] = sp - SPOFF - sizeof(struct frame);
diff --git a/sys/sparc64/sparc64/trap.c b/sys/sparc64/sparc64/trap.c
index ac2647e..da03096 100644
--- a/sys/sparc64/sparc64/trap.c
+++ b/sys/sparc64/sparc64/trap.c
@@ -72,7 +72,6 @@
#include <vm/vm_page.h>
#include <machine/clock.h>
-#include <machine/emul.h>
#include <machine/frame.h>
#include <machine/intr_machdep.h>
#include <machine/pcb.h>
@@ -198,10 +197,7 @@ if ((type & ~T_KERNEL) != T_BREAKPOINT)
* User Mode Traps
*/
case T_MEM_ADDRESS_NOT_ALIGNED:
- if ((sig = unaligned_fixup(td, tf)) == 0) {
- TF_DONE(tf);
- goto user;
- }
+ sig = SIGILL;
goto trapsig;
#if 0
case T_ALIGN_LDDF:
@@ -216,18 +212,9 @@ if ((type & ~T_KERNEL) != T_BREAKPOINT)
sig = SIGFPE;
goto trapsig;
case T_FP_DISABLED:
- if (fp_enable_thread(td, tf))
- goto user;
- /* Fallthrough. */
case T_FP_EXCEPTION_IEEE_754:
case T_FP_EXCEPTION_OTHER:
- mtx_lock(&Giant);
- if ((sig = fp_exception_other(td, tf, &ucode)) == 0) {
- mtx_unlock(&Giant);
- TF_DONE(tf);
- goto user;
- }
- mtx_unlock(&Giant);
+ sig = SIGFPE;
goto trapsig;
case T_DATA_ERROR:
case T_DATA_EXCEPTION:
@@ -258,10 +245,7 @@ if ((type & ~T_KERNEL) != T_BREAKPOINT)
}
goto user;
case T_ILLEGAL_INSTRUCTION:
- if ((sig = emul_insn(td, tf)) == 0) {
- TF_DONE(tf);
- goto user;
- }
+ sig = SIGILL;
goto trapsig;
case T_PRIVILEGED_ACTION:
case T_PRIVILEGED_OPCODE:
OpenPOWER on IntegriCloud