diff options
Diffstat (limited to 'arch')
| -rw-r--r-- | arch/sparc64/kernel/ebus.c | 2 | ||||
| -rw-r--r-- | arch/sparc64/kernel/irq.c | 5 | ||||
| -rw-r--r-- | arch/sparc64/kernel/pci_psycho.c | 6 | ||||
| -rw-r--r-- | arch/sparc64/kernel/pci_sabre.c | 6 | ||||
| -rw-r--r-- | arch/sparc64/kernel/pci_schizo.c | 8 | ||||
| -rw-r--r-- | arch/sparc64/kernel/power.c | 2 | ||||
| -rw-r--r-- | arch/sparc64/kernel/sbus.c | 6 | ||||
| -rw-r--r-- | arch/sparc64/kernel/smp.c | 6 |
8 files changed, 24 insertions, 17 deletions
diff --git a/arch/sparc64/kernel/ebus.c b/arch/sparc64/kernel/ebus.c index 8a9b470e1b65..2df25c2b4071 100644 --- a/arch/sparc64/kernel/ebus.c +++ b/arch/sparc64/kernel/ebus.c | |||
| @@ -79,7 +79,7 @@ static void __ebus_dma_reset(struct ebus_dma_info *p, int no_drain) | |||
| 79 | } | 79 | } |
| 80 | } | 80 | } |
| 81 | 81 | ||
| 82 | static irqreturn_t ebus_dma_irq(int irq, void *dev_id, struct pt_regs *regs) | 82 | static irqreturn_t ebus_dma_irq(int irq, void *dev_id) |
| 83 | { | 83 | { |
| 84 | struct ebus_dma_info *p = dev_id; | 84 | struct ebus_dma_info *p = dev_id; |
| 85 | unsigned long flags; | 85 | unsigned long flags; |
diff --git a/arch/sparc64/kernel/irq.c b/arch/sparc64/kernel/irq.c index 4e64724cb9ae..ce05deb1bc92 100644 --- a/arch/sparc64/kernel/irq.c +++ b/arch/sparc64/kernel/irq.c | |||
| @@ -547,9 +547,11 @@ void timer_irq(int irq, struct pt_regs *regs) | |||
| 547 | void handler_irq(int irq, struct pt_regs *regs) | 547 | void handler_irq(int irq, struct pt_regs *regs) |
| 548 | { | 548 | { |
| 549 | struct ino_bucket *bucket; | 549 | struct ino_bucket *bucket; |
| 550 | struct pt_regs *old_regs; | ||
| 550 | 551 | ||
| 551 | clear_softint(1 << irq); | 552 | clear_softint(1 << irq); |
| 552 | 553 | ||
| 554 | old_regs = set_irq_regs(regs); | ||
| 553 | irq_enter(); | 555 | irq_enter(); |
| 554 | 556 | ||
| 555 | /* Sliiiick... */ | 557 | /* Sliiiick... */ |
| @@ -558,12 +560,13 @@ void handler_irq(int irq, struct pt_regs *regs) | |||
| 558 | struct ino_bucket *next = __bucket(bucket->irq_chain); | 560 | struct ino_bucket *next = __bucket(bucket->irq_chain); |
| 559 | 561 | ||
| 560 | bucket->irq_chain = 0; | 562 | bucket->irq_chain = 0; |
| 561 | __do_IRQ(bucket->virt_irq, regs); | 563 | __do_IRQ(bucket->virt_irq); |
| 562 | 564 | ||
| 563 | bucket = next; | 565 | bucket = next; |
| 564 | } | 566 | } |
| 565 | 567 | ||
| 566 | irq_exit(); | 568 | irq_exit(); |
| 569 | set_irq_regs(old_regs); | ||
| 567 | } | 570 | } |
| 568 | 571 | ||
| 569 | struct sun5_timer { | 572 | struct sun5_timer { |
diff --git a/arch/sparc64/kernel/pci_psycho.c b/arch/sparc64/kernel/pci_psycho.c index 1ec0aab68c08..fda5db223d96 100644 --- a/arch/sparc64/kernel/pci_psycho.c +++ b/arch/sparc64/kernel/pci_psycho.c | |||
| @@ -533,7 +533,7 @@ static void psycho_check_iommu_error(struct pci_controller_info *p, | |||
| 533 | #define PSYCHO_UEAFSR_RESV2 0x00000000007fffffUL /* Reserved */ | 533 | #define PSYCHO_UEAFSR_RESV2 0x00000000007fffffUL /* Reserved */ |
| 534 | #define PSYCHO_UE_AFAR 0x0038UL | 534 | #define PSYCHO_UE_AFAR 0x0038UL |
| 535 | 535 | ||
| 536 | static irqreturn_t psycho_ue_intr(int irq, void *dev_id, struct pt_regs *regs) | 536 | static irqreturn_t psycho_ue_intr(int irq, void *dev_id) |
| 537 | { | 537 | { |
| 538 | struct pci_controller_info *p = dev_id; | 538 | struct pci_controller_info *p = dev_id; |
| 539 | unsigned long afsr_reg = p->pbm_A.controller_regs + PSYCHO_UE_AFSR; | 539 | unsigned long afsr_reg = p->pbm_A.controller_regs + PSYCHO_UE_AFSR; |
| @@ -610,7 +610,7 @@ static irqreturn_t psycho_ue_intr(int irq, void *dev_id, struct pt_regs *regs) | |||
| 610 | #define PSYCHO_CEAFSR_RESV2 0x00000000007fffffUL /* Reserved */ | 610 | #define PSYCHO_CEAFSR_RESV2 0x00000000007fffffUL /* Reserved */ |
| 611 | #define PSYCHO_CE_AFAR 0x0040UL | 611 | #define PSYCHO_CE_AFAR 0x0040UL |
| 612 | 612 | ||
| 613 | static irqreturn_t psycho_ce_intr(int irq, void *dev_id, struct pt_regs *regs) | 613 | static irqreturn_t psycho_ce_intr(int irq, void *dev_id) |
| 614 | { | 614 | { |
| 615 | struct pci_controller_info *p = dev_id; | 615 | struct pci_controller_info *p = dev_id; |
| 616 | unsigned long afsr_reg = p->pbm_A.controller_regs + PSYCHO_CE_AFSR; | 616 | unsigned long afsr_reg = p->pbm_A.controller_regs + PSYCHO_CE_AFSR; |
| @@ -735,7 +735,7 @@ static irqreturn_t psycho_pcierr_intr_other(struct pci_pbm_info *pbm, int is_pbm | |||
| 735 | return ret; | 735 | return ret; |
| 736 | } | 736 | } |
| 737 | 737 | ||
| 738 | static irqreturn_t psycho_pcierr_intr(int irq, void *dev_id, struct pt_regs *regs) | 738 | static irqreturn_t psycho_pcierr_intr(int irq, void *dev_id) |
| 739 | { | 739 | { |
| 740 | struct pci_pbm_info *pbm = dev_id; | 740 | struct pci_pbm_info *pbm = dev_id; |
| 741 | struct pci_controller_info *p = pbm->parent; | 741 | struct pci_controller_info *p = pbm->parent; |
diff --git a/arch/sparc64/kernel/pci_sabre.c b/arch/sparc64/kernel/pci_sabre.c index 45891850b90d..6ec569828c29 100644 --- a/arch/sparc64/kernel/pci_sabre.c +++ b/arch/sparc64/kernel/pci_sabre.c | |||
| @@ -574,7 +574,7 @@ static void sabre_check_iommu_error(struct pci_controller_info *p, | |||
| 574 | spin_unlock_irqrestore(&iommu->lock, flags); | 574 | spin_unlock_irqrestore(&iommu->lock, flags); |
| 575 | } | 575 | } |
| 576 | 576 | ||
| 577 | static irqreturn_t sabre_ue_intr(int irq, void *dev_id, struct pt_regs *regs) | 577 | static irqreturn_t sabre_ue_intr(int irq, void *dev_id) |
| 578 | { | 578 | { |
| 579 | struct pci_controller_info *p = dev_id; | 579 | struct pci_controller_info *p = dev_id; |
| 580 | unsigned long afsr_reg = p->pbm_A.controller_regs + SABRE_UE_AFSR; | 580 | unsigned long afsr_reg = p->pbm_A.controller_regs + SABRE_UE_AFSR; |
| @@ -634,7 +634,7 @@ static irqreturn_t sabre_ue_intr(int irq, void *dev_id, struct pt_regs *regs) | |||
| 634 | return IRQ_HANDLED; | 634 | return IRQ_HANDLED; |
| 635 | } | 635 | } |
| 636 | 636 | ||
| 637 | static irqreturn_t sabre_ce_intr(int irq, void *dev_id, struct pt_regs *regs) | 637 | static irqreturn_t sabre_ce_intr(int irq, void *dev_id) |
| 638 | { | 638 | { |
| 639 | struct pci_controller_info *p = dev_id; | 639 | struct pci_controller_info *p = dev_id; |
| 640 | unsigned long afsr_reg = p->pbm_A.controller_regs + SABRE_CE_AFSR; | 640 | unsigned long afsr_reg = p->pbm_A.controller_regs + SABRE_CE_AFSR; |
| @@ -726,7 +726,7 @@ static irqreturn_t sabre_pcierr_intr_other(struct pci_controller_info *p) | |||
| 726 | return ret; | 726 | return ret; |
| 727 | } | 727 | } |
| 728 | 728 | ||
| 729 | static irqreturn_t sabre_pcierr_intr(int irq, void *dev_id, struct pt_regs *regs) | 729 | static irqreturn_t sabre_pcierr_intr(int irq, void *dev_id) |
| 730 | { | 730 | { |
| 731 | struct pci_controller_info *p = dev_id; | 731 | struct pci_controller_info *p = dev_id; |
| 732 | unsigned long afsr_reg, afar_reg; | 732 | unsigned long afsr_reg, afar_reg; |
diff --git a/arch/sparc64/kernel/pci_schizo.c b/arch/sparc64/kernel/pci_schizo.c index 75ade83ecc65..66911b126aed 100644 --- a/arch/sparc64/kernel/pci_schizo.c +++ b/arch/sparc64/kernel/pci_schizo.c | |||
| @@ -515,7 +515,7 @@ static void schizo_check_iommu_error(struct pci_controller_info *p, | |||
| 515 | #define SCHIZO_UEAFSR_MTAG 0x000000000000e000UL /* Safari */ | 515 | #define SCHIZO_UEAFSR_MTAG 0x000000000000e000UL /* Safari */ |
| 516 | #define SCHIZO_UEAFSR_ECCSYND 0x00000000000001ffUL /* Safari */ | 516 | #define SCHIZO_UEAFSR_ECCSYND 0x00000000000001ffUL /* Safari */ |
| 517 | 517 | ||
| 518 | static irqreturn_t schizo_ue_intr(int irq, void *dev_id, struct pt_regs *regs) | 518 | static irqreturn_t schizo_ue_intr(int irq, void *dev_id) |
| 519 | { | 519 | { |
| 520 | struct pci_controller_info *p = dev_id; | 520 | struct pci_controller_info *p = dev_id; |
| 521 | unsigned long afsr_reg = p->pbm_B.controller_regs + SCHIZO_UE_AFSR; | 521 | unsigned long afsr_reg = p->pbm_B.controller_regs + SCHIZO_UE_AFSR; |
| @@ -603,7 +603,7 @@ static irqreturn_t schizo_ue_intr(int irq, void *dev_id, struct pt_regs *regs) | |||
| 603 | #define SCHIZO_CEAFSR_MTAG 0x000000000000e000UL | 603 | #define SCHIZO_CEAFSR_MTAG 0x000000000000e000UL |
| 604 | #define SCHIZO_CEAFSR_ECCSYND 0x00000000000001ffUL | 604 | #define SCHIZO_CEAFSR_ECCSYND 0x00000000000001ffUL |
| 605 | 605 | ||
| 606 | static irqreturn_t schizo_ce_intr(int irq, void *dev_id, struct pt_regs *regs) | 606 | static irqreturn_t schizo_ce_intr(int irq, void *dev_id) |
| 607 | { | 607 | { |
| 608 | struct pci_controller_info *p = dev_id; | 608 | struct pci_controller_info *p = dev_id; |
| 609 | unsigned long afsr_reg = p->pbm_B.controller_regs + SCHIZO_CE_AFSR; | 609 | unsigned long afsr_reg = p->pbm_B.controller_regs + SCHIZO_CE_AFSR; |
| @@ -778,7 +778,7 @@ static irqreturn_t schizo_pcierr_intr_other(struct pci_pbm_info *pbm) | |||
| 778 | return ret; | 778 | return ret; |
| 779 | } | 779 | } |
| 780 | 780 | ||
| 781 | static irqreturn_t schizo_pcierr_intr(int irq, void *dev_id, struct pt_regs *regs) | 781 | static irqreturn_t schizo_pcierr_intr(int irq, void *dev_id) |
| 782 | { | 782 | { |
| 783 | struct pci_pbm_info *pbm = dev_id; | 783 | struct pci_pbm_info *pbm = dev_id; |
| 784 | struct pci_controller_info *p = pbm->parent; | 784 | struct pci_controller_info *p = pbm->parent; |
| @@ -933,7 +933,7 @@ static irqreturn_t schizo_pcierr_intr(int irq, void *dev_id, struct pt_regs *reg | |||
| 933 | /* We only expect UNMAP errors here. The rest of the Safari errors | 933 | /* We only expect UNMAP errors here. The rest of the Safari errors |
| 934 | * are marked fatal and thus cause a system reset. | 934 | * are marked fatal and thus cause a system reset. |
| 935 | */ | 935 | */ |
| 936 | static irqreturn_t schizo_safarierr_intr(int irq, void *dev_id, struct pt_regs *regs) | 936 | static irqreturn_t schizo_safarierr_intr(int irq, void *dev_id) |
| 937 | { | 937 | { |
| 938 | struct pci_controller_info *p = dev_id; | 938 | struct pci_controller_info *p = dev_id; |
| 939 | u64 errlog; | 939 | u64 errlog; |
diff --git a/arch/sparc64/kernel/power.c b/arch/sparc64/kernel/power.c index 0b9c70627ce4..699b24b890df 100644 --- a/arch/sparc64/kernel/power.c +++ b/arch/sparc64/kernel/power.c | |||
| @@ -35,7 +35,7 @@ static void __iomem *power_reg; | |||
| 35 | static DECLARE_WAIT_QUEUE_HEAD(powerd_wait); | 35 | static DECLARE_WAIT_QUEUE_HEAD(powerd_wait); |
| 36 | static int button_pressed; | 36 | static int button_pressed; |
| 37 | 37 | ||
| 38 | static irqreturn_t power_handler(int irq, void *dev_id, struct pt_regs *regs) | 38 | static irqreturn_t power_handler(int irq, void *dev_id) |
| 39 | { | 39 | { |
| 40 | if (button_pressed == 0) { | 40 | if (button_pressed == 0) { |
| 41 | button_pressed = 1; | 41 | button_pressed = 1; |
diff --git a/arch/sparc64/kernel/sbus.c b/arch/sparc64/kernel/sbus.c index c49a57795743..01d6d869ea2b 100644 --- a/arch/sparc64/kernel/sbus.c +++ b/arch/sparc64/kernel/sbus.c | |||
| @@ -839,7 +839,7 @@ unsigned int sbus_build_irq(void *buscookie, unsigned int ino) | |||
| 839 | #define SYSIO_UEAFSR_SIZE 0x00001c0000000000UL /* Bad transfer size 2^SIZE */ | 839 | #define SYSIO_UEAFSR_SIZE 0x00001c0000000000UL /* Bad transfer size 2^SIZE */ |
| 840 | #define SYSIO_UEAFSR_MID 0x000003e000000000UL /* UPA MID causing the fault */ | 840 | #define SYSIO_UEAFSR_MID 0x000003e000000000UL /* UPA MID causing the fault */ |
| 841 | #define SYSIO_UEAFSR_RESV2 0x0000001fffffffffUL /* Reserved */ | 841 | #define SYSIO_UEAFSR_RESV2 0x0000001fffffffffUL /* Reserved */ |
| 842 | static irqreturn_t sysio_ue_handler(int irq, void *dev_id, struct pt_regs *regs) | 842 | static irqreturn_t sysio_ue_handler(int irq, void *dev_id) |
| 843 | { | 843 | { |
| 844 | struct sbus_bus *sbus = dev_id; | 844 | struct sbus_bus *sbus = dev_id; |
| 845 | struct sbus_iommu *iommu = sbus->iommu; | 845 | struct sbus_iommu *iommu = sbus->iommu; |
| @@ -911,7 +911,7 @@ static irqreturn_t sysio_ue_handler(int irq, void *dev_id, struct pt_regs *regs) | |||
| 911 | #define SYSIO_CEAFSR_SIZE 0x00001c0000000000UL /* Bad transfer size 2^SIZE */ | 911 | #define SYSIO_CEAFSR_SIZE 0x00001c0000000000UL /* Bad transfer size 2^SIZE */ |
| 912 | #define SYSIO_CEAFSR_MID 0x000003e000000000UL /* UPA MID causing the fault */ | 912 | #define SYSIO_CEAFSR_MID 0x000003e000000000UL /* UPA MID causing the fault */ |
| 913 | #define SYSIO_CEAFSR_RESV2 0x0000001fffffffffUL /* Reserved */ | 913 | #define SYSIO_CEAFSR_RESV2 0x0000001fffffffffUL /* Reserved */ |
| 914 | static irqreturn_t sysio_ce_handler(int irq, void *dev_id, struct pt_regs *regs) | 914 | static irqreturn_t sysio_ce_handler(int irq, void *dev_id) |
| 915 | { | 915 | { |
| 916 | struct sbus_bus *sbus = dev_id; | 916 | struct sbus_bus *sbus = dev_id; |
| 917 | struct sbus_iommu *iommu = sbus->iommu; | 917 | struct sbus_iommu *iommu = sbus->iommu; |
| @@ -988,7 +988,7 @@ static irqreturn_t sysio_ce_handler(int irq, void *dev_id, struct pt_regs *regs) | |||
| 988 | #define SYSIO_SBAFSR_SIZE 0x00001c0000000000UL /* Size of transfer */ | 988 | #define SYSIO_SBAFSR_SIZE 0x00001c0000000000UL /* Size of transfer */ |
| 989 | #define SYSIO_SBAFSR_MID 0x000003e000000000UL /* MID causing the error */ | 989 | #define SYSIO_SBAFSR_MID 0x000003e000000000UL /* MID causing the error */ |
| 990 | #define SYSIO_SBAFSR_RESV3 0x0000001fffffffffUL /* Reserved */ | 990 | #define SYSIO_SBAFSR_RESV3 0x0000001fffffffffUL /* Reserved */ |
| 991 | static irqreturn_t sysio_sbus_error_handler(int irq, void *dev_id, struct pt_regs *regs) | 991 | static irqreturn_t sysio_sbus_error_handler(int irq, void *dev_id) |
| 992 | { | 992 | { |
| 993 | struct sbus_bus *sbus = dev_id; | 993 | struct sbus_bus *sbus = dev_id; |
| 994 | struct sbus_iommu *iommu = sbus->iommu; | 994 | struct sbus_iommu *iommu = sbus->iommu; |
diff --git a/arch/sparc64/kernel/smp.c b/arch/sparc64/kernel/smp.c index f62bf3a2de1a..cc09d8266414 100644 --- a/arch/sparc64/kernel/smp.c +++ b/arch/sparc64/kernel/smp.c | |||
| @@ -31,6 +31,7 @@ | |||
| 31 | #include <asm/cpudata.h> | 31 | #include <asm/cpudata.h> |
| 32 | 32 | ||
| 33 | #include <asm/irq.h> | 33 | #include <asm/irq.h> |
| 34 | #include <asm/irq_regs.h> | ||
| 34 | #include <asm/page.h> | 35 | #include <asm/page.h> |
| 35 | #include <asm/pgtable.h> | 36 | #include <asm/pgtable.h> |
| 36 | #include <asm/oplib.h> | 37 | #include <asm/oplib.h> |
| @@ -1187,6 +1188,7 @@ void smp_percpu_timer_interrupt(struct pt_regs *regs) | |||
| 1187 | unsigned long compare, tick, pstate; | 1188 | unsigned long compare, tick, pstate; |
| 1188 | int cpu = smp_processor_id(); | 1189 | int cpu = smp_processor_id(); |
| 1189 | int user = user_mode(regs); | 1190 | int user = user_mode(regs); |
| 1191 | struct pt_regs *old_regs; | ||
| 1190 | 1192 | ||
| 1191 | /* | 1193 | /* |
| 1192 | * Check for level 14 softint. | 1194 | * Check for level 14 softint. |
| @@ -1203,8 +1205,9 @@ void smp_percpu_timer_interrupt(struct pt_regs *regs) | |||
| 1203 | clear_softint(tick_mask); | 1205 | clear_softint(tick_mask); |
| 1204 | } | 1206 | } |
| 1205 | 1207 | ||
| 1208 | old_regs = set_irq_regs(regs); | ||
| 1206 | do { | 1209 | do { |
| 1207 | profile_tick(CPU_PROFILING, regs); | 1210 | profile_tick(CPU_PROFILING); |
| 1208 | if (!--prof_counter(cpu)) { | 1211 | if (!--prof_counter(cpu)) { |
| 1209 | irq_enter(); | 1212 | irq_enter(); |
| 1210 | 1213 | ||
| @@ -1236,6 +1239,7 @@ void smp_percpu_timer_interrupt(struct pt_regs *regs) | |||
| 1236 | : /* no outputs */ | 1239 | : /* no outputs */ |
| 1237 | : "r" (pstate)); | 1240 | : "r" (pstate)); |
| 1238 | } while (time_after_eq(tick, compare)); | 1241 | } while (time_after_eq(tick, compare)); |
| 1242 | set_irq_regs(old_regs); | ||
| 1239 | } | 1243 | } |
| 1240 | 1244 | ||
| 1241 | static void __init smp_setup_percpu_timer(void) | 1245 | static void __init smp_setup_percpu_timer(void) |
