-#define CLF_GET_BITS(_b, _h, _l) \
- _b &= (0xFFFF << (CLF_HSM_LAST - _h)); \
- _b = _b >> (_l + CLF_HSM_LAST - _h)
+/* Remove bits higher than _h, then extract the value
+ * between _h and _l by shifting lower weigth to bit 0. */
+#define CLF_GET_BITS(_b, _h, _l) (((_b << (CLF_HSM_LAST - _h)) & 0xFFFF) \
+ >> (CLF_HSM_LAST - _h + _l))