From: Michael Brown Date: Tue, 24 Nov 2015 17:28:23 +0000 (+0000) Subject: [bitops] Provide BIT_QWORD_PTR() X-Git-Tag: v1.20.1~658 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1fcd4223cc5bce800bf253ab34cbf2e996c9958e;p=thirdparty%2Fipxe.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 --- diff --git a/src/include/ipxe/bitops.h b/src/include/ipxe/bitops.h index 2e22c1dbc..93eb663e2 100644 --- a/src/include/ipxe/bitops.h +++ b/src/include/ipxe/bitops.h @@ -212,6 +212,13 @@ typedef unsigned char pseudo_bit_t; BIT_ASSEMBLE_6 ( _ptr, QWORD_OFFSET ( _ptr, _field1 ), \ _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 */ #define BIT_GET64( _ptr, _field ) \ ( { \