intel/eu: Define SET_BITS helper more easily reusable than SET_FIELD.
Allows to specify a bitfield based on its upper and lower bounds instead of a symbolic field definition, kind of what the current GET_BITS macro is to GET_FIELD. Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
@@ -46,6 +46,13 @@
|
|||||||
fieldval & field ## _MASK; \
|
fieldval & field ## _MASK; \
|
||||||
})
|
})
|
||||||
|
|
||||||
|
#define SET_BITS(value, high, low) \
|
||||||
|
({ \
|
||||||
|
const uint32_t fieldval = (value) << (low); \
|
||||||
|
assert((fieldval & ~INTEL_MASK(high, low)) == 0); \
|
||||||
|
fieldval & INTEL_MASK(high, low); \
|
||||||
|
})
|
||||||
|
|
||||||
#define GET_BITS(data, high, low) ((data & INTEL_MASK((high), (low))) >> (low))
|
#define GET_BITS(data, high, low) ((data & INTEL_MASK((high), (low))) >> (low))
|
||||||
#define GET_FIELD(word, field) (((word) & field ## _MASK) >> field ## _SHIFT)
|
#define GET_FIELD(word, field) (((word) & field ## _MASK) >> field ## _SHIFT)
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user