Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/arch/sh/boot/romimage/head.S
26489 views
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
12
romstart:
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
35
empty_zero_page_dst_adj:
36
.long PAGE_SIZE
37
bytes_to_load:
38
.long end_data - romstart
39
loader_function:
40
.long mmcif_loader
41
loaded_code_offs:
42
.long loaded_code - romstart
43
loaded_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
55
1:
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
81
empty_zero_page_dst:
82
.long _text
83
extra_data_pos:
84
extra_data_size:
85
.long zero_page_pos - extra_data_pos
86
87