Hi Gavin, On Tue, Mar 22, 2022 at 04:06:49PM +0800, Gavin Shan wrote: > The inline functions used to get the SMCCC parameters have same > layout. It means these functions can be presented by an unified > template, to make the code simplified. Besides, this adds more > similar inline functions like smccc_get_arg{4,5,6,7,8}() to get > more SMCCC arguments, which are needed by SDEI virtualization > support. > > Signed-off-by: Gavin Shan <gshan@xxxxxxxxxx> > --- > include/kvm/arm_hypercalls.h | 24 ++++++++++++------------ > 1 file changed, 12 insertions(+), 12 deletions(-) > > diff --git a/include/kvm/arm_hypercalls.h b/include/kvm/arm_hypercalls.h > index 0e2509d27910..d5144c852fe4 100644 > --- a/include/kvm/arm_hypercalls.h > +++ b/include/kvm/arm_hypercalls.h > @@ -13,20 +13,20 @@ static inline u32 smccc_get_function(struct kvm_vcpu *vcpu) > return vcpu_get_reg(vcpu, 0); > } > > -static inline unsigned long smccc_get_arg1(struct kvm_vcpu *vcpu) > -{ > - return vcpu_get_reg(vcpu, 1); > -} > - > -static inline unsigned long smccc_get_arg2(struct kvm_vcpu *vcpu) > -{ > - return vcpu_get_reg(vcpu, 2); > +#define SMCCC_DECLARE_GET_ARG(reg) \ > +static inline unsigned long smccc_get_arg##reg(struct kvm_vcpu *vcpu) \ > +{ \ > + return vcpu_get_reg(vcpu, reg); \ > } > > -static inline unsigned long smccc_get_arg3(struct kvm_vcpu *vcpu) > -{ > - return vcpu_get_reg(vcpu, 3); > -} > +SMCCC_DECLARE_GET_ARG(1) > +SMCCC_DECLARE_GET_ARG(2) > +SMCCC_DECLARE_GET_ARG(3) > +SMCCC_DECLARE_GET_ARG(4) > +SMCCC_DECLARE_GET_ARG(5) > +SMCCC_DECLARE_GET_ARG(6) > +SMCCC_DECLARE_GET_ARG(7) > +SMCCC_DECLARE_GET_ARG(8) Hmm. What if we specify a single inline function where the caller passes the arg # as a parameter? We really just want to abstract away the off-by-one difference between GP registers and SMCCC arguments. Macros generally make me uneasy for template functions, but I may be in the vocal minority on this topic :) -- Thanks, Oliver _______________________________________________ kvmarm mailing list kvmarm@xxxxxxxxxxxxxxxxxxxxx https://lists.cs.columbia.edu/mailman/listinfo/kvmarm