[PATCH] ppc64/kexec/purgatory Fix RTAS calls in Little Endian mode.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



RTAS is expecting parameters in Big Endian order so we have to byte swap
them in LE mode.

In the purgatory RTAS calls are only made for debug output.

Signed-off-by: Laurent Dufour <ldufour at linux.vnet.ibm.com>
---
 purgatory/arch/ppc64/console-ppc64.c |    6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/purgatory/arch/ppc64/console-ppc64.c b/purgatory/arch/ppc64/console-ppc64.c
index 78a233b..b80183c 100644
--- a/purgatory/arch/ppc64/console-ppc64.c
+++ b/purgatory/arch/ppc64/console-ppc64.c
@@ -21,6 +21,9 @@
 
 #include <purgatory.h>
 #include "hvCall.h"
+#include <byteswap.h>
+#include <endian.h>
+#include <asm/byteorder.h>
 
 extern int debug;
 
@@ -36,6 +39,7 @@ void putchar(int c)
 		putchar('\r');
 
 	buff[0] = c;
-	plpar_hcall_norets(H_PUT_TERM_CHAR, 0, 1, lbuf[0], lbuf[1]);
+	plpar_hcall_norets(H_PUT_TERM_CHAR, 0, 1,
+			   __cpu_to_be64(lbuf[0]), __cpu_to_be64(lbuf[1]));
 	return;
 }




[Index of Archives]     [LM Sensors]     [Linux Sound]     [ALSA Users]     [ALSA Devel]     [Linux Audio Users]     [Linux Media]     [Kernel]     [Gimp]     [Yosemite News]     [Linux Media]

  Powered by Linux