diff --git a/arch/arm/src/armv7-m/arm_fpucmp.c b/arch/arm/src/armv7-m/arm_fpucmp.c index 073e63e9703..5ddc18e89ba 100644 --- a/arch/arm/src/armv7-m/arm_fpucmp.c +++ b/arch/arm/src/armv7-m/arm_fpucmp.c @@ -53,7 +53,10 @@ bool up_fpucmp(const void *saveregs1, const void *saveregs2) const uint32_t *regs1 = saveregs1; const uint32_t *regs2 = saveregs2; - return memcmp(®s1[REG_S0], ®s2[REG_S0], 4 * HW_FPU_REGS) == 0 && + /* compare of hardware fp registers should skip REG_FP_RESERVED */ + + return memcmp(®s1[REG_S0], ®s2[REG_S0], + 4 * (HW_FPU_REGS - 1)) == 0 && memcmp(®s1[REG_S16], ®s2[REG_S16], 4 * SW_FPU_REGS) == 0; } #endif /* CONFIG_ARCH_FPU */ diff --git a/arch/arm/src/armv7-m/arm_initialstate.c b/arch/arm/src/armv7-m/arm_initialstate.c index f5af28e9ce4..a8f587b5feb 100644 --- a/arch/arm/src/armv7-m/arm_initialstate.c +++ b/arch/arm/src/armv7-m/arm_initialstate.c @@ -146,7 +146,6 @@ void up_initial_state(struct tcb_s *tcb) #ifdef CONFIG_ARCH_FPU xcp->regs[REG_FPSCR] = 0; /* REVISIT: Initial FPSCR should be configurable */ - xcp->regs[REG_FP_RESERVED] = 0; #endif /* CONFIG_ARCH_FPU */ /* Enable or disable interrupts, based on user configuration */ diff --git a/arch/arm/src/armv8-m/arm_fpucmp.c b/arch/arm/src/armv8-m/arm_fpucmp.c index fc5965858d6..08b2da7f942 100644 --- a/arch/arm/src/armv8-m/arm_fpucmp.c +++ b/arch/arm/src/armv8-m/arm_fpucmp.c @@ -53,7 +53,10 @@ bool up_fpucmp(const void *saveregs1, const void *saveregs2) const uint32_t *regs1 = saveregs1; const uint32_t *regs2 = saveregs2; - return memcmp(®s1[REG_S0], ®s2[REG_S0], 4 * HW_FPU_REGS) == 0 && + /* compare of hardware fp registers should skip REG_FP_RESERVED */ + + return memcmp(®s1[REG_S0], ®s2[REG_S0], + 4 * (HW_FPU_REGS - 1)) == 0 && memcmp(®s1[REG_S16], ®s2[REG_S16], 4 * SW_FPU_REGS) == 0; } #endif /* CONFIG_ARCH_FPU */ diff --git a/arch/arm/src/armv8-m/arm_initialstate.c b/arch/arm/src/armv8-m/arm_initialstate.c index 98f5b794e93..46c53dda1aa 100644 --- a/arch/arm/src/armv8-m/arm_initialstate.c +++ b/arch/arm/src/armv8-m/arm_initialstate.c @@ -152,7 +152,6 @@ void up_initial_state(struct tcb_s *tcb) #ifdef CONFIG_ARCH_FPU xcp->regs[REG_FPSCR] |= ARMV8M_FPSCR_LTPSIZE_NONE; - xcp->regs[REG_FP_RESERVED] = 0; #endif /* CONFIG_ARCH_FPU */ /* Enable or disable interrupts, based on user configuration */