Commit 6e3220ba authored by Helge Deller's avatar Helge Deller

parisc: Fix argument pointer in real64_call_asm()

Fix the argument pointer (ap) to point to real-mode memory
instead of virtual memory.

It's interesting that this issue hasn't shown up earlier, as this could
have happened with any 64-bit PDC ROM code.

I just noticed it because I suddenly faced a HPMC while trying to execute
the 64-bit STI ROM code of an Visualize-FXe graphics card for the STI
text console.
Signed-off-by: default avatarHelge Deller <deller@gmx.de>
Cc: <stable@vger.kernel.org>
parent 567b3515
...@@ -235,9 +235,6 @@ ENTRY_CFI(real64_call_asm) ...@@ -235,9 +235,6 @@ ENTRY_CFI(real64_call_asm)
/* save fn */ /* save fn */
copy %arg2, %r31 copy %arg2, %r31
/* set up the new ap */
ldo 64(%arg1), %r29
/* load up the arg registers from the saved arg area */ /* load up the arg registers from the saved arg area */
/* 32-bit calling convention passes first 4 args in registers */ /* 32-bit calling convention passes first 4 args in registers */
ldd 0*REG_SZ(%arg1), %arg0 /* note overwriting arg0 */ ldd 0*REG_SZ(%arg1), %arg0 /* note overwriting arg0 */
...@@ -249,7 +246,9 @@ ENTRY_CFI(real64_call_asm) ...@@ -249,7 +246,9 @@ ENTRY_CFI(real64_call_asm)
ldd 7*REG_SZ(%arg1), %r19 ldd 7*REG_SZ(%arg1), %r19
ldd 1*REG_SZ(%arg1), %arg1 /* do this one last! */ ldd 1*REG_SZ(%arg1), %arg1 /* do this one last! */
/* set up real-mode stack and real-mode ap */
tophys_r1 %sp tophys_r1 %sp
ldo -16(%sp), %r29 /* Reference param save area */
b,l rfi_virt2real,%r2 b,l rfi_virt2real,%r2
nop nop
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment