aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel/traps.c
diff options
context:
space:
mode:
authorYinghai Lu <yinghai@kernel.org>2009-01-25 05:38:09 -0500
committerIngo Molnar <mingo@elte.hu>2009-01-26 17:37:11 -0500
commitbb3f0b59ad005d2d2ecbbe9bd048eab6d1ecbd31 (patch)
treefd503e9a65bd77601cea99a892a031c6ba086fd8 /arch/x86/kernel/traps.c
parent3415dd9146c574bffe8f012c096bfc2bc62b9508 (diff)
x86: make irqinit_32.c more like irqinit_64.c, v2
Impact: cleanup 1. add smp_intr_init and apic_intr_init for 32bit, the same as 64bit 2. move the apic_intr_init() call before set gate with interrupt[i] 3. for 64bit, if ia32_emulation is not used, will make per_cpu to use 0x80 vector. [ v2: should use !test_bit() instead of test_bit() with 32bit ] Signed-off-by: Yinghai Lu <yinghai@kernel.org> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86/kernel/traps.c')
-rw-r--r--arch/x86/kernel/traps.c15
1 files changed, 6 insertions, 9 deletions
diff --git a/arch/x86/kernel/traps.c b/arch/x86/kernel/traps.c
index ed5aee5f3fcc..d36a502d87ab 100644
--- a/arch/x86/kernel/traps.c
+++ b/arch/x86/kernel/traps.c
@@ -979,8 +979,13 @@ void __init trap_init(void)
979#endif 979#endif
980 set_intr_gate(19, &simd_coprocessor_error); 980 set_intr_gate(19, &simd_coprocessor_error);
981 981
982 /* Reserve all the builtin and the syscall vector: */
983 for (i = 0; i < FIRST_EXTERNAL_VECTOR; i++)
984 set_bit(i, used_vectors);
985
982#ifdef CONFIG_IA32_EMULATION 986#ifdef CONFIG_IA32_EMULATION
983 set_system_intr_gate(IA32_SYSCALL_VECTOR, ia32_syscall); 987 set_system_intr_gate(IA32_SYSCALL_VECTOR, ia32_syscall);
988 set_bit(IA32_SYSCALL_VECTOR, used_vectors);
984#endif 989#endif
985 990
986#ifdef CONFIG_X86_32 991#ifdef CONFIG_X86_32
@@ -997,17 +1002,9 @@ void __init trap_init(void)
997 } 1002 }
998 1003
999 set_system_trap_gate(SYSCALL_VECTOR, &system_call); 1004 set_system_trap_gate(SYSCALL_VECTOR, &system_call);
1000#endif
1001
1002 /* Reserve all the builtin and the syscall vector: */
1003 for (i = 0; i < FIRST_EXTERNAL_VECTOR; i++)
1004 set_bit(i, used_vectors);
1005
1006#ifdef CONFIG_X86_64
1007 set_bit(IA32_SYSCALL_VECTOR, used_vectors);
1008#else
1009 set_bit(SYSCALL_VECTOR, used_vectors); 1005 set_bit(SYSCALL_VECTOR, used_vectors);
1010#endif 1006#endif
1007
1011 /* 1008 /*
1012 * Should be a barrier for any external CPU state: 1009 * Should be a barrier for any external CPU state:
1013 */ 1010 */