1
2
3 #include <linux/sys.h>
4 #include <linux/init.h>
5 #include <asm/unistd.h>
6 #include <asm/setup.h>
7 #include <asm/segment.h>
8 #include <asm/linkage.h>
9 #include <asm/asm-offsets.h>
10 #include <asm/thread_info.h>
11 #include <asm/errno.h>
12
13 #if defined(CONFIG_CPU_H8300H)
14 .h8300h
15 #define SYSCR 0xfee012
16 #define IRAMTOP 0xffff20
17 #endif
18 #if defined(CONFIG_CPU_H8S)
19 .h8300s
20 #define INTCR 0xffff31
21 #define IRAMTOP 0xffc000
22 #endif
23
24 __HEAD
25 .global _start
26 _start:
27 mov.l #IRAMTOP,sp
28
29 mov.l #_sbss,er5
30 mov.l #_ebss,er4
31 sub.l er5,er4
32 shlr er4
33 shlr er4
34 sub.l er2,er2
35 1:
36 mov.l er2,@er5
37 adds #4,er5
38 dec.l #1,er4
39 bne 1b
40 jsr @h8300_fdt_init
41
42
43 #if defined(CONFIG_CPU_H8300H)
44 ldc #0xd0,ccr
45 mov.l #SYSCR,er0
46 bclr #3,@er0
47 #endif
48 #if defined(CONFIG_CPU_H8S)
49 ldc #0x07,exr
50 bclr #4,@INTCR:8
51 bset #5,@INTCR:8
52 ldc #0x90,ccr
53 #endif
54 mov.l #init_thread_union,sp
55 add.l #0x2000,sp
56 jsr @start_kernel
57
58 1:
59 bra 1b
60
61 .end