@@ -64,7 +64,10 @@ consume_sclp_int:
stctg %c0,%c0,0(%r15)
oi 6(%r15),0x2
lctlg %c0,%c0,0(%r15)
- /* prepare external call handler */
+ /*
+ * Prepare external new PSW as it might have been overwritten
+ * by a loaded blob
+ */
larl %r1, external_new_code
stg %r1, 0x1b8
larl %r1, external_new_mask
@@ -84,7 +87,10 @@ consume_io_int:
stctg %c6,%c6,0(%r15)
oi 4(%r15), 0xff
lctlg %c6,%c6,0(%r15)
- /* prepare i/o call handler */
+ /*
+ * Prepare i/o new PSW as it might have been overwritten
+ * by a loaded blob
+ */
larl %r1, io_new_code
stg %r1, 0x1f8
larl %r1, io_new_mask
Normally they don't need to be set up before waiting for an interrupt but are set up on boot. The BIOS however might overwrite the lowcore (and hence the PSWs) when loading a blob into memory and therefore needs to set up those PSWs more often. Signed-off-by: Janosch Frank <frankja@linux.ibm.com> --- pc-bios/s390-ccw/start.S | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-)