GENMASK_ULL函数

GENMASK_ULL(39, 21) 这行执行后的值等于0x000000ffffe00000,简单说就是将39和21 之间的bit置为1.对应的GENMASK 是产生32 bit的mask
源码如下:
#define GENMASK(h, l)
    (((~0UL) << (l)) & (~0UL >> (BITS_PER_LONG - 1 - (h))))

#define GENMASK_ULL(h, l)
    (((~0ULL) << (l)) & (~0ULL >> (BITS_PER_LONG_LONG - 1 - (h))))

与之对应的是可以通过下面两个宏,来移位

#define BIT(nr)            (1UL << (nr))
#define BIT_ULL(nr)        (1ULL << (nr))

posted @ 2020-04-17 14:25  蒲城小农  阅读(1401)  评论(0编辑  收藏  举报