diff options
author | Helge Deller <deller@gmx.de> | 2023-10-22 20:17:23 +0200 |
---|---|---|
committer | Helge Deller <deller@gmx.de> | 2023-10-31 08:26:22 +0100 |
commit | 7ce1eaa80b25b90112890d71337be9b513fd959c (patch) | |
tree | c34d8f4cdb9a7bb5ab9bee2a780ae177d31da6b2 | |
parent | 1f49c02920ddd61ce64b50975e51aa62703b2c23 (diff) | |
download | seabios-hppa-7ce1eaa80b25b90112890d71337be9b513fd959c.zip seabios-hppa-7ce1eaa80b25b90112890d71337be9b513fd959c.tar.gz seabios-hppa-7ce1eaa80b25b90112890d71337be9b513fd959c.tar.bz2 |
parisc: Add PSW.W handling in iodc_entry
Signed-off-by: Helge Deller <deller@gmx.de>
-rw-r--r-- | src/parisc/head.S | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/src/parisc/head.S b/src/parisc/head.S index 7bc7c09..95072df 100644 --- a/src/parisc/head.S +++ b/src/parisc/head.S @@ -403,6 +403,11 @@ ENTRY(iodc_entry) stw %arg1,-40(%sp) stw %arg2,-44(%sp) stw %arg3,-48(%sp) + ;! nuke the W bit + .level 2.0 + rsm PSW_W_SM, %r31 + .level 1.1 + stw %r31,-52(%sp) /* store PSW_W */ ldo -FRAME_SIZE(%sp),%arg0 loadgp @@ -412,8 +417,18 @@ ENTRY(iodc_entry) .iodc_ret: ldo -FRAME_SIZE(%sp),%sp ldw -20(%sp),%rp - bv %r0(%rp) ldw -32(%sp),%dp + +// .word 0xfffdead0 + ldw -52(%sp),%r31 + load32 0x8000000,%r1 /* mask PSW_W */ + and,= %r31,%r1,%r0 + bv %r0(%rp) /* return without setting PSW_W */ + nop + bv %r0(%rp) /* return with setting PSW_W */ + .level 2.0 + ssm PSW_W_SM,%r0 + .level 1.1 END(iodc_entry) /**************************************************************** |