diff options
author | Tom Musta <tommusta@gmail.com> | 2013-10-18 13:08:22 -0400 |
---|---|---|
committer | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2013-10-30 01:01:23 -0400 |
commit | 630c8a5fc9fb2f3541652b65f23630757d304cc9 (patch) | |
tree | 0e8acd66c8b5fee2983a12707b444b6b9a1c2526 | |
parent | 075f6311af30b011eaa8e50341c06a9082a796a9 (diff) |
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.c | 6 |
1 files changed, 0 insertions, 6 deletions
diff --git a/arch/powerpc/kernel/align.c b/arch/powerpc/kernel/align.c index a3169a987b84..de91f3ae631e 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, | |||
378 | * Only POWER6 has these instructions, and it does true little-endian, | 378 | * Only POWER6 has these instructions, and it does true little-endian, |
379 | * so we don't need the address swizzling. | 379 | * so we don't need the address swizzling. |
380 | */ | 380 | */ |
381 | #ifdef __BIG_ENDIAN__ | ||
382 | static int emulate_fp_pair(unsigned char __user *addr, unsigned int reg, | 381 | static int emulate_fp_pair(unsigned char __user *addr, unsigned int reg, |
383 | unsigned int flags) | 382 | unsigned int flags) |
384 | { | 383 | { |
@@ -406,7 +405,6 @@ static int emulate_fp_pair(unsigned char __user *addr, unsigned int reg, | |||
406 | return -EFAULT; | 405 | return -EFAULT; |
407 | return 1; /* exception handled and fixed up */ | 406 | return 1; /* exception handled and fixed up */ |
408 | } | 407 | } |
409 | #endif | ||
410 | 408 | ||
411 | #ifdef CONFIG_SPE | 409 | #ifdef CONFIG_SPE |
412 | 410 | ||
@@ -918,12 +916,8 @@ int fix_alignment(struct pt_regs *regs) | |||
918 | 916 | ||
919 | /* Special case for 16-byte FP loads and stores */ | 917 | /* Special case for 16-byte FP loads and stores */ |
920 | if (nb == 16) { | 918 | if (nb == 16) { |
921 | #ifdef __BIG_ENDIAN__ | ||
922 | PPC_WARN_ALIGNMENT(fp_pair, regs); | 919 | PPC_WARN_ALIGNMENT(fp_pair, regs); |
923 | return emulate_fp_pair(addr, reg, flags); | 920 | return emulate_fp_pair(addr, reg, flags); |
924 | #else | ||
925 | return -EFAULT; | ||
926 | #endif | ||
927 | } | 921 | } |
928 | 922 | ||
929 | PPC_WARN_ALIGNMENT(unaligned, regs); | 923 | PPC_WARN_ALIGNMENT(unaligned, regs); |