diff options
author | Michael Neuling <mikey@neuling.org> | 2013-05-29 17:33:19 -0400 |
---|---|---|
committer | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2013-06-09 18:36:26 -0400 |
commit | fb0fce3e554e5513aaa1c1c52b2ece11feea3c7d (patch) | |
tree | e4cfbf84c5519efd83dbf9cfce5c0e88c5a3a191 | |
parent | d7c67fb1cf00b84829ae06fca04ad39408f156ba (diff) |
powerpc/power8: Update denormalization handler
POWER8 can take a denormalisation exception on any VSX registers.
This does the extra 32 VSX registers we don't currently handle.
Signed-off-by: Michael Neuling <mikey@neuling.org>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
-rw-r--r-- | arch/powerpc/kernel/exceptions-64s.S | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/arch/powerpc/kernel/exceptions-64s.S b/arch/powerpc/kernel/exceptions-64s.S index 3c9296bcf960..e783453f910d 100644 --- a/arch/powerpc/kernel/exceptions-64s.S +++ b/arch/powerpc/kernel/exceptions-64s.S | |||
@@ -480,6 +480,16 @@ FTR_SECTION_ELSE | |||
480 | XVCPSGNDP32(0) | 480 | XVCPSGNDP32(0) |
481 | 481 | ||
482 | ALT_FTR_SECTION_END_IFCLR(CPU_FTR_ARCH_206) | 482 | ALT_FTR_SECTION_END_IFCLR(CPU_FTR_ARCH_206) |
483 | |||
484 | BEGIN_FTR_SECTION | ||
485 | b denorm_done | ||
486 | END_FTR_SECTION_IFCLR(CPU_FTR_ARCH_207S) | ||
487 | /* | ||
488 | * To denormalise we need to move a copy of the register to itself. | ||
489 | * For POWER8 we need to do that for all 64 VSX registers | ||
490 | */ | ||
491 | XVCPSGNDP32(32) | ||
492 | denorm_done: | ||
483 | mtspr SPRN_HSRR0,r11 | 493 | mtspr SPRN_HSRR0,r11 |
484 | mtcrf 0x80,r9 | 494 | mtcrf 0x80,r9 |
485 | ld r9,PACA_EXGEN+EX_R9(r13) | 495 | ld r9,PACA_EXGEN+EX_R9(r13) |