diff options
author | Dan Williams <dan.j.williams@intel.com> | 2007-02-13 11:12:04 -0500 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2007-02-14 10:21:24 -0500 |
commit | 588ef7693574cfbcb228f48d5478c2b39a9b0c9f (patch) | |
tree | 6cc5ac8e7d2544514ab405357f01a91da8471780 /arch/arm/mach-iop13xx/irq.c | |
parent | dfc544c7216b276c1e9c0c753299692df4068c44 (diff) |
[ARM] 4184/1: iop: cp6 access handler (undef_hook)
Enable svc access to cp6 via an undefined instruction hook. Do not enable
access for usr code.
This patch also makes iop13xx select PLAT_IOP, this requires a small change
to drivers/i2c/busses/i2c-iop3xx.c.
Per Lennert Buytenhek's note, the cp6 trap routine is moved to arch/arm/plat-iop
Per Nicolas Pitre's note, the cp_wait is skipped since the latency to
return to the faulting function is longer than cp_wait.
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/mach-iop13xx/irq.c')
-rw-r--r-- | arch/arm/mach-iop13xx/irq.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/arch/arm/mach-iop13xx/irq.c b/arch/arm/mach-iop13xx/irq.c index dbbc07c38b14..162b93214965 100644 --- a/arch/arm/mach-iop13xx/irq.c +++ b/arch/arm/mach-iop13xx/irq.c | |||
@@ -250,11 +250,14 @@ static struct irq_chip iop13xx_irqchip4 = { | |||
250 | .unmask = iop13xx_irq_unmask3, | 250 | .unmask = iop13xx_irq_unmask3, |
251 | }; | 251 | }; |
252 | 252 | ||
253 | extern void iop_init_cp6_handler(void); | ||
254 | |||
253 | void __init iop13xx_init_irq(void) | 255 | void __init iop13xx_init_irq(void) |
254 | { | 256 | { |
255 | unsigned int i; | 257 | unsigned int i; |
256 | 258 | ||
257 | u32 cp_flags = iop13xx_cp6_save(); | 259 | u32 cp_flags = iop13xx_cp6_save(); |
260 | iop_init_cp6_handler(); | ||
258 | 261 | ||
259 | /* disable all interrupts */ | 262 | /* disable all interrupts */ |
260 | write_intctl_0(0); | 263 | write_intctl_0(0); |