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-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=1b1609327da4aaacc6d65c2a05f2303de02da39b;p=people%2Fdwmw2%2Fxen.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 (cherry picked from commit 7f4217cc60574866cb90d67d9750228c6b86c91e) --- diff --git a/xen/arch/arm/vsmc.c b/xen/arch/arm/vsmc.c index 40a80d5760..2f1b608fbd 100644 --- a/xen/arch/arm/vsmc.c +++ b/xen/arch/arm/vsmc.c @@ -181,7 +181,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. @@ -240,7 +240,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);