diff options
Diffstat (limited to 'arch/x86/kernel/entry_64.S')
-rw-r--r-- | arch/x86/kernel/entry_64.S | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/arch/x86/kernel/entry_64.S b/arch/x86/kernel/entry_64.S index 2b42362a85b2..369de6973c58 100644 --- a/arch/x86/kernel/entry_64.S +++ b/arch/x86/kernel/entry_64.S | |||
@@ -675,9 +675,8 @@ END(interrupt) | |||
675 | * Entry runs with interrupts off. | 675 | * Entry runs with interrupts off. |
676 | */ | 676 | */ |
677 | 677 | ||
678 | /* 0(%rsp): ~(interrupt number)+0x80 */ | 678 | /* 0(%rsp): ~(interrupt number) */ |
679 | .macro interrupt func | 679 | .macro interrupt func |
680 | addq $-0x80,(%rsp) /* Adjust vector to [-256,-1] range */ | ||
681 | cld | 680 | cld |
682 | SAVE_ARGS | 681 | SAVE_ARGS |
683 | leaq -ARGOFFSET(%rsp),%rdi /* arg1 for handler */ | 682 | leaq -ARGOFFSET(%rsp),%rdi /* arg1 for handler */ |
@@ -711,9 +710,14 @@ END(interrupt) | |||
711 | call \func | 710 | call \func |
712 | .endm | 711 | .endm |
713 | 712 | ||
713 | /* | ||
714 | * The interrupt stubs push (~vector+0x80) onto the stack and | ||
715 | * then jump to common_interrupt. | ||
716 | */ | ||
714 | .p2align CONFIG_X86_L1_CACHE_SHIFT | 717 | .p2align CONFIG_X86_L1_CACHE_SHIFT |
715 | common_interrupt: | 718 | common_interrupt: |
716 | XCPT_FRAME | 719 | XCPT_FRAME |
720 | addq $-0x80,(%rsp) /* Adjust vector to [-256,-1] range */ | ||
717 | interrupt do_IRQ | 721 | interrupt do_IRQ |
718 | /* 0(%rsp): oldrsp-ARGOFFSET */ | 722 | /* 0(%rsp): oldrsp-ARGOFFSET */ |
719 | ret_from_intr: | 723 | ret_from_intr: |