[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [RFC 03/16] xen/arm: Add macros to handle the MIDR



On Thu, 5 May 2016, Julien Grall wrote:
> Add new macros to easily get different parts of the register and to
> check if a given MIDR match a CPU model range. The latter will be really
> useful to handle errata later.
> 
> The macros have been imported from the header arch64/include/asm/cputype.h
                                                 ^ arch/arm64

Aside from this:

Acked-by: Stefano Stabellini <sstabellini@xxxxxxxxxx>


> in Linux v4.6-rc3
> 
> Also remove MIDR_MASK which is unused.
> 
> Signed-off-by: Julien Grall <julien.grall@xxxxxxx>
> ---
>  xen/include/asm-arm/processor.h | 35 ++++++++++++++++++++++++++++++++++-
>  1 file changed, 34 insertions(+), 1 deletion(-)
> 
> diff --git a/xen/include/asm-arm/processor.h b/xen/include/asm-arm/processor.h
> index 6789cd0..1b701c5 100644
> --- a/xen/include/asm-arm/processor.h
> +++ b/xen/include/asm-arm/processor.h
> @@ -9,7 +9,40 @@
>  #include <public/arch-arm.h>
>  
>  /* MIDR Main ID Register */
> -#define MIDR_MASK    0xff0ffff0
> +#define MIDR_REVISION_MASK      0xf
> +#define MIDR_RESIVION(midr)     ((midr) & MIDR_REVISION_MASK)
> +#define MIDR_PARTNUM_SHIFT      4
> +#define MIDR_PARTNUM_MASK       (0xfff << MIDR_PARTNUM_SHIFT)
> +#define MIDR_PARTNUM(midr) \
> +    (((midr) & MIDR_PARTNUM_MASK) >> MIDR_PARTNUM_SHIFT)
> +#define MIDR_ARCHITECTURE_SHIFT 16
> +#define MIDR_ARCHITECTURE_MASK  (0xf << MIDR_ARCHITECTURE_SHIFT)
> +#define MIDR_ARCHITECTURE(midr) \
> +    (((midr) & MIDR_ARCHITECTURE_MASK) >> MIDR_ARCHITECTURE_SHIFT)
> +#define MIDR_VARIANT_SHIFT      20
> +#define MIDR_VARIANT_MASK       (0xf << MIDR_VARIANT_SHIFT)
> +#define MIDR_VARIANT(midr) \
> +    (((midr) & MIDR_VARIANT_MASK) >> MIDR_VARIANT_SHIFT)
> +#define MIDR_IMPLEMENTOR_SHIFT  24
> +#define MIDR_IMPLEMENTOR_MASK   (0xff << MIDR_IMPLEMENTOR_SHIFT)
> +#define MIDR_IMPLEMENTOR(midr) \
> +    (((midr) & MIDR_IMPLEMENTOR_MASK) >> MIDR_IMPLEMENTOR_SHIFT)
> +
> +#define MIDR_CPU_MODEL(imp, partnum)            \
> +    (((imp)     << MIDR_IMPLEMENTOR_SHIFT) |    \
> +     (0xf       << MIDR_ARCHITECTURE_SHIFT) |   \
> +     ((partnum) << MIDR_PARTNUM_SHIFT))
> +
> +#define MIDR_CPU_MODEL_MASK \
> +     (MIDR_IMPLEMENTOR_MASK | MIDR_PARTNUM_MASK | MIDR_ARCHITECTURE_MASK)
> +
> +#define MIDR_IS_CPU_MODEL_RANGE(midr, model, rv_min, rv_max)            \
> +({                                                                      \
> +        u32 _model = (midr) & MIDR_CPU_MODEL_MASK;                      \
> +        u32 _rv = (midr) & (MIDR_REVISION_MASK | MIDR_VARIANT_MASK);    \
> +                                                                        \
> +        _model == (model) && _rv >= (rv_min) && _rv <= (rv_max);        \
> +})
>  
>  /* MPIDR Multiprocessor Affinity Register */
>  #define _MPIDR_UP           (30)
> -- 
> 1.9.1
> 

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.