mirror of https://github.com/ipxe/ipxe.git
[bitops] Provide BIT_QWORD_PTR()
Provide BIT_QWORD_PTR() to allow for easy extraction of non-endian fields (e.g. Infiniband GUIDs) without unnecessary byte swapping. Signed-off-by: Michael Brown <mcb30@ipxe.org>pull/43/head
parent
89c767bfd6
commit
1fcd4223cc
|
|
@ -212,6 +212,13 @@ typedef unsigned char pseudo_bit_t;
|
||||||
BIT_ASSEMBLE_6 ( _ptr, QWORD_OFFSET ( _ptr, _field1 ), \
|
BIT_ASSEMBLE_6 ( _ptr, QWORD_OFFSET ( _ptr, _field1 ), \
|
||||||
_field1, __VA_ARGS__ ) )
|
_field1, __VA_ARGS__ ) )
|
||||||
|
|
||||||
|
#define BIT_QWORD_PTR( _ptr, _field ) \
|
||||||
|
( { \
|
||||||
|
unsigned int __index = QWORD_OFFSET ( _ptr, _field ); \
|
||||||
|
uint64_t *__ptr = &(_ptr)->u.qwords[__index]; \
|
||||||
|
__ptr; \
|
||||||
|
} )
|
||||||
|
|
||||||
/** Extract value of named field */
|
/** Extract value of named field */
|
||||||
#define BIT_GET64( _ptr, _field ) \
|
#define BIT_GET64( _ptr, _field ) \
|
||||||
( { \
|
( { \
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue