mirror of https://gitee.com/openkylin/linux.git
[ARM] 4819/1: RealView: Fix entry-macro.S to work with multiple platforms
This patch modifies the get_irqnr_preamble macro to work with multiple platforms at run-time by reading the address of the GIC controller from the gic_cpu_base_addr variable. This variable is defined in core.c and intialised in realview_eb.c (gic_init_irq). Signed-off-by: Catalin Marinas <catalin.marinas@arm.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
This commit is contained in:
parent
7dd19e755d
commit
c4057f5260
|
@ -50,6 +50,9 @@
|
|||
|
||||
#define REALVIEW_REFCOUNTER (__io_address(REALVIEW_SYS_BASE) + REALVIEW_SYS_24MHz_OFFSET)
|
||||
|
||||
/* used by entry-macro.S */
|
||||
void __iomem *gic_cpu_base_addr;
|
||||
|
||||
/*
|
||||
* This is the RealView sched_clock implementation. This has
|
||||
* a resolution of 41.7ns, and a maximum value of about 179s.
|
||||
|
|
|
@ -52,6 +52,7 @@ extern struct mmc_platform_data realview_mmc0_plat_data;
|
|||
extern struct mmc_platform_data realview_mmc1_plat_data;
|
||||
extern struct clk realview_clcd_clk;
|
||||
extern struct clcd_board clcd_plat_data;
|
||||
extern void __iomem *gic_cpu_base_addr;
|
||||
|
||||
extern void realview_leds_event(led_event_t ledevt);
|
||||
|
||||
|
|
|
@ -256,8 +256,9 @@ static void __init gic_init_irq(void)
|
|||
writel(0x00000000, __io_address(REALVIEW_SYS_LOCK));
|
||||
|
||||
/* core tile GIC, primary */
|
||||
gic_cpu_base_addr = __io_address(REALVIEW_EB11MP_GIC_CPU_BASE);
|
||||
gic_dist_init(0, __io_address(REALVIEW_EB11MP_GIC_DIST_BASE), 29);
|
||||
gic_cpu_init(0, __io_address(REALVIEW_EB11MP_GIC_CPU_BASE));
|
||||
gic_cpu_init(0, gic_cpu_base_addr);
|
||||
|
||||
#ifndef CONFIG_REALVIEW_MPCORE_REVB
|
||||
/* board GIC, secondary */
|
||||
|
@ -267,8 +268,9 @@ static void __init gic_init_irq(void)
|
|||
#endif
|
||||
} else {
|
||||
/* board GIC, primary */
|
||||
gic_cpu_base_addr = __io_address(REALVIEW_GIC_CPU_BASE);
|
||||
gic_dist_init(0, __io_address(REALVIEW_GIC_DIST_BASE), 29);
|
||||
gic_cpu_init(0, __io_address(REALVIEW_GIC_CPU_BASE));
|
||||
gic_cpu_init(0, gic_cpu_base_addr);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -9,17 +9,13 @@
|
|||
*/
|
||||
#include <asm/hardware.h>
|
||||
#include <asm/hardware/gic.h>
|
||||
#include <asm/arch/board-eb.h>
|
||||
|
||||
.macro disable_fiq
|
||||
.endm
|
||||
|
||||
.macro get_irqnr_preamble, base, tmp
|
||||
#ifdef CONFIG_REALVIEW_MPCORE
|
||||
ldr \base, =IO_ADDRESS(REALVIEW_EB11MP_GIC_CPU_BASE)
|
||||
#else
|
||||
ldr \base, =IO_ADDRESS(REALVIEW_GIC_CPU_BASE)
|
||||
#endif
|
||||
ldr \base, =gic_cpu_base_addr
|
||||
ldr \base, [\base]
|
||||
.endm
|
||||
|
||||
.macro arch_ret_to_user, tmp1, tmp2
|
||||
|
|
Loading…
Reference in New Issue