A 32 bit register i.e. status_reg has 1 field (field_1 <0:31>). To set and clear this register I am trying to get mask value of this register. So in general to get mask value the formula is:
mask = ((~(~0 << (hbit-lbit+1))) << lbit)
In this hbit is higher position bit i.e. 31. And lbit is lower position bit i.e.0. I am expecting mask value should be 0xFFFFFFFF. But getting mask= 0. Can anyone suggest what is the wrong with mask?
I am using 32 bit system.
It shows undefined behaviour because you are left shifting outside of range, by 32 bits.