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

Commit 0edc8faa authored by Martin Schwidefsky's avatar Martin Schwidefsky
Browse files

[S390] lowcore cleanup



Remove the save_area_64 field from the 0xe00 - 0xf00 area in the lowcore.
Use a free slot in the save_area array instead.

Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
parent dab7a7b1
Loading
Loading
Loading
Loading
+2 −8
Original line number Diff line number Diff line
@@ -152,10 +152,7 @@ struct _lowcore {
	__u32	ipib;				/* 0x0e00 */
	__u32	ipib_checksum;			/* 0x0e04 */
	__u32	vmcore_info;			/* 0x0e08 */

	/* 64 bit save area */
	__u64	save_area_64;			/* 0x0e0c */
	__u8	pad_0x0e14[0x0f00-0x0e14];	/* 0x0e14 */
	__u8	pad_0x0e0c[0x0f00-0x0e0c];	/* 0x0e0c */

	/* Extended facility list */
	__u64	stfle_fac_list[32];		/* 0x0f00 */
@@ -292,10 +289,7 @@ struct _lowcore {
	__u64	ipib;				/* 0x0e00 */
	__u32	ipib_checksum;			/* 0x0e08 */
	__u64	vmcore_info;			/* 0x0e0c */

	/* 64 bit save area */
	__u64	save_area_64;			/* 0x0e14 */
	__u8	pad_0x0e1c[0x0f00-0x0e1c];	/* 0x0e1c */
	__u8	pad_0x0e14[0x0f00-0x0e14];	/* 0x0e14 */

	/* Extended facility list */
	__u64	stfle_fac_list[32];		/* 0x0f00 */
+0 −1
Original line number Diff line number Diff line
@@ -141,7 +141,6 @@ int main(void)
	DEFINE(__LC_FPREGS_SAVE_AREA, offsetof(struct _lowcore, floating_pt_save_area));
	DEFINE(__LC_GPREGS_SAVE_AREA, offsetof(struct _lowcore, gpregs_save_area));
	DEFINE(__LC_CREGS_SAVE_AREA, offsetof(struct _lowcore, cregs_save_area));
	DEFINE(__LC_SAVE_AREA_64, offsetof(struct _lowcore, save_area_64));
#ifdef CONFIG_32BIT
	DEFINE(SAVE_AREA_BASE, offsetof(struct _lowcore, extended_save_area_addr));
#else /* CONFIG_32BIT */
+2 −2
Original line number Diff line number Diff line
@@ -853,13 +853,13 @@ restart_go:
# PSW restart interrupt handler
#
ENTRY(psw_restart_int_handler)
	st	%r15,__LC_SAVE_AREA_64(%r0)	# save r15
	st	%r15,__LC_SAVE_AREA+48(%r0)	# save r15
	basr	%r15,0
0:	l	%r15,.Lrestart_stack-0b(%r15)	# load restart stack
	l	%r15,0(%r15)
	ahi	%r15,-SP_SIZE			# make room for pt_regs
	stm	%r0,%r14,SP_R0(%r15)		# store gprs %r0-%r14 to stack
	mvc	SP_R15(4,%r15),__LC_SAVE_AREA_64(%r0)# store saved %r15 to stack
	mvc	SP_R15(4,%r15),__LC_SAVE_AREA+48(%r0)# store saved %r15 to stack
	mvc	SP_PSW(8,%r15),__LC_RST_OLD_PSW(%r0) # store restart old psw
	xc	__SF_BACKCHAIN(4,%r15),__SF_BACKCHAIN(%r15) # set backchain to 0
	basr	%r14,0
+2 −2
Original line number Diff line number Diff line
@@ -869,12 +869,12 @@ restart_go:
# PSW restart interrupt handler
#
ENTRY(psw_restart_int_handler)
	stg	%r15,__LC_SAVE_AREA_64(%r0)	# save r15
	stg	%r15,__LC_SAVE_AREA+120(%r0)	# save r15
	larl	%r15,restart_stack		# load restart stack
	lg	%r15,0(%r15)
	aghi	%r15,-SP_SIZE			# make room for pt_regs
	stmg	%r0,%r14,SP_R0(%r15)		# store gprs %r0-%r14 to stack
	mvc	SP_R15(8,%r15),__LC_SAVE_AREA_64(%r0)# store saved %r15 to stack
	mvc	SP_R15(8,%r15),__LC_SAVE_AREA+120(%r0)# store saved %r15 to stack
	mvc	SP_PSW(16,%r15),__LC_RST_OLD_PSW(%r0)# store restart old psw
	xc	__SF_BACKCHAIN(8,%r15),__SF_BACKCHAIN(%r15) # set backchain to 0
	brasl	%r14,do_restart
+2 −2
Original line number Diff line number Diff line
@@ -17,11 +17,11 @@
#
ENTRY(store_status)
	/* Save register one and load save area base */
	stg	%r1,__LC_SAVE_AREA_64(%r0)
	stg	%r1,__LC_SAVE_AREA+120(%r0)
	lghi	%r1,SAVE_AREA_BASE
	/* General purpose registers */
	stmg	%r0,%r15,__LC_GPREGS_SAVE_AREA-SAVE_AREA_BASE(%r1)
	lg	%r2,__LC_SAVE_AREA_64(%r0)
	lg	%r2,__LC_SAVE_AREA+120(%r0)
	stg	%r2,__LC_GPREGS_SAVE_AREA-SAVE_AREA_BASE+8(%r1)
	/* Control registers */
	stctg	%c0,%c15,__LC_CREGS_SAVE_AREA-SAVE_AREA_BASE(%r1)