i386 is a very naughty arch.

While messing with this code make i386 and amd64 more identical.

guenther@ tested this on an mp i386 for me yesterday, the machine seemed
happy.

Cheers,

-0-

diff --git a/arch/amd64/isa/clock.c b/arch/amd64/isa/clock.c
index 23fc0f0..1b4ff7c 100644
--- a/arch/amd64/isa/clock.c
+++ b/arch/amd64/isa/clock.c
@@ -315,7 +315,7 @@ i8254_initclocks(void)
 
        isa_intr_establish(NULL, 0, IST_PULSE, IPL_CLOCK, clockintr,
            0, "clock");
-       isa_intr_establish(NULL, 8, IST_PULSE, IPL_CLOCK, rtcintr,
+       isa_intr_establish(NULL, 8, IST_PULSE, IPL_STATCLOCK, rtcintr,
            0, "rtc");
 
        rtcstart();                     /* start the mc146818 clock */
diff --git a/arch/i386/i386/apicvec.s b/arch/i386/i386/apicvec.s
index b8d8424..7976692 100644
--- a/arch/i386/i386/apicvec.s
+++ b/arch/i386/i386/apicvec.s
@@ -170,16 +170,10 @@ XINTR(ltimer):
        ioapic_asm_ack()
        sti
        incl    CPUVAR(IDEPTH)
-#ifdef MULTIPROCESSOR
-       call    _C_LABEL(i386_softintlock)
-#endif
        movl    %esp,%eax
        pushl   %eax
        call    _C_LABEL(lapic_clockintr)
        addl    $4,%esp
-#ifdef MULTIPROCESSOR
-       call    _C_LABEL(i386_softintunlock)
-#endif
        decl    CPUVAR(IDEPTH)
        jmp     _C_LABEL(Xdoreti)
 
diff --git a/arch/i386/include/intr.h b/arch/i386/include/intr.h
index d13f876..86b8ecd 100644
--- a/arch/i386/include/intr.h
+++ b/arch/i386/include/intr.h
@@ -107,7 +107,7 @@ void splassert_check(int, const char *);
 #define        spltty()        splraise(IPL_TTY)
 #define        splaudio()      splraise(IPL_AUDIO)
 #define        splclock()      splraise(IPL_CLOCK)
-#define        splstatclock()  splhigh()
+#define        splstatclock()  splclock()
 #define splipi()       splraise(IPL_IPI)
 
 /*
diff --git a/arch/i386/include/intrdefs.h b/arch/i386/include/intrdefs.h
index c399d47..ef419d3 100644
--- a/arch/i386/include/intrdefs.h
+++ b/arch/i386/include/intrdefs.h
@@ -65,10 +65,10 @@
 #define        IPL_VM          MAKEIPL(7)      /* memory allocation */
 #define        IPL_AUDIO       MAKEIPL(8)      /* audio */
 #define        IPL_CLOCK       MAKEIPL(9)      /* clock */
-#define        IPL_STATCLOCK   MAKEIPL(10)     /* statclock */
-#define        IPL_SCHED       IPL_STATCLOCK
-#define        IPL_HIGH        MAKEIPL(11)     /* everything */
-#define        IPL_IPI         MAKEIPL(12)     /* interprocessor interrupt */
+#define        IPL_STATCLOCK   IPL_CLOCK       /* statclock */
+#define        IPL_SCHED       IPL_CLOCK
+#define        IPL_HIGH        MAKEIPL(10)     /* everything */
+#define        IPL_IPI         MAKEIPL(11)     /* interprocessor interrupt */
 
 /* Interrupt sharing types. */
 #define        IST_NONE        0       /* none */
diff --git a/arch/i386/isa/clock.c b/arch/i386/isa/clock.c
index ef669ff..f881378 100644
--- a/arch/i386/isa/clock.c
+++ b/arch/i386/isa/clock.c
@@ -390,7 +390,7 @@ i8254_initclocks(void)
        /* When using i8254 for clock, we also use the rtc for profclock */
        (void)isa_intr_establish(NULL, 0, IST_PULSE, IPL_CLOCK,
            clockintr, 0, "clock");
-       (void)isa_intr_establish(NULL, 8, IST_PULSE, IPL_CLOCK,
+       (void)isa_intr_establish(NULL, 8, IST_PULSE, IPL_STATCLOCK,
            rtcintr, 0, "rtc");
 
        rtcstart();                     /* start the mc146818 clock */

-- 
The best defense against logic is ignorance.

Reply via email to