Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f2025a1d authored by Helge Deller's avatar Helge Deller Committed by Greg Kroah-Hartman
Browse files

parisc: Fix argument pointer in real64_call_asm()



commit 6e3220ba3323a2c24be834aebf5d6e9f89d0993f upstream.

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>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 78728cd5
Loading
Loading
Loading
Loading
+2 −3
Original line number Diff line number Diff line
@@ -248,9 +248,6 @@ ENTRY_CFI(real64_call_asm)
	/* save fn */
	copy	%arg2, %r31

	/* set up the new ap */
	ldo	64(%arg1), %r29

	/* load up the arg registers from the saved arg area */
	/* 32-bit calling convention passes first 4 args in registers */
	ldd	0*REG_SZ(%arg1), %arg0		/* note overwriting arg0 */
@@ -262,7 +259,9 @@ ENTRY_CFI(real64_call_asm)
	ldd	7*REG_SZ(%arg1), %r19
	ldd	1*REG_SZ(%arg1), %arg1		/* do this one last! */

	/* set up real-mode stack and real-mode ap */
	tophys_r1 %sp
	ldo	-16(%sp), %r29			/* Reference param save area */

	b,l	rfi_virt2real,%r2
	nop