|
@@ -723,43 +723,22 @@ END(sysenter_badsys)
|
|
.endm
|
|
.endm
|
|
|
|
|
|
/*
|
|
/*
|
|
- * Build the entry stubs and pointer table with some assembler magic.
|
|
|
|
- * We pack 7 stubs into a single 32-byte chunk, which will fit in a
|
|
|
|
- * single cache line on all modern x86 implementations.
|
|
|
|
|
|
+ * Build the entry stubs with some assembler magic.
|
|
|
|
+ * We pack 1 stub into every 8-byte block.
|
|
*/
|
|
*/
|
|
-.section .init.rodata,"a"
|
|
|
|
-ENTRY(interrupt)
|
|
|
|
-.section .entry.text, "ax"
|
|
|
|
- .p2align 5
|
|
|
|
- .p2align CONFIG_X86_L1_CACHE_SHIFT
|
|
|
|
|
|
+ .align 8
|
|
ENTRY(irq_entries_start)
|
|
ENTRY(irq_entries_start)
|
|
RING0_INT_FRAME
|
|
RING0_INT_FRAME
|
|
-vector=FIRST_EXTERNAL_VECTOR
|
|
|
|
-.rept (FIRST_SYSTEM_VECTOR-FIRST_EXTERNAL_VECTOR+6)/7
|
|
|
|
- .balign 32
|
|
|
|
- .rept 7
|
|
|
|
- .if vector < FIRST_SYSTEM_VECTOR
|
|
|
|
- .if vector <> FIRST_EXTERNAL_VECTOR
|
|
|
|
|
|
+ vector=FIRST_EXTERNAL_VECTOR
|
|
|
|
+ .rept (FIRST_SYSTEM_VECTOR - FIRST_EXTERNAL_VECTOR)
|
|
|
|
+ pushl_cfi $(~vector+0x80) /* Note: always in signed byte range */
|
|
|
|
+ vector=vector+1
|
|
|
|
+ jmp common_interrupt
|
|
CFI_ADJUST_CFA_OFFSET -4
|
|
CFI_ADJUST_CFA_OFFSET -4
|
|
- .endif
|
|
|
|
-1: pushl_cfi $(~vector+0x80) /* Note: always in signed byte range */
|
|
|
|
- .if ((vector-FIRST_EXTERNAL_VECTOR)%7) <> 6
|
|
|
|
- jmp 2f
|
|
|
|
- .endif
|
|
|
|
- .previous
|
|
|
|
- .long 1b
|
|
|
|
- .section .entry.text, "ax"
|
|
|
|
-vector=vector+1
|
|
|
|
- .endif
|
|
|
|
- .endr
|
|
|
|
-2: jmp common_interrupt
|
|
|
|
-.endr
|
|
|
|
|
|
+ .align 8
|
|
|
|
+ .endr
|
|
END(irq_entries_start)
|
|
END(irq_entries_start)
|
|
|
|
|
|
-.previous
|
|
|
|
-END(interrupt)
|
|
|
|
-.previous
|
|
|
|
-
|
|
|
|
/*
|
|
/*
|
|
* the CPU automatically disables interrupts when executing an IRQ vector,
|
|
* the CPU automatically disables interrupts when executing an IRQ vector,
|
|
* so IRQ-flags tracing has to follow that:
|
|
* so IRQ-flags tracing has to follow that:
|