#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.
 
 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);
 
 
                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 */
 #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);
        }
 }
 
 
  */
 #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