* 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 */
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: