Message ID | 20210908081937.77254-5-yang.zhong@intel.com |
---|---|
State | New |
Headers | show |
Series | The HMP/QMP interfaces in Qemu SGX | expand |
On 9/8/21 10:19 AM, Yang Zhong wrote: > The Qemu should enable bit mask macro like Linux did in the > kernel, the GENMASK(h, l) and GENMASK_ULL(h, l) will set the > bit to 1 from l to h bit in the 32 bit or 64 bit long type. > > Signed-off-by: Yang Zhong <yang.zhong@intel.com> > --- > include/qemu/bitops.h | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/include/qemu/bitops.h b/include/qemu/bitops.h > index 03213ce952..04dec60670 100644 > --- a/include/qemu/bitops.h > +++ b/include/qemu/bitops.h > @@ -18,6 +18,7 @@ > > #define BITS_PER_BYTE CHAR_BIT > #define BITS_PER_LONG (sizeof (unsigned long) * BITS_PER_BYTE) > +#define BITS_PER_LONG_LONG 64 > > #define BIT(nr) (1UL << (nr)) > #define BIT_ULL(nr) (1ULL << (nr)) > @@ -28,6 +29,12 @@ > #define MAKE_64BIT_MASK(shift, length) \ > (((~0ULL) >> (64 - (length))) << (shift)) > > +#define GENMASK(h, l) \ > + (((~0UL) << (l)) & (~0UL >> (BITS_PER_LONG - 1 - (h)))) > + > +#define GENMASK_ULL(h, l) \ > + (((~0ULL) << (l)) & (~0ULL >> (BITS_PER_LONG_LONG - 1 - (h)))) What is the difference with MAKE_64BIT_MASK()??
On Wed, Sep 08, 2021 at 10:34:39AM +0200, Philippe Mathieu-Daudé wrote: > On 9/8/21 10:19 AM, Yang Zhong wrote: > > The Qemu should enable bit mask macro like Linux did in the > > kernel, the GENMASK(h, l) and GENMASK_ULL(h, l) will set the > > bit to 1 from l to h bit in the 32 bit or 64 bit long type. > > > > Signed-off-by: Yang Zhong <yang.zhong@intel.com> > > --- > > include/qemu/bitops.h | 7 +++++++ > > 1 file changed, 7 insertions(+) > > > > diff --git a/include/qemu/bitops.h b/include/qemu/bitops.h > > index 03213ce952..04dec60670 100644 > > --- a/include/qemu/bitops.h > > +++ b/include/qemu/bitops.h > > @@ -18,6 +18,7 @@ > > > > #define BITS_PER_BYTE CHAR_BIT > > #define BITS_PER_LONG (sizeof (unsigned long) * BITS_PER_BYTE) > > +#define BITS_PER_LONG_LONG 64 > > > > #define BIT(nr) (1UL << (nr)) > > #define BIT_ULL(nr) (1ULL << (nr)) > > @@ -28,6 +29,12 @@ > > #define MAKE_64BIT_MASK(shift, length) \ > > (((~0ULL) >> (64 - (length))) << (shift)) > > > > +#define GENMASK(h, l) \ > > + (((~0UL) << (l)) & (~0UL >> (BITS_PER_LONG - 1 - (h)))) > > + > > +#define GENMASK_ULL(h, l) \ > > + (((~0ULL) << (l)) & (~0ULL >> (BITS_PER_LONG_LONG - 1 - (h)))) > > What is the difference with MAKE_64BIT_MASK()?? Philippe, thanks for comments, i will use MAKE_64BIT_MASK() to replace GENMASK_ULL(), and at the same time, this patch will be dropped, thanks! Yang
diff --git a/include/qemu/bitops.h b/include/qemu/bitops.h index 03213ce952..04dec60670 100644 --- a/include/qemu/bitops.h +++ b/include/qemu/bitops.h @@ -18,6 +18,7 @@ #define BITS_PER_BYTE CHAR_BIT #define BITS_PER_LONG (sizeof (unsigned long) * BITS_PER_BYTE) +#define BITS_PER_LONG_LONG 64 #define BIT(nr) (1UL << (nr)) #define BIT_ULL(nr) (1ULL << (nr)) @@ -28,6 +29,12 @@ #define MAKE_64BIT_MASK(shift, length) \ (((~0ULL) >> (64 - (length))) << (shift)) +#define GENMASK(h, l) \ + (((~0UL) << (l)) & (~0UL >> (BITS_PER_LONG - 1 - (h)))) + +#define GENMASK_ULL(h, l) \ + (((~0ULL) << (l)) & (~0ULL >> (BITS_PER_LONG_LONG - 1 - (h)))) + /** * set_bit - Set a bit in memory * @nr: the bit to set
The Qemu should enable bit mask macro like Linux did in the kernel, the GENMASK(h, l) and GENMASK_ULL(h, l) will set the bit to 1 from l to h bit in the 32 bit or 64 bit long type. Signed-off-by: Yang Zhong <yang.zhong@intel.com> --- include/qemu/bitops.h | 7 +++++++ 1 file changed, 7 insertions(+)