diff --git a/arch/arm/src/common/arm_fpucmp.c b/arch/arm/src/armv7-a/arm_fpucmp.c similarity index 94% rename from arch/arm/src/common/arm_fpucmp.c rename to arch/arm/src/armv7-a/arm_fpucmp.c index 9a69369eff..6bf2dbca3f 100644 --- a/arch/arm/src/common/arm_fpucmp.c +++ b/arch/arm/src/armv7-a/arm_fpucmp.c @@ -1,5 +1,5 @@ /**************************************************************************** - * arch/arm/src/common/arm_fpucmp.c + * arch/arm/src/armv7-a/arm_fpucmp.c * * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with @@ -53,7 +53,6 @@ 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 * FPU_CONTEXT_REGS)) == 0; + return memcmp(®s1[REG_S0], ®s2[REG_S0], 4 * FPU_CONTEXT_REGS) == 0; } #endif /* CONFIG_ARCH_FPU */ diff --git a/arch/arm/src/armv7-m/arm_fpucmp.c b/arch/arm/src/armv7-m/arm_fpucmp.c new file mode 100644 index 0000000000..073e63e970 --- /dev/null +++ b/arch/arm/src/armv7-m/arm_fpucmp.c @@ -0,0 +1,59 @@ +/**************************************************************************** + * arch/arm/src/armv7-m/arm_fpucmp.c + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#include +#include +#include + +#include "arm_internal.h" + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +#ifdef CONFIG_ARCH_FPU + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: up_fpucmp + * + * Description: + * compare FPU areas from thread context + * + ****************************************************************************/ + +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 && + memcmp(®s1[REG_S16], ®s2[REG_S16], 4 * SW_FPU_REGS) == 0; +} +#endif /* CONFIG_ARCH_FPU */ diff --git a/arch/arm/src/armv7-r/arm_fpucmp.c b/arch/arm/src/armv7-r/arm_fpucmp.c new file mode 100644 index 0000000000..e37ee256da --- /dev/null +++ b/arch/arm/src/armv7-r/arm_fpucmp.c @@ -0,0 +1,58 @@ +/**************************************************************************** + * arch/arm/src/armv7-r/arm_fpucmp.c + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#include +#include +#include + +#include "arm_internal.h" + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +#ifdef CONFIG_ARCH_FPU + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: up_fpucmp + * + * Description: + * compare FPU areas from thread context + * + ****************************************************************************/ + +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 * FPU_CONTEXT_REGS) == 0; +} +#endif /* CONFIG_ARCH_FPU */ diff --git a/arch/arm/src/armv8-m/arm_fpucmp.c b/arch/arm/src/armv8-m/arm_fpucmp.c new file mode 100644 index 0000000000..fc5965858d --- /dev/null +++ b/arch/arm/src/armv8-m/arm_fpucmp.c @@ -0,0 +1,59 @@ +/**************************************************************************** + * arch/arm/src/armv8-m/arm_fpucmp.c + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#include +#include +#include + +#include "arm_internal.h" + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +#ifdef CONFIG_ARCH_FPU + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: up_fpucmp + * + * Description: + * compare FPU areas from thread context + * + ****************************************************************************/ + +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 && + memcmp(®s1[REG_S16], ®s2[REG_S16], 4 * SW_FPU_REGS) == 0; +} +#endif /* CONFIG_ARCH_FPU */