From: Julien Grall Date: Thu, 16 May 2019 22:31:46 +0000 (+0100) Subject: xen/arm: vsmc: The function identifier is always 32-bit X-Git-Tag: archive/raspbian/4.14.0+80-gd101b417b7-1+rpi1^2~63^2~1799 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=7f4217cc60574866cb90d67d9750228c6b86c91e;p=xen.git xen/arm: vsmc: The function identifier is always 32-bit On Arm64, the SMCCC function identifier is always stored in the first 32-bit of x0 register. The rest of the bits are not defined and should be ignored. This means the variable funcid should be an uint32_t rather than register_t. Signed-off-by: Julien Grall Reviewed-by: Volodymyr Babchuk Reviewed-by: Stefano Stabellini --- diff --git a/xen/arch/arm/vsmc.c b/xen/arch/arm/vsmc.c index f8e350311d..a36db15fff 100644 --- a/xen/arch/arm/vsmc.c +++ b/xen/arch/arm/vsmc.c @@ -220,7 +220,7 @@ static bool vsmccc_handle_call(struct cpu_user_regs *regs) { bool handled = false; const union hsr hsr = { .bits = regs->hsr }; - register_t funcid = get_user_reg(regs, 0); + uint32_t funcid = get_user_reg(regs, 0); /* * Check immediate value for HVC32, HVC64 and SMC64. @@ -286,7 +286,7 @@ static bool vsmccc_handle_call(struct cpu_user_regs *regs) if ( !handled ) { - gprintk(XENLOG_INFO, "Unhandled SMC/HVC: %08"PRIregister"\n", funcid); + gprintk(XENLOG_INFO, "Unhandled SMC/HVC: %#x\n", funcid); /* Inform caller that function is not supported. */ set_user_reg(regs, 0, ARM_SMCCC_ERR_UNKNOWN_FUNCTION);