powerpc/64s/exception: KVM handler can set the HSRR trap bit
Move the KVM trap HSRR bit into the KVM handler, which can be conditionally applied when hsrr parameter is set. No generated code change. Signed-off-by: Nicholas Piggin <npiggin@gmail.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
This commit is contained in:
Родитель
17bdc064a1
Коммит
c0c6cd156c
|
@ -454,7 +454,12 @@ END_FTR_SECTION_NESTED(ftr,ftr,943)
|
|||
ld r10,\area+EX_R10(r13)
|
||||
std r12,HSTATE_SCRATCH0(r13)
|
||||
sldi r12,r9,32
|
||||
/* HSRR variants have the 0x2 bit added to their trap number */
|
||||
.if \hsrr
|
||||
ori r12,r12,(\n + 0x2)
|
||||
.else
|
||||
ori r12,r12,(\n)
|
||||
.endif
|
||||
/* This reloads r9 before branching to kvmppc_interrupt */
|
||||
__BRANCH_TO_KVM_EXIT(\area, kvmppc_interrupt)
|
||||
|
||||
|
|
|
@ -393,16 +393,13 @@ name:
|
|||
TRAMP_KVM_BEGIN(do_kvm_##n); \
|
||||
KVM_HANDLER area, EXC_STD, n, 1
|
||||
|
||||
/*
|
||||
* HV variant exceptions get the 0x2 bit added to their trap number.
|
||||
*/
|
||||
#define TRAMP_KVM_HV(area, n) \
|
||||
TRAMP_KVM_BEGIN(do_kvm_H##n); \
|
||||
KVM_HANDLER area, EXC_HV, n + 0x2, 0
|
||||
KVM_HANDLER area, EXC_HV, n, 0
|
||||
|
||||
#define TRAMP_KVM_HV_SKIP(area, n) \
|
||||
TRAMP_KVM_BEGIN(do_kvm_H##n); \
|
||||
KVM_HANDLER area, EXC_HV, n + 0x2, 1
|
||||
KVM_HANDLER area, EXC_HV, n, 1
|
||||
|
||||
#define EXC_COMMON(name, realvec, hdlr) \
|
||||
EXC_COMMON_BEGIN(name); \
|
||||
|
|
Загрузка…
Ссылка в новой задаче