From: Heiko Carstens Date: Mon, 25 Apr 2022 19:24:56 +0000 (+0200) Subject: s390/boot: convert parmarea to C X-Git-Tag: v6.1-rc5~1155^2~33 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=f84d88ed3beb7fc2b4549e4c213ad428c0be9029;p=platform%2Fkernel%2Flinux-starfive.git s390/boot: convert parmarea to C Convert parmarea to C, which makes it much easier to initialize it. No need to keep offsets in assembler code in sync with struct parmarea anymore. Reviewed-by: Vasily Gorbik Signed-off-by: Heiko Carstens --- diff --git a/arch/s390/boot/head.S b/arch/s390/boot/head.S index ceb1186..2ced901 100644 --- a/arch/s390/boot/head.S +++ b/arch/s390/boot/head.S @@ -333,23 +333,3 @@ SYM_CODE_START_LOCAL(startup_pgm_check_handler) lmg %r0,%r15,__LC_GPREGS_SAVE_AREA-4095(%r8) lpswe __LC_RETURN_PSW # disabled wait SYM_CODE_END(startup_pgm_check_handler) - -# -# params at 10400 (setup.h) -# Must be keept in sync with struct parmarea in setup.h -# - .org PARMAREA - IPL_START -SYM_DATA_START(parmarea) - .quad 0 # IPL_DEVICE - .quad 0 # INITRD_START - .quad 0 # INITRD_SIZE - .quad 0 # OLDMEM_BASE - .quad 0 # OLDMEM_SIZE - .quad kernel_version # points to kernel version string - .quad COMMAND_LINE_SIZE - - .org COMMAND_LINE - IPL_START - .byte "root=/dev/ram0 ro" - .byte 0 - .org PARMAREA+__PARMAREA_SIZE - IPL_START -SYM_DATA_END(parmarea) diff --git a/arch/s390/boot/ipl_data.c b/arch/s390/boot/ipl_data.c index 90749e3..0846e2b 100644 --- a/arch/s390/boot/ipl_data.c +++ b/arch/s390/boot/ipl_data.c @@ -44,7 +44,7 @@ struct ipl_lowcore { * that to succeed the two initial CCWs, and the 0x40 fill bytes must * be present. */ -struct ipl_lowcore ipl_lowcore __section(".ipldata") = { +static struct ipl_lowcore ipl_lowcore __used __section(".ipldata") = { .ipl_psw = { .mask = PSW32_MASK_BASE, .addr = PSW32_ADDR_AMODE | IPL_START }, .ccwpgm = { [ 0] = CCW0(CCW_CMD_READ_IPL, 0x018, 0x50, CCW_FLAG_SLI | CCW_FLAG_CC), diff --git a/arch/s390/boot/ipl_parm.c b/arch/s390/boot/ipl_parm.c index 9ed7e29..ca78d61 100644 --- a/arch/s390/boot/ipl_parm.c +++ b/arch/s390/boot/ipl_parm.c @@ -8,9 +8,16 @@ #include #include #include +#include #include #include "boot.h" +struct parmarea parmarea __section(".parmarea") = { + .kernel_version = (unsigned long)kernel_version, + .max_command_line_size = COMMAND_LINE_SIZE, + .command_line = "root=/dev/ram0 ro", +}; + char __bootdata(early_command_line)[COMMAND_LINE_SIZE]; int __bootdata(noexec_disabled); diff --git a/arch/s390/boot/vmlinux.lds.S b/arch/s390/boot/vmlinux.lds.S index 983f02d..af5c686 100644 --- a/arch/s390/boot/vmlinux.lds.S +++ b/arch/s390/boot/vmlinux.lds.S @@ -23,6 +23,10 @@ SECTIONS HEAD_TEXT _ehead = . ; } + . = PARMAREA; + .parmarea : { + *(.parmarea) + } .text : { _text = .; /* Text */ *(.text)