mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-05 01:54:09 +08:00
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:
parent
17bdc064a1
commit
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); \
|
||||
|
Loading…
Reference in New Issue
Block a user