1*4882a593Smuzhiyun/* SPDX-License-Identifier: GPL-2.0 */ 2*4882a593Smuzhiyun/* 3*4882a593Smuzhiyun * linux/arch/h8300/boot/compressed/head.S 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * Copyright (C) 2006 Yoshinori Sato 6*4882a593Smuzhiyun */ 7*4882a593Smuzhiyun 8*4882a593Smuzhiyun#include <linux/linkage.h> 9*4882a593Smuzhiyun 10*4882a593Smuzhiyun .section .text..startup,"ax" 11*4882a593Smuzhiyun .global startup 12*4882a593Smuzhiyunstartup: 13*4882a593Smuzhiyun mov.l #startup, sp 14*4882a593Smuzhiyun mov.l er0, er4 15*4882a593Smuzhiyun mov.l #__sbss, er0 16*4882a593Smuzhiyun mov.l #__ebss, er1 17*4882a593Smuzhiyun sub.l er0, er1 18*4882a593Smuzhiyun shlr er1 19*4882a593Smuzhiyun shlr er1 20*4882a593Smuzhiyun sub.l er2, er2 21*4882a593Smuzhiyun1: 22*4882a593Smuzhiyun mov.l er2, @er0 23*4882a593Smuzhiyun adds #4, er0 24*4882a593Smuzhiyun dec.l #1, er1 25*4882a593Smuzhiyun bne 1b 26*4882a593Smuzhiyun jsr @decompress_kernel 27*4882a593Smuzhiyun mov.l er4, er0 28*4882a593Smuzhiyun jmp @output 29*4882a593Smuzhiyun 30*4882a593Smuzhiyun .align 9 31*4882a593Smuzhiyunfake_headers_as_bzImage: 32*4882a593Smuzhiyun .word 0 33*4882a593Smuzhiyun .ascii "HdrS" ; header signature 34*4882a593Smuzhiyun .word 0x0202 ; header version number (>= 0x0105) 35*4882a593Smuzhiyun ; or else old loadlin-1.5 will fail) 36*4882a593Smuzhiyun .word 0 ; default_switch 37*4882a593Smuzhiyun .word 0 ; SETUPSEG 38*4882a593Smuzhiyun .word 0x1000 39*4882a593Smuzhiyun .word 0 ; pointing to kernel version string 40*4882a593Smuzhiyun .byte 0 ; = 0, old one (LILO, Loadlin, 41*4882a593Smuzhiyun ; 0xTV: T=0 for LILO 42*4882a593Smuzhiyun ; V = version 43*4882a593Smuzhiyun .byte 1 ; Load flags bzImage=1 44*4882a593Smuzhiyun .word 0x8000 ; size to move, when setup is not 45*4882a593Smuzhiyun .long 0x100000 ; 0x100000 = default for big kernel 46*4882a593Smuzhiyun .long 0 ; address of loaded ramdisk image 47*4882a593Smuzhiyun .long 0 ; its size in bytes 48*4882a593Smuzhiyun 49*4882a593Smuzhiyun .end 50