Messages in this thread | | | Date | Thu, 28 Jul 2011 15:44:16 +0200 | From | Borislav Petkov <> | Subject | Re: [PATCH] x86, AMD: Correct F15h IC aliasing issue |
| |
On Wed, Jul 27, 2011 at 01:16:04PM -0400, H. Peter Anvin wrote: > > + * Create a contiguous bitmask starting at bit position @lo and ending at > > + * position @hi. For example > > + * > > + * GENMASK_ULL(21, 39) gives us the 64bit vector 0x000000ffffe00000. > > + */ > > +#define _GENMASK_T(cast, type, lo, hi) \ > > + (((cast)(1##type << ((hi) - (lo) + 1)) - 1) << (lo)) > > +#define GENMASK(lo, hi) _GENMASK_T(unsigned, U, lo, hi) > > +#define GENMASK_UL(lo, hi) _GENMASK_T(unsigned long, UL, lo, hi) > > +#define GENMASK_ULL(lo, hi) _GENMASK_T(unsigned long long, ULL, lo, hi) > > + > > These really need to be usable from assembly language, too (in which > case you of course need to not have the cast and suffix), so it probably > should be defined in <linux/const.h> with the other constant macros.
How about that:
#define _GENMASK_T(cast, type, lo, hi) \ ((_AT(cast, (_AC(1,type) << ((hi) - (lo) + 1))) - 1) << (lo)) #define GENMASK(lo, hi) _GENMASK_T(unsigned, U, lo, hi) #define GENMASK_UL(lo, hi) _GENMASK_T(unsigned long, UL, lo, hi) #define GENMASK_ULL(lo, hi) _GENMASK_T(unsigned long long, ULL, lo, hi)
outside of __KERNEL__ scope?
-- Regards/Gruss, Boris.
Advanced Micro Devices GmbH Einsteinring 24, 85609 Dornach GM: Alberto Bozzo Reg: Dornach, Landkreis Muenchen HRB Nr. 43632 WEEE Registernr: 129 19551
| |