1 /*****************************************************************************/
3 * boot.S -- startup code for H8S platforms.
4 * Copyright (C) 2003, David McCullough <davidm@snapgear.com>
6 /*****************************************************************************/
14 /*****************************************************************************/
19 __vectors: /* redirect vectors via the internal RAM */
23 jmp 0x00ffbe00 + . - __vectors
26 /* put the boot args at a known location */
29 .ascii "console=ttySC2,38400\0"
37 mov.l #0x00FFBFF0, er7
40 * Get console going for early debug
42 mov.l #0xffff41, er3 /* MSTPCRL &= 0xf7 - enable module */
46 sub.l er2, er2 /* SCSCR = 0x00 */
47 mov.b r2l, @0xffff8a:32
48 mov.l #0xffff88, er3 /* SCSMR &= ~0x03 */
52 sub.l er2, er2 /* SCBRR = 0x19 - 38400 */
54 mov.b r2l, @0xffff89:32
66 mov.b #0x30, r2l /* SCSCR = 0x30 */
67 mov.b r2l, @0xffff8a:32
75 mov.b #0xff, r2l /* ASTCR = 0xff */
76 mov.b r2l, @0xfffec1:32
77 mov.b #0x27, r2l /* WTCRAH = 0x27 */
78 mov.b r2l, @0xfffec2:32
79 mov.b #0x77, r2l /* WTCRAL = 0x77 */
80 mov.b r2l, @0xfffec3:32
81 mov.b #0x71, r2l /* WTCRBH = 0x71 */
82 mov.b r2l, @0xfffec4:32
83 mov.b #0x00, r2l /* RDNCR = 0x00 */
84 mov.b r2l, @0xfffec6:32
85 mov.b #0x80, r2l /* CSACRH = 0x80 */
86 mov.b r2l, @0xfffec8:32
87 mov.b #0x80, r2l /* CSACRL = 0x80 */
88 mov.b r2l, @0xfffec9:32
89 mov.b #0xa0, r2l /* BROMCRL = 0xa0 */
90 mov.b r2l, @0xfffecb:32
91 mov.w #0x0d04, r2 /* BCR = 0x0d04 */
92 mov.w r2, @0xfffecc:32
93 mov.b #0x80, r2l /* ABWCR = 0x80 */
94 mov.b r2l, @0xfffec0:32
95 mov.b #0x22, r2l /* WTCRBL = 0x22 */
96 mov.b r2l, @0xfffec5:32
97 mov.b #0xa0, r2l /* BROMCRH = 0xa0 */
98 mov.b r2l, @0xfffeca:32
103 mov.b #0x00, r2l /* P3DR = 0x00 */
104 mov.b r2l, @0xffff62:32
105 mov.b #0x30, r2l /* P3DDR = 0x30 */
106 mov.b r2l, @0xfffe22:32
107 mov.b #0x06, r2l /* P3ODR = 0x06 */
108 mov.b r2l, @0xfffe3c:32
109 // mov.b #0x0d, r2l /* PFCR2 = 0x0D */
110 mov.b #0x01, r2l /* PFCR2 = 0x01 */
111 mov.b r2l, @0xfffe34:32
112 mov.b #0xff, r2l /* PADDR = 0xff */
113 mov.b r2l, @0xfffe29:32
114 mov.b #0x0f, r2l /* PGDDR = 0x0f */
115 mov.b r2l, @0xfffe2f:32
116 mov.b #0x0f, r2l /* PHDDR = 0x0f */
117 mov.b r2l, @0xffff74:32
118 mov.b #0xfe,r2l /* PFDDR = 0xfe */
119 mov.b r2l, @0xfffe2e:32
120 mov.b #0xff,r2l /* PFCR0 = 0xff */
121 mov.b r2l, @0xfffe32:32
126 mov.w #0x9000, r2 /* DRACCR = 0x9000 */
127 mov.w r2, @0xfffed2:32
128 mov.w #0x0188, r2 /* REFCR = 0x0188 */
129 mov.w r2, @0xfffed4:32
130 mov.b #0xff, r2l /* RTCOR = 0xff */
131 mov.b r2l, @0xfffed7:32
132 mov.b #0xff, r2l /* PADDR = 0xff */
133 mov.b r2l, @0xfffe29:32
134 mov.b #0xff, r2l /* PFCR1 = 0xff */
135 mov.b r2l, @0xfffe33:32
136 mov.w #0x85b4,r2 /* DRAMCR = 0x85b4 */
137 mov.w r2, @0xfffed0:32
138 mov.b #0x00, r2l /* SDRAM_CONTRL = 0 */
139 mov.b r2l, @0x400040:32
140 mov.w #0x84b4,r2 /* DRAMCR = 0x84b4 */
141 mov.w r2, @0xfffed0:32
144 * Interrupt controller setup
146 mov.w #0x0000, r2 /* IER = 0x0000 */
147 mov.w r2, @0xffff32:32
148 mov.b #0x04, r2l /* INTCR = 0x04; */
149 mov.b r2l, @0xffff31:32
150 mov.w #0x0555, r2 /* ISCRL = 0x0555 */
151 mov.w r2, @0xfffe1c:32
152 mov.w #0xff3f, r2 /* ITSR = 0xff3f */
153 mov.w r2, @0xfffe16:32
156 * copy kernel from ROM (256K) to RAM, we don't know how big it
157 * is so copy 4Mb - 256K (slow I know)
177 mov.l #boot_args, er5
178 mov.l #0x00bffe00, er6
183 * jump into kernel at start of RAM
193 mov.b r0l, @0xFFFF8B:32
211 .ascii "Hitachi EDOSK2674 Simple Boot Loader\r\n"
212 .ascii "Copyright (C) 2003 David McCullough <davidm@snapgear.com>\r\n\0"
214 /****************************************************************************/