Skip to content

Commit

Permalink
x86: irq: fix apicinterrupts on 64 bits
Browse files Browse the repository at this point in the history
Impact: Fix interrupt via the apicinterrupt macro

Checkin 939b787 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>
  • Loading branch information
Alexander van Heukelum authored and H. Peter Anvin committed Nov 14, 2008
1 parent 8665596 commit 722024d
Showing 1 changed file with 6 additions and 2 deletions.
8 changes: 6 additions & 2 deletions arch/x86/kernel/entry_64.S
Original file line number Diff line number Diff line change
Expand Up @@ -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 */
Expand Down Expand Up @@ -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:
Expand Down

0 comments on commit 722024d

Please sign in to comment.