summaryrefslogtreecommitdiffstats
path: root/arch/arm/boards/a9m2410/lowlevel_init.S
blob: 461b93c3f12438196e7a950ce96f2ae442a85cfa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
/*
 *
 */

#include <config.h>
#include <mach/s3c24x0-iomap.h>

	.section ".text_bare_init.board_init_lowlevel","ax"

.globl board_init_lowlevel
board_init_lowlevel:

	mov r10, lr		/* save the link register */

	bl s3c24x0_disable_wd

	/* skip everything here if we are already running from SDRAM */
	cmp pc, #S3C24X0_SDRAM_BASE
	blo 1f
	cmp pc, #S3C24X0_SDRAM_END
	bhs 1f

	mov pc, r10

/* we are running from NOR or NAND/SRAM memory. Do further initialisation */
1:
	bl s3c24x0_pll_init

	bl s3c24x0_sdram_init

#ifdef CONFIG_S3C24XX_NAND_BOOT
	mov lr, r10		/* restore the link register */
/* up to here we are running from the internal SRAM area */
	b s3c24x0_nand_boot	/* does return directly to our caller into SDRAM */
#else
	mov pc, r10
#endif