summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--etc/etc.i386/boot.cfg3
-rw-r--r--sys/arch/i386/i386/i386_trap.S6
-rw-r--r--sys/arch/i386/i386/vector.S96
-rwxr-xr-xupdate_system.sh3
4 files changed, 20 insertions, 88 deletions
diff --git a/etc/etc.i386/boot.cfg b/etc/etc.i386/boot.cfg
index cf6db5740e6..9804c2190ae 100644
--- a/etc/etc.i386/boot.cfg
+++ b/etc/etc.i386/boot.cfg
@@ -1,4 +1,5 @@
-menu=Boot normally:rndseed /var/db/entropy-file;boot
+menu=Boot LOCKDOC:rndseed /var/db/entropy-file;consdev com2;boot
+menu=Boot normally:rndseed /var/db/entropy-file;boot netbsd.orig
menu=Boot single user:rndseed /var/db/entropy-file;boot -s
menu=Drop to boot prompt:prompt
default=1
diff --git a/sys/arch/i386/i386/i386_trap.S b/sys/arch/i386/i386/i386_trap.S
index bf1eb852088..84974065dbd 100644
--- a/sys/arch/i386/i386/i386_trap.S
+++ b/sys/arch/i386/i386/i386_trap.S
@@ -400,8 +400,7 @@ END(trap_return_fault_return)
/* LINTSTUB: Ignore */
ENTRY(alltraps)
INTRENTRY
- movl $__trace_irqs_off_asm,%eax
- call *%eax
+ TRACE_IRQS_OFF
STI(%eax)
calltrap:
#ifdef DIAGNOSTIC
@@ -470,8 +469,7 @@ _C_LABEL(trapreturn): .globl trapreturn
jmp .Lalltraps_checkast /* re-check ASTs */
4: .asciz "SPL NOT LOWERED ON TRAP EXIT\n"
#endif /* DIAGNOSTIC */
-9: movl $__trace_irqs_on_asm,%eax
- call *%eax
+9: TRACE_IRQS_ON
STI(%eax)
call _C_LABEL(pmap_load)
jmp .Lalltraps_checkast /* re-check ASTs */
diff --git a/sys/arch/i386/i386/vector.S b/sys/arch/i386/i386/vector.S
index a745d3a1f91..5b57dcd8e55 100644
--- a/sys/arch/i386/i386/vector.S
+++ b/sys/arch/i386/i386/vector.S
@@ -91,6 +91,15 @@ __KERNEL_RCSID(0, "$NetBSD: vector.S,v 1.83 2019/02/15 08:54:01 nonaka Exp $");
#include "assym.h"
+#ifdef LOCKDOC
+#define TRACE_IRQS_OFF movl $__trace_irqs_off_asm,%eax; call *%eax
+#define TRACE_IRQS_ON movl $__trace_irqs_on_asm,%eax; call *%eax
+#else
+#define TRACE_IRQS_OFF
+#define TRACE_IRQS_ON
+#endif
+
+
/*
* Macros for interrupt entry, call to handler, and exit.
*
@@ -310,14 +319,12 @@ IDTVEC(resume_lapic_ltimer)
pushl %ebx
IDEPTH_INCR
movl $IPL_CLOCK,CPUVAR(ILEVEL)
- movl $__trace_irqs_off_asm,%eax
- call *%eax
+ TRACE_IRQS_OFF
sti
pushl $0
call _C_LABEL(lapic_clockintr)
addl $4,%esp
- movl $__trace_irqs_on_asm,%eax
- call *%eax
+ TRACE_IRQS_ON
cli
jmp _C_LABEL(Xdoreti)
2:
@@ -374,7 +381,6 @@ IDTVEC_END(resume_hyperv_hypercall)
* for specific PICs.
*/
-#ifdef LOCKDOC
#define INTRSTUB(name, num, early_ack, late_ack, mask, unmask, level_mask) \
IDTVEC(recurse_ ## name ## num) ;\
INTR_RECURSE_HWFRAME ;\
@@ -411,8 +417,7 @@ IDTVEC(intr_ ## name ## num) ;\
movl %ebx,CPUVAR(ILEVEL) ;\
/* switch stack if necessary, and push a ptr to our intrframe */ \
IDEPTH_INCR ;\
- movl $__trace_irqs_off_asm,%eax ;\
- call *%eax ;\
+ TRACE_IRQS_OFF ;\
sti ;\
movl IS_HANDLERS(%ebp),%ebx ;\
6: \
@@ -433,8 +438,7 @@ IDTVEC(intr_ ## name ## num) ;\
jmp _C_LABEL(Xdoreti) /* lower spl and do ASTs */ ;\
7: \
cli ;\
- movl $__trace_irqs_on_asm,%eax ;\
- call *%eax ;\
+ TRACE_IRQS_ON ;\
orl $(1 << num),CPUVAR(IPENDING) ;\
level_mask(num) ;\
late_ack(num) ;\
@@ -451,80 +455,6 @@ IDTVEC(intr_ ## name ## num) ;\
addl $4,%esp ;\
INTRFASTEXIT ;\
IDTVEC_END(intr_ ## name ## num)
-#else
-#define INTRSTUB(name, num, early_ack, late_ack, mask, unmask, level_mask) \
-IDTVEC(recurse_ ## name ## num) ;\
- INTR_RECURSE_HWFRAME ;\
- subl $4,%esp ;\
- pushl $T_ASTFLT /* trap # for doing ASTs */ ;\
- INTRENTRY ;\
-IDTVEC_END(recurse_ ## name ## num) ;\
-IDTVEC(resume_ ## name ## num) \
- movl $IREENT_MAGIC,TF_ERR(%esp) ;\
- movl %ebx,%esi ;\
- movl CPUVAR(ISOURCES) + (num) * 4,%ebp ;\
- movl IS_MAXLEVEL(%ebp),%ebx ;\
- jmp 1f ;\
-IDTVEC_END(resume_ ## name ## num) ;\
-IDTVEC(intr_ ## name ## num) ;\
- pushl $0 /* dummy error code */ ;\
- pushl $T_ASTFLT /* trap # for doing ASTs */ ;\
- INTRENTRY ;\
- movl CPUVAR(ISOURCES) + (num) * 4,%ebp ;\
- mask(num) /* mask it in hardware */ ;\
- early_ack(num) /* and allow other intrs */ ;\
- testl %ebp,%ebp ;\
- jz 9f /* stray */ ;\
- movl IS_MAXLEVEL(%ebp),%ebx ;\
- movl CPUVAR(ILEVEL),%esi ;\
- cmpl %ebx,%esi ;\
- jae 10f /* currently masked; hold it */ ;\
- addl $1,CPUVAR(NINTR) /* statistical info */ ;\
- adcl $0,CPUVAR(NINTR)+4 ;\
- addl $1,IS_EVCNTLO(%ebp) /* inc event counter */ ;\
- adcl $0,IS_EVCNTHI(%ebp) ;\
-1: \
- pushl %esi /* if_ppi */ ;\
- movl %ebx,CPUVAR(ILEVEL) ;\
- /* switch stack if necessary, and push a ptr to our intrframe */ \
- IDEPTH_INCR ;\
- sti
- movl IS_HANDLERS(%ebp),%ebx ;\
-6: \
- movl IH_LEVEL(%ebx),%edi ;\
- cmpl %esi,%edi ;\
- jle 7f ;\
- pushl IH_ARG(%ebx) ;\
- movl IH_FUN(%ebx),%eax ;\
- movl %edi,CPUVAR(ILEVEL) ;\
- movl IH_NEXT(%ebx),%ebx /* next handler in chain */ ;\
- call *%eax /* call it */ ;\
- addl $4,%esp /* toss the arg */ ;\
- testl %ebx,%ebx ;\
- jnz 6b ;\
- cli ;\
- unmask(num) /* unmask it in hardware */ ;\
- late_ack(num) ;\
- jmp _C_LABEL(Xdoreti) /* lower spl and do ASTs */ ;\
-7: \
- cli ;\
- orl $(1 << num),CPUVAR(IPENDING) ;\
- level_mask(num) ;\
- late_ack(num) ;\
- jmp _C_LABEL(Xdoreti) /* lower spl and do ASTs */ ;\
-10: \
- orl $(1 << num),CPUVAR(IPENDING) ;\
- level_mask(num) ;\
- late_ack(num) ;\
- INTRFASTEXIT ;\
-9: \
- pushl %esp /* for unmask */ ;\
- unmask(num) ;\
- late_ack(num) ;\
- addl $4,%esp ;\
- INTRFASTEXIT ;\
-IDTVEC_END(intr_ ## name ## num)
-#endif
#define ICUADDR IO_ICU1
diff --git a/update_system.sh b/update_system.sh
index 88e5fc46ab6..6acd4df6863 100755
--- a/update_system.sh
+++ b/update_system.sh
@@ -3,6 +3,9 @@ set -xeu
NETBSD_IP=192.168.122.211
+./build.sh -U -O ./obj -j$(nproc) -m i386 -a i386 -u kernel=GENERIC
./build.sh -U -O ./obj -j$(nproc) -m i386 -a i386 -u kernel=LOCKDOC
scp etc/rc root@$NETBSD_IP:/etc/rc
+scp etc/etc.i386/boot.cfg root@$NETBSD_IP:/boot.cfg
+scp obj/sys/arch/i386/compile/GENERIC/netbsd root@$NETBSD_IP:/netbsd.orig
scp obj/sys/arch/i386/compile/LOCKDOC/netbsd root@$NETBSD_IP:/netbsd