aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHeiko Carstens <hca@linux.ibm.com>2022-04-24 16:02:21 +0200
committerHeiko Carstens <hca@linux.ibm.com>2022-05-06 20:45:15 +0200
commitaceb06d1e83783bf5a25c4979647bd8af6a99654 (patch)
tree1430817b32842057f60f93cb9f25a3a8519caa39
parents390/boot: change initial program check handler to disabled wait psw (diff)
downloadlinux-dev-aceb06d1e83783bf5a25c4979647bd8af6a99654.tar.xz
linux-dev-aceb06d1e83783bf5a25c4979647bd8af6a99654.zip
s390/head: initialize all new psws
Initialize all new psws with disabled wait psws, except for the restart new psw. This way every unexpected exception, svc, machine check, or interrupt is handled properly. Reviewed-by: Vasily Gorbik <gor@linux.ibm.com> Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
-rw-r--r--arch/s390/boot/head.S22
1 files changed, 15 insertions, 7 deletions
diff --git a/arch/s390/boot/head.S b/arch/s390/boot/head.S
index 0b2cec40f261..a63f7de76462 100644
--- a/arch/s390/boot/head.S
+++ b/arch/s390/boot/head.S
@@ -64,14 +64,22 @@ __HEAD
.long 0x02000690,0x60000050
.long 0x020006e0,0x20000050
- .org __LC_RST_NEW_PSW # 0x1a0
+# The restart psw points to ipl_entry, which allows to load a kernel image
+# into memory and starting it by a psw restart on any cpu.
+# All other default psw new locations contain a disabled wait psw where the
+# address indicates which psw was loaded.
+ .org __LC_RST_NEW_PSW
.quad 0,IPL_START
- .org __LC_EXT_NEW_PSW # 0x1b0
- .quad 0x0002000180000000,0x1b0 # disabled wait
- .org __LC_PGM_NEW_PSW # 0x1d0
- .quad 0x0002000180000000,0x1d0 # disabled wait
- .org __LC_IO_NEW_PSW # 0x1f0
- .quad 0x0002000180000000,0x1f0 # disabled wait
+ .org __LC_EXT_NEW_PSW
+ .quad 0x0002000180000000,__LC_EXT_NEW_PSW
+ .org __LC_SVC_NEW_PSW
+ .quad 0x0002000180000000,__LC_SVC_NEW_PSW
+ .org __LC_PGM_NEW_PSW
+ .quad 0x0002000180000000,__LC_PGM_NEW_PSW
+ .org __LC_MCK_NEW_PSW
+ .quad 0x0002000180000000,__LC_MCK_NEW_PSW
+ .org __LC_IO_NEW_PSW
+ .quad 0x0002000180000000,__LC_IO_NEW_PSW
.org IPL_START
ipl_start: