mirror of
https://github.com/yuzu-emu/unicorn.git
synced 2025-01-11 09:15:38 +00:00
target/arm: Handle SFPA and FPCA bits in reads and writes of CONTROL
The M-profile CONTROL register has two bits -- SFPA and FPCA -- which relate to floating-point support, and should be RES0 otherwise. Handle them correctly in the MSR/MRS register access code. Neither is banked between security states, so they are stored in v7m.control[M_REG_S] regardless of current security state. Backports commit 2e1c5bcd32014c9ede1b604ae6c2c653de17fc53 from qemu
This commit is contained in:
parent
c0cebeb5b5
commit
05add081a3
|
@ -11838,7 +11838,14 @@ uint32_t HELPER(v7m_mrs)(CPUARMState *env, uint32_t reg)
|
|||
return xpsr_read(env) & mask;
|
||||
break;
|
||||
case 20: /* CONTROL */
|
||||
return env->v7m.control[env->v7m.secure];
|
||||
{
|
||||
uint32_t value = env->v7m.control[env->v7m.secure];
|
||||
if (!env->v7m.secure) {
|
||||
/* SFPA is RAZ/WI from NS; FPCA is stored in the M_REG_S bank */
|
||||
value |= env->v7m.control[M_REG_S] & R_V7M_CONTROL_FPCA_MASK;
|
||||
}
|
||||
return value;
|
||||
}
|
||||
case 0x94: /* CONTROL_NS */
|
||||
/* We have to handle this here because unprivileged Secure code
|
||||
* can read the NS CONTROL register.
|
||||
|
|
Loading…
Reference in a new issue