[POWERPC] Fix up after irq changes
Remove struct pt_regs * from all handlers. Also remove the regs argument from get_irq() functions. Compile tested with arch/powerpc/config/* and arch/ppc/configs/prep_defconfig Signed-off-by: Olaf Hering <olaf@aepfle.de> Signed-off-by: Paul Mackerras <paulus@samba.org>
This commit is contained in:
Родитель
1224f373c9
Коммит
35a84c2f56
|
@ -319,7 +319,7 @@ EXPORT_SYMBOL(ibmebus_unregister_driver);
|
||||||
|
|
||||||
int ibmebus_request_irq(struct ibmebus_dev *dev,
|
int ibmebus_request_irq(struct ibmebus_dev *dev,
|
||||||
u32 ist,
|
u32 ist,
|
||||||
irqreturn_t (*handler)(int, void*, struct pt_regs *),
|
irqreturn_t (*handler)(int, void*),
|
||||||
unsigned long irq_flags, const char * devname,
|
unsigned long irq_flags, const char * devname,
|
||||||
void *dev_id)
|
void *dev_id)
|
||||||
{
|
{
|
||||||
|
|
|
@ -217,7 +217,7 @@ void do_IRQ(struct pt_regs *regs)
|
||||||
* The value -2 is for buggy hardware and means that this IRQ
|
* The value -2 is for buggy hardware and means that this IRQ
|
||||||
* has already been handled. -- Tom
|
* has already been handled. -- Tom
|
||||||
*/
|
*/
|
||||||
irq = ppc_md.get_irq(regs);
|
irq = ppc_md.get_irq();
|
||||||
|
|
||||||
if (irq != NO_IRQ && irq != NO_IRQ_IGNORE) {
|
if (irq != NO_IRQ && irq != NO_IRQ_IGNORE) {
|
||||||
#ifdef CONFIG_IRQSTACKS
|
#ifdef CONFIG_IRQSTACKS
|
||||||
|
|
|
@ -706,7 +706,7 @@ void timer_interrupt(struct pt_regs * regs)
|
||||||
|
|
||||||
#ifdef CONFIG_PPC_ISERIES
|
#ifdef CONFIG_PPC_ISERIES
|
||||||
if (hvlpevent_is_pending())
|
if (hvlpevent_is_pending())
|
||||||
process_hvlpevents(regs);
|
process_hvlpevents();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_PPC64
|
#ifdef CONFIG_PPC64
|
||||||
|
|
|
@ -384,8 +384,7 @@ struct hw_interrupt_type m82xx_pci_ic = {
|
||||||
};
|
};
|
||||||
|
|
||||||
static void
|
static void
|
||||||
m82xx_pci_irq_demux(unsigned int irq, struct irq_desc *desc,
|
m82xx_pci_irq_demux(unsigned int irq, struct irq_desc *desc)
|
||||||
struct pt_regs *regs)
|
|
||||||
{
|
{
|
||||||
unsigned long stat, mask, pend;
|
unsigned long stat, mask, pend;
|
||||||
int bit;
|
int bit;
|
||||||
|
@ -398,7 +397,7 @@ m82xx_pci_irq_demux(unsigned int irq, struct irq_desc *desc,
|
||||||
break;
|
break;
|
||||||
for (bit = 0; pend != 0; ++bit, pend <<= 1) {
|
for (bit = 0; pend != 0; ++bit, pend <<= 1) {
|
||||||
if (pend & 0x80000000)
|
if (pend & 0x80000000)
|
||||||
__do_IRQ(pci_int_base + bit, regs);
|
__do_IRQ(pci_int_base + bit);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -66,12 +66,11 @@ mpc85xx_pcibios_fixup(void)
|
||||||
|
|
||||||
#ifdef CONFIG_CPM2
|
#ifdef CONFIG_CPM2
|
||||||
|
|
||||||
static void cpm2_cascade(unsigned int irq, struct irq_desc *desc,
|
static void cpm2_cascade(unsigned int irq, struct irq_desc *desc)
|
||||||
struct pt_regs *regs)
|
|
||||||
{
|
{
|
||||||
int cascade_irq;
|
int cascade_irq;
|
||||||
|
|
||||||
while ((cascade_irq = cpm2_get_irq(regs)) >= 0) {
|
while ((cascade_irq = cpm2_get_irq()) >= 0) {
|
||||||
generic_handle_irq(cascade_irq);
|
generic_handle_irq(cascade_irq);
|
||||||
}
|
}
|
||||||
desc->chip->eoi(irq);
|
desc->chip->eoi(irq);
|
||||||
|
|
|
@ -132,10 +132,9 @@ mpc85xx_cds_pcibios_fixup(void)
|
||||||
|
|
||||||
#ifdef CONFIG_PPC_I8259
|
#ifdef CONFIG_PPC_I8259
|
||||||
#warning The i8259 PIC support is currently broken
|
#warning The i8259 PIC support is currently broken
|
||||||
static void mpc85xx_8259_cascade(unsigned int irq, struct
|
static void mpc85xx_8259_cascade(unsigned int irq, struct irq_desc *desc)
|
||||||
irq_desc *desc, struct pt_regs *regs)
|
|
||||||
{
|
{
|
||||||
unsigned int cascade_irq = i8259_irq(regs);
|
unsigned int cascade_irq = i8259_irq();
|
||||||
|
|
||||||
if (cascade_irq != NO_IRQ)
|
if (cascade_irq != NO_IRQ)
|
||||||
generic_handle_irq(cascade_irq);
|
generic_handle_irq(cascade_irq);
|
||||||
|
@ -150,8 +149,10 @@ void __init mpc85xx_cds_pic_init(void)
|
||||||
struct mpic *mpic;
|
struct mpic *mpic;
|
||||||
struct resource r;
|
struct resource r;
|
||||||
struct device_node *np = NULL;
|
struct device_node *np = NULL;
|
||||||
|
#ifdef CONFIG_PPC_I8259
|
||||||
struct device_node *cascade_node = NULL;
|
struct device_node *cascade_node = NULL;
|
||||||
int cascade_irq;
|
int cascade_irq;
|
||||||
|
#endif
|
||||||
|
|
||||||
np = of_find_node_by_type(np, "open-pic");
|
np = of_find_node_by_type(np, "open-pic");
|
||||||
|
|
||||||
|
|
|
@ -53,10 +53,9 @@ unsigned long pci_dram_offset = 0;
|
||||||
|
|
||||||
|
|
||||||
#ifdef CONFIG_PCI
|
#ifdef CONFIG_PCI
|
||||||
static void mpc86xx_8259_cascade(unsigned int irq, struct irq_desc *desc,
|
static void mpc86xx_8259_cascade(unsigned int irq, struct irq_desc *desc)
|
||||||
struct pt_regs *regs)
|
|
||||||
{
|
{
|
||||||
unsigned int cascade_irq = i8259_irq(regs);
|
unsigned int cascade_irq = i8259_irq();
|
||||||
if (cascade_irq != NO_IRQ)
|
if (cascade_irq != NO_IRQ)
|
||||||
generic_handle_irq(cascade_irq);
|
generic_handle_irq(cascade_irq);
|
||||||
desc->chip->eoi(irq);
|
desc->chip->eoi(irq);
|
||||||
|
|
|
@ -98,8 +98,7 @@ static void iic_ioexc_eoi(unsigned int irq)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
static void iic_ioexc_cascade(unsigned int irq, struct irq_desc *desc,
|
static void iic_ioexc_cascade(unsigned int irq, struct irq_desc *desc)
|
||||||
struct pt_regs *regs)
|
|
||||||
{
|
{
|
||||||
struct cbe_iic_regs __iomem *node_iic = (void __iomem *)desc->handler_data;
|
struct cbe_iic_regs __iomem *node_iic = (void __iomem *)desc->handler_data;
|
||||||
unsigned int base = (irq & 0xffffff00) | IIC_IRQ_TYPE_IOEXC;
|
unsigned int base = (irq & 0xffffff00) | IIC_IRQ_TYPE_IOEXC;
|
||||||
|
@ -140,7 +139,7 @@ static struct irq_chip iic_ioexc_chip = {
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Get an IRQ number from the pending state register of the IIC */
|
/* Get an IRQ number from the pending state register of the IIC */
|
||||||
static unsigned int iic_get_irq(struct pt_regs *regs)
|
static unsigned int iic_get_irq(void)
|
||||||
{
|
{
|
||||||
struct cbe_iic_pending_bits pending;
|
struct cbe_iic_pending_bits pending;
|
||||||
struct iic *iic;
|
struct iic *iic;
|
||||||
|
|
|
@ -70,7 +70,7 @@ unsigned long event_scan_interval;
|
||||||
* has to include <linux/interrupt.h> (to get irqreturn_t), which
|
* has to include <linux/interrupt.h> (to get irqreturn_t), which
|
||||||
* causes all sorts of problems. -- paulus
|
* causes all sorts of problems. -- paulus
|
||||||
*/
|
*/
|
||||||
extern irqreturn_t xmon_irq(int, void *, struct pt_regs *);
|
extern irqreturn_t xmon_irq(int, void *);
|
||||||
|
|
||||||
extern unsigned long loops_per_jiffy;
|
extern unsigned long loops_per_jiffy;
|
||||||
|
|
||||||
|
@ -335,10 +335,9 @@ chrp_event_scan(unsigned long unused)
|
||||||
jiffies + event_scan_interval);
|
jiffies + event_scan_interval);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void chrp_8259_cascade(unsigned int irq, struct irq_desc *desc,
|
static void chrp_8259_cascade(unsigned int irq, struct irq_desc *desc)
|
||||||
struct pt_regs *regs)
|
|
||||||
{
|
{
|
||||||
unsigned int cascade_irq = i8259_irq(regs);
|
unsigned int cascade_irq = i8259_irq();
|
||||||
if (cascade_irq != NO_IRQ)
|
if (cascade_irq != NO_IRQ)
|
||||||
generic_handle_irq(cascade_irq);
|
generic_handle_irq(cascade_irq);
|
||||||
desc->chip->eoi(irq);
|
desc->chip->eoi(irq);
|
||||||
|
|
|
@ -61,8 +61,7 @@ pci_dram_offset = MPC7448_HPC2_PCI_MEM_OFFSET;
|
||||||
extern int tsi108_setup_pci(struct device_node *dev);
|
extern int tsi108_setup_pci(struct device_node *dev);
|
||||||
extern void _nmask_and_or_msr(unsigned long nmask, unsigned long or_val);
|
extern void _nmask_and_or_msr(unsigned long nmask, unsigned long or_val);
|
||||||
extern void tsi108_pci_int_init(void);
|
extern void tsi108_pci_int_init(void);
|
||||||
extern void tsi108_irq_cascade(unsigned int irq, struct irq_desc *desc,
|
extern void tsi108_irq_cascade(unsigned int irq, struct irq_desc *desc);
|
||||||
struct pt_regs *regs);
|
|
||||||
|
|
||||||
int mpc7448_hpc2_exclude_device(u_char bus, u_char devfn)
|
int mpc7448_hpc2_exclude_device(u_char bus, u_char devfn)
|
||||||
{
|
{
|
||||||
|
@ -200,7 +199,7 @@ static void __init mpc7448_hpc2_init_IRQ(void)
|
||||||
tsi_pic = of_find_node_by_type(NULL, "open-pic");
|
tsi_pic = of_find_node_by_type(NULL, "open-pic");
|
||||||
if (tsi_pic) {
|
if (tsi_pic) {
|
||||||
unsigned int size;
|
unsigned int size;
|
||||||
void *prop = get_property(tsi_pic, "reg", &size);
|
const void *prop = get_property(tsi_pic, "reg", &size);
|
||||||
mpic_paddr = of_translate_address(tsi_pic, prop);
|
mpic_paddr = of_translate_address(tsi_pic, prop);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -85,7 +85,7 @@ static DEFINE_SPINLOCK(pending_irqs_lock);
|
||||||
static int num_pending_irqs;
|
static int num_pending_irqs;
|
||||||
static int pending_irqs[NR_IRQS];
|
static int pending_irqs[NR_IRQS];
|
||||||
|
|
||||||
static void int_received(struct pci_event *event, struct pt_regs *regs)
|
static void int_received(struct pci_event *event)
|
||||||
{
|
{
|
||||||
int irq;
|
int irq;
|
||||||
|
|
||||||
|
@ -143,11 +143,11 @@ static void int_received(struct pci_event *event, struct pt_regs *regs)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void pci_event_handler(struct HvLpEvent *event, struct pt_regs *regs)
|
static void pci_event_handler(struct HvLpEvent *event)
|
||||||
{
|
{
|
||||||
if (event && (event->xType == HvLpEvent_Type_PciIo)) {
|
if (event && (event->xType == HvLpEvent_Type_PciIo)) {
|
||||||
if (hvlpevent_is_int(event))
|
if (hvlpevent_is_int(event))
|
||||||
int_received((struct pci_event *)event, regs);
|
int_received((struct pci_event *)event);
|
||||||
else
|
else
|
||||||
printk(KERN_ERR
|
printk(KERN_ERR
|
||||||
"pci_event_handler: unexpected ack received\n");
|
"pci_event_handler: unexpected ack received\n");
|
||||||
|
@ -305,7 +305,7 @@ int __init iSeries_allocate_IRQ(HvBusNumber bus,
|
||||||
/*
|
/*
|
||||||
* Get the next pending IRQ.
|
* Get the next pending IRQ.
|
||||||
*/
|
*/
|
||||||
unsigned int iSeries_get_irq(struct pt_regs *regs)
|
unsigned int iSeries_get_irq(void)
|
||||||
{
|
{
|
||||||
int irq = NO_IRQ_IGNORE;
|
int irq = NO_IRQ_IGNORE;
|
||||||
|
|
||||||
|
@ -316,7 +316,7 @@ unsigned int iSeries_get_irq(struct pt_regs *regs)
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_SMP */
|
#endif /* CONFIG_SMP */
|
||||||
if (hvlpevent_is_pending())
|
if (hvlpevent_is_pending())
|
||||||
process_hvlpevents(regs);
|
process_hvlpevents();
|
||||||
|
|
||||||
#ifdef CONFIG_PCI
|
#ifdef CONFIG_PCI
|
||||||
if (num_pending_irqs) {
|
if (num_pending_irqs) {
|
||||||
|
|
|
@ -4,6 +4,6 @@
|
||||||
extern void iSeries_init_IRQ(void);
|
extern void iSeries_init_IRQ(void);
|
||||||
extern int iSeries_allocate_IRQ(HvBusNumber, HvSubBusNumber, u32);
|
extern int iSeries_allocate_IRQ(HvBusNumber, HvSubBusNumber, u32);
|
||||||
extern void iSeries_activate_IRQs(void);
|
extern void iSeries_activate_IRQs(void);
|
||||||
extern unsigned int iSeries_get_irq(struct pt_regs *);
|
extern unsigned int iSeries_get_irq(void);
|
||||||
|
|
||||||
#endif /* _ISERIES_IRQ_H */
|
#endif /* _ISERIES_IRQ_H */
|
||||||
|
|
|
@ -116,7 +116,7 @@ static void hvlpevent_clear_valid(struct HvLpEvent * event)
|
||||||
hvlpevent_invalidate(event);
|
hvlpevent_invalidate(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
void process_hvlpevents(struct pt_regs *regs)
|
void process_hvlpevents(void)
|
||||||
{
|
{
|
||||||
struct HvLpEvent * event;
|
struct HvLpEvent * event;
|
||||||
|
|
||||||
|
@ -144,7 +144,7 @@ void process_hvlpevents(struct pt_regs *regs)
|
||||||
__get_cpu_var(hvlpevent_counts)[event->xType]++;
|
__get_cpu_var(hvlpevent_counts)[event->xType]++;
|
||||||
if (event->xType < HvLpEvent_Type_NumTypes &&
|
if (event->xType < HvLpEvent_Type_NumTypes &&
|
||||||
lpEventHandler[event->xType])
|
lpEventHandler[event->xType])
|
||||||
lpEventHandler[event->xType](event, regs);
|
lpEventHandler[event->xType](event);
|
||||||
else
|
else
|
||||||
printk(KERN_INFO "Unexpected Lp Event type=%d\n", event->xType );
|
printk(KERN_INFO "Unexpected Lp Event type=%d\n", event->xType );
|
||||||
|
|
||||||
|
|
|
@ -513,7 +513,7 @@ static void handle_ack(struct io_mf_lp_event *event)
|
||||||
* parse it enough to know if it is an interrupt or an
|
* parse it enough to know if it is an interrupt or an
|
||||||
* acknowledge.
|
* acknowledge.
|
||||||
*/
|
*/
|
||||||
static void hv_handler(struct HvLpEvent *event, struct pt_regs *regs)
|
static void hv_handler(struct HvLpEvent *event)
|
||||||
{
|
{
|
||||||
if ((event != NULL) && (event->xType == HvLpEvent_Type_MachineFac)) {
|
if ((event != NULL) && (event->xType == HvLpEvent_Type_MachineFac)) {
|
||||||
if (hvlpevent_is_ack(event))
|
if (hvlpevent_is_ack(event))
|
||||||
|
@ -847,7 +847,7 @@ static int mf_get_boot_rtc(struct rtc_time *tm)
|
||||||
/* We need to poll here as we are not yet taking interrupts */
|
/* We need to poll here as we are not yet taking interrupts */
|
||||||
while (rtc_data.busy) {
|
while (rtc_data.busy) {
|
||||||
if (hvlpevent_is_pending())
|
if (hvlpevent_is_pending())
|
||||||
process_hvlpevents(NULL);
|
process_hvlpevents();
|
||||||
}
|
}
|
||||||
return rtc_set_tm(rtc_data.rc, rtc_data.ce_msg.ce_msg, tm);
|
return rtc_set_tm(rtc_data.rc, rtc_data.ce_msg.ce_msg, tm);
|
||||||
}
|
}
|
||||||
|
|
|
@ -378,7 +378,7 @@ void vio_set_hostlp(void)
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(vio_set_hostlp);
|
EXPORT_SYMBOL(vio_set_hostlp);
|
||||||
|
|
||||||
static void vio_handleEvent(struct HvLpEvent *event, struct pt_regs *regs)
|
static void vio_handleEvent(struct HvLpEvent *event)
|
||||||
{
|
{
|
||||||
HvLpIndex remoteLp;
|
HvLpIndex remoteLp;
|
||||||
int subtype = (event->xSubtype & VIOMAJOR_SUBTYPE_MASK)
|
int subtype = (event->xSubtype & VIOMAJOR_SUBTYPE_MASK)
|
||||||
|
|
|
@ -42,7 +42,7 @@
|
||||||
* has to include <linux/interrupt.h> (to get irqreturn_t), which
|
* has to include <linux/interrupt.h> (to get irqreturn_t), which
|
||||||
* causes all sorts of problems. -- paulus
|
* causes all sorts of problems. -- paulus
|
||||||
*/
|
*/
|
||||||
extern irqreturn_t xmon_irq(int, void *, struct pt_regs *);
|
extern irqreturn_t xmon_irq(int, void *);
|
||||||
|
|
||||||
#ifdef CONFIG_PPC32
|
#ifdef CONFIG_PPC32
|
||||||
struct pmac_irq_hw {
|
struct pmac_irq_hw {
|
||||||
|
@ -210,7 +210,7 @@ static struct irq_chip pmac_pic = {
|
||||||
.retrigger = pmac_retrigger,
|
.retrigger = pmac_retrigger,
|
||||||
};
|
};
|
||||||
|
|
||||||
static irqreturn_t gatwick_action(int cpl, void *dev_id, struct pt_regs *regs)
|
static irqreturn_t gatwick_action(int cpl, void *dev_id)
|
||||||
{
|
{
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
int irq, bits;
|
int irq, bits;
|
||||||
|
@ -235,18 +235,18 @@ static irqreturn_t gatwick_action(int cpl, void *dev_id, struct pt_regs *regs)
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
static unsigned int pmac_pic_get_irq(struct pt_regs *regs)
|
static unsigned int pmac_pic_get_irq(void)
|
||||||
{
|
{
|
||||||
int irq;
|
int irq;
|
||||||
unsigned long bits = 0;
|
unsigned long bits = 0;
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
|
|
||||||
#ifdef CONFIG_SMP
|
#ifdef CONFIG_SMP
|
||||||
void psurge_smp_message_recv(struct pt_regs *);
|
void psurge_smp_message_recv(void);
|
||||||
|
|
||||||
/* IPI's are a hack on the powersurge -- Cort */
|
/* IPI's are a hack on the powersurge -- Cort */
|
||||||
if ( smp_processor_id() != 0 ) {
|
if ( smp_processor_id() != 0 ) {
|
||||||
psurge_smp_message_recv(regs);
|
psurge_smp_message_recv();
|
||||||
return NO_IRQ_IGNORE; /* ignore, already handled */
|
return NO_IRQ_IGNORE; /* ignore, already handled */
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_SMP */
|
#endif /* CONFIG_SMP */
|
||||||
|
@ -444,7 +444,7 @@ static void pmac_u3_cascade(unsigned int irq, struct irq_desc *desc)
|
||||||
{
|
{
|
||||||
struct mpic *mpic = desc->handler_data;
|
struct mpic *mpic = desc->handler_data;
|
||||||
|
|
||||||
unsigned int cascade_irq = mpic_get_one_irq(mpic, get_irq_regs());
|
unsigned int cascade_irq = mpic_get_one_irq(mpic);
|
||||||
if (cascade_irq != NO_IRQ)
|
if (cascade_irq != NO_IRQ)
|
||||||
generic_handle_irq(cascade_irq);
|
generic_handle_irq(cascade_irq);
|
||||||
desc->chip->eoi(irq);
|
desc->chip->eoi(irq);
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
extern struct hw_interrupt_type pmac_pic;
|
extern struct hw_interrupt_type pmac_pic;
|
||||||
|
|
||||||
void pmac_pic_init(void);
|
extern void pmac_pic_init(void);
|
||||||
int pmac_get_irq(struct pt_regs *regs);
|
extern int pmac_get_irq(void);
|
||||||
|
|
||||||
#endif /* __PPC_PLATFORMS_PMAC_PIC_H */
|
#endif /* __PPC_PLATFORMS_PMAC_PIC_H */
|
||||||
|
|
|
@ -160,7 +160,7 @@ static inline void psurge_clr_ipi(int cpu)
|
||||||
*/
|
*/
|
||||||
static unsigned long psurge_smp_message[NR_CPUS];
|
static unsigned long psurge_smp_message[NR_CPUS];
|
||||||
|
|
||||||
void psurge_smp_message_recv(struct pt_regs *regs)
|
void psurge_smp_message_recv(void)
|
||||||
{
|
{
|
||||||
int cpu = smp_processor_id();
|
int cpu = smp_processor_id();
|
||||||
int msg;
|
int msg;
|
||||||
|
@ -174,12 +174,12 @@ void psurge_smp_message_recv(struct pt_regs *regs)
|
||||||
/* make sure there is a message there */
|
/* make sure there is a message there */
|
||||||
for (msg = 0; msg < 4; msg++)
|
for (msg = 0; msg < 4; msg++)
|
||||||
if (test_and_clear_bit(msg, &psurge_smp_message[cpu]))
|
if (test_and_clear_bit(msg, &psurge_smp_message[cpu]))
|
||||||
smp_message_recv(msg, regs);
|
smp_message_recv(msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
irqreturn_t psurge_primary_intr(int irq, void *d, struct pt_regs *regs)
|
irqreturn_t psurge_primary_intr(int irq, void *d)
|
||||||
{
|
{
|
||||||
psurge_smp_message_recv(regs);
|
psurge_smp_message_recv();
|
||||||
return IRQ_HANDLED;
|
return IRQ_HANDLED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -123,7 +123,7 @@ static void __init fwnmi_init(void)
|
||||||
|
|
||||||
void pseries_8259_cascade(unsigned int irq, struct irq_desc *desc)
|
void pseries_8259_cascade(unsigned int irq, struct irq_desc *desc)
|
||||||
{
|
{
|
||||||
unsigned int cascade_irq = i8259_irq(get_irq_regs());
|
unsigned int cascade_irq = i8259_irq();
|
||||||
if (cascade_irq != NO_IRQ)
|
if (cascade_irq != NO_IRQ)
|
||||||
generic_handle_irq(cascade_irq);
|
generic_handle_irq(cascade_irq);
|
||||||
desc->chip->eoi(irq);
|
desc->chip->eoi(irq);
|
||||||
|
|
|
@ -308,14 +308,14 @@ static inline unsigned int xics_remap_irq(unsigned int vec)
|
||||||
return NO_IRQ;
|
return NO_IRQ;
|
||||||
}
|
}
|
||||||
|
|
||||||
static unsigned int xics_get_irq_direct(struct pt_regs *regs)
|
static unsigned int xics_get_irq_direct(void)
|
||||||
{
|
{
|
||||||
unsigned int cpu = smp_processor_id();
|
unsigned int cpu = smp_processor_id();
|
||||||
|
|
||||||
return xics_remap_irq(direct_xirr_info_get(cpu));
|
return xics_remap_irq(direct_xirr_info_get(cpu));
|
||||||
}
|
}
|
||||||
|
|
||||||
static unsigned int xics_get_irq_lpar(struct pt_regs *regs)
|
static unsigned int xics_get_irq_lpar(void)
|
||||||
{
|
{
|
||||||
unsigned int cpu = smp_processor_id();
|
unsigned int cpu = smp_processor_id();
|
||||||
|
|
||||||
|
|
|
@ -147,7 +147,7 @@ static struct irq_chip cpm2_pic = {
|
||||||
.end = cpm2_end_irq,
|
.end = cpm2_end_irq,
|
||||||
};
|
};
|
||||||
|
|
||||||
unsigned int cpm2_get_irq(struct pt_regs *regs)
|
unsigned int cpm2_get_irq(void)
|
||||||
{
|
{
|
||||||
int irq;
|
int irq;
|
||||||
unsigned long bits;
|
unsigned long bits;
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
|
|
||||||
extern intctl_cpm2_t *cpm2_intctl;
|
extern intctl_cpm2_t *cpm2_intctl;
|
||||||
|
|
||||||
extern unsigned int cpm2_get_irq(struct pt_regs *regs);
|
extern unsigned int cpm2_get_irq(void);
|
||||||
|
|
||||||
extern void cpm2_pic_init(struct device_node*);
|
extern void cpm2_pic_init(struct device_node*);
|
||||||
|
|
||||||
|
|
|
@ -34,7 +34,7 @@ static struct irq_host *i8259_host;
|
||||||
* which is called. It should be noted that polling is broken on some
|
* which is called. It should be noted that polling is broken on some
|
||||||
* IBM and Motorola PReP boxes so we must use the int-ack feature on them.
|
* IBM and Motorola PReP boxes so we must use the int-ack feature on them.
|
||||||
*/
|
*/
|
||||||
unsigned int i8259_irq(struct pt_regs *regs)
|
unsigned int i8259_irq(void)
|
||||||
{
|
{
|
||||||
int irq;
|
int irq;
|
||||||
int lock = 0;
|
int lock = 0;
|
||||||
|
|
|
@ -709,7 +709,7 @@ void ipic_clear_mcp_status(u32 mask)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Return an interrupt vector or NO_IRQ if no interrupt is pending. */
|
/* Return an interrupt vector or NO_IRQ if no interrupt is pending. */
|
||||||
unsigned int ipic_get_irq(struct pt_regs *regs)
|
unsigned int ipic_get_irq(void)
|
||||||
{
|
{
|
||||||
int irq;
|
int irq;
|
||||||
|
|
||||||
|
|
|
@ -1217,7 +1217,7 @@ void mpic_send_ipi(unsigned int ipi_no, unsigned int cpu_mask)
|
||||||
mpic_physmask(cpu_mask & cpus_addr(cpu_online_map)[0]));
|
mpic_physmask(cpu_mask & cpus_addr(cpu_online_map)[0]));
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned int mpic_get_one_irq(struct mpic *mpic, struct pt_regs *regs)
|
unsigned int mpic_get_one_irq(struct mpic *mpic)
|
||||||
{
|
{
|
||||||
u32 src;
|
u32 src;
|
||||||
|
|
||||||
|
@ -1230,13 +1230,13 @@ unsigned int mpic_get_one_irq(struct mpic *mpic, struct pt_regs *regs)
|
||||||
return irq_linear_revmap(mpic->irqhost, src);
|
return irq_linear_revmap(mpic->irqhost, src);
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned int mpic_get_irq(struct pt_regs *regs)
|
unsigned int mpic_get_irq(void)
|
||||||
{
|
{
|
||||||
struct mpic *mpic = mpic_primary;
|
struct mpic *mpic = mpic_primary;
|
||||||
|
|
||||||
BUG_ON(mpic == NULL);
|
BUG_ON(mpic == NULL);
|
||||||
|
|
||||||
return mpic_get_one_irq(mpic, regs);
|
return mpic_get_one_irq(mpic);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -300,7 +300,7 @@ static struct irq_host_ops qe_ic_host_ops = {
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Return an interrupt vector or NO_IRQ if no interrupt is pending. */
|
/* Return an interrupt vector or NO_IRQ if no interrupt is pending. */
|
||||||
unsigned int qe_ic_get_low_irq(struct qe_ic *qe_ic, struct pt_regs *regs)
|
unsigned int qe_ic_get_low_irq(struct qe_ic *qe_ic)
|
||||||
{
|
{
|
||||||
int irq;
|
int irq;
|
||||||
|
|
||||||
|
@ -316,7 +316,7 @@ unsigned int qe_ic_get_low_irq(struct qe_ic *qe_ic, struct pt_regs *regs)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Return an interrupt vector or NO_IRQ if no interrupt is pending. */
|
/* Return an interrupt vector or NO_IRQ if no interrupt is pending. */
|
||||||
unsigned int qe_ic_get_high_irq(struct qe_ic *qe_ic, struct pt_regs *regs)
|
unsigned int qe_ic_get_high_irq(struct qe_ic *qe_ic)
|
||||||
{
|
{
|
||||||
int irq;
|
int irq;
|
||||||
|
|
||||||
|
@ -333,13 +333,12 @@ unsigned int qe_ic_get_high_irq(struct qe_ic *qe_ic, struct pt_regs *regs)
|
||||||
|
|
||||||
/* FIXME: We mask all the QE Low interrupts while handling. We should
|
/* FIXME: We mask all the QE Low interrupts while handling. We should
|
||||||
* let other interrupt come in, but BAD interrupts are generated */
|
* let other interrupt come in, but BAD interrupts are generated */
|
||||||
void fastcall qe_ic_cascade_low(unsigned int irq, struct irq_desc *desc,
|
void fastcall qe_ic_cascade_low(unsigned int irq, struct irq_desc *desc)
|
||||||
struct pt_regs *regs)
|
|
||||||
{
|
{
|
||||||
struct qe_ic *qe_ic = desc->handler_data;
|
struct qe_ic *qe_ic = desc->handler_data;
|
||||||
struct irq_chip *chip = irq_desc[irq].chip;
|
struct irq_chip *chip = irq_desc[irq].chip;
|
||||||
|
|
||||||
unsigned int cascade_irq = qe_ic_get_low_irq(qe_ic, regs);
|
unsigned int cascade_irq = qe_ic_get_low_irq(qe_ic);
|
||||||
|
|
||||||
chip->mask_ack(irq);
|
chip->mask_ack(irq);
|
||||||
if (cascade_irq != NO_IRQ)
|
if (cascade_irq != NO_IRQ)
|
||||||
|
@ -349,13 +348,12 @@ void fastcall qe_ic_cascade_low(unsigned int irq, struct irq_desc *desc,
|
||||||
|
|
||||||
/* FIXME: We mask all the QE High interrupts while handling. We should
|
/* FIXME: We mask all the QE High interrupts while handling. We should
|
||||||
* let other interrupt come in, but BAD interrupts are generated */
|
* let other interrupt come in, but BAD interrupts are generated */
|
||||||
void fastcall qe_ic_cascade_high(unsigned int irq, struct irq_desc *desc,
|
void fastcall qe_ic_cascade_high(unsigned int irq, struct irq_desc *desc)
|
||||||
struct pt_regs *regs)
|
|
||||||
{
|
{
|
||||||
struct qe_ic *qe_ic = desc->handler_data;
|
struct qe_ic *qe_ic = desc->handler_data;
|
||||||
struct irq_chip *chip = irq_desc[irq].chip;
|
struct irq_chip *chip = irq_desc[irq].chip;
|
||||||
|
|
||||||
unsigned int cascade_irq = qe_ic_get_high_irq(qe_ic, regs);
|
unsigned int cascade_irq = qe_ic_get_high_irq(qe_ic);
|
||||||
|
|
||||||
chip->mask_ack(irq);
|
chip->mask_ack(irq);
|
||||||
if (cascade_irq != NO_IRQ)
|
if (cascade_irq != NO_IRQ)
|
||||||
|
|
|
@ -405,8 +405,7 @@ void __init tsi108_pci_int_init(void)
|
||||||
init_pci_source();
|
init_pci_source();
|
||||||
}
|
}
|
||||||
|
|
||||||
void tsi108_irq_cascade(unsigned int irq, struct irq_desc *desc,
|
void tsi108_irq_cascade(unsigned int irq, struct irq_desc *desc)
|
||||||
struct pt_regs *regs)
|
|
||||||
{
|
{
|
||||||
unsigned int cascade_irq = get_pci_source();
|
unsigned int cascade_irq = get_pci_source();
|
||||||
if (cascade_irq != NO_IRQ)
|
if (cascade_irq != NO_IRQ)
|
||||||
|
|
|
@ -211,10 +211,10 @@ mpc8560ads_setup_arch(void)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static irqreturn_t cpm2_cascade(int irq, void *dev_id, struct pt_regs *regs)
|
static irqreturn_t cpm2_cascade(int irq, void *dev_id)
|
||||||
{
|
{
|
||||||
while ((irq = cpm2_get_irq(regs)) >= 0)
|
while ((irq = cpm2_get_irq()) >= 0)
|
||||||
__do_IRQ(irq, regs);
|
__do_IRQ(irq);
|
||||||
return IRQ_HANDLED;
|
return IRQ_HANDLED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -127,10 +127,10 @@ mpc85xx_cds_show_cpuinfo(struct seq_file *m)
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_CPM2
|
#ifdef CONFIG_CPM2
|
||||||
static irqreturn_t cpm2_cascade(int irq, void *dev_id, struct pt_regs *regs)
|
static irqreturn_t cpm2_cascade(int irq, void *dev_id)
|
||||||
{
|
{
|
||||||
while((irq = cpm2_get_irq(regs)) >= 0)
|
while((irq = cpm2_get_irq()) >= 0)
|
||||||
__do_IRQ(irq, regs);
|
__do_IRQ(irq);
|
||||||
return IRQ_HANDLED;
|
return IRQ_HANDLED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -156,10 +156,10 @@ gp3_setup_arch(void)
|
||||||
printk ("bi_immr_base = %8.8lx\n", binfo->bi_immr_base);
|
printk ("bi_immr_base = %8.8lx\n", binfo->bi_immr_base);
|
||||||
}
|
}
|
||||||
|
|
||||||
static irqreturn_t cpm2_cascade(int irq, void *dev_id, struct pt_regs *regs)
|
static irqreturn_t cpm2_cascade(int irq, void *dev_id)
|
||||||
{
|
{
|
||||||
while ((irq = cpm2_get_irq(regs)) >= 0)
|
while ((irq = cpm2_get_irq()) >= 0)
|
||||||
__do_IRQ(irq, regs);
|
__do_IRQ(irq);
|
||||||
|
|
||||||
return IRQ_HANDLED;
|
return IRQ_HANDLED;
|
||||||
}
|
}
|
||||||
|
|
|
@ -181,10 +181,10 @@ tqm85xx_setup_arch(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_MPC8560
|
#ifdef CONFIG_MPC8560
|
||||||
static irqreturn_t cpm2_cascade(int irq, void *dev_id, struct pt_regs *regs)
|
static irqreturn_t cpm2_cascade(int irq, void *dev_id)
|
||||||
{
|
{
|
||||||
while ((irq = cpm2_get_irq(regs)) >= 0)
|
while ((irq = cpm2_get_irq()) >= 0)
|
||||||
__do_IRQ(irq, regs);
|
__do_IRQ(irq);
|
||||||
return IRQ_HANDLED;
|
return IRQ_HANDLED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -28,7 +28,7 @@ static int i8259_pic_irq_offset;
|
||||||
* which is called. It should be noted that polling is broken on some
|
* which is called. It should be noted that polling is broken on some
|
||||||
* IBM and Motorola PReP boxes so we must use the int-ack feature on them.
|
* IBM and Motorola PReP boxes so we must use the int-ack feature on them.
|
||||||
*/
|
*/
|
||||||
int i8259_irq(struct pt_regs *regs)
|
int i8259_irq(void)
|
||||||
{
|
{
|
||||||
int irq;
|
int irq;
|
||||||
|
|
||||||
|
|
|
@ -6,10 +6,10 @@
|
||||||
|
|
||||||
#ifdef CONFIG_PPC_MERGE
|
#ifdef CONFIG_PPC_MERGE
|
||||||
extern void i8259_init(struct device_node *node, unsigned long intack_addr);
|
extern void i8259_init(struct device_node *node, unsigned long intack_addr);
|
||||||
extern unsigned int i8259_irq(struct pt_regs *regs);
|
extern unsigned int i8259_irq(void);
|
||||||
#else
|
#else
|
||||||
extern void i8259_init(unsigned long intack_addr, int offset);
|
extern void i8259_init(unsigned long intack_addr, int offset);
|
||||||
extern int i8259_irq(struct pt_regs *regs);
|
extern int i8259_irq(void);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif /* __KERNEL__ */
|
#endif /* __KERNEL__ */
|
||||||
|
|
|
@ -65,7 +65,7 @@ void ibmebus_unregister_driver(struct ibmebus_driver *drv);
|
||||||
|
|
||||||
int ibmebus_request_irq(struct ibmebus_dev *dev,
|
int ibmebus_request_irq(struct ibmebus_dev *dev,
|
||||||
u32 ist,
|
u32 ist,
|
||||||
irqreturn_t (*handler)(int, void*, struct pt_regs *),
|
irqreturn_t (*handler)(int, void*),
|
||||||
unsigned long irq_flags, const char * devname,
|
unsigned long irq_flags, const char * devname,
|
||||||
void *dev_id);
|
void *dev_id);
|
||||||
void ibmebus_free_irq(struct ibmebus_dev *dev, u32 ist, void *dev_id);
|
void ibmebus_free_irq(struct ibmebus_dev *dev, u32 ist, void *dev_id);
|
||||||
|
|
|
@ -79,12 +79,12 @@ extern void ipic_clear_mcp_status(u32 mask);
|
||||||
|
|
||||||
#ifdef CONFIG_PPC_MERGE
|
#ifdef CONFIG_PPC_MERGE
|
||||||
extern void ipic_init(struct device_node *node, unsigned int flags);
|
extern void ipic_init(struct device_node *node, unsigned int flags);
|
||||||
extern unsigned int ipic_get_irq(struct pt_regs *regs);
|
extern unsigned int ipic_get_irq(void);
|
||||||
#else
|
#else
|
||||||
extern void ipic_init(phys_addr_t phys_addr, unsigned int flags,
|
extern void ipic_init(phys_addr_t phys_addr, unsigned int flags,
|
||||||
unsigned int irq_offset,
|
unsigned int irq_offset,
|
||||||
unsigned char *senses, unsigned int senses_count);
|
unsigned char *senses, unsigned int senses_count);
|
||||||
extern int ipic_get_irq(struct pt_regs *regs);
|
extern int ipic_get_irq(void);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif /* __ASM_IPIC_H__ */
|
#endif /* __ASM_IPIC_H__ */
|
||||||
|
|
|
@ -50,7 +50,7 @@ struct HvLpEvent {
|
||||||
u64 xCorrelationToken; /* Unique value for source/type x10-x17 */
|
u64 xCorrelationToken; /* Unique value for source/type x10-x17 */
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef void (*LpEventHandler)(struct HvLpEvent *, struct pt_regs *);
|
typedef void (*LpEventHandler)(struct HvLpEvent *);
|
||||||
|
|
||||||
/* Register a handler for an event type - returns 0 on success */
|
/* Register a handler for an event type - returns 0 on success */
|
||||||
extern int HvLpEvent_registerHandler(HvLpEvent_Type eventType,
|
extern int HvLpEvent_registerHandler(HvLpEvent_Type eventType,
|
||||||
|
|
|
@ -72,7 +72,7 @@ struct hvlpevent_queue {
|
||||||
extern struct hvlpevent_queue hvlpevent_queue;
|
extern struct hvlpevent_queue hvlpevent_queue;
|
||||||
|
|
||||||
extern int hvlpevent_is_pending(void);
|
extern int hvlpevent_is_pending(void);
|
||||||
extern void process_hvlpevents(struct pt_regs *);
|
extern void process_hvlpevents(void);
|
||||||
extern void setup_hvlpevent_queue(void);
|
extern void setup_hvlpevent_queue(void);
|
||||||
|
|
||||||
#endif /* _ASM_POWERPC_ISERIES_IT_LP_QUEUE_H */
|
#endif /* _ASM_POWERPC_ISERIES_IT_LP_QUEUE_H */
|
||||||
|
|
|
@ -97,7 +97,7 @@ struct machdep_calls {
|
||||||
void (*show_percpuinfo)(struct seq_file *m, int i);
|
void (*show_percpuinfo)(struct seq_file *m, int i);
|
||||||
|
|
||||||
void (*init_IRQ)(void);
|
void (*init_IRQ)(void);
|
||||||
unsigned int (*get_irq)(struct pt_regs *);
|
unsigned int (*get_irq)(void);
|
||||||
#ifdef CONFIG_KEXEC
|
#ifdef CONFIG_KEXEC
|
||||||
void (*kexec_cpu_down)(int crash_shutdown, int secondary);
|
void (*kexec_cpu_down)(int crash_shutdown, int secondary);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -409,9 +409,9 @@ extern void mpic_send_ipi(unsigned int ipi_no, unsigned int cpu_mask);
|
||||||
void smp_mpic_message_pass(int target, int msg);
|
void smp_mpic_message_pass(int target, int msg);
|
||||||
|
|
||||||
/* Fetch interrupt from a given mpic */
|
/* Fetch interrupt from a given mpic */
|
||||||
extern unsigned int mpic_get_one_irq(struct mpic *mpic, struct pt_regs *regs);
|
extern unsigned int mpic_get_one_irq(struct mpic *mpic);
|
||||||
/* This one gets to the primary mpic */
|
/* This one gets to the primary mpic */
|
||||||
extern unsigned int mpic_get_irq(struct pt_regs *regs);
|
extern unsigned int mpic_get_irq(void);
|
||||||
|
|
||||||
/* Set the EPIC clock ratio */
|
/* Set the EPIC clock ratio */
|
||||||
void mpic_set_clk_ratio(struct mpic *mpic, u32 clock_ratio);
|
void mpic_set_clk_ratio(struct mpic *mpic, u32 clock_ratio);
|
||||||
|
|
|
@ -43,7 +43,7 @@ struct machdep_calls {
|
||||||
/* Optional, may be NULL. */
|
/* Optional, may be NULL. */
|
||||||
unsigned int (*irq_canonicalize)(unsigned int irq);
|
unsigned int (*irq_canonicalize)(unsigned int irq);
|
||||||
void (*init_IRQ)(void);
|
void (*init_IRQ)(void);
|
||||||
int (*get_irq)(struct pt_regs *);
|
int (*get_irq)(void);
|
||||||
|
|
||||||
/* A general init function, called by ppc_init in init/main.c.
|
/* A general init function, called by ppc_init in init/main.c.
|
||||||
May be NULL. DEPRECATED ! */
|
May be NULL. DEPRECATED ! */
|
||||||
|
|
Загрузка…
Ссылка в новой задаче