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; }