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~