On 08/22/2017 08:08 AM, Peter Maydell wrote: > + if (attrs.secure) { > + /* the BFHFNMIGN bit is not banked; keep that in the NS copy */ > + int new_bfhnmign = !!(value & R_V7M_CCR_BFHFNMIGN_MASK); > + > + cpu->env.v7m.ccr[M_REG_NS] = > deposit32(cpu->env.v7m.ccr[M_REG_NS], > + > R_V7M_CCR_BFHFNMIGN_SHIFT, > + > R_V7M_CCR_BFHFNMIGN_LENGTH, > + new_bfhnmign); > + value &= ~R_V7M_CCR_BFHFNMIGN_MASK; > + }
No need to extract and then redeposit, just use the mask. cpu->env.v7m.ccr[M_REG_NS] = (cpu->env.v7m.ccr[M_REG_NS] & ~R_V7M_CCR_BFHFNMIGN_MASK) | (value & R_V7M_CCR_BFHFNMIGN_MASK); r~