Link: https://lore.kernel.org/r/20260217200002.683975158@linuxfoundation.org Tested-by: Florian Fainelli <florian.fainelli@broadcom.com> Tested-by: Takeshi Ogasawara <takeshi.ogasawara@futuring-girl.com> Tested-by: Peter Schneider <pschneider1968@googlemail.com> Tested-by: Jon Hunter <jonathanh@nvidia.com> Tested-by: Salvatore Bonaccorso <carnil@debian.org> Tested-by: Brett A C Sheffield <bacs@librecast.net> Tested-by: Mark Brown <broonie@kernel.org> Tested-by: Luna Jernberg <droidbittin@gmail.com> Tested-by: Ronald Warsow <rwarsow@gmx.de> Tested-by: Justin M. Forbes <jforbes@fedoraproject.org> Tested-by: Ron Economos <re@w6rz.net> Tested-by: Miguel Ojeda <ojeda@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
86 lines
1.6 KiB
ArmAsm
86 lines
1.6 KiB
ArmAsm
/* SPDX-License-Identifier: GPL-2.0 */
|
|
/*
|
|
* linux/arch/sh/boot/romimage/head.S
|
|
*
|
|
* Board specific setup code, executed before zImage loader
|
|
*/
|
|
|
|
.text
|
|
#include <asm/page.h>
|
|
|
|
.global romstart
|
|
romstart:
|
|
/* include board specific setup code */
|
|
#include <mach/romimage.h>
|
|
|
|
#ifdef CONFIG_ROMIMAGE_MMCIF
|
|
/* load the romImage to above the empty zero page */
|
|
mov.l empty_zero_page_dst, r4
|
|
mov.l empty_zero_page_dst_adj, r5
|
|
add r5, r4
|
|
mov.l bytes_to_load, r5
|
|
mov.l loader_function, r7
|
|
jsr @r7
|
|
mov r4, r15
|
|
|
|
mov.l empty_zero_page_dst, r4
|
|
mov.l empty_zero_page_dst_adj, r5
|
|
add r5, r4
|
|
mov.l loaded_code_offs, r5
|
|
add r5, r4
|
|
jmp @r4
|
|
nop
|
|
|
|
.balign 4
|
|
empty_zero_page_dst_adj:
|
|
.long PAGE_SIZE
|
|
bytes_to_load:
|
|
.long end_data - romstart
|
|
loader_function:
|
|
.long mmcif_loader
|
|
loaded_code_offs:
|
|
.long loaded_code - romstart
|
|
loaded_code:
|
|
#endif /* CONFIG_ROMIMAGE_MMCIF */
|
|
|
|
/* copy the empty_zero_page contents to where vmlinux expects it */
|
|
mova extra_data_pos, r0
|
|
mov.l extra_data_size, r1
|
|
add r1, r0
|
|
mov.l empty_zero_page_dst, r1
|
|
mov #(PAGE_SHIFT - 4), r4
|
|
mov #1, r3
|
|
shld r4, r3 /* r3 = PAGE_SIZE / 16 */
|
|
|
|
1:
|
|
mov.l @r0, r4
|
|
mov.l @(4, r0), r5
|
|
mov.l @(8, r0), r6
|
|
mov.l @(12, r0), r7
|
|
add #16,r0
|
|
mov.l r4, @r1
|
|
mov.l r5, @(4, r1)
|
|
mov.l r6, @(8, r1)
|
|
mov.l r7, @(12, r1)
|
|
dt r3
|
|
add #16,r1
|
|
bf 1b
|
|
|
|
/* jump to the zImage entry point located after the zero page data */
|
|
mov #PAGE_SHIFT, r4
|
|
mov #1, r1
|
|
shld r4, r1
|
|
mova extra_data_pos, r0
|
|
add r1, r0
|
|
mov.l extra_data_size, r1
|
|
add r1, r0
|
|
jmp @r0
|
|
nop
|
|
|
|
.align 2
|
|
empty_zero_page_dst:
|
|
.long _text
|
|
extra_data_pos:
|
|
extra_data_size:
|
|
.long zero_page_pos - extra_data_pos
|