>> >> diff --git a/target/ppc/cpu.h b/target/ppc/cpu.h >> index 370b05e76ede..894fb76fabe1 100644 >> --- a/target/ppc/cpu.h >> +++ b/target/ppc/cpu.h >> @@ -93,6 +93,12 @@ >> #define PPC_BITMASK(bs, be) ((PPC_BIT(bs) - PPC_BIT(be)) | PPC_BIT(bs)) >> #define PPC_BITMASK32(bs, be) ((PPC_BIT32(bs) - PPC_BIT32(be)) | \ >> PPC_BIT32(bs)) >> +#define PPC_BITMASK8(bs, be) ((PPC_BIT8(bs) - PPC_BIT8(be)) | >> PPC_BIT8(bs)) >> + >> +#define MASK_TO_LSH(m) (__builtin_ffsl(m) - 1)
This macro does not work on 32bits, we would need to use '__builtin_ffsll'. I will send a v2. C. >> +#define GETFIELD(m, v) (((v) & (m)) >> MASK_TO_LSH(m)) >> +#define SETFIELD(m, v, val) \ >> + (((v) & ~(m)) | ((((typeof(v))(val)) << MASK_TO_LSH(m)) & (m)))
