MINI2440: Bulk Add of the mini2440 board support
[u-boot-openmoko/mini2440.git] / board / mini2440 / lowlevel_foo.S
blob13205bb59d2d1beda4556c3e4c12becaae4816b9
2 _start:
3         b       reset
4 undefvec:
5         b       undefvec
6 swivec:
7         b       swivec
8 pabtvec:
9         b       pabtvec
10 dabtvec:
11         b       dabtvec
12 rsvdvec:
13         b       rsvdvec
14 irqvec:
15         b       irqvec
16 fiqvec:
17         b       fiqvec
19 reset:
20         /*
21          * set the cpu to SVC32 mode
22          */
23         mrs     r0,cpsr
24         bic     r0,r0,#0x1f
25         orr     r0,r0,#0xd3
26         msr     cpsr,r0
28 /* turn off the watchdog */
29 #define pWTCON          0x53000000
30 #define INTMSK          0x4A000008      /* Interupt-Controller base addresses */
31 #define INTSUBMSK       0x4A00001C
32 #define CLKDIVN 0x4C000014      /* clock divisor register */
34         ldr     r0, =pWTCON
35         mov     r1, #0x0
36         str     r1, [r0]
38         mov     r1, #0xffffffff
39         ldr     r0, =INTMSK
40         str     r1, [r0]
41         ldr     r1, =0x3ff
42         ldr     r0, =INTSUBMSK
43         str     r1, [r0]
45         /* FCLK:HCLK:PCLK = 1:2:4 */
46         /* default FCLK is 120 MHz ! */
47         ldr     r0, =CLKDIVN
48         mov     r1, #3
49         str     r1, [r0]
51         bl      cpu_init_crit
52         ldr     r0,=TEXT_BASE
53         mov     pc, r0
55 cpu_init_crit:
56         /*
57          * flush v4 I/D caches
58          */
59         mov     r0, #0
60         mcr     p15, 0, r0, c7, c7, 0   /* flush v3/v4 cache */
61         mcr     p15, 0, r0, c8, c7, 0   /* flush v4 TLB */
63         /*
64          * disable MMU stuff and caches
65          */
66         mrc     p15, 0, r0, c1, c0, 0
67         bic     r0, r0, #0x00002300     @ clear bits 13, 9:8 (--V- --RS)
68         bic     r0, r0, #0x00000087     @ clear bits 7, 2:0 (B--- -CAM)
69         orr     r0, r0, #0x00000002     @ set bit 2 (A) Align
70         orr     r0, r0, #0x00001000     @ set bit 12 (I) I-Cache
71         mcr     p15, 0, r0, c1, c0, 0
73         /*
74          * before relocating, we have to setup RAM timing
75          * because memory timing is board-dependend, you will
76          * find a lowlevel_init.S in your board directory.
77          */
78         mov     ip, lr
79         bl      lowlevel_init
80         mov     lr, ip
81         mov     pc, lr