[51/63] powerpc: Alignment handler shouldn't access VSX registers with TS_FPR

Submitted by Anton Blanchard on Aug. 6, 2013, 4:02 p.m.

Details

Message ID 1375804940-22050-52-git-send-email-anton@samba.org
State Accepted, archived
Commit a5841a46022e1ebe97d4c926c32ef4e9acec96a7
Headers show

Commit Message

Anton Blanchard Aug. 6, 2013, 4:02 p.m.
The TS_FPR macro selects the FPR component of a VSX register (the
high doubleword). emulate_vsx is using this macro to get the
address of the associated VSX register. This happens to work on big
endian, but fails on little endian.

Replace it with an explicit array access.

Signed-off-by: Anton Blanchard <anton@samba.org>
---
 arch/powerpc/kernel/align.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Patch hide | download patch | download mbox

diff --git a/arch/powerpc/kernel/align.c b/arch/powerpc/kernel/align.c
index ceced33..edc179f 100644
--- a/arch/powerpc/kernel/align.c
+++ b/arch/powerpc/kernel/align.c
@@ -646,7 +646,7 @@  static int emulate_vsx(unsigned char __user *addr, unsigned int reg,
 	flush_vsx_to_thread(current);
 
 	if (reg < 32)
-		ptr = (char *) &current->thread.TS_FPR(reg);
+		ptr = (char *) &current->thread.fpr[reg][0];
 	else
 		ptr = (char *) &current->thread.vr[reg - 32];