summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTom Musta <tommusta@gmail.com>2013-10-18 12:08:22 -0500
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>2013-10-30 16:01:23 +1100
commit630c8a5fc9fb2f3541652b65f23630757d304cc9 (patch)
tree0e8acd66c8b5fee2983a12707b444b6b9a1c2526
parent075f6311af30b011eaa8e50341c06a9082a796a9 (diff)
downloadop-kernel-dev-630c8a5fc9fb2f3541652b65f23630757d304cc9.zip
op-kernel-dev-630c8a5fc9fb2f3541652b65f23630757d304cc9.tar.gz
powerpc: Enable Little Endian Alignment Handler for Float Pair Instructions
This patch enables alignment handling for the load/store floating point pair instructions (lfdp, lfdpx, stfdp, stfdpx). The handler routine is properly coded and only needs to be enabled. Signed-off-by: Tom Musta <tmusta@gmail.com> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
-rw-r--r--arch/powerpc/kernel/align.c6
1 files changed, 0 insertions, 6 deletions
diff --git a/arch/powerpc/kernel/align.c b/arch/powerpc/kernel/align.c
index a3169a9..de91f3a 100644
--- a/arch/powerpc/kernel/align.c
+++ b/arch/powerpc/kernel/align.c
@@ -378,7 +378,6 @@ static int emulate_multiple(struct pt_regs *regs, unsigned char __user *addr,
* Only POWER6 has these instructions, and it does true little-endian,
* so we don't need the address swizzling.
*/
-#ifdef __BIG_ENDIAN__
static int emulate_fp_pair(unsigned char __user *addr, unsigned int reg,
unsigned int flags)
{
@@ -406,7 +405,6 @@ static int emulate_fp_pair(unsigned char __user *addr, unsigned int reg,
return -EFAULT;
return 1; /* exception handled and fixed up */
}
-#endif
#ifdef CONFIG_SPE
@@ -918,12 +916,8 @@ int fix_alignment(struct pt_regs *regs)
/* Special case for 16-byte FP loads and stores */
if (nb == 16) {
-#ifdef __BIG_ENDIAN__
PPC_WARN_ALIGNMENT(fp_pair, regs);
return emulate_fp_pair(addr, reg, flags);
-#else
- return -EFAULT;
-#endif
}
PPC_WARN_ALIGNMENT(unaligned, regs);
OpenPOWER on IntegriCloud