18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 28c2ecf20Sopenharmony_ci 38c2ecf20Sopenharmony_ci#include <linux/sys.h> 48c2ecf20Sopenharmony_ci#include <linux/init.h> 58c2ecf20Sopenharmony_ci#include <asm/unistd.h> 68c2ecf20Sopenharmony_ci#include <asm/setup.h> 78c2ecf20Sopenharmony_ci#include <asm/segment.h> 88c2ecf20Sopenharmony_ci#include <asm/linkage.h> 98c2ecf20Sopenharmony_ci#include <asm/asm-offsets.h> 108c2ecf20Sopenharmony_ci#include <asm/thread_info.h> 118c2ecf20Sopenharmony_ci#include <asm/errno.h> 128c2ecf20Sopenharmony_ci 138c2ecf20Sopenharmony_ci#if defined(CONFIG_CPU_H8300H) 148c2ecf20Sopenharmony_ci .h8300h 158c2ecf20Sopenharmony_ci#define SYSCR 0xfee012 168c2ecf20Sopenharmony_ci#define IRAMTOP 0xffff20 178c2ecf20Sopenharmony_ci#endif 188c2ecf20Sopenharmony_ci#if defined(CONFIG_CPU_H8S) 198c2ecf20Sopenharmony_ci .h8300s 208c2ecf20Sopenharmony_ci#define INTCR 0xffff31 218c2ecf20Sopenharmony_ci#define IRAMTOP 0xffc000 228c2ecf20Sopenharmony_ci#endif 238c2ecf20Sopenharmony_ci 248c2ecf20Sopenharmony_ci __HEAD 258c2ecf20Sopenharmony_ci .global _start 268c2ecf20Sopenharmony_ci_start: 278c2ecf20Sopenharmony_ci mov.l #IRAMTOP,sp 288c2ecf20Sopenharmony_ci /* .bss clear */ 298c2ecf20Sopenharmony_ci mov.l #_sbss,er5 308c2ecf20Sopenharmony_ci mov.l #_ebss,er4 318c2ecf20Sopenharmony_ci sub.l er5,er4 328c2ecf20Sopenharmony_ci shlr er4 338c2ecf20Sopenharmony_ci shlr er4 348c2ecf20Sopenharmony_ci sub.l er2,er2 358c2ecf20Sopenharmony_ci1: 368c2ecf20Sopenharmony_ci mov.l er2,@er5 378c2ecf20Sopenharmony_ci adds #4,er5 388c2ecf20Sopenharmony_ci dec.l #1,er4 398c2ecf20Sopenharmony_ci bne 1b 408c2ecf20Sopenharmony_ci jsr @h8300_fdt_init 418c2ecf20Sopenharmony_ci 428c2ecf20Sopenharmony_ci /* linux kernel start */ 438c2ecf20Sopenharmony_ci#if defined(CONFIG_CPU_H8300H) 448c2ecf20Sopenharmony_ci ldc #0xd0,ccr /* running kernel */ 458c2ecf20Sopenharmony_ci mov.l #SYSCR,er0 468c2ecf20Sopenharmony_ci bclr #3,@er0 478c2ecf20Sopenharmony_ci#endif 488c2ecf20Sopenharmony_ci#if defined(CONFIG_CPU_H8S) 498c2ecf20Sopenharmony_ci ldc #0x07,exr 508c2ecf20Sopenharmony_ci bclr #4,@INTCR:8 518c2ecf20Sopenharmony_ci bset #5,@INTCR:8 /* Interrupt mode 2 */ 528c2ecf20Sopenharmony_ci ldc #0x90,ccr /* running kernel */ 538c2ecf20Sopenharmony_ci#endif 548c2ecf20Sopenharmony_ci mov.l #init_thread_union,sp 558c2ecf20Sopenharmony_ci add.l #0x2000,sp 568c2ecf20Sopenharmony_ci jsr @start_kernel 578c2ecf20Sopenharmony_ci 588c2ecf20Sopenharmony_ci1: 598c2ecf20Sopenharmony_ci bra 1b 608c2ecf20Sopenharmony_ci 618c2ecf20Sopenharmony_ci .end 62