From: Jan Michel Date: Mon, 6 Jan 2014 13:20:35 +0000 (+0100) Subject: changed optimization for some inline assembler due to compile error X-Git-Url: https://jspc29.x-matter.uni-frankfurt.de/git/?a=commitdiff_plain;h=1784c308f9ed5ba874a0d5df6fa956271515995d;p=mvd_firmware.git changed optimization for some inline assembler due to compile error --- diff --git a/firmware/libs/STM32F10x_StdPeriph_Lib_V3.5.0/Libraries/CMSIS/CM3/CoreSupport/core_cm3.c b/firmware/libs/STM32F10x_StdPeriph_Lib_V3.5.0/Libraries/CMSIS/CM3/CoreSupport/core_cm3.c index 56fddc5..b883577 100644 --- a/firmware/libs/STM32F10x_StdPeriph_Lib_V3.5.0/Libraries/CMSIS/CM3/CoreSupport/core_cm3.c +++ b/firmware/libs/STM32F10x_StdPeriph_Lib_V3.5.0/Libraries/CMSIS/CM3/CoreSupport/core_cm3.c @@ -390,12 +390,15 @@ uint32_t __LDREXW(uint32_t *addr) * * Exclusive STR command for 8 bit values */ -uint32_t __STREXB(uint8_t value, uint8_t *addr) +//uint32_t __STREXB(uint8_t value, uint8_t *addr) +__attribute__( ( always_inline , optimize("O0")) ) static __INLINE uint32_t __STREXB(uint8_t value, uint8_t *addr) { __ASM("strexb r0, r0, [r1]"); __ASM("bx lr"); } + + /** * @brief STR Exclusive (16 bit) * @@ -405,7 +408,8 @@ uint32_t __STREXB(uint8_t value, uint8_t *addr) * * Exclusive STR command for 16 bit values */ -uint32_t __STREXH(uint16_t value, uint16_t *addr) +//uint32_t __STREXH(uint16_t value, uint16_t *addr) +__attribute__( ( always_inline , optimize("O0")) ) static __INLINE uint32_t __STREXH(uint16_t value, uint16_t *addr) { __ASM("strexh r0, r0, [r1]"); __ASM("bx lr"); @@ -729,7 +733,8 @@ uint32_t __LDREXW(uint32_t *addr) * * Exclusive STR command for 8 bit values */ -uint32_t __STREXB(uint8_t value, uint8_t *addr) +//uint32_t __STREXB(uint8_t value, uint8_t *addr) +__attribute__( ( always_inline , optimize("O0")) ) static __INLINE uint32_t __STREXB(uint8_t value, uint8_t *addr) { uint32_t result=0; @@ -746,7 +751,8 @@ uint32_t __STREXB(uint8_t value, uint8_t *addr) * * Exclusive STR command for 16 bit values */ -uint32_t __STREXH(uint16_t value, uint16_t *addr) +//uint32_t __STREXH(uint16_t value, uint16_t *addr) +__attribute__( ( always_inline , optimize("O0")) ) static __INLINE uint32_t __STREXH(uint16_t value, uint16_t *addr) { uint32_t result=0; diff --git a/firmware/libs/STM32F10x_StdPeriph_Lib_V3.5.0/Libraries/CMSIS/CM3/CoreSupport/core_cm3.h b/firmware/libs/STM32F10x_StdPeriph_Lib_V3.5.0/Libraries/CMSIS/CM3/CoreSupport/core_cm3.h index 2b6b51a..9e69e47 100644 --- a/firmware/libs/STM32F10x_StdPeriph_Lib_V3.5.0/Libraries/CMSIS/CM3/CoreSupport/core_cm3.h +++ b/firmware/libs/STM32F10x_StdPeriph_Lib_V3.5.0/Libraries/CMSIS/CM3/CoreSupport/core_cm3.h @@ -1173,6 +1173,7 @@ extern uint32_t __LDREXW(uint32_t *addr); * Exclusive STR command for 8 bit values */ extern uint32_t __STREXB(uint8_t value, uint8_t *addr); +//__attribute__( ( always_inline , optimize("O0")) ) extern uint32_t __STREXB(uint8_t value, volatile uint8_t *addr) /** * @brief STR Exclusive (16 bit) @@ -1184,6 +1185,7 @@ extern uint32_t __STREXB(uint8_t value, uint8_t *addr); * Exclusive STR command for 16 bit values */ extern uint32_t __STREXH(uint16_t value, uint16_t *addr); +//__attribute__( ( always_inline , optimize("O0")) ) extern uint32_t __STREXH(uint16_t value, uint16_t *addr) /** * @brief STR Exclusive (32 bit)