On Sun, 17 Apr 2022 at 19:03, Richard Henderson <richard.hender...@linaro.org> wrote: > > Instead of defining ARM_CP_FLAG_MASK to remove flags, > define ARM_CP_SPECIAL_MASK to isolate special cases. > Sort the specials to the low bits. Use an enum. > > Make ARM_CP_CONST a special case, and ARM_CP_NOP an alias.
This is a behaviour change -- read of an ARM_CP_NOP register currently is "do not change the destination GPR", but read of an ARM_CP_CONST register does change the GPR. Maybe that's OK, but we do have several r/w NOP register definitions at the moment, and if we do think it's OK to change that behaviour we should do that carefully in a separate patch. Also, currently we do not migrate ARM_CP_NOP registers but we do migrate ARM_CP_CONST registers (and this is important for KVM --migrating the constant ID registers is how the check for "is the destination a different host CPU to the source" works). So overall I don't think it's safe to squash NOP and CONST, or to treat CONST as one of the SPECIALs. thanks -- PMM