mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-27 06:30:56 +07:00
[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: Martin Schwidefsky <schwidefsky@de.ibm.com>
This commit is contained in:
parent
dab7a7b153
commit
0edc8faa76
@ -152,10 +152,7 @@ struct _lowcore {
|
|||||||
__u32 ipib; /* 0x0e00 */
|
__u32 ipib; /* 0x0e00 */
|
||||||
__u32 ipib_checksum; /* 0x0e04 */
|
__u32 ipib_checksum; /* 0x0e04 */
|
||||||
__u32 vmcore_info; /* 0x0e08 */
|
__u32 vmcore_info; /* 0x0e08 */
|
||||||
|
__u8 pad_0x0e0c[0x0f00-0x0e0c]; /* 0x0e0c */
|
||||||
/* 64 bit save area */
|
|
||||||
__u64 save_area_64; /* 0x0e0c */
|
|
||||||
__u8 pad_0x0e14[0x0f00-0x0e14]; /* 0x0e14 */
|
|
||||||
|
|
||||||
/* Extended facility list */
|
/* Extended facility list */
|
||||||
__u64 stfle_fac_list[32]; /* 0x0f00 */
|
__u64 stfle_fac_list[32]; /* 0x0f00 */
|
||||||
@ -292,10 +289,7 @@ struct _lowcore {
|
|||||||
__u64 ipib; /* 0x0e00 */
|
__u64 ipib; /* 0x0e00 */
|
||||||
__u32 ipib_checksum; /* 0x0e08 */
|
__u32 ipib_checksum; /* 0x0e08 */
|
||||||
__u64 vmcore_info; /* 0x0e0c */
|
__u64 vmcore_info; /* 0x0e0c */
|
||||||
|
__u8 pad_0x0e14[0x0f00-0x0e14]; /* 0x0e14 */
|
||||||
/* 64 bit save area */
|
|
||||||
__u64 save_area_64; /* 0x0e14 */
|
|
||||||
__u8 pad_0x0e1c[0x0f00-0x0e1c]; /* 0x0e1c */
|
|
||||||
|
|
||||||
/* Extended facility list */
|
/* Extended facility list */
|
||||||
__u64 stfle_fac_list[32]; /* 0x0f00 */
|
__u64 stfle_fac_list[32]; /* 0x0f00 */
|
||||||
|
@ -141,7 +141,6 @@ int main(void)
|
|||||||
DEFINE(__LC_FPREGS_SAVE_AREA, offsetof(struct _lowcore, floating_pt_save_area));
|
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_GPREGS_SAVE_AREA, offsetof(struct _lowcore, gpregs_save_area));
|
||||||
DEFINE(__LC_CREGS_SAVE_AREA, offsetof(struct _lowcore, cregs_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
|
#ifdef CONFIG_32BIT
|
||||||
DEFINE(SAVE_AREA_BASE, offsetof(struct _lowcore, extended_save_area_addr));
|
DEFINE(SAVE_AREA_BASE, offsetof(struct _lowcore, extended_save_area_addr));
|
||||||
#else /* CONFIG_32BIT */
|
#else /* CONFIG_32BIT */
|
||||||
|
@ -853,13 +853,13 @@ restart_go:
|
|||||||
# PSW restart interrupt handler
|
# PSW restart interrupt handler
|
||||||
#
|
#
|
||||||
ENTRY(psw_restart_int_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
|
basr %r15,0
|
||||||
0: l %r15,.Lrestart_stack-0b(%r15) # load restart stack
|
0: l %r15,.Lrestart_stack-0b(%r15) # load restart stack
|
||||||
l %r15,0(%r15)
|
l %r15,0(%r15)
|
||||||
ahi %r15,-SP_SIZE # make room for pt_regs
|
ahi %r15,-SP_SIZE # make room for pt_regs
|
||||||
stm %r0,%r14,SP_R0(%r15) # store gprs %r0-%r14 to stack
|
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
|
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
|
xc __SF_BACKCHAIN(4,%r15),__SF_BACKCHAIN(%r15) # set backchain to 0
|
||||||
basr %r14,0
|
basr %r14,0
|
||||||
|
@ -869,12 +869,12 @@ restart_go:
|
|||||||
# PSW restart interrupt handler
|
# PSW restart interrupt handler
|
||||||
#
|
#
|
||||||
ENTRY(psw_restart_int_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
|
larl %r15,restart_stack # load restart stack
|
||||||
lg %r15,0(%r15)
|
lg %r15,0(%r15)
|
||||||
aghi %r15,-SP_SIZE # make room for pt_regs
|
aghi %r15,-SP_SIZE # make room for pt_regs
|
||||||
stmg %r0,%r14,SP_R0(%r15) # store gprs %r0-%r14 to stack
|
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
|
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
|
xc __SF_BACKCHAIN(8,%r15),__SF_BACKCHAIN(%r15) # set backchain to 0
|
||||||
brasl %r14,do_restart
|
brasl %r14,do_restart
|
||||||
|
@ -17,11 +17,11 @@
|
|||||||
#
|
#
|
||||||
ENTRY(store_status)
|
ENTRY(store_status)
|
||||||
/* Save register one and load save area base */
|
/* 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
|
lghi %r1,SAVE_AREA_BASE
|
||||||
/* General purpose registers */
|
/* General purpose registers */
|
||||||
stmg %r0,%r15,__LC_GPREGS_SAVE_AREA-SAVE_AREA_BASE(%r1)
|
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)
|
stg %r2,__LC_GPREGS_SAVE_AREA-SAVE_AREA_BASE+8(%r1)
|
||||||
/* Control registers */
|
/* Control registers */
|
||||||
stctg %c0,%c15,__LC_CREGS_SAVE_AREA-SAVE_AREA_BASE(%r1)
|
stctg %c0,%c15,__LC_CREGS_SAVE_AREA-SAVE_AREA_BASE(%r1)
|
||||||
|
Loading…
Reference in New Issue
Block a user