12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- #include <linux/sys.h>
- #include <linux/init.h>
- #include <asm/unistd.h>
- #include <asm/setup.h>
- #include <asm/segment.h>
- #include <asm/linkage.h>
- #include <asm/asm-offsets.h>
- #include <asm/thread_info.h>
- #include <asm/errno.h>
- #if defined(CONFIG_CPU_H8300H)
- .h8300h
- #define SYSCR 0xfee012
- #define IRAMTOP 0xffff20
- #endif
- #if defined(CONFIG_CPU_H8S)
- .h8300s
- #define INTCR 0xffff31
- #define IRAMTOP 0xffc000
- #endif
- __HEAD
- .global _start
- _start:
- mov.l #IRAMTOP,sp
- /* .bss clear */
- mov.l #_sbss,er5
- mov.l #_ebss,er4
- sub.l er5,er4
- shlr er4
- shlr er4
- sub.l er2,er2
- 1:
- mov.l er2,@er5
- adds #4,er5
- dec.l #1,er4
- bne 1b
- jsr @h8300_fdt_init
- /* linux kernel start */
- #if defined(CONFIG_CPU_H8300H)
- ldc #0xd0,ccr /* running kernel */
- mov.l #SYSCR,er0
- bclr #3,@er0
- #endif
- #if defined(CONFIG_CPU_H8S)
- ldc #0x07,exr
- bclr #4,@INTCR:8
- bset #5,@INTCR:8 /* Interrupt mode 2 */
- ldc #0x90,ccr /* running kernel */
- #endif
- mov.l #init_thread_union,sp
- add.l #0x2000,sp
- jsr @start_kernel
- 1:
- bra 1b
- .end
|