aboutsummaryrefslogtreecommitdiffstats
path: root/arch/s390/kernel/ipl.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/s390/kernel/ipl.c')
-rw-r--r--arch/s390/kernel/ipl.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/arch/s390/kernel/ipl.c b/arch/s390/kernel/ipl.c
index a36bea1188d9..d2e6a0a56ade 100644
--- a/arch/s390/kernel/ipl.c
+++ b/arch/s390/kernel/ipl.c
@@ -1037,13 +1037,15 @@ static void do_reset_calls(void)
1037} 1037}
1038 1038
1039extern void reset_mcck_handler(void); 1039extern void reset_mcck_handler(void);
1040extern void reset_pgm_handler(void);
1040 1041
1041void s390_reset_system(void) 1042void s390_reset_system(void)
1042{ 1043{
1043 struct _lowcore *lc; 1044 struct _lowcore *lc;
1044 1045
1045 /* Stack for interrupt/machine check handler */
1046 lc = (struct _lowcore *)(unsigned long) store_prefix(); 1046 lc = (struct _lowcore *)(unsigned long) store_prefix();
1047
1048 /* Stack for interrupt/machine check handler */
1047 lc->panic_stack = S390_lowcore.panic_stack; 1049 lc->panic_stack = S390_lowcore.panic_stack;
1048 1050
1049 /* Disable prefixing */ 1051 /* Disable prefixing */
@@ -1056,5 +1058,11 @@ void s390_reset_system(void)
1056 S390_lowcore.mcck_new_psw.mask = PSW_KERNEL_BITS & ~PSW_MASK_MCHECK; 1058 S390_lowcore.mcck_new_psw.mask = PSW_KERNEL_BITS & ~PSW_MASK_MCHECK;
1057 S390_lowcore.mcck_new_psw.addr = 1059 S390_lowcore.mcck_new_psw.addr =
1058 PSW_ADDR_AMODE | (unsigned long) &reset_mcck_handler; 1060 PSW_ADDR_AMODE | (unsigned long) &reset_mcck_handler;
1061
1062 /* Set new program check handler */
1063 S390_lowcore.program_new_psw.mask = PSW_KERNEL_BITS & ~PSW_MASK_MCHECK;
1064 S390_lowcore.program_new_psw.addr =
1065 PSW_ADDR_AMODE | (unsigned long) &reset_pgm_handler;
1066
1059 do_reset_calls(); 1067 do_reset_calls();
1060} 1068}