summaryrefslogtreecommitdiffstats
path: root/arch/arm
diff options
context:
space:
mode:
authorsascha <sascha@nomad.localdomain>2007-10-16 11:39:15 +0200
committersascha <sascha@nomad.localdomain>2007-10-16 11:39:15 +0200
commit0d26cc5df17f475f3692e1f04b0aa08415ffed46 (patch)
treeb90a37c534b0e8f1216366d0c4c5801c82d44b74 /arch/arm
parenta99e03c847c96f08dcd8da6ccc0e3d3c760d2e1b (diff)
downloadbarebox-0d26cc5df17f475f3692e1f04b0aa08415ffed46.tar.gz
barebox-0d26cc5df17f475f3692e1f04b0aa08415ffed46.tar.xz
remove s3c24x0 specific stuff from arm start file, add
arch_init_lowlevel for this stuff instead.
Diffstat (limited to 'arch/arm')
-rw-r--r--arch/arm/cpu/start-arm920t.S95
1 files changed, 20 insertions, 75 deletions
diff --git a/arch/arm/cpu/start-arm920t.S b/arch/arm/cpu/start-arm920t.S
index 3fd4528a8f..8935f9ede2 100644
--- a/arch/arm/cpu/start-arm920t.S
+++ b/arch/arm/cpu/start-arm920t.S
@@ -119,48 +119,35 @@ reset:
orr r0,r0,#0xd3
msr cpsr,r0
-/* turn off the watchdog */
-#if defined(CONFIG_S3C2400)
-# define pWTCON 0x15300000
-# define INTMSK 0x14400008 /* Interupt-Controller base addresses */
-# define CLKDIVN 0x14800014 /* clock divisor register */
-#elif defined(CONFIG_S3C2410)
-# define pWTCON 0x53000000
-# define INTMSK 0x4A000008 /* Interupt-Controller base addresses */
-# define INTSUBMSK 0x4A00001C
-# define CLKDIVN 0x4C000014 /* clock divisor register */
+#ifdef ARCH_HAS_INIT_LOWLEVEL
+ /* Samsung S3C24x0 needs some stuff here */
+ bl arch_init_lowlevel
#endif
-#if defined(CONFIG_S3C2400) || defined(CONFIG_S3C2410)
- ldr r0, =pWTCON
- mov r1, #0x0
- str r1, [r0]
+ /*
+ * flush v4 I/D caches
+ */
+ mov r0, #0
+ mcr p15, 0, r0, c7, c7, 0 /* flush v3/v4 cache */
+ mcr p15, 0, r0, c8, c7, 0 /* flush v4 TLB */
/*
- * mask all IRQs by setting all bits in the INTMR - default
+ * disable MMU stuff and caches
*/
- mov r1, #0xffffffff
- ldr r0, =INTMSK
- str r1, [r0]
-# if defined(CONFIG_S3C2410)
- ldr r1, =0x3ff
- ldr r0, =INTSUBMSK
- str r1, [r0]
-# endif
-
- /* FCLK:HCLK:PCLK = 1:2:4 */
- /* default FCLK is 120 MHz ! */
- ldr r0, =CLKDIVN
- mov r1, #3
- str r1, [r0]
-#endif /* CONFIG_S3C2400 || CONFIG_S3C2410 */
+ mrc p15, 0, r0, c1, c0, 0
+ bic r0, r0, #0x00002300 /* clear bits 13, 9:8 (--V- --RS) */
+ bic r0, r0, #0x00000087 /* clear bits 7, 2:0 (B--- -CAM) */
+ orr r0, r0, #0x00000002 /* set bit 2 (A) Align */
+ orr r0, r0, #0x00001000 /* set bit 12 (I) I-Cache */
+ mcr p15, 0, r0, c1, c0, 0
/*
- * we do sys-critical inits only at reboot,
- * not when booting from ram!
+ * before relocating, we have to setup RAM timing
+ * because memory timing is board-dependend, you will
+ * find a lowlevel_init.S in your board directory.
*/
#ifndef CONFIG_SKIP_LOWLEVEL_INIT
- bl cpu_init_crit
+ bl board_init_lowlevel
#endif
#ifndef CONFIG_SKIP_RELOCATE_UBOOT
@@ -204,48 +191,6 @@ clbss_l:str r2, [r0] /* clear loop... */
_start_armboot: .word start_uboot
-
-/*
- *************************************************************************
- *
- * CPU_init_critical registers
- *
- * setup important registers
- * setup memory timing
- *
- *************************************************************************
- */
-
-#ifndef CONFIG_SKIP_LOWLEVEL_INIT
-cpu_init_crit:
- /*
- * flush v4 I/D caches
- */
- mov r0, #0
- mcr p15, 0, r0, c7, c7, 0 /* flush v3/v4 cache */
- mcr p15, 0, r0, c8, c7, 0 /* flush v4 TLB */
-
- /*
- * disable MMU stuff and caches
- */
- mrc p15, 0, r0, c1, c0, 0
- bic r0, r0, #0x00002300 /* clear bits 13, 9:8 (--V- --RS) */
- bic r0, r0, #0x00000087 /* clear bits 7, 2:0 (B--- -CAM) */
- orr r0, r0, #0x00000002 /* set bit 2 (A) Align */
- orr r0, r0, #0x00001000 /* set bit 12 (I) I-Cache */
- mcr p15, 0, r0, c1, c0, 0
-
- /*
- * before relocating, we have to setup RAM timing
- * because memory timing is board-dependend, you will
- * find a lowlevel_init.S in your board directory.
- */
- mov ip, lr
- bl lowlevel_init
- mov lr, ip
- mov pc, lr
-#endif /* CONFIG_SKIP_LOWLEVEL_INIT */
-
/*
*************************************************************************
*