mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-04-30 20:30:32 -04:00
x86: irq: fix apicinterrupts on 64 bits
Impact: Fix interrupt via the apicinterrupt macro
Checkin 939b787130 changed the
"interrupt" macro, but the "interrupt" macro is also invoked
indirectly from the "apicinterrupt" macro.
The "apicinterrupt" macro probably should have its own collection of
systematic stubs for the same reason the main IRQ code does; as is it
is a huge amount of replicated code.
Signed-off-by: Alexander van Heukelum <heukelum@fastmail.fm>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
This commit is contained in:
committed by
H. Peter Anvin
parent
8665596ec0
commit
722024dbb7
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user