summaryrefslogtreecommitdiff
path: root/libcpu
diff options
context:
space:
mode:
author程蒙蒙 <[email protected]>2023-06-29 00:04:06 +0800
committerGitHub <[email protected]>2023-06-29 00:04:06 +0800
commit33f5de4411b087c542ebbb61194122e5a77844c6 (patch)
tree58c8e2327edd50580c09327972e79da8341bd3ea /libcpu
parent077e984175e546a495fee1ace6f2f54ff161fc77 (diff)
[atomic][IAR]修复IAR编译报警 函数“__LDREX”隐式声明 (#7733)
Diffstat (limited to 'libcpu')
-rw-r--r--libcpu/arm/common/atomic_arm.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/libcpu/arm/common/atomic_arm.c b/libcpu/arm/common/atomic_arm.c
index 18d186233f..290d72e717 100644
--- a/libcpu/arm/common/atomic_arm.c
+++ b/libcpu/arm/common/atomic_arm.c
@@ -10,6 +10,9 @@
#include <rtthread.h>
+#if defined (__IAR_SYSTEMS_ICC__) /* for IAR Compiler */
+#include <intrinsics.h>
+#endif
/**
\brief LDR Exclusive (32 bit)
\details Executes a exclusive LDR instruction for 32 bit values.
@@ -27,7 +30,7 @@
#elif defined (__IAR_SYSTEMS_ICC__) /* for IAR Compiler */
_Pragma("inline=forced") __intrinsic rt_atomic_t __LDREXW(volatile rt_atomic_t *ptr)
{
- return __LDREX((unsigned long *)ptr);
+ return __LDREX((unsigned int *)ptr);
}
#elif defined (__GNUC__) /* GNU GCC Compiler */
__attribute__((always_inline)) static inline rt_atomic_t __LDREXW(volatile rt_atomic_t *addr)
@@ -58,7 +61,7 @@ __attribute__((always_inline)) static inline rt_atomic_t __LDREXW(volatile r
#elif defined (__IAR_SYSTEMS_ICC__) /* for IAR Compiler */
_Pragma("inline=forced") __intrinsic rt_atomic_t __STREXW(rt_atomic_t value, volatile rt_atomic_t *ptr)
{
- return __STREX(value, (unsigned long *)ptr);
+ return __STREX(value, (unsigned int *)ptr);
}
#elif defined (__GNUC__) /* GNU GCC Compiler */
__attribute__((always_inline)) static inline rt_atomic_t __STREXW(volatile rt_atomic_t value, volatile rt_atomic_t *addr)