18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
28c2ecf20Sopenharmony_ci/*
38c2ecf20Sopenharmony_ci *  linux/arch/h8300/boot/compressed/head.S
48c2ecf20Sopenharmony_ci *
58c2ecf20Sopenharmony_ci *  Copyright (C) 2006 Yoshinori Sato
68c2ecf20Sopenharmony_ci */
78c2ecf20Sopenharmony_ci
88c2ecf20Sopenharmony_ci#include <linux/linkage.h>
98c2ecf20Sopenharmony_ci
108c2ecf20Sopenharmony_ci	.section	.text..startup,"ax"
118c2ecf20Sopenharmony_ci	.global	startup
128c2ecf20Sopenharmony_cistartup:
138c2ecf20Sopenharmony_ci	mov.l	#startup, sp
148c2ecf20Sopenharmony_ci	mov.l	er0, er4
158c2ecf20Sopenharmony_ci	mov.l	#__sbss, er0
168c2ecf20Sopenharmony_ci	mov.l	#__ebss, er1
178c2ecf20Sopenharmony_ci	sub.l	er0, er1
188c2ecf20Sopenharmony_ci	shlr	er1
198c2ecf20Sopenharmony_ci	shlr	er1
208c2ecf20Sopenharmony_ci	sub.l	er2, er2
218c2ecf20Sopenharmony_ci1:
228c2ecf20Sopenharmony_ci	mov.l	er2, @er0
238c2ecf20Sopenharmony_ci	adds	#4, er0
248c2ecf20Sopenharmony_ci	dec.l	#1, er1
258c2ecf20Sopenharmony_ci	bne	1b
268c2ecf20Sopenharmony_ci	jsr	@decompress_kernel
278c2ecf20Sopenharmony_ci	mov.l	er4, er0
288c2ecf20Sopenharmony_ci	jmp	@output
298c2ecf20Sopenharmony_ci
308c2ecf20Sopenharmony_ci	.align	9
318c2ecf20Sopenharmony_cifake_headers_as_bzImage:
328c2ecf20Sopenharmony_ci	.word	0
338c2ecf20Sopenharmony_ci	.ascii	"HdrS"		; header signature
348c2ecf20Sopenharmony_ci	.word	0x0202		; header version number (>= 0x0105)
358c2ecf20Sopenharmony_ci				; or else old loadlin-1.5 will fail)
368c2ecf20Sopenharmony_ci	.word	0		; default_switch
378c2ecf20Sopenharmony_ci	.word	0		; SETUPSEG
388c2ecf20Sopenharmony_ci	.word	0x1000
398c2ecf20Sopenharmony_ci	.word	0		; pointing to kernel version string
408c2ecf20Sopenharmony_ci	.byte	0		; = 0, old one (LILO, Loadlin,
418c2ecf20Sopenharmony_ci				; 0xTV: T=0 for LILO
428c2ecf20Sopenharmony_ci				;       V = version
438c2ecf20Sopenharmony_ci	.byte	1		; Load flags bzImage=1
448c2ecf20Sopenharmony_ci	.word	0x8000		; size to move, when setup is not
458c2ecf20Sopenharmony_ci	.long	0x100000	; 0x100000 = default for big kernel
468c2ecf20Sopenharmony_ci	.long	0		; address of loaded ramdisk image
478c2ecf20Sopenharmony_ci	.long	0		; its size in bytes
488c2ecf20Sopenharmony_ci
498c2ecf20Sopenharmony_ci	.end
50