diff options
| author | 程蒙蒙 <[email protected]> | 2023-06-29 00:04:06 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2023-06-29 00:04:06 +0800 |
| commit | 33f5de4411b087c542ebbb61194122e5a77844c6 (patch) | |
| tree | 58c8e2327edd50580c09327972e79da8341bd3ea | |
| parent | 077e984175e546a495fee1ace6f2f54ff161fc77 (diff) | |
[atomic][IAR]修复IAR编译报警 函数“__LDREX”隐式声明 (#7733)
| -rw-r--r-- | libcpu/arm/common/atomic_arm.c | 7 |
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) |
