diff options
Diffstat (limited to 'arch/i386/kernel/apic.c')
-rw-r--r-- | arch/i386/kernel/apic.c | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/arch/i386/kernel/apic.c b/arch/i386/kernel/apic.c index 90faae5c5d30..2fd4b7d927c2 100644 --- a/arch/i386/kernel/apic.c +++ b/arch/i386/kernel/apic.c | |||
@@ -1193,11 +1193,11 @@ EXPORT_SYMBOL(switch_ipi_to_APIC_timer); | |||
1193 | * value into /proc/profile. | 1193 | * value into /proc/profile. |
1194 | */ | 1194 | */ |
1195 | 1195 | ||
1196 | inline void smp_local_timer_interrupt(struct pt_regs * regs) | 1196 | inline void smp_local_timer_interrupt(void) |
1197 | { | 1197 | { |
1198 | profile_tick(CPU_PROFILING, regs); | 1198 | profile_tick(CPU_PROFILING); |
1199 | #ifdef CONFIG_SMP | 1199 | #ifdef CONFIG_SMP |
1200 | update_process_times(user_mode_vm(regs)); | 1200 | update_process_times(user_mode_vm(get_irq_regs())); |
1201 | #endif | 1201 | #endif |
1202 | 1202 | ||
1203 | /* | 1203 | /* |
@@ -1223,6 +1223,7 @@ inline void smp_local_timer_interrupt(struct pt_regs * regs) | |||
1223 | 1223 | ||
1224 | fastcall void smp_apic_timer_interrupt(struct pt_regs *regs) | 1224 | fastcall void smp_apic_timer_interrupt(struct pt_regs *regs) |
1225 | { | 1225 | { |
1226 | struct pt_regs *old_regs = set_irq_regs(regs); | ||
1226 | int cpu = smp_processor_id(); | 1227 | int cpu = smp_processor_id(); |
1227 | 1228 | ||
1228 | /* | 1229 | /* |
@@ -1241,12 +1242,13 @@ fastcall void smp_apic_timer_interrupt(struct pt_regs *regs) | |||
1241 | * interrupt lock, which is the WrongThing (tm) to do. | 1242 | * interrupt lock, which is the WrongThing (tm) to do. |
1242 | */ | 1243 | */ |
1243 | irq_enter(); | 1244 | irq_enter(); |
1244 | smp_local_timer_interrupt(regs); | 1245 | smp_local_timer_interrupt(); |
1245 | irq_exit(); | 1246 | irq_exit(); |
1247 | set_irq_regs(old_regs); | ||
1246 | } | 1248 | } |
1247 | 1249 | ||
1248 | #ifndef CONFIG_SMP | 1250 | #ifndef CONFIG_SMP |
1249 | static void up_apic_timer_interrupt_call(struct pt_regs *regs) | 1251 | static void up_apic_timer_interrupt_call(void) |
1250 | { | 1252 | { |
1251 | int cpu = smp_processor_id(); | 1253 | int cpu = smp_processor_id(); |
1252 | 1254 | ||
@@ -1255,11 +1257,11 @@ static void up_apic_timer_interrupt_call(struct pt_regs *regs) | |||
1255 | */ | 1257 | */ |
1256 | per_cpu(irq_stat, cpu).apic_timer_irqs++; | 1258 | per_cpu(irq_stat, cpu).apic_timer_irqs++; |
1257 | 1259 | ||
1258 | smp_local_timer_interrupt(regs); | 1260 | smp_local_timer_interrupt(); |
1259 | } | 1261 | } |
1260 | #endif | 1262 | #endif |
1261 | 1263 | ||
1262 | void smp_send_timer_broadcast_ipi(struct pt_regs *regs) | 1264 | void smp_send_timer_broadcast_ipi(void) |
1263 | { | 1265 | { |
1264 | cpumask_t mask; | 1266 | cpumask_t mask; |
1265 | 1267 | ||
@@ -1272,7 +1274,7 @@ void smp_send_timer_broadcast_ipi(struct pt_regs *regs) | |||
1272 | * We can directly call the apic timer interrupt handler | 1274 | * We can directly call the apic timer interrupt handler |
1273 | * in UP case. Minus all irq related functions | 1275 | * in UP case. Minus all irq related functions |
1274 | */ | 1276 | */ |
1275 | up_apic_timer_interrupt_call(regs); | 1277 | up_apic_timer_interrupt_call(); |
1276 | #endif | 1278 | #endif |
1277 | } | 1279 | } |
1278 | } | 1280 | } |