]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blame - arch/m68knommu/platform/68328/head-ram.S
Linux-2.6.12-rc2
[mirror_ubuntu-artful-kernel.git] / arch / m68knommu / platform / 68328 / head-ram.S
CommitLineData
1da177e4
LT
1#include <linux/config.h>
2
3 .global __main
4 .global __ram_start
5 .global __ram_end
6 .global __rom_start
7 .global __rom_end
8
9 .global _rambase
10 .global _ramstart
11
12 .global splash_bits
13 .global _start
14 .global _stext
15
16#define DEBUG
17#define ROM_OFFSET 0x10C00000
18#define STACK_GAURD 0x10
19
20 .text
21
22_start:
23_stext:
24 movew #0x2700, %sr /* Exceptions off! */
25
26#if 0
27 /* Init chip registers. uCsimm specific */
28 moveb #0x00, 0xfffffb0b /* Watchdog off */
29 moveb #0x10, 0xfffff000 /* SCR */
30
31 movew #0x2400, 0xfffff200 /* PLLCR */
32 movew #0x0123, 0xfffff202 /* PLLFSR */
33
34 moveb #0x00, 0xfffff40b /* enable chip select */
35 moveb #0x00, 0xfffff423 /* enable /DWE */
36 moveb #0x08, 0xfffffd0d /* disable hardmap */
37 moveb #0x07, 0xfffffd0e /* level 7 interrupt clear */
38
39 movew #0x8600, 0xfffff100 /* FLASH at 0x10c00000 */
40 movew #0x018b, 0xfffff110 /* 2Meg, enable, 0ws */
41
42 movew #0x8f00, 0xfffffc00 /* DRAM configuration */
43 movew #0x9667, 0xfffffc02 /* DRAM control */
44 movew #0x0000, 0xfffff106 /* DRAM at 0x00000000 */
45 movew #0x068f, 0xfffff116 /* 8Meg, enable, 0ws */
46
47 moveb #0x40, 0xfffff300 /* IVR */
48 movel #0x007FFFFF, %d0 /* IMR */
49 movel %d0, 0xfffff304
50
51 moveb 0xfffff42b, %d0
52 andb #0xe0, %d0
53 moveb %d0, 0xfffff42b
54
55 moveb #0x08, 0xfffff907 /* Ignore CTS */
56 movew #0x010b, 0xfffff902 /* BAUD to 9600 */
57 movew #0xe100, 0xfffff900 /* enable */
58#endif
59
60 movew #16384, %d0 /* PLL settle wait loop */
61L0:
62 subw #1, %d0
63 bne L0
64#ifdef DEBUG
65 moveq #70, %d7 /* 'F' */
66 moveb %d7,0xfffff907 /* No absolute addresses */
67pclp1:
68 movew 0xfffff906, %d7
69 andw #0x2000, %d7
70 beq pclp1
71#endif /* DEBUG */
72
73#ifdef CONFIG_RELOCATE
74 /* Copy me to RAM */
75 moveal #__rom_start, %a0
76 moveal #__ram_start, %a1
77 moveal #_edata, %a2
78
79 /* Copy %a0 to %a1 until %a1 == %a2 */
80LD1:
81 movel %a0@+, %d0
82 movel %d0, %a1@+
83 cmpal %a1, %a2
84 bhi LD1
85
86#ifdef DEBUG
87 moveq #74, %d7 /* 'J' */
88 moveb %d7,0xfffff907 /* No absolute addresses */
89pclp2:
90 movew 0xfffff906, %d7
91 andw #0x2000, %d7
92 beq pclp2
93#endif /* DEBUG */
94 /* jump into the RAM copy */
95 jmp ram_jump
96ram_jump:
97
98#endif /* CONFIG_RELOCATE */
99
100#ifdef DEBUG
101 moveq #82, %d7 /* 'R' */
102 moveb %d7,0xfffff907 /* No absolute addresses */
103pclp3:
104 movew 0xfffff906, %d7
105 andw #0x2000, %d7
106 beq pclp3
107#endif /* DEBUG */
108 moveal #0x007ffff0, %ssp
109 moveal #_sbss, %a0
110 moveal #_ebss, %a1
111
112 /* Copy 0 to %a0 until %a0 >= %a1 */
113L1:
114 movel #0, %a0@+
115 cmpal %a0, %a1
116 bhi L1
117
118#ifdef DEBUG
119 moveq #67, %d7 /* 'C' */
120 jsr putc
121#endif /* DEBUG */
122
123 pea 0
124 pea env
125 pea %sp@(4)
126 pea 0
127
128#ifdef DEBUG
129 moveq #70, %d7 /* 'F' */
130 jsr putc
131#endif /* DEBUG */
132
133lp:
134 jsr start_kernel
135 jmp lp
136_exit:
137
138 jmp _exit
139
140__main:
141 /* nothing */
142 rts
143
144#ifdef DEBUG
145putc:
146 moveb %d7,0xfffff907
147pclp:
148 movew 0xfffff906, %d7
149 andw #0x2000, %d7
150 beq pclp
151 rts
152#endif /* DEBUG */
153
154 .data
155
156/*
157 * Set up the usable of RAM stuff. Size of RAM is determined then
158 * an initial stack set up at the end.
159 */
160.align 4
161_ramvec:
162.long 0
163_rambase:
164.long 0
165_ramstart:
166.long 0
167_ramend:
168.long 0
169
170env:
171 .long 0