aboutsummaryrefslogtreecommitdiffstats
path: root/arch/m68k/platform/68328/head-rom.S
diff options
context:
space:
mode:
Diffstat (limited to 'arch/m68k/platform/68328/head-rom.S')
-rw-r--r--arch/m68k/platform/68328/head-rom.S110
1 files changed, 110 insertions, 0 deletions
diff --git a/arch/m68k/platform/68328/head-rom.S b/arch/m68k/platform/68328/head-rom.S
new file mode 100644
index 000000000000..6ec77d3ea0b3
--- /dev/null
+++ b/arch/m68k/platform/68328/head-rom.S
@@ -0,0 +1,110 @@
1
2 .global _start
3 .global _stext
4
5 .global _rambase
6 .global _ramvec
7 .global _ramstart
8 .global _ramend
9
10#ifdef CONFIG_INIT_LCD
11 .global splash_bits
12#endif
13
14 .data
15
16/*
17 * Set up the usable of RAM stuff. Size of RAM is determined then
18 * an initial stack set up at the end.
19 */
20.align 4
21_ramvec:
22.long 0
23_rambase:
24.long 0
25_ramstart:
26.long 0
27_ramend:
28.long 0
29
30#define RAMEND (CONFIG_RAMBASE + CONFIG_RAMSIZE)
31
32#ifdef CONFIG_INIT_LCD
33splash_bits:
34#include "bootlogo.rh"
35#endif
36
37 .text
38_start:
39_stext: movew #0x2700,%sr
40#ifdef CONFIG_INIT_LCD
41 movel #splash_bits, 0xfffffA00 /* LSSA */
42 moveb #0x28, 0xfffffA05 /* LVPW */
43 movew #0x280, 0xFFFFFa08 /* LXMAX */
44 movew #0x1df, 0xFFFFFa0a /* LYMAX */
45 moveb #0, 0xfffffa29 /* LBAR */
46 moveb #0, 0xfffffa25 /* LPXCD */
47 moveb #0x08, 0xFFFFFa20 /* LPICF */
48 moveb #0x01, 0xFFFFFA21 /* -ve pol */
49 moveb #0x81, 0xfffffA27 /* LCKCON */
50 movew #0xff00, 0xfffff412 /* LCD pins */
51#endif
52 moveal #RAMEND-CONFIG_MEMORY_RESERVE*0x100000 - 0x10, %sp
53 movew #32767, %d0 /* PLL settle wait loop */
541: subq #1, %d0
55 bne 1b
56
57 /* Copy data segment from ROM to RAM */
58 moveal #_etext, %a0
59 moveal #_sdata, %a1
60 moveal #_edata, %a2
61
62 /* Copy %a0 to %a1 until %a1 == %a2 */
631: movel %a0@+, %a1@+
64 cmpal %a1, %a2
65 bhi 1b
66
67 moveal #_sbss, %a0
68 moveal #_ebss, %a1
69 /* Copy 0 to %a0 until %a0 == %a1 */
70
711:
72 clrl %a0@+
73 cmpal %a0, %a1
74 bhi 1b
75
76 movel #_sdata, %d0
77 movel %d0, _rambase
78 movel #_ebss, %d0
79 movel %d0, _ramstart
80 movel #RAMEND-CONFIG_MEMORY_RESERVE*0x100000, %d0
81 movel %d0, _ramend
82 movel #CONFIG_VECTORBASE, %d0
83 movel %d0, _ramvec
84
85/*
86 * load the current task pointer and stack
87 */
88 lea init_thread_union, %a0
89 lea 0x2000(%a0), %sp
90
911: jsr start_kernel
92 bra 1b
93_exit:
94
95 jmp _exit
96
97
98putc:
99 moveb %d7,0xfffff907
1001:
101 movew 0xfffff906, %d7
102 andw #0x2000, %d7
103 beq 1b
104 rts
105
106 .data
107env:
108 .long 0
109 .text
110