diff options
author | Alexey Kardashevskiy <aik@ozlabs.ru> | 2014-03-07 15:37:40 +1100 |
---|---|---|
committer | Andreas Färber <afaerber@suse.de> | 2014-03-20 02:39:33 +0100 |
commit | a46622fd07edc6fd3c66f8ab79b4782a78b115f3 (patch) | |
tree | 1dd241ce1d0f1deaba63d297ce960fc95a3a4c40 /include | |
parent | df99d30d4e0dd22be5572235a5213de429e00747 (diff) | |
download | qemu-a46622fd07edc6fd3c66f8ab79b4782a78b115f3.zip qemu-a46622fd07edc6fd3c66f8ab79b4782a78b115f3.tar.gz qemu-a46622fd07edc6fd3c66f8ab79b4782a78b115f3.tar.bz2 |
spapr_hcall: Fix little-endian resource handling in H_SET_MODE
This changes resource code definitions to ones used in the host kernel.
This fixes H_SET_MODE_RESOURCE_LE (switch between big endian and
little endian) to sync registers from KVM before changing LPCR value.
This adds a set_spr() helper to update an SPR in a CPU's context to avoid
possible races and makes use of it to change LPCR.
Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
Reviewed-by: Greg Kurz <gkurz@linux.vnet.ibm.com>
Signed-off-by: Andreas Färber <afaerber@suse.de>
Diffstat (limited to 'include')
-rw-r--r-- | include/hw/ppc/spapr.h | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/include/hw/ppc/spapr.h b/include/hw/ppc/spapr.h index 449fc7c..5fdac1e 100644 --- a/include/hw/ppc/spapr.h +++ b/include/hw/ppc/spapr.h @@ -153,8 +153,13 @@ typedef struct sPAPREnvironment { #define H_PP1 (1ULL<<(63-62)) #define H_PP2 (1ULL<<(63-63)) -/* H_SET_MODE flags */ -#define H_SET_MODE_ENDIAN 4 +/* Values for 2nd argument to H_SET_MODE */ +#define H_SET_MODE_RESOURCE_SET_CIABR 1 +#define H_SET_MODE_RESOURCE_SET_DAWR 2 +#define H_SET_MODE_RESOURCE_ADDR_TRANS_MODE 3 +#define H_SET_MODE_RESOURCE_LE 4 + +/* Flags for H_SET_MODE_RESOURCE_LE */ #define H_SET_MODE_ENDIAN_BIG 0 #define H_SET_MODE_ENDIAN_LITTLE 1 |