aboutsummaryrefslogtreecommitdiff
path: root/arch/powerpc/platforms/powermac/pmac_pic.c
diff options
context:
space:
mode:
authorPaul Mackerras <paulus@samba.org>2005-09-28 20:28:14 +1000
committerPaul Mackerras <paulus@samba.org>2005-09-28 20:28:14 +1000
commit20c8c2106305729e7d5e06f6c3d390e965a3dd34 (patch)
tree23ae68e9ed3c7bdb1fccb19a761904a67c671f57 /arch/powerpc/platforms/powermac/pmac_pic.c
parenta3a9e99e36b2897b3e038869e61f363d62434086 (diff)
powerpc: Fixes to get the merged kernel to boot on powermac.
This merges ppc_ksyms.c, puts back the actual do_execve call in sys_execve, makes init_MMU call find_end_of_memory rather than ppc_md.find_end_of_memory (every platform has a device tree with a /memory node now, right?) and fixes some problems with the mpic initialization on newworld powermacs. Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'arch/powerpc/platforms/powermac/pmac_pic.c')
-rw-r--r--arch/powerpc/platforms/powermac/pmac_pic.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/arch/powerpc/platforms/powermac/pmac_pic.c b/arch/powerpc/platforms/powermac/pmac_pic.c
index bf3e1899a4c..a6b1b577e19 100644
--- a/arch/powerpc/platforms/powermac/pmac_pic.c
+++ b/arch/powerpc/platforms/powermac/pmac_pic.c
@@ -424,6 +424,8 @@ void __init pmac_pic_init(void)
printk(KERN_INFO "PowerMac using OpenPIC irq controller at 0x%08x\n",
(unsigned int)irqctrler->addrs[0].address);
+ ppc_md.get_irq = mpic_get_irq;
+ pmac_call_feature(PMAC_FTR_ENABLE_MPIC, irqctrler, 0, 0);
prom_get_irq_senses(senses, 0, 128);
mpic1 = mpic_alloc(irqctrler->addrs[0].address,
@@ -452,7 +454,22 @@ void __init pmac_pic_init(void)
mpic_setup_cascade(irqctrler2->intrs[0].line,
pmac_u3_cascade, mpic2);
}
+#ifdef CONFIG_XMON
+ {
+ struct device_node* pswitch;
+ int nmi_irq;
+
+ pswitch = find_devices("programmer-switch");
+ if (pswitch && pswitch->n_intrs) {
+ nmi_irq = pswitch->intrs[0].line;
+ openpic_init_nmi_irq(nmi_irq);
+ setup_irq(nmi_irq, &xmon_action);
+ }
+ }
+#endif /* CONFIG_XMON */
+ return;
}
+ irqctrler = NULL;
/* Get the level/edge settings, assume if it's not
* a Grand Central nor an OHare, then it's an Heathrow