[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH] target/arm: Fix handling of cortex-m FTYPE flag in EXCRET
From: |
Peter Maydell |
Subject: |
Re: [PATCH] target/arm: Fix handling of cortex-m FTYPE flag in EXCRET |
Date: |
Thu, 21 Nov 2019 13:22:54 +0000 |
On Thu, 21 Nov 2019 at 01:44, Jean-Hugues DeschĂȘnes
<address@hidden> wrote:
>
> According to the PushStack() pseudocode in the armv7m RM,
> bit 4 of the LR should be set to NOT(CONTROL.PFCA) when
> an FPU is present. Current implementation is doing it for
> armv8, but not for armv7. This patch makes the existing
> logic applicable to both code paths.
>
> Signed-off-by: Jean-Hugues Deschenes <address@hidden>
> ---
> target/arm/m_helper.c | 7 +++----
> 1 file changed, 3 insertions(+), 4 deletions(-)
>
> diff --git a/target/arm/m_helper.c b/target/arm/m_helper.c
> index f2512e448e..595c49fe2a 100644
> --- a/target/arm/m_helper.c
> +++ b/target/arm/m_helper.c
> @@ -2173,19 +2173,18 @@ void arm_v7m_cpu_do_interrupt(CPUState *cs)
> if (env->v7m.secure) {
> lr |= R_V7M_EXCRET_S_MASK;
> }
> - if (!(env->v7m.control[M_REG_S] & R_V7M_CONTROL_FPCA_MASK)) {
> - lr |= R_V7M_EXCRET_FTYPE_MASK;
> - }
> } else {
> lr = R_V7M_EXCRET_RES1_MASK |
> R_V7M_EXCRET_S_MASK |
> R_V7M_EXCRET_DCRS_MASK |
> - R_V7M_EXCRET_FTYPE_MASK |
> R_V7M_EXCRET_ES_MASK;
> if (env->v7m.control[M_REG_NS] & R_V7M_CONTROL_SPSEL_MASK) {
> lr |= R_V7M_EXCRET_SPSEL_MASK;
> }
> }
> + if (!(env->v7m.control[M_REG_S] & R_V7M_CONTROL_FPCA_MASK)) {
> + lr |= R_V7M_EXCRET_FTYPE_MASK;
> + }
> if (!arm_v7m_is_handler_mode(env)) {
> lr |= R_V7M_EXCRET_MODE_MASK;
> }
> --
> 2.17.1
Thanks, applied to my target-arm.next branch for 4.2.
-- PMM
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: [PATCH] target/arm: Fix handling of cortex-m FTYPE flag in EXCRET,
Peter Maydell <=