diff options
Diffstat (limited to 'arch/x86_64/kernel/apic.c')
-rw-r--r-- | arch/x86_64/kernel/apic.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/arch/x86_64/kernel/apic.c b/arch/x86_64/kernel/apic.c index 6472e321cad7..4d9d5ed942b2 100644 --- a/arch/x86_64/kernel/apic.c +++ b/arch/x86_64/kernel/apic.c | |||
@@ -885,14 +885,14 @@ void setup_APIC_extened_lvt(unsigned char lvt_off, unsigned char vector, | |||
885 | * value into /proc/profile. | 885 | * value into /proc/profile. |
886 | */ | 886 | */ |
887 | 887 | ||
888 | void smp_local_timer_interrupt(struct pt_regs *regs) | 888 | void smp_local_timer_interrupt(void) |
889 | { | 889 | { |
890 | profile_tick(CPU_PROFILING, regs); | 890 | profile_tick(CPU_PROFILING); |
891 | #ifdef CONFIG_SMP | 891 | #ifdef CONFIG_SMP |
892 | update_process_times(user_mode(regs)); | 892 | update_process_times(user_mode(get_irq_regs())); |
893 | #endif | 893 | #endif |
894 | if (apic_runs_main_timer > 1 && smp_processor_id() == boot_cpu_id) | 894 | if (apic_runs_main_timer > 1 && smp_processor_id() == boot_cpu_id) |
895 | main_timer_handler(regs); | 895 | main_timer_handler(); |
896 | /* | 896 | /* |
897 | * We take the 'long' return path, and there every subsystem | 897 | * We take the 'long' return path, and there every subsystem |
898 | * grabs the appropriate locks (kernel lock/ irq lock). | 898 | * grabs the appropriate locks (kernel lock/ irq lock). |
@@ -915,6 +915,8 @@ void smp_local_timer_interrupt(struct pt_regs *regs) | |||
915 | */ | 915 | */ |
916 | void smp_apic_timer_interrupt(struct pt_regs *regs) | 916 | void smp_apic_timer_interrupt(struct pt_regs *regs) |
917 | { | 917 | { |
918 | struct pt_regs *old_regs = set_irq_regs(regs); | ||
919 | |||
918 | /* | 920 | /* |
919 | * the NMI deadlock-detector uses this. | 921 | * the NMI deadlock-detector uses this. |
920 | */ | 922 | */ |
@@ -932,8 +934,9 @@ void smp_apic_timer_interrupt(struct pt_regs *regs) | |||
932 | */ | 934 | */ |
933 | exit_idle(); | 935 | exit_idle(); |
934 | irq_enter(); | 936 | irq_enter(); |
935 | smp_local_timer_interrupt(regs); | 937 | smp_local_timer_interrupt(); |
936 | irq_exit(); | 938 | irq_exit(); |
939 | set_irq_regs(old_regs); | ||
937 | } | 940 | } |
938 | 941 | ||
939 | /* | 942 | /* |