diff options
Diffstat (limited to 'arch/ia64/kernel')
-rw-r--r-- | arch/ia64/kernel/irq_ia64.c | 4 | ||||
-rw-r--r-- | arch/ia64/kernel/machvec.c | 2 | ||||
-rw-r--r-- | arch/ia64/kernel/mca.c | 32 | ||||
-rw-r--r-- | arch/ia64/kernel/time.c | 8 |
4 files changed, 22 insertions, 24 deletions
diff --git a/arch/ia64/kernel/irq_ia64.c b/arch/ia64/kernel/irq_ia64.c index ab2d19c3661f..7fd3ef9e064d 100644 --- a/arch/ia64/kernel/irq_ia64.c +++ b/arch/ia64/kernel/irq_ia64.c | |||
@@ -138,6 +138,7 @@ void destroy_irq(unsigned int irq) | |||
138 | void | 138 | void |
139 | ia64_handle_irq (ia64_vector vector, struct pt_regs *regs) | 139 | ia64_handle_irq (ia64_vector vector, struct pt_regs *regs) |
140 | { | 140 | { |
141 | struct pt_regs *old_regs = set_irq_regs(regs); | ||
141 | unsigned long saved_tpr; | 142 | unsigned long saved_tpr; |
142 | 143 | ||
143 | #if IRQ_DEBUG | 144 | #if IRQ_DEBUG |
@@ -183,7 +184,7 @@ ia64_handle_irq (ia64_vector vector, struct pt_regs *regs) | |||
183 | ia64_setreg(_IA64_REG_CR_TPR, vector); | 184 | ia64_setreg(_IA64_REG_CR_TPR, vector); |
184 | ia64_srlz_d(); | 185 | ia64_srlz_d(); |
185 | 186 | ||
186 | __do_IRQ(local_vector_to_irq(vector), regs); | 187 | __do_IRQ(local_vector_to_irq(vector)); |
187 | 188 | ||
188 | /* | 189 | /* |
189 | * Disable interrupts and send EOI: | 190 | * Disable interrupts and send EOI: |
@@ -200,6 +201,7 @@ ia64_handle_irq (ia64_vector vector, struct pt_regs *regs) | |||
200 | * come through until ia64_eoi() has been done. | 201 | * come through until ia64_eoi() has been done. |
201 | */ | 202 | */ |
202 | irq_exit(); | 203 | irq_exit(); |
204 | set_irq_regs(old_regs); | ||
203 | } | 205 | } |
204 | 206 | ||
205 | #ifdef CONFIG_HOTPLUG_CPU | 207 | #ifdef CONFIG_HOTPLUG_CPU |
diff --git a/arch/ia64/kernel/machvec.c b/arch/ia64/kernel/machvec.c index d4a546aa5048..9620822270a6 100644 --- a/arch/ia64/kernel/machvec.c +++ b/arch/ia64/kernel/machvec.c | |||
@@ -60,7 +60,7 @@ machvec_setup (char **arg) | |||
60 | EXPORT_SYMBOL(machvec_setup); | 60 | EXPORT_SYMBOL(machvec_setup); |
61 | 61 | ||
62 | void | 62 | void |
63 | machvec_timer_interrupt (int irq, void *dev_id, struct pt_regs *regs) | 63 | machvec_timer_interrupt (int irq, void *dev_id) |
64 | { | 64 | { |
65 | } | 65 | } |
66 | EXPORT_SYMBOL(machvec_timer_interrupt); | 66 | EXPORT_SYMBOL(machvec_timer_interrupt); |
diff --git a/arch/ia64/kernel/mca.c b/arch/ia64/kernel/mca.c index 663230183254..7cfa63a98cb3 100644 --- a/arch/ia64/kernel/mca.c +++ b/arch/ia64/kernel/mca.c | |||
@@ -499,7 +499,7 @@ int cpe_vector = -1; | |||
499 | int ia64_cpe_irq = -1; | 499 | int ia64_cpe_irq = -1; |
500 | 500 | ||
501 | static irqreturn_t | 501 | static irqreturn_t |
502 | ia64_mca_cpe_int_handler (int cpe_irq, void *arg, struct pt_regs *ptregs) | 502 | ia64_mca_cpe_int_handler (int cpe_irq, void *arg) |
503 | { | 503 | { |
504 | static unsigned long cpe_history[CPE_HISTORY_LENGTH]; | 504 | static unsigned long cpe_history[CPE_HISTORY_LENGTH]; |
505 | static int index; | 505 | static int index; |
@@ -744,7 +744,7 @@ ia64_mca_wakeup_all(void) | |||
744 | * Outputs : None | 744 | * Outputs : None |
745 | */ | 745 | */ |
746 | static irqreturn_t | 746 | static irqreturn_t |
747 | ia64_mca_rendez_int_handler(int rendez_irq, void *arg, struct pt_regs *regs) | 747 | ia64_mca_rendez_int_handler(int rendez_irq, void *arg) |
748 | { | 748 | { |
749 | unsigned long flags; | 749 | unsigned long flags; |
750 | int cpu = smp_processor_id(); | 750 | int cpu = smp_processor_id(); |
@@ -753,8 +753,8 @@ ia64_mca_rendez_int_handler(int rendez_irq, void *arg, struct pt_regs *regs) | |||
753 | 753 | ||
754 | /* Mask all interrupts */ | 754 | /* Mask all interrupts */ |
755 | local_irq_save(flags); | 755 | local_irq_save(flags); |
756 | if (notify_die(DIE_MCA_RENDZVOUS_ENTER, "MCA", regs, (long)&nd, 0, 0) | 756 | if (notify_die(DIE_MCA_RENDZVOUS_ENTER, "MCA", get_irq_regs(), |
757 | == NOTIFY_STOP) | 757 | (long)&nd, 0, 0) == NOTIFY_STOP) |
758 | ia64_mca_spin(__FUNCTION__); | 758 | ia64_mca_spin(__FUNCTION__); |
759 | 759 | ||
760 | ia64_mc_info.imi_rendez_checkin[cpu] = IA64_MCA_RENDEZ_CHECKIN_DONE; | 760 | ia64_mc_info.imi_rendez_checkin[cpu] = IA64_MCA_RENDEZ_CHECKIN_DONE; |
@@ -763,16 +763,16 @@ ia64_mca_rendez_int_handler(int rendez_irq, void *arg, struct pt_regs *regs) | |||
763 | */ | 763 | */ |
764 | ia64_sal_mc_rendez(); | 764 | ia64_sal_mc_rendez(); |
765 | 765 | ||
766 | if (notify_die(DIE_MCA_RENDZVOUS_PROCESS, "MCA", regs, (long)&nd, 0, 0) | 766 | if (notify_die(DIE_MCA_RENDZVOUS_PROCESS, "MCA", get_irq_regs(), |
767 | == NOTIFY_STOP) | 767 | (long)&nd, 0, 0) == NOTIFY_STOP) |
768 | ia64_mca_spin(__FUNCTION__); | 768 | ia64_mca_spin(__FUNCTION__); |
769 | 769 | ||
770 | /* Wait for the monarch cpu to exit. */ | 770 | /* Wait for the monarch cpu to exit. */ |
771 | while (monarch_cpu != -1) | 771 | while (monarch_cpu != -1) |
772 | cpu_relax(); /* spin until monarch leaves */ | 772 | cpu_relax(); /* spin until monarch leaves */ |
773 | 773 | ||
774 | if (notify_die(DIE_MCA_RENDZVOUS_LEAVE, "MCA", regs, (long)&nd, 0, 0) | 774 | if (notify_die(DIE_MCA_RENDZVOUS_LEAVE, "MCA", get_irq_regs(), |
775 | == NOTIFY_STOP) | 775 | (long)&nd, 0, 0) == NOTIFY_STOP) |
776 | ia64_mca_spin(__FUNCTION__); | 776 | ia64_mca_spin(__FUNCTION__); |
777 | 777 | ||
778 | /* Enable all interrupts */ | 778 | /* Enable all interrupts */ |
@@ -791,12 +791,11 @@ ia64_mca_rendez_int_handler(int rendez_irq, void *arg, struct pt_regs *regs) | |||
791 | * | 791 | * |
792 | * Inputs : wakeup_irq (Wakeup-interrupt bit) | 792 | * Inputs : wakeup_irq (Wakeup-interrupt bit) |
793 | * arg (Interrupt handler specific argument) | 793 | * arg (Interrupt handler specific argument) |
794 | * ptregs (Exception frame at the time of the interrupt) | ||
795 | * Outputs : None | 794 | * Outputs : None |
796 | * | 795 | * |
797 | */ | 796 | */ |
798 | static irqreturn_t | 797 | static irqreturn_t |
799 | ia64_mca_wakeup_int_handler(int wakeup_irq, void *arg, struct pt_regs *ptregs) | 798 | ia64_mca_wakeup_int_handler(int wakeup_irq, void *arg) |
800 | { | 799 | { |
801 | return IRQ_HANDLED; | 800 | return IRQ_HANDLED; |
802 | } | 801 | } |
@@ -1261,13 +1260,12 @@ static DECLARE_WORK(cmc_enable_work, ia64_mca_cmc_vector_enable_keventd, NULL); | |||
1261 | * Inputs | 1260 | * Inputs |
1262 | * interrupt number | 1261 | * interrupt number |
1263 | * client data arg ptr | 1262 | * client data arg ptr |
1264 | * saved registers ptr | ||
1265 | * | 1263 | * |
1266 | * Outputs | 1264 | * Outputs |
1267 | * None | 1265 | * None |
1268 | */ | 1266 | */ |
1269 | static irqreturn_t | 1267 | static irqreturn_t |
1270 | ia64_mca_cmc_int_handler(int cmc_irq, void *arg, struct pt_regs *ptregs) | 1268 | ia64_mca_cmc_int_handler(int cmc_irq, void *arg) |
1271 | { | 1269 | { |
1272 | static unsigned long cmc_history[CMC_HISTORY_LENGTH]; | 1270 | static unsigned long cmc_history[CMC_HISTORY_LENGTH]; |
1273 | static int index; | 1271 | static int index; |
@@ -1336,12 +1334,11 @@ out: | |||
1336 | * Inputs | 1334 | * Inputs |
1337 | * interrupt number | 1335 | * interrupt number |
1338 | * client data arg ptr | 1336 | * client data arg ptr |
1339 | * saved registers ptr | ||
1340 | * Outputs | 1337 | * Outputs |
1341 | * handled | 1338 | * handled |
1342 | */ | 1339 | */ |
1343 | static irqreturn_t | 1340 | static irqreturn_t |
1344 | ia64_mca_cmc_int_caller(int cmc_irq, void *arg, struct pt_regs *ptregs) | 1341 | ia64_mca_cmc_int_caller(int cmc_irq, void *arg) |
1345 | { | 1342 | { |
1346 | static int start_count = -1; | 1343 | static int start_count = -1; |
1347 | unsigned int cpuid; | 1344 | unsigned int cpuid; |
@@ -1352,7 +1349,7 @@ ia64_mca_cmc_int_caller(int cmc_irq, void *arg, struct pt_regs *ptregs) | |||
1352 | if (start_count == -1) | 1349 | if (start_count == -1) |
1353 | start_count = IA64_LOG_COUNT(SAL_INFO_TYPE_CMC); | 1350 | start_count = IA64_LOG_COUNT(SAL_INFO_TYPE_CMC); |
1354 | 1351 | ||
1355 | ia64_mca_cmc_int_handler(cmc_irq, arg, ptregs); | 1352 | ia64_mca_cmc_int_handler(cmc_irq, arg); |
1356 | 1353 | ||
1357 | for (++cpuid ; cpuid < NR_CPUS && !cpu_online(cpuid) ; cpuid++); | 1354 | for (++cpuid ; cpuid < NR_CPUS && !cpu_online(cpuid) ; cpuid++); |
1358 | 1355 | ||
@@ -1403,14 +1400,13 @@ ia64_mca_cmc_poll (unsigned long dummy) | |||
1403 | * Inputs | 1400 | * Inputs |
1404 | * interrupt number | 1401 | * interrupt number |
1405 | * client data arg ptr | 1402 | * client data arg ptr |
1406 | * saved registers ptr | ||
1407 | * Outputs | 1403 | * Outputs |
1408 | * handled | 1404 | * handled |
1409 | */ | 1405 | */ |
1410 | #ifdef CONFIG_ACPI | 1406 | #ifdef CONFIG_ACPI |
1411 | 1407 | ||
1412 | static irqreturn_t | 1408 | static irqreturn_t |
1413 | ia64_mca_cpe_int_caller(int cpe_irq, void *arg, struct pt_regs *ptregs) | 1409 | ia64_mca_cpe_int_caller(int cpe_irq, void *arg) |
1414 | { | 1410 | { |
1415 | static int start_count = -1; | 1411 | static int start_count = -1; |
1416 | static int poll_time = MIN_CPE_POLL_INTERVAL; | 1412 | static int poll_time = MIN_CPE_POLL_INTERVAL; |
@@ -1422,7 +1418,7 @@ ia64_mca_cpe_int_caller(int cpe_irq, void *arg, struct pt_regs *ptregs) | |||
1422 | if (start_count == -1) | 1418 | if (start_count == -1) |
1423 | start_count = IA64_LOG_COUNT(SAL_INFO_TYPE_CPE); | 1419 | start_count = IA64_LOG_COUNT(SAL_INFO_TYPE_CPE); |
1424 | 1420 | ||
1425 | ia64_mca_cpe_int_handler(cpe_irq, arg, ptregs); | 1421 | ia64_mca_cpe_int_handler(cpe_irq, arg); |
1426 | 1422 | ||
1427 | for (++cpuid ; cpuid < NR_CPUS && !cpu_online(cpuid) ; cpuid++); | 1423 | for (++cpuid ; cpuid < NR_CPUS && !cpu_online(cpuid) ; cpuid++); |
1428 | 1424 | ||
diff --git a/arch/ia64/kernel/time.c b/arch/ia64/kernel/time.c index 62e07f906e05..41169a9bc301 100644 --- a/arch/ia64/kernel/time.c +++ b/arch/ia64/kernel/time.c | |||
@@ -45,7 +45,7 @@ static struct time_interpolator itc_interpolator = { | |||
45 | }; | 45 | }; |
46 | 46 | ||
47 | static irqreturn_t | 47 | static irqreturn_t |
48 | timer_interrupt (int irq, void *dev_id, struct pt_regs *regs) | 48 | timer_interrupt (int irq, void *dev_id) |
49 | { | 49 | { |
50 | unsigned long new_itm; | 50 | unsigned long new_itm; |
51 | 51 | ||
@@ -53,7 +53,7 @@ timer_interrupt (int irq, void *dev_id, struct pt_regs *regs) | |||
53 | return IRQ_HANDLED; | 53 | return IRQ_HANDLED; |
54 | } | 54 | } |
55 | 55 | ||
56 | platform_timer_interrupt(irq, dev_id, regs); | 56 | platform_timer_interrupt(irq, dev_id); |
57 | 57 | ||
58 | new_itm = local_cpu_data->itm_next; | 58 | new_itm = local_cpu_data->itm_next; |
59 | 59 | ||
@@ -61,10 +61,10 @@ timer_interrupt (int irq, void *dev_id, struct pt_regs *regs) | |||
61 | printk(KERN_ERR "Oops: timer tick before it's due (itc=%lx,itm=%lx)\n", | 61 | printk(KERN_ERR "Oops: timer tick before it's due (itc=%lx,itm=%lx)\n", |
62 | ia64_get_itc(), new_itm); | 62 | ia64_get_itc(), new_itm); |
63 | 63 | ||
64 | profile_tick(CPU_PROFILING, regs); | 64 | profile_tick(CPU_PROFILING); |
65 | 65 | ||
66 | while (1) { | 66 | while (1) { |
67 | update_process_times(user_mode(regs)); | 67 | update_process_times(user_mode(get_irq_regs())); |
68 | 68 | ||
69 | new_itm += local_cpu_data->itm_delta; | 69 | new_itm += local_cpu_data->itm_delta; |
70 | 70 | ||