Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/arch/news68k/news68k Use common m68k/busaddrerr.s for bu...
details: https://anonhg.NetBSD.org/src/rev/06239e16c035
branches: trunk
changeset: 327712:06239e16c035
user: tsutsui <tsutsui%NetBSD.org@localhost>
date: Sat Mar 15 09:24:56 2014 +0000
description:
Use common m68k/busaddrerr.s for bus error and address error handlers.
No binary changes on GENERIC, and also tested on NWS-1750.
diffstat:
sys/arch/news68k/news68k/locore.s | 100 +------------------------------------
1 files changed, 5 insertions(+), 95 deletions(-)
diffs (114 lines):
diff -r 19d6cd2b486f -r 06239e16c035 sys/arch/news68k/news68k/locore.s
--- a/sys/arch/news68k/news68k/locore.s Sat Mar 15 09:22:36 2014 +0000
+++ b/sys/arch/news68k/news68k/locore.s Sat Mar 15 09:24:56 2014 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: locore.s,v 1.64 2014/03/09 16:18:00 tsutsui Exp $ */
+/* $NetBSD: locore.s,v 1.65 2014/03/15 09:24:56 tsutsui Exp $ */
/*
* Copyright (c) 1988 University of Utah.
@@ -479,100 +479,10 @@
*/
#include <m68k/m68k/trap_subr.s>
-#if defined(M68020) || defined(M68030)
-ENTRY_NOPROFILE(busaddrerr2030)
- clrl %sp@- | stack adjust count
- moveml #0xFFFF,%sp@- | save user registers
- movl %usp,%a0 | save the user SP
- movl %a0,%sp@(FR_SP) | in the savearea
- moveq #0,%d0
- movw %sp@(FR_HW+10),%d0 | grab SSW for fault processing
- btst #12,%d0 | RB set?
- jeq LbeX0 | no, test RC
- bset #14,%d0 | yes, must set FB
- movw %d0,%sp@(FR_HW+10) | for hardware too
-LbeX0:
- btst #13,%d0 | RC set?
- jeq LbeX1 | no, skip
- bset #15,%d0 | yes, must set FC
- movw %d0,%sp@(FR_HW+10) | for hardware too
-LbeX1:
- btst #8,%d0 | data fault?
- jeq Lbe0 | no, check for hard cases
- movl %sp@(FR_HW+16),%d1 | fault address is as given in frame
- jra Lbe10 | thats it
-Lbe0:
- btst #4,%sp@(FR_HW+6) | long (type B) stack frame?
- jne Lbe4 | yes, go handle
- movl %sp@(FR_HW+2),%d1 | no, can use save PC
- btst #14,%d0 | FB set?
- jeq Lbe3 | no, try FC
- addql #4,%d1 | yes, adjust address
- jra Lbe10 | done
-Lbe3:
- btst #15,%d0 | FC set?
- jeq Lbe10 | no, done
- addql #2,%d1 | yes, adjust address
- jra Lbe10 | done
-Lbe4:
- movl %sp@(FR_HW+36),%d1 | long format, use stage B address
- btst #15,%d0 | FC set?
- jeq Lbe10 | no, all done
- subql #2,%d1 | yes, adjust address
-Lbe10:
- movl %d1,%sp@- | push fault VA
- movl %d0,%sp@- | and padded SSW
- movw %sp@(FR_HW+8+6),%d0 | get frame format/vector offset
- andw #0x0FFF,%d0 | clear out frame format
- cmpw #12,%d0 | address error vector?
- jeq Lisaerr | yes, go to it
- movl %d1,%a0 | fault address
- movl %sp@,%d0 | function code from ssw
- btst #8,%d0 | data fault?
- jne Lbe10a
-#if 0
- movql #1,%d0 | user program access FC
-#else
- moveq #1,%d0 | user program access FC
-#endif
- | (we dont separate data/program)
- btst #5,%sp@(FR_HW+8) | supervisor mode?
- jeq Lbe10a | if no, done
- movql #5,%d0 | else supervisor program access
-Lbe10a:
- ptestr %d0,%a0@,#7 | do a table search
- pmove %psr,%sp@ | save result
- movb %sp@,%d1
- btst #2,%d1 | invalid (incl. limit viol. and berr)?
- jeq Lmightnotbemerr | no -> wp check
- btst #7,%d1 | is it MMU table berr?
- jne Lisberr1 | yes, needs not be fast.
-Lismerr:
- movl #T_MMUFLT,%sp@- | show that we are an MMU fault
- jra _ASM_LABEL(faultstkadj) | and deal with it
-Lmightnotbemerr:
- btst #3,%d1 | write protect bit set?
- jeq Lisberr1 | no: must be bus error
- movl %sp@,%d0 | ssw into low word of %d0
- andw #0xc0,%d0 | Write protect is set on page:
- cmpw #0x40,%d0 | was it read cycle?
- jne Lismerr | no, was not WPE, must be MMU fault
- jra Lisberr1 | real bus err needs not be fast.
-Lisaerr:
- movl #T_ADDRERR,%sp@- | mark address error
- jra _ASM_LABEL(faultstkadj) | and deal with it
-Lisberr1:
- clrw %sp@ | re-clear pad word
- tstl _C_LABEL(nofault) | catch bus error?
- jeq Lisberr | no, handle as usual
- movl _C_LABEL(nofault),%sp@- | yes,
- jbsr _C_LABEL(longjmp) | longjmp(nofault)
- /* NOTREACHED */
-#endif /* M68020 || M68030 */
-
-Lisberr: | also used by M68040/60
- movl #T_BUSERR,%sp@- | mark bus error
- jra _ASM_LABEL(faultstkadj) | and deal with it
+/*
+ * Use common m68k bus error and address error handlers.
+ */
+#include <m68k/m68k/busaddrerr.s>
/*
* FP exceptions.
Home |
Main Index |
Thread Index |
Old Index