1/*
2 * Copyright (C) 2007,2008 Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
3 * Copyright (C) 2008 Renesas Solutions Corp.
4
5 * SPDX-License-Identifier:	GPL-2.0+
6 */
7
8#include <asm-offsets.h>
9#include <config.h>
10
11	.text
12	.align	2
13
14	.global	_start
15_sh_start:
16	.long 0x00000010	/* Ppower ON reset PC*/
17	.long 0x00000000
18	.long 0x00000010	/* Manual reset PC */
19	.long 0x00000000
20_init:
21	mov.l	._lowlevel_init, r0
22100:	bsrf	r0
23	nop
24	bsr	1f
25	nop
261:	sts	pr, r5
27	mov.l	._reloc_dst, r4
28	add	#(_sh_start-1b), r5
29	mov.l	._reloc_dst_end, r6
30
312:	mov.l	@r5+, r1
32	mov.l	r1, @r4
33	add	#4, r4
34	cmp/hs	r6, r4
35	bf	2b
36
37	mov.l	._bss_start, r4
38	mov.l	._bss_end, r5
39	mov	#0, r1
40
413:	mov.l	r1, @r4			/* bss clear */
42	add	#4, r4
43	cmp/hs	r5, r4
44	bf	3b
45
46	mov.l	._gd_init, r13		/* global data */
47	mov.l	._stack_init, r15	/* stack */
48
49	mov.l	._sh_generic_init, r0
50	jsr	@r0
51	nop
52
53loop:
54	bra	loop
55
56	.align	2
57
58._lowlevel_init:	.long	(lowlevel_init - (100b + 4))
59._reloc_dst:		.long	reloc_dst
60._reloc_dst_end:	.long	reloc_dst_end
61._bss_start:		.long	bss_start
62._bss_end:		.long	bss_end
63._gd_init:		.long	(_sh_start - GENERATED_GBL_DATA_SIZE)
64._stack_init:	.long	(_sh_start - GENERATED_GBL_DATA_SIZE - CONFIG_SYS_MALLOC_LEN - 16)
65._sh_generic_init:	.long	sh_generic_init
66