SMC calls may modify registers x0 to x3. To make sure the compiler doesn't assume input registers to be constant, also mark these registers as output when used as input.
Signed-off-by: Oliver Schwartz <[email protected]> --- hypervisor/arch/arm64/include/asm/smc.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/hypervisor/arch/arm64/include/asm/smc.h b/hypervisor/arch/arm64/include/asm/smc.h index 1a5d5c8..e7b6723 100644 --- a/hypervisor/arch/arm64/include/asm/smc.h +++ b/hypervisor/arch/arm64/include/asm/smc.h @@ -28,7 +28,7 @@ static inline long smc_arg1(unsigned long id, unsigned long par1) register unsigned long __par1 asm("r1") = par1; asm volatile ("smc #0\n\t" - : "=r" (__id) + : "=r" (__id), "=r"(__par1) : "r"(__id), "r"(__par1) : "memory", "x2", "x3"); @@ -43,7 +43,7 @@ static inline long smc_arg2(unsigned long id, unsigned long par1, register unsigned long __par2 asm("r2") = par2; asm volatile ("smc #0\n\t" - : "=r" (__id) + : "=r" (__id), "=r"(__par1), "=r"(__par2) : "r"(__id), "r"(__par1), "r"(__par2) : "memory", "x3"); @@ -62,7 +62,7 @@ static inline long smc_arg5(unsigned long id, unsigned long par1, register unsigned long __par5 asm("r5") = par5; asm volatile ("smc #0\n\t" - : "=r" (__id) + : "=r" (__id), "=r"(__par1), "=r"(__par2), "=r"(__par3) : "r"(__id), "r"(__par1), "r"(__par2), "r"(__par3), "r"(__par4), "r"(__par5) : "memory"); -- 2.7.4 -- You received this message because you are subscribed to the Google Groups "Jailhouse" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/jailhouse-dev/6B88A347-1633-47E4-A3CF-DC37738FED1E%40gmx.de.
