Commit c0c6cd15 authored by Nicholas Piggin's avatar Nicholas Piggin Committed by Michael Ellerman
Browse files

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: default avatarNicholas Piggin <npiggin@gmail.com>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
parent 17bdc064
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -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)

+2 −5
Original line number Diff line number Diff line
@@ -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);						\