Commit b113c083 authored by Nicholas Piggin's avatar Nicholas Piggin Committed by Michael Ellerman

powerpc/64s/exception: shuffle windup code around

Restore all SPRs and CR up-front, these are longer latency
instructions. Move register restore around to maximise pairs of
adjacent loads (e.g., restore r0 next to r1).
Signed-off-by: default avatarNicholas Piggin <npiggin@gmail.com>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
parent 67d4160a
...@@ -917,13 +917,11 @@ EXC_COMMON_BEGIN(system_reset_common) ...@@ -917,13 +917,11 @@ EXC_COMMON_BEGIN(system_reset_common)
mtxer r9 mtxer r9
ld r9,_LINK(r1) ld r9,_LINK(r1)
mtlr r9 mtlr r9
REST_GPR(0, r1) ld r9,_CCR(r1)
mtcr r9
REST_8GPRS(2, r1) REST_8GPRS(2, r1)
REST_GPR(10, r1) REST_4GPRS(10, r1)
ld r11,_CCR(r1) REST_GPR(0, r1)
mtcr r11
REST_GPR(11, r1)
REST_2GPRS(12, r1)
/* restore original r1. */ /* restore original r1. */
ld r1,GPR1(r1) ld r1,GPR1(r1)
RFI_TO_USER_OR_KERNEL RFI_TO_USER_OR_KERNEL
...@@ -1095,13 +1093,11 @@ EXC_COMMON_BEGIN(machine_check_common) ...@@ -1095,13 +1093,11 @@ EXC_COMMON_BEGIN(machine_check_common)
mtxer r9; \ mtxer r9; \
ld r9,_LINK(r1); \ ld r9,_LINK(r1); \
mtlr r9; \ mtlr r9; \
REST_GPR(0, r1); \ ld r9,_CCR(r1); \
mtcr r9; \
REST_8GPRS(2, r1); \ REST_8GPRS(2, r1); \
REST_GPR(10, r1); \ REST_4GPRS(10, r1); \
ld r11,_CCR(r1); \ REST_GPR(0, r1); \
mtcr r11; \
REST_GPR(11, r1); \
REST_2GPRS(12, r1); \
/* restore original r1. */ \ /* restore original r1. */ \
ld r1,GPR1(r1) ld r1,GPR1(r1)
...@@ -1795,13 +1791,11 @@ TRAMP_REAL_BEGIN(hmi_exception_early) ...@@ -1795,13 +1791,11 @@ TRAMP_REAL_BEGIN(hmi_exception_early)
mtxer r9 mtxer r9
ld r9,_LINK(r1) ld r9,_LINK(r1)
mtlr r9 mtlr r9
REST_GPR(0, r1) ld r9,_CCR(r1)
mtcr r9
REST_8GPRS(2, r1) REST_8GPRS(2, r1)
REST_GPR(10, r1) REST_4GPRS(10, r1)
ld r11,_CCR(r1) REST_GPR(0, r1)
REST_2GPRS(12, r1)
mtcr r11
REST_GPR(11, r1)
ld r1,GPR1(r1) ld r1,GPR1(r1)
HRFI_TO_USER_OR_KERNEL HRFI_TO_USER_OR_KERNEL
...@@ -1816,13 +1810,11 @@ TRAMP_REAL_BEGIN(hmi_exception_early) ...@@ -1816,13 +1810,11 @@ TRAMP_REAL_BEGIN(hmi_exception_early)
mtxer r9 mtxer r9
ld r9,_LINK(r1) ld r9,_LINK(r1)
mtlr r9 mtlr r9
REST_GPR(0, r1) ld r9,_CCR(r1)
mtcr r9
REST_8GPRS(2, r1) REST_8GPRS(2, r1)
REST_GPR(10, r1) REST_4GPRS(10, r1)
ld r11,_CCR(r1) REST_GPR(0, r1)
REST_2GPRS(12, r1)
mtcr r11
REST_GPR(11, r1)
ld r1,GPR1(r1) ld r1,GPR1(r1)
/* /*
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment