arm/arm64: smccc: Make function identifiers an unsigned quantity

Function identifiers are a 32bit, unsigned quantity. But we never
tell so to the compiler, resulting in the following:

 4ac:   b26187e0        mov     x0, #0xffffffff80000001

We thus rely on the firmware narrowing it for us, which is not
always a reasonable expectation.

Cc: stable@vger.kernel.org
Reported-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Acked-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Reviewed-by: Robin Murphy <robin.murphy@arm.com>
Tested-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
This commit is contained in:
Marc Zyngier
2018-02-06 17:56:18 +00:00
committed by Catalin Marinas
parent e78eef554a
commit ded4c39e93

View File

@@ -14,14 +14,16 @@
#ifndef __LINUX_ARM_SMCCC_H #ifndef __LINUX_ARM_SMCCC_H
#define __LINUX_ARM_SMCCC_H #define __LINUX_ARM_SMCCC_H
#include <uapi/linux/const.h>
/* /*
* This file provides common defines for ARM SMC Calling Convention as * This file provides common defines for ARM SMC Calling Convention as
* specified in * specified in
* http://infocenter.arm.com/help/topic/com.arm.doc.den0028a/index.html * http://infocenter.arm.com/help/topic/com.arm.doc.den0028a/index.html
*/ */
#define ARM_SMCCC_STD_CALL 0 #define ARM_SMCCC_STD_CALL _AC(0,U)
#define ARM_SMCCC_FAST_CALL 1 #define ARM_SMCCC_FAST_CALL _AC(1,U)
#define ARM_SMCCC_TYPE_SHIFT 31 #define ARM_SMCCC_TYPE_SHIFT 31
#define ARM_SMCCC_SMC_32 0 #define ARM_SMCCC_SMC_32 0