Skip to content

Commit

Permalink
KVM: PPC: Book3S_64 PR: Access shadow slb in big endian
Browse files Browse the repository at this point in the history
The "shadow SLB" in the PACA is shared with the hypervisor, so it has to
be big endian. We access the shadow SLB during world switch, so let's make
sure we access it in big endian even when we're on a little endian host.

Signed-off-by: Alexander Graf <agraf@suse.de>
  • Loading branch information
Alexander Graf committed May 30, 2014
1 parent 4e509af commit 14a7d41
Showing 1 changed file with 16 additions and 17 deletions.
33 changes: 16 additions & 17 deletions arch/powerpc/kvm/book3s_64_slb.S
Original file line number Diff line number Diff line change
Expand Up @@ -17,29 +17,28 @@
* Authors: Alexander Graf <agraf@suse.de>
*/

#ifdef __LITTLE_ENDIAN__
#error Need to fix SLB shadow accesses in little endian mode
#endif

#define SHADOW_SLB_ESID(num) (SLBSHADOW_SAVEAREA + (num * 0x10))
#define SHADOW_SLB_VSID(num) (SLBSHADOW_SAVEAREA + (num * 0x10) + 0x8)
#define UNBOLT_SLB_ENTRY(num) \
ld r9, SHADOW_SLB_ESID(num)(r12); \
/* Invalid? Skip. */; \
rldicl. r0, r9, 37, 63; \
beq slb_entry_skip_ ## num; \
xoris r9, r9, SLB_ESID_V@h; \
std r9, SHADOW_SLB_ESID(num)(r12); \
li r11, SHADOW_SLB_ESID(num); \
LDX_BE r9, r12, r11; \
/* Invalid? Skip. */; \
rldicl. r0, r9, 37, 63; \
beq slb_entry_skip_ ## num; \
xoris r9, r9, SLB_ESID_V@h; \
STDX_BE r9, r12, r11; \
slb_entry_skip_ ## num:

#define REBOLT_SLB_ENTRY(num) \
ld r10, SHADOW_SLB_ESID(num)(r11); \
cmpdi r10, 0; \
beq slb_exit_skip_ ## num; \
oris r10, r10, SLB_ESID_V@h; \
ld r9, SHADOW_SLB_VSID(num)(r11); \
slbmte r9, r10; \
std r10, SHADOW_SLB_ESID(num)(r11); \
li r8, SHADOW_SLB_ESID(num); \
li r7, SHADOW_SLB_VSID(num); \
LDX_BE r10, r11, r8; \
cmpdi r10, 0; \
beq slb_exit_skip_ ## num; \
oris r10, r10, SLB_ESID_V@h; \
LDX_BE r9, r11, r7; \
slbmte r9, r10; \
STDX_BE r10, r11, r8; \
slb_exit_skip_ ## num:

/******************************************************************************
Expand Down

0 comments on commit 14a7d41

Please sign in to comment.