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