diff options
author | H. Peter Anvin <hpa@zytor.com> | 2008-11-11 16:03:07 -0500 |
---|---|---|
committer | H. Peter Anvin <hpa@zytor.com> | 2008-11-11 16:03:07 -0500 |
commit | 4687518c4cb7807fbeff21770e309080f9eb7f2f (patch) | |
tree | ad5a423f3f70a0ab3ca16dd8a4a9a1aabdf94986 /arch/x86/kernel | |
parent | f21f237cf55494c3a4209de323281a3b0528da10 (diff) |
x86: 32 bit: interrupt stub consistency with 64 bit
Don't generate interrupt stubs for interrupt vectors below
FIRST_EXTERNAL_VECTOR, and make the table of interrupt vectors
(interrupt[]) __initconst. Both of these changes both conserve memory
and improve consistency with 64 bits.
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Diffstat (limited to 'arch/x86/kernel')
-rw-r--r-- | arch/x86/kernel/entry_32.S | 6 | ||||
-rw-r--r-- | arch/x86/kernel/irqinit_32.c | 2 |
2 files changed, 4 insertions, 4 deletions
diff --git a/arch/x86/kernel/entry_32.S b/arch/x86/kernel/entry_32.S index 28b597ef9ca1..4aea95652cff 100644 --- a/arch/x86/kernel/entry_32.S +++ b/arch/x86/kernel/entry_32.S | |||
@@ -622,16 +622,16 @@ END(syscall_badsys) | |||
622 | * Build the entry stubs and pointer table with | 622 | * Build the entry stubs and pointer table with |
623 | * some assembler magic. | 623 | * some assembler magic. |
624 | */ | 624 | */ |
625 | .section .rodata,"a" | 625 | .section .init.rodata,"a" |
626 | ENTRY(interrupt) | 626 | ENTRY(interrupt) |
627 | .text | 627 | .text |
628 | 628 | ||
629 | ENTRY(irq_entries_start) | 629 | ENTRY(irq_entries_start) |
630 | RING0_INT_FRAME | 630 | RING0_INT_FRAME |
631 | vector=0 | 631 | vector=FIRST_EXTERNAL_VECTOR |
632 | .rept NR_VECTORS | 632 | .rept NR_VECTORS |
633 | ALIGN | 633 | ALIGN |
634 | .if vector | 634 | .if vector != FIRST_EXTERNAL_VECTOR |
635 | CFI_ADJUST_CFA_OFFSET -4 | 635 | CFI_ADJUST_CFA_OFFSET -4 |
636 | .endif | 636 | .endif |
637 | 1: pushl $~(vector) | 637 | 1: pushl $~(vector) |
diff --git a/arch/x86/kernel/irqinit_32.c b/arch/x86/kernel/irqinit_32.c index 845aa9803e80..607db63044a5 100644 --- a/arch/x86/kernel/irqinit_32.c +++ b/arch/x86/kernel/irqinit_32.c | |||
@@ -129,7 +129,7 @@ void __init native_init_IRQ(void) | |||
129 | for (i = FIRST_EXTERNAL_VECTOR; i < NR_VECTORS; i++) { | 129 | for (i = FIRST_EXTERNAL_VECTOR; i < NR_VECTORS; i++) { |
130 | /* SYSCALL_VECTOR was reserved in trap_init. */ | 130 | /* SYSCALL_VECTOR was reserved in trap_init. */ |
131 | if (i != SYSCALL_VECTOR) | 131 | if (i != SYSCALL_VECTOR) |
132 | set_intr_gate(i, interrupt[i]); | 132 | set_intr_gate(i, interrupt[i-FIRST_EXTERNAL_VECTOR]); |
133 | } | 133 | } |
134 | 134 | ||
135 | 135 | ||