powerpc/64s/exception: simplify hmi windup code

Duplicate the hmi windup code for both cases, rather than to put a
special case branch in the middle of it. Remove unused label. This
helps with later code consolidation.

Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
This commit is contained in:
Nicholas Piggin 2019-06-28 15:33:25 +10:00 коммит произвёл Michael Ellerman
Родитель ad73d8d4f4
Коммит 67d4160a61
1 изменённых файлов: 18 добавлений и 4 удалений

Просмотреть файл

@ -1781,6 +1781,7 @@ TRAMP_REAL_BEGIN(hmi_exception_early)
addi r3,r1,STACK_FRAME_OVERHEAD addi r3,r1,STACK_FRAME_OVERHEAD
BRANCH_LINK_TO_FAR(DOTSYM(hmi_exception_realmode)) /* Function call ABI */ BRANCH_LINK_TO_FAR(DOTSYM(hmi_exception_realmode)) /* Function call ABI */
cmpdi cr0,r3,0 cmpdi cr0,r3,0
bne 1f
/* Windup the stack. */ /* Windup the stack. */
/* Move original HSRR0 and HSRR1 into the respective regs */ /* Move original HSRR0 and HSRR1 into the respective regs */
@ -1799,13 +1800,28 @@ TRAMP_REAL_BEGIN(hmi_exception_early)
REST_GPR(10, r1) REST_GPR(10, r1)
ld r11,_CCR(r1) ld r11,_CCR(r1)
REST_2GPRS(12, r1) REST_2GPRS(12, r1)
bne 1f
mtcr r11 mtcr r11
REST_GPR(11, r1) REST_GPR(11, r1)
ld r1,GPR1(r1) ld r1,GPR1(r1)
HRFI_TO_USER_OR_KERNEL HRFI_TO_USER_OR_KERNEL
1: mtcr r11 1:
ld r9,_MSR(r1)
mtspr SPRN_HSRR1,r9
ld r9,_NIP(r1)
mtspr SPRN_HSRR0,r9
ld r9,_CTR(r1)
mtctr r9
ld r9,_XER(r1)
mtxer r9
ld r9,_LINK(r1)
mtlr r9
REST_GPR(0, r1)
REST_8GPRS(2, r1)
REST_GPR(10, r1)
ld r11,_CCR(r1)
REST_2GPRS(12, r1)
mtcr r11
REST_GPR(11, r1) REST_GPR(11, r1)
ld r1,GPR1(r1) ld r1,GPR1(r1)
@ -1813,8 +1829,6 @@ TRAMP_REAL_BEGIN(hmi_exception_early)
* Go to virtual mode and pull the HMI event information from * Go to virtual mode and pull the HMI event information from
* firmware. * firmware.
*/ */
.globl hmi_exception_after_realmode
hmi_exception_after_realmode:
SET_SCRATCH0(r13) SET_SCRATCH0(r13)
EXCEPTION_PROLOG_0 PACA_EXGEN EXCEPTION_PROLOG_0 PACA_EXGEN
b tramp_real_hmi_exception b tramp_real_hmi_exception