|  | /* SPDX-License-Identifier: GPL-2.0 */ | 
|  |  | 
|  | #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 |