Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 61fd330d authored by Martin Schwidefsky's avatar Martin Schwidefsky Committed by Martin Schwidefsky
Browse files

[S390] codepage conversion of kernel parameter line



Move the ebcdic to ascii conversion of the kernel parameter line from
head.S to early.c and convert the assembler code to C.

Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
parent 34b9243a
Loading
Loading
Loading
Loading
+12 −1
Original line number Original line Diff line number Diff line
@@ -405,8 +405,19 @@ static void __init append_to_cmdline(size_t (*ipl_data)(char *, size_t))


static void __init setup_boot_command_line(void)
static void __init setup_boot_command_line(void)
{
{
	int i;

	/* convert arch command line to ascii */
	for (i = 0; i < ARCH_COMMAND_LINE_SIZE; i++)
		if (COMMAND_LINE[i] & 0x80)
			break;
	if (i < ARCH_COMMAND_LINE_SIZE)
		EBCASC(COMMAND_LINE, ARCH_COMMAND_LINE_SIZE);
	COMMAND_LINE[ARCH_COMMAND_LINE_SIZE-1] = 0;

	/* copy arch command line */
	/* copy arch command line */
	strlcpy(boot_command_line, COMMAND_LINE, ARCH_COMMAND_LINE_SIZE);
	strlcpy(boot_command_line, strstrip(COMMAND_LINE),
		ARCH_COMMAND_LINE_SIZE);


	/* append IPL PARM data to the boot command line */
	/* append IPL PARM data to the boot command line */
	if (MACHINE_IS_VM)
	if (MACHINE_IS_VM)
+1 −17
Original line number Original line Diff line number Diff line
@@ -287,19 +287,7 @@ iplstart:
	bz	.Lagain1		# skip dateset trailer
	bz	.Lagain1		# skip dateset trailer
	la	%r5,0(%r4,%r2)
	la	%r5,0(%r4,%r2)
	lr	%r3,%r2
	lr	%r3,%r2
.Lidebc:
	la	%r3,COMMAND_LINE-PARMAREA(%r12) # load adr. of command line
	tm	0(%r5),0x80		# high order bit set ?
	bo	.Ldocv			#  yes -> convert from EBCDIC
	ahi	%r5,-1
	bct	%r3,.Lidebc
	b	.Lnocv
.Ldocv:
	l	%r3,.Lcvtab
	tr	0(256,%r4),0(%r3)	# convert parameters to ascii
	tr	256(256,%r4),0(%r3)
	tr	512(256,%r4),0(%r3)
	tr	768(122,%r4),0(%r3)
.Lnocv: la	%r3,COMMAND_LINE-PARMAREA(%r12) # load adr. of command line
	mvc	0(256,%r3),0(%r4)
	mvc	0(256,%r3),0(%r4)
	mvc	256(256,%r3),256(%r4)
	mvc	256(256,%r3),256(%r4)
	mvc	512(256,%r3),512(%r4)
	mvc	512(256,%r3),512(%r4)
@@ -383,7 +371,6 @@ iplstart:
.Linitrd:.long _end + 0x400000		# default address of initrd
.Linitrd:.long _end + 0x400000		# default address of initrd
.Lparm:	.long  PARMAREA
.Lparm:	.long  PARMAREA
.Lstartup: .long startup
.Lstartup: .long startup
.Lcvtab:.long	_ebcasc 		# ebcdic to ascii table
.Lreset:.byte	0xc3,0xc8,0xc1,0xd5,0xc7,0xc5,0x40,0xd9,0xc4,0xd9,0x40
.Lreset:.byte	0xc3,0xc8,0xc1,0xd5,0xc7,0xc5,0x40,0xd9,0xc4,0xd9,0x40
	.byte	0xc1,0xd3,0xd3,0x40,0xd2,0xc5,0xc5,0xd7,0x40,0xd5,0xd6
	.byte	0xc1,0xd3,0xd3,0x40,0xd2,0xc5,0xc5,0xd7,0x40,0xd5,0xd6
	.byte	0xc8,0xd6,0xd3,0xc4	# "change rdr all keep nohold"
	.byte	0xc8,0xd6,0xd3,0xc4	# "change rdr all keep nohold"
@@ -416,13 +403,10 @@ start:
.sk8x8:
.sk8x8:
	mvc	0(240,%r8),0(%r9)	# copy iplparms into buffer
	mvc	0(240,%r8),0(%r9)	# copy iplparms into buffer
.gotr:
.gotr:
	l	%r10,.tbl		# EBCDIC to ASCII table
	tr	0(240,%r8),0(%r10)
	slr	%r0,%r0
	slr	%r0,%r0
	st	%r0,INITRD_SIZE+ARCH_OFFSET-PARMAREA(%r11)
	st	%r0,INITRD_SIZE+ARCH_OFFSET-PARMAREA(%r11)
	st	%r0,INITRD_START+ARCH_OFFSET-PARMAREA(%r11)
	st	%r0,INITRD_START+ARCH_OFFSET-PARMAREA(%r11)
	j	startup 		# continue with startup
	j	startup 		# continue with startup
.tbl:	.long	_ebcasc			# translate table
.cmd:	.long	COMMAND_LINE		# address of command line buffer
.cmd:	.long	COMMAND_LINE		# address of command line buffer
.parm:	.long	PARMAREA
.parm:	.long	PARMAREA
.lowcase:
.lowcase: