From 077c16fc71fdfd113765e8738ceb46f81fd85841 Mon Sep 17 00:00:00 2001 From: zhangyuan21 Date: Thu, 13 Apr 2023 20:25:30 +0800 Subject: [PATCH] arch/xtensa: only cmp fpu coprocessor for fpu test Signed-off-by: zhangyuan21 --- arch/xtensa/src/common/xtensa_fpucmp.c | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/arch/xtensa/src/common/xtensa_fpucmp.c b/arch/xtensa/src/common/xtensa_fpucmp.c index 94146b44e51..30f2b8747e6 100644 --- a/arch/xtensa/src/common/xtensa_fpucmp.c +++ b/arch/xtensa/src/common/xtensa_fpucmp.c @@ -38,6 +38,7 @@ * Private Data ****************************************************************************/ +#ifdef XCHAL_CP_ID_FPU static uint32_t g_coproc_sa_offsets[] = { XTENSA_CP0_SA, XTENSA_CP1_SA, XTENSA_CP2_SA, XTENSA_CP3_SA, @@ -49,6 +50,7 @@ static uint32_t g_coproc_sa_sizes[] = XCHAL_CP0_SA_SIZE, XCHAL_CP1_SA_SIZE, XCHAL_CP2_SA_SIZE, XCHAL_CP3_SA_SIZE, XCHAL_CP4_SA_SIZE, XCHAL_CP5_SA_SIZE, XCHAL_CP6_SA_SIZE, XCHAL_CP7_SA_SIZE }; +#endif /**************************************************************************** * Public Functions @@ -72,6 +74,7 @@ static uint32_t g_coproc_sa_sizes[] = bool up_fpucmp(const void *saveregs1, const void *saveregs2) { +#ifdef XCHAL_CP_ID_FPU const uint32_t *regs1 = saveregs1; const uint32_t *regs2 = saveregs2; uint32_t cpenable = xtensa_get_cpenable(); @@ -84,13 +87,21 @@ bool up_fpucmp(const void *saveregs1, const void *saveregs2) uint32_t reg_offset; ndx += i; - reg_offset = g_coproc_sa_offsets[ndx - 1] / 4; - ret = memcmp(®s1[COMMON_CTX_REGS + reg_offset], - ®s2[COMMON_CTX_REGS + reg_offset], - g_coproc_sa_sizes[ndx - 1]) == 0; + if ((ndx - 1) == XCHAL_CP_ID_FPU) + { + reg_offset = g_coproc_sa_offsets[ndx - 1] / 4; + ret = memcmp(®s1[COMMON_CTX_REGS + reg_offset], + ®s2[COMMON_CTX_REGS + reg_offset], + g_coproc_sa_sizes[ndx - 1]) == 0; + break; + } + cpenable >>= i; } return ret; +#else + return true; +#endif } #endif /* CONFIG_ARCH_FPU */