diff options
Diffstat (limited to 'arch/i386/kernel/smp.c')
| -rw-r--r-- | arch/i386/kernel/smp.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/arch/i386/kernel/smp.c b/arch/i386/kernel/smp.c index d134e9643a58..c10789d7a9d3 100644 --- a/arch/i386/kernel/smp.c +++ b/arch/i386/kernel/smp.c | |||
| @@ -114,7 +114,17 @@ DEFINE_PER_CPU(struct tlb_state, cpu_tlbstate) ____cacheline_aligned = { &init_m | |||
| 114 | 114 | ||
| 115 | static inline int __prepare_ICR (unsigned int shortcut, int vector) | 115 | static inline int __prepare_ICR (unsigned int shortcut, int vector) |
| 116 | { | 116 | { |
| 117 | return APIC_DM_FIXED | shortcut | vector | APIC_DEST_LOGICAL; | 117 | unsigned int icr = shortcut | APIC_DEST_LOGICAL; |
| 118 | |||
| 119 | switch (vector) { | ||
| 120 | default: | ||
| 121 | icr |= APIC_DM_FIXED | vector; | ||
| 122 | break; | ||
| 123 | case NMI_VECTOR: | ||
| 124 | icr |= APIC_DM_NMI; | ||
| 125 | break; | ||
| 126 | } | ||
| 127 | return icr; | ||
| 118 | } | 128 | } |
| 119 | 129 | ||
| 120 | static inline int __prepare_ICR2 (unsigned int mask) | 130 | static inline int __prepare_ICR2 (unsigned int mask) |
