Message ID | 20180215150248.28922-8-julien.grall@arm.com |
---|---|
State | Superseded |
Headers | show |
Series | xen/arm: PSCI 1.1 and SMCCC-1.1 support and XSA-254 variant 2 update | expand |
On Thu, 15 Feb 2018, Julien Grall wrote: > Add macros SMCCC_VERSION, SMCCC_VERSION_{MINOR, MAJOR} to easily convert > between a 32-bit value and a version number. The encoding is based on > 2.2.2 in "Firmware interfaces for mitigation CVE-2017-5715" (ARM DEN 0070A). > > Also re-use them to define ARM_SMCCC_VERSION_1_0 and ARM_SMCCC_VERSION_1_1. > > Signed-off-by: Julien Grall <julien.grall@arm.com> > Reviewed-by: Volodymyr Babchuk <volodymyr_babchuk@epam.com> Acked-by: Stefano Stabellini <sstabellini@kernel.org> > --- > Changes in v3: > - Add Volodymyr's reviewed-by > > Changes in v2: > - Patch added > --- > xen/include/asm-arm/smccc.h | 16 ++++++++++++++-- > 1 file changed, 14 insertions(+), 2 deletions(-) > > diff --git a/xen/include/asm-arm/smccc.h b/xen/include/asm-arm/smccc.h > index 30208d12ca..d0240d64bf 100644 > --- a/xen/include/asm-arm/smccc.h > +++ b/xen/include/asm-arm/smccc.h > @@ -16,8 +16,20 @@ > #ifndef __ASM_ARM_SMCCC_H__ > #define __ASM_ARM_SMCCC_H__ > > -#define ARM_SMCCC_VERSION_1_0 0x10000 > -#define ARM_SMCCC_VERSION_1_1 0x10001 > +#define SMCCC_VERSION_MAJOR_SHIFT 16 > +#define SMCCC_VERSION_MINOR_MASK \ > + ((1U << SMCCC_VERSION_MAJOR_SHIFT) - 1) > +#define SMCCC_VERSION_MAJOR_MASK ~SMCCC_VERSION_MINOR_MASK > +#define SMCCC_VERSION_MAJOR(ver) \ > + (((ver) & SMCCC_VERSION_MAJOR_MASK) >> SMCCC_VERSION_MAJOR_SHIFT) > +#define SMCCC_VERSION_MINOR(ver) \ > + ((ver) & SMCCC_VERSION_MINOR_MASK) > + > +#define SMCCC_VERSION(major, minor) \ > + (((major) << SMCCC_VERSION_MAJOR_SHIFT) | (minor)) > + > +#define ARM_SMCCC_VERSION_1_0 SMCCC_VERSION(1, 0) > +#define ARM_SMCCC_VERSION_1_1 SMCCC_VERSION(1, 1) > > /* > * This file provides common defines for ARM SMC Calling Convention as > -- > 2.11.0 >
diff --git a/xen/include/asm-arm/smccc.h b/xen/include/asm-arm/smccc.h index 30208d12ca..d0240d64bf 100644 --- a/xen/include/asm-arm/smccc.h +++ b/xen/include/asm-arm/smccc.h @@ -16,8 +16,20 @@ #ifndef __ASM_ARM_SMCCC_H__ #define __ASM_ARM_SMCCC_H__ -#define ARM_SMCCC_VERSION_1_0 0x10000 -#define ARM_SMCCC_VERSION_1_1 0x10001 +#define SMCCC_VERSION_MAJOR_SHIFT 16 +#define SMCCC_VERSION_MINOR_MASK \ + ((1U << SMCCC_VERSION_MAJOR_SHIFT) - 1) +#define SMCCC_VERSION_MAJOR_MASK ~SMCCC_VERSION_MINOR_MASK +#define SMCCC_VERSION_MAJOR(ver) \ + (((ver) & SMCCC_VERSION_MAJOR_MASK) >> SMCCC_VERSION_MAJOR_SHIFT) +#define SMCCC_VERSION_MINOR(ver) \ + ((ver) & SMCCC_VERSION_MINOR_MASK) + +#define SMCCC_VERSION(major, minor) \ + (((major) << SMCCC_VERSION_MAJOR_SHIFT) | (minor)) + +#define ARM_SMCCC_VERSION_1_0 SMCCC_VERSION(1, 0) +#define ARM_SMCCC_VERSION_1_1 SMCCC_VERSION(1, 1) /* * This file provides common defines for ARM SMC Calling Convention as