]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - arch/x86/kernel/entry_64.S
x86: irq: fix apicinterrupts on 64 bits
[mv-sheeva.git] / arch / x86 / kernel / entry_64.S
index 2b42362a85b292d4091a3ebfbafc75eb6c8dd467..369de6973c58646036c548e4b35a8e27dcf64d68 100644 (file)
@@ -675,9 +675,8 @@ END(interrupt)
  * Entry runs with interrupts off.     
  */ 
 
-/* 0(%rsp): ~(interrupt number)+0x80 */ 
+/* 0(%rsp): ~(interrupt number) */
        .macro interrupt func
-       addq $-0x80,(%rsp)              /* Adjust vector to [-256,-1] range */
        cld
        SAVE_ARGS
        leaq -ARGOFFSET(%rsp),%rdi      /* arg1 for handler */
@@ -711,9 +710,14 @@ END(interrupt)
        call \func
        .endm
 
+       /*
+        * The interrupt stubs push (~vector+0x80) onto the stack and
+        * then jump to common_interrupt.
+        */
        .p2align CONFIG_X86_L1_CACHE_SHIFT
 common_interrupt:
        XCPT_FRAME
+       addq $-0x80,(%rsp)              /* Adjust vector to [-256,-1] range */
        interrupt do_IRQ
        /* 0(%rsp): oldrsp-ARGOFFSET */
 ret_from_intr: