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