#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 |