.globl lowlevel_init
lowlevel_init:
- mov r12, lr
+ mov r9, lr
/* Disable Watchdog */
ldr r0, =S5P_WATCHDOG_BASE(0x0) @0xEA200000
str r1, [r0, #S5P_MP_6_OFFSET]
str r1, [r0, #S5P_MP_7_OFFSET]
1:
- mov lr, r12
+ mov lr, r9
mov pc, lr
wakeup_reset:
/* turn off L2 cache */
l2cache_disable();
/* invalidate L2 cache also */
- //v7_flush_dcache_all(get_device_type());
+ v7_flush_dcache_all(get_device_type());
#endif
i = 0;
/* mem barrier to sync up things */
return 0;
}
+#ifndef CONFIG_L2_OFF
void l2cache_enable()
{
unsigned long i;
volatile unsigned int j;
-#if 0
/* ES2 onwards we can disable/enable L2 ourselves */
if (get_cpu_rev() >= CPU_3XX_ES20) {
__asm__ __volatile__("mrc p15, 0, %0, c1, c0, 1":"=r"(i));
__asm__ __volatile__("mov r0, %0":"=r"(i));
__asm__ __volatile__("mov r12, %0":"=r"(j));
}
-#endif
-
}
void l2cache_disable()
unsigned long i;
volatile unsigned int j;
-#if 0
/* ES2 onwards we can disable/enable L2 ourselves */
if (get_cpu_rev() >= CPU_3XX_ES20) {
__asm__ __volatile__("mrc p15, 0, %0, c1, c0, 1":"=r"(i));
__asm__ __volatile__("mov r0, %0":"=r"(i));
__asm__ __volatile__("mov r12, %0":"=r"(j));
}
-#endif
}
+#endif
static void cache_flush(void)
{
/*
* disable MMU stuff and caches
*/
- /*
mrc p15, 0, r0, c1, c0, 0
bic r0, r0, #0x00002000 @ clear bits 13 (--V-)
bic r0, r0, #0x00000007 @ clear bits 2:0 (-CAM)
orr r0, r0, #0x00000002 @ set bit 1 (--A-) Align
orr r0, r0, #0x00000800 @ set bit 12 (Z---) BTB
mcr p15, 0, r0, c1, c0, 0
- */
+
/*
* Jump to board specific initialization...
* The Mask ROM will have already initialized
* wake up conditions.
*/
mov ip, lr @ persevere link reg across call
- mov r9, ip
bl lowlevel_init @ go setup pll,mux,memory
- mov ip, r9
mov lr, ip @ restore link
mov pc, lr @ back to my caller
/*
#define CONFIG_ENV_OVERWRITE
#define CONFIG_BAUDRATE 115200
+#define CONFIG_L2_OFF
/***********************************************************
* Command definition