Revert to Fedora kernel-2.6.17-1.2187_FC5 patched with vs2.0.2.1; there are too many...
[linux-2.6.git] / arch / sparc64 / kernel / entry.S
index 6f28bec..6d0b3ed 100644 (file)
@@ -7,6 +7,7 @@
  * Copyright (C) 1996,98,99 Jakub Jelinek  (jj@sunsite.mff.cuni.cz)
  */
 
+#include <linux/config.h>
 #include <linux/errno.h>
 
 #include <asm/head.h>
 #include <asm/estate.h>
 #include <asm/auxio.h>
 #include <asm/sfafsr.h>
-#include <asm/pil.h>
-#include <asm/unistd.h>
 
 #define curptr      g6
 
+#define NR_SYSCALLS 300      /* Each OS is different... */
+
        .text
        .align          32
 
@@ -430,16 +431,20 @@ do_ivec:
        membar          #Sync
 
        sethi           %hi(ivector_table), %g2
-       sllx            %g3, 3, %g3
+       sllx            %g3, 5, %g3
        or              %g2, %lo(ivector_table), %g2
        add             %g2, %g3, %g3
+       ldub            [%g3 + 0x04], %g4       /* pil */
+       mov             1, %g2
+       sllx            %g2, %g4, %g2
+       sllx            %g4, 2, %g4
 
        TRAP_LOAD_IRQ_WORK(%g6, %g1)
 
-       lduw            [%g6], %g5              /* g5 = irq_work(cpu) */
+       lduw            [%g6 + %g4], %g5        /* g5 = irq_work(cpu, pil) */
        stw             %g5, [%g3 + 0x00]       /* bucket->irq_chain = g5 */
-       stw             %g3, [%g6]              /* irq_work(cpu) = bucket */
-       wr              %g0, 1 << PIL_DEVICE_IRQ, %set_softint
+       stw             %g3, [%g6 + %g4]        /* irq_work(cpu, pil) = bucket */
+       wr              %g2, 0x0, %set_softint
        retry
 do_ivec_xcall:
        mov             0x50, %g1