diff options
author | Paul Mundt <lethal@linux-sh.org> | 2011-01-07 12:02:11 +0900 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2011-01-07 12:02:11 +0900 |
commit | c0312b33daa721a92633181fd4fe508484c81a2d (patch) | |
tree | 295b45ade75a7044066bb392eaa619a7f2c52d49 /arch | |
parent | 6ef9f6fd8eb22f4838e9b0006d16936511e3f7f8 (diff) |
ARM: mach-shmobile: update for GIC changes.
This fixes up the SMP support to use the refactored GIC APIs.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arm/mach-shmobile/entry-gic.S | 8 | ||||
-rw-r--r-- | arch/arm/mach-shmobile/include/mach/smp.h | 6 | ||||
-rw-r--r-- | arch/arm/mach-shmobile/intc-sh73a0.c | 4 | ||||
-rw-r--r-- | arch/arm/mach-shmobile/smp-sh73a0.c | 2 |
4 files changed, 9 insertions, 11 deletions
diff --git a/arch/arm/mach-shmobile/entry-gic.S b/arch/arm/mach-shmobile/entry-gic.S index 6e4fa471519..e20239b08c8 100644 --- a/arch/arm/mach-shmobile/entry-gic.S +++ b/arch/arm/mach-shmobile/entry-gic.S @@ -2,19 +2,17 @@ * ARM Interrupt demux handler using GIC * * Copyright (C) 2010 Magnus Damm - * Copyright (C) 2010 Renesas Solutions Corp. + * Copyright (C) 2011 Paul Mundt + * Copyright (C) 2010 - 2011 Renesas Solutions Corp. * * This file is licensed under the terms of the GNU General Public * License version 2. This program is licensed "as is" without any * warranty of any kind, whether express or implied. */ +#include <asm/assembler.h> #include <asm/entry-macro-multi.S> #include <asm/hardware/gic.h> #include <asm/hardware/entry-macro-gic.S> - .macro get_irqnr_preamble, base, tmp - ldr \base, =(0xf0000100) - .endm - arch_irq_handler shmobile_handle_irq_gic diff --git a/arch/arm/mach-shmobile/include/mach/smp.h b/arch/arm/mach-shmobile/include/mach/smp.h index f4a35ff82c6..50db94e927a 100644 --- a/arch/arm/mach-shmobile/include/mach/smp.h +++ b/arch/arm/mach-shmobile/include/mach/smp.h @@ -2,15 +2,15 @@ #define __MACH_SMP_H #include <asm/hardware/gic.h> -#include <asm/smp_mpidr.h> /* * We use IRQ1 as the IPI */ -static inline void smp_cross_call(const struct cpumask *mask) +static inline void smp_cross_call(const struct cpumask *mask, int ipi) { #if defined(CONFIG_ARM_GIC) - gic_raise_softirq(mask, 1); + gic_raise_softirq(mask, ipi); #endif } + #endif diff --git a/arch/arm/mach-shmobile/intc-sh73a0.c b/arch/arm/mach-shmobile/intc-sh73a0.c index 5af2be07c2b..322d8d57cbc 100644 --- a/arch/arm/mach-shmobile/intc-sh73a0.c +++ b/arch/arm/mach-shmobile/intc-sh73a0.c @@ -252,10 +252,10 @@ static irqreturn_t sh73a0_intcs_demux(int irq, void *dev_id) void __init sh73a0_init_irq(void) { + void __iomem *gic_base = __io(0xf0001000); void __iomem *intevtsa = ioremap_nocache(0xffd20100, PAGE_SIZE); - gic_dist_init(0, __io(0xf0001000), 29); - gic_cpu_init(0, __io(0xf0000100)); + gic_init(0, 29, gic_base, gic_base); register_intc_controller(&intcs_desc); diff --git a/arch/arm/mach-shmobile/smp-sh73a0.c b/arch/arm/mach-shmobile/smp-sh73a0.c index 4e71fd416cd..a156d2108df 100644 --- a/arch/arm/mach-shmobile/smp-sh73a0.c +++ b/arch/arm/mach-shmobile/smp-sh73a0.c @@ -64,7 +64,7 @@ unsigned int __init sh73a0_get_core_count(void) void __cpuinit sh73a0_secondary_init(unsigned int cpu) { - gic_cpu_init(0, __io(0xf0000100)); + gic_secondary_init(0); } int __cpuinit sh73a0_boot_secondary(unsigned int cpu) |