diff options
| -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 | ||||
| -rw-r--r-- | include/asm-sparc64/floppy.h | 8 | ||||
| -rw-r--r-- | include/asm-sparc64/irq_regs.h | 1 | 
10 files changed, 29 insertions, 21 deletions
diff --git a/arch/sparc64/kernel/ebus.c b/arch/sparc64/kernel/ebus.c index 8a9b470e1b6..2df25c2b407 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)  	}  } -static irqreturn_t ebus_dma_irq(int irq, void *dev_id, struct pt_regs *regs) +static irqreturn_t ebus_dma_irq(int irq, void *dev_id)  {  	struct ebus_dma_info *p = dev_id;  	unsigned long flags; diff --git a/arch/sparc64/kernel/irq.c b/arch/sparc64/kernel/irq.c index 4e64724cb9a..ce05deb1bc9 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)  void handler_irq(int irq, struct pt_regs *regs)  {  	struct ino_bucket *bucket; +	struct pt_regs *old_regs;  	clear_softint(1 << irq); +	old_regs = set_irq_regs(regs);  	irq_enter();  	/* Sliiiick... */ @@ -558,12 +560,13 @@ void handler_irq(int irq, struct pt_regs *regs)  		struct ino_bucket *next = __bucket(bucket->irq_chain);  		bucket->irq_chain = 0; -		__do_IRQ(bucket->virt_irq, regs); +		__do_IRQ(bucket->virt_irq);  		bucket = next;  	}  	irq_exit(); +	set_irq_regs(old_regs);  }  struct sun5_timer { diff --git a/arch/sparc64/kernel/pci_psycho.c b/arch/sparc64/kernel/pci_psycho.c index 1ec0aab68c0..fda5db223d9 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,  #define  PSYCHO_UEAFSR_RESV2	0x00000000007fffffUL /* Reserved                     */  #define PSYCHO_UE_AFAR	0x0038UL -static irqreturn_t psycho_ue_intr(int irq, void *dev_id, struct pt_regs *regs) +static irqreturn_t psycho_ue_intr(int irq, void *dev_id)  {  	struct pci_controller_info *p = dev_id;  	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)  #define  PSYCHO_CEAFSR_RESV2	0x00000000007fffffUL /* Reserved                     */  #define PSYCHO_CE_AFAR	0x0040UL -static irqreturn_t psycho_ce_intr(int irq, void *dev_id, struct pt_regs *regs) +static irqreturn_t psycho_ce_intr(int irq, void *dev_id)  {  	struct pci_controller_info *p = dev_id;  	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  	return ret;  } -static irqreturn_t psycho_pcierr_intr(int irq, void *dev_id, struct pt_regs *regs) +static irqreturn_t psycho_pcierr_intr(int irq, void *dev_id)  {  	struct pci_pbm_info *pbm = dev_id;  	struct pci_controller_info *p = pbm->parent; diff --git a/arch/sparc64/kernel/pci_sabre.c b/arch/sparc64/kernel/pci_sabre.c index 45891850b90..6ec569828c2 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,  	spin_unlock_irqrestore(&iommu->lock, flags);  } -static irqreturn_t sabre_ue_intr(int irq, void *dev_id, struct pt_regs *regs) +static irqreturn_t sabre_ue_intr(int irq, void *dev_id)  {  	struct pci_controller_info *p = dev_id;  	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)  	return IRQ_HANDLED;  } -static irqreturn_t sabre_ce_intr(int irq, void *dev_id, struct pt_regs *regs) +static irqreturn_t sabre_ce_intr(int irq, void *dev_id)  {  	struct pci_controller_info *p = dev_id;  	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)  	return ret;  } -static irqreturn_t sabre_pcierr_intr(int irq, void *dev_id, struct pt_regs *regs) +static irqreturn_t sabre_pcierr_intr(int irq, void *dev_id)  {  	struct pci_controller_info *p = dev_id;  	unsigned long afsr_reg, afar_reg; diff --git a/arch/sparc64/kernel/pci_schizo.c b/arch/sparc64/kernel/pci_schizo.c index 75ade83ecc6..66911b126ae 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,  #define SCHIZO_UEAFSR_MTAG	0x000000000000e000UL /* Safari */  #define SCHIZO_UEAFSR_ECCSYND	0x00000000000001ffUL /* Safari */ -static irqreturn_t schizo_ue_intr(int irq, void *dev_id, struct pt_regs *regs) +static irqreturn_t schizo_ue_intr(int irq, void *dev_id)  {  	struct pci_controller_info *p = dev_id;  	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)  #define SCHIZO_CEAFSR_MTAG	0x000000000000e000UL  #define SCHIZO_CEAFSR_ECCSYND	0x00000000000001ffUL -static irqreturn_t schizo_ce_intr(int irq, void *dev_id, struct pt_regs *regs) +static irqreturn_t schizo_ce_intr(int irq, void *dev_id)  {  	struct pci_controller_info *p = dev_id;  	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)  	return ret;  } -static irqreturn_t schizo_pcierr_intr(int irq, void *dev_id, struct pt_regs *regs) +static irqreturn_t schizo_pcierr_intr(int irq, void *dev_id)  {  	struct pci_pbm_info *pbm = dev_id;  	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  /* We only expect UNMAP errors here.  The rest of the Safari errors   * are marked fatal and thus cause a system reset.   */ -static irqreturn_t schizo_safarierr_intr(int irq, void *dev_id, struct pt_regs *regs) +static irqreturn_t schizo_safarierr_intr(int irq, void *dev_id)  {  	struct pci_controller_info *p = dev_id;  	u64 errlog; diff --git a/arch/sparc64/kernel/power.c b/arch/sparc64/kernel/power.c index 0b9c70627ce..699b24b890d 100644 --- a/arch/sparc64/kernel/power.c +++ b/arch/sparc64/kernel/power.c @@ -35,7 +35,7 @@ static void __iomem *power_reg;  static DECLARE_WAIT_QUEUE_HEAD(powerd_wait);  static int button_pressed; -static irqreturn_t power_handler(int irq, void *dev_id, struct pt_regs *regs) +static irqreturn_t power_handler(int irq, void *dev_id)  {  	if (button_pressed == 0) {  		button_pressed = 1; diff --git a/arch/sparc64/kernel/sbus.c b/arch/sparc64/kernel/sbus.c index c49a5779574..01d6d869ea2 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)  #define  SYSIO_UEAFSR_SIZE  0x00001c0000000000UL /* Bad transfer size 2^SIZE  */  #define  SYSIO_UEAFSR_MID   0x000003e000000000UL /* UPA MID causing the fault */  #define  SYSIO_UEAFSR_RESV2 0x0000001fffffffffUL /* Reserved                  */ -static irqreturn_t sysio_ue_handler(int irq, void *dev_id, struct pt_regs *regs) +static irqreturn_t sysio_ue_handler(int irq, void *dev_id)  {  	struct sbus_bus *sbus = dev_id;  	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)  #define  SYSIO_CEAFSR_SIZE  0x00001c0000000000UL /* Bad transfer size 2^SIZE  */  #define  SYSIO_CEAFSR_MID   0x000003e000000000UL /* UPA MID causing the fault */  #define  SYSIO_CEAFSR_RESV2 0x0000001fffffffffUL /* Reserved                  */ -static irqreturn_t sysio_ce_handler(int irq, void *dev_id, struct pt_regs *regs) +static irqreturn_t sysio_ce_handler(int irq, void *dev_id)  {  	struct sbus_bus *sbus = dev_id;  	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)  #define  SYSIO_SBAFSR_SIZE  0x00001c0000000000UL /* Size of transfer          */  #define  SYSIO_SBAFSR_MID   0x000003e000000000UL /* MID causing the error     */  #define  SYSIO_SBAFSR_RESV3 0x0000001fffffffffUL /* Reserved                  */ -static irqreturn_t sysio_sbus_error_handler(int irq, void *dev_id, struct pt_regs *regs) +static irqreturn_t sysio_sbus_error_handler(int irq, void *dev_id)  {  	struct sbus_bus *sbus = dev_id;  	struct sbus_iommu *iommu = sbus->iommu; diff --git a/arch/sparc64/kernel/smp.c b/arch/sparc64/kernel/smp.c index f62bf3a2de1..cc09d826641 100644 --- a/arch/sparc64/kernel/smp.c +++ b/arch/sparc64/kernel/smp.c @@ -31,6 +31,7 @@  #include <asm/cpudata.h>  #include <asm/irq.h> +#include <asm/irq_regs.h>  #include <asm/page.h>  #include <asm/pgtable.h>  #include <asm/oplib.h> @@ -1187,6 +1188,7 @@ void smp_percpu_timer_interrupt(struct pt_regs *regs)  	unsigned long compare, tick, pstate;  	int cpu = smp_processor_id();  	int user = user_mode(regs); +	struct pt_regs *old_regs;  	/*  	 * Check for level 14 softint. @@ -1203,8 +1205,9 @@ void smp_percpu_timer_interrupt(struct pt_regs *regs)  		clear_softint(tick_mask);  	} +	old_regs = set_irq_regs(regs);  	do { -		profile_tick(CPU_PROFILING, regs); +		profile_tick(CPU_PROFILING);  		if (!--prof_counter(cpu)) {  			irq_enter(); @@ -1236,6 +1239,7 @@ void smp_percpu_timer_interrupt(struct pt_regs *regs)  				     : /* no outputs */  				     : "r" (pstate));  	} while (time_after_eq(tick, compare)); +	set_irq_regs(old_regs);  }  static void __init smp_setup_percpu_timer(void) diff --git a/include/asm-sparc64/floppy.h b/include/asm-sparc64/floppy.h index abf15003801..dbe033e494d 100644 --- a/include/asm-sparc64/floppy.h +++ b/include/asm-sparc64/floppy.h @@ -208,7 +208,7 @@ static void sun_fd_enable_dma(void)  	pdma_areasize = pdma_size;  } -irqreturn_t sparc_floppy_irq(int irq, void *dev_cookie, struct pt_regs *regs) +irqreturn_t sparc_floppy_irq(int irq, void *dev_cookie)  {  	if (likely(doing_pdma)) {  		void __iomem *stat = (void __iomem *) fdc_status; @@ -255,7 +255,7 @@ irqreturn_t sparc_floppy_irq(int irq, void *dev_cookie, struct pt_regs *regs)  	}  main_interrupt: -	return floppy_interrupt(irq, dev_cookie, regs); +	return floppy_interrupt(irq, dev_cookie);  }  static int sun_fd_request_irq(void) @@ -311,7 +311,7 @@ struct sun_pci_dma_op {  static struct sun_pci_dma_op sun_pci_dma_current = { -1U, 0, 0, NULL};  static struct sun_pci_dma_op sun_pci_dma_pending = { -1U, 0, 0, NULL}; -extern irqreturn_t floppy_interrupt(int irq, void *dev_id, struct pt_regs *regs); +extern irqreturn_t floppy_interrupt(int irq, void *dev_id);  static unsigned char sun_pci_fd_inb(unsigned long port)  { @@ -446,7 +446,7 @@ static int sun_pci_fd_eject(int drive)  void sun_pci_fd_dma_callback(struct ebus_dma_info *p, int event, void *cookie)  { -	floppy_interrupt(0, NULL, NULL); +	floppy_interrupt(0, NULL);  }  /* diff --git a/include/asm-sparc64/irq_regs.h b/include/asm-sparc64/irq_regs.h new file mode 100644 index 00000000000..3dd9c0b7027 --- /dev/null +++ b/include/asm-sparc64/irq_regs.h @@ -0,0 +1 @@ +#include <asm-generic/irq_regs.h>  |