xref: /openbsd-src/sys/dev/pci/drm/include/linux/bitfield.h (revision ad8b1aafbcc34f7eb86e4ebfd874be286017954b)
1c349dbc7Sjsg /* Public domain. */
2c349dbc7Sjsg 
3c349dbc7Sjsg #ifndef _LINUX_BITFIELD_H
4c349dbc7Sjsg #define _LINUX_BITFIELD_H
5c349dbc7Sjsg 
6c349dbc7Sjsg #include <asm/byteorder.h>
7*ad8b1aafSjsg #include <linux/build_bug.h>
8c349dbc7Sjsg 
9c349dbc7Sjsg #define __bf_shf(x) (__builtin_ffsll(x) - 1)
10c349dbc7Sjsg 
11c349dbc7Sjsg #define FIELD_GET(_m, _v) \
12c349dbc7Sjsg     ((typeof(_m))(((_v) & (_m)) >> __bf_shf(_m)))
13c349dbc7Sjsg 
14c349dbc7Sjsg #define FIELD_PREP(_m, _v) \
15c349dbc7Sjsg     (((typeof(_m))(_v) << __bf_shf(_m)) & (_m))
16c349dbc7Sjsg 
17c349dbc7Sjsg #endif
18