Linux Audio

Check our new training course

Loading...
v5.9
 1/* SPDX-License-Identifier: GPL-2.0 */
 2/*
 3 *  linux/arch/sh/boot/romimage/head.S
 4 *
 5 * Board specific setup code, executed before zImage loader
 6 */
 7
 8.text
 9	#include <asm/page.h>
10
11	.global	romstart
12romstart:
13	/* include board specific setup code */
14#include <mach/romimage.h>
15
16#ifdef CONFIG_ROMIMAGE_MMCIF
17	/* load the romImage to above the empty zero page */
18	mov.l	empty_zero_page_dst, r4
19	mov.l	empty_zero_page_dst_adj, r5
20	add	r5, r4
21	mov.l	bytes_to_load, r5
22	mov.l	loader_function, r7
23	jsr	@r7
24	 mov	r4, r15
25
26	mov.l	empty_zero_page_dst, r4
27	mov.l	empty_zero_page_dst_adj, r5
28	add	r5, r4
29	mov.l	loaded_code_offs, r5
30	add	r5, r4
31	jmp	@r4
32	 nop
33
34	.balign 4
35empty_zero_page_dst_adj:
36	.long	PAGE_SIZE
37bytes_to_load:
38	.long	end_data - romstart
39loader_function:
40	.long	mmcif_loader
41loaded_code_offs:
42	.long	loaded_code - romstart
43loaded_code:
44#endif /* CONFIG_ROMIMAGE_MMCIF */
45
46	/* copy the empty_zero_page contents to where vmlinux expects it */
47	mova	extra_data_pos, r0
48	mov.l	extra_data_size, r1
49	add	r1, r0
50	mov.l	empty_zero_page_dst, r1
51	mov	#(PAGE_SHIFT - 4), r4
52	mov	#1, r3
53	shld	r4, r3 /* r3 = PAGE_SIZE / 16 */
54
551:
56	mov.l	@r0, r4
57	mov.l	@(4, r0), r5
58	mov.l	@(8, r0), r6
59	mov.l	@(12, r0), r7
60	add	#16,r0
61	mov.l	r4, @r1
62	mov.l	r5, @(4, r1)
63	mov.l	r6, @(8, r1)
64	mov.l	r7, @(12, r1)
65	dt	r3
66	add	#16,r1
67	bf	1b
68
69	/* jump to the zImage entry point located after the zero page data */
70	mov	#PAGE_SHIFT, r4
71	mov	#1, r1
72	shld	r4, r1
73	mova	extra_data_pos, r0
74	add	r1, r0
75	mov.l	extra_data_size, r1
76	add	r1, r0
77	jmp	@r0
78	 nop
79
80	.align 2
81empty_zero_page_dst:
82	.long	_text
83extra_data_pos:
84extra_data_size:
85	.long	zero_page_pos - extra_data_pos
v3.5.6
 
 1/*
 2 *  linux/arch/sh/boot/romimage/head.S
 3 *
 4 * Board specific setup code, executed before zImage loader
 5 */
 6
 7.text
 8	#include <asm/page.h>
 9
10	.global	romstart
11romstart:
12	/* include board specific setup code */
13#include <mach/romimage.h>
14
15#ifdef CONFIG_ROMIMAGE_MMCIF
16	/* load the romImage to above the empty zero page */
17	mov.l	empty_zero_page_dst, r4
18	mov.l	empty_zero_page_dst_adj, r5
19	add	r5, r4
20	mov.l	bytes_to_load, r5
21	mov.l	loader_function, r7
22	jsr	@r7
23	 mov	r4, r15
24
25	mov.l	empty_zero_page_dst, r4
26	mov.l	empty_zero_page_dst_adj, r5
27	add	r5, r4
28	mov.l	loaded_code_offs, r5
29	add	r5, r4
30	jmp	@r4
31	 nop
32
33	.balign 4
34empty_zero_page_dst_adj:
35	.long	PAGE_SIZE
36bytes_to_load:
37	.long	end_data - romstart
38loader_function:
39	.long	mmcif_loader
40loaded_code_offs:
41	.long	loaded_code - romstart
42loaded_code:
43#endif /* CONFIG_ROMIMAGE_MMCIF */
44
45	/* copy the empty_zero_page contents to where vmlinux expects it */
46	mova	extra_data_pos, r0
47	mov.l	extra_data_size, r1
48	add	r1, r0
49	mov.l	empty_zero_page_dst, r1
50	mov	#(PAGE_SHIFT - 4), r4
51	mov	#1, r3
52	shld	r4, r3 /* r3 = PAGE_SIZE / 16 */
53
541:
55	mov.l	@r0, r4
56	mov.l	@(4, r0), r5
57	mov.l	@(8, r0), r6
58	mov.l	@(12, r0), r7
59	add	#16,r0
60	mov.l	r4, @r1
61	mov.l	r5, @(4, r1)
62	mov.l	r6, @(8, r1)
63	mov.l	r7, @(12, r1)
64	dt	r3
65	add	#16,r1
66	bf	1b
67
68	/* jump to the zImage entry point located after the zero page data */
69	mov	#PAGE_SHIFT, r4
70	mov	#1, r1
71	shld	r4, r1
72	mova	extra_data_pos, r0
73	add	r1, r0
74	mov.l	extra_data_size, r1
75	add	r1, r0
76	jmp	@r0
77	 nop
78
79	.align 2
80empty_zero_page_dst:
81	.long	_text
82extra_data_pos:
83extra_data_size:
84	.long	zero_page_pos - extra_data_pos