Mercurial > ~darius > hgwebdir.cgi > stm32temp
comparison libs/STM32F10x_StdPeriph_Lib_V3.5.0/Libraries/CMSIS/CM3/CoreSupport/core_cm3.c @ 81:d7002925c15d
Fix compilation on newer toolchain.
http://www.atollic.com/index.php/kb/1-kb_building/117-kb_error_in_strexb
author | Daniel O'Connor <darius@dons.net.au> |
---|---|
date | Mon, 02 Mar 2015 14:30:58 +1030 |
parents | c59513fd84fb |
children |
comparison
equal
deleted
inserted
replaced
80:1a4573062b37 | 81:d7002925c15d |
---|---|
731 */ | 731 */ |
732 uint32_t __STREXB(uint8_t value, uint8_t *addr) | 732 uint32_t __STREXB(uint8_t value, uint8_t *addr) |
733 { | 733 { |
734 uint32_t result=0; | 734 uint32_t result=0; |
735 | 735 |
736 __ASM volatile ("strexb %0, %2, [%1]" : "=r" (result) : "r" (addr), "r" (value) ); | 736 __ASM volatile ("strexb %0, %2, [%1]" : "=&r" (result) : "r" (addr), "r" (value) ); |
737 return(result); | 737 return(result); |
738 } | 738 } |
739 | 739 |
740 /** | 740 /** |
741 * @brief STR Exclusive (16 bit) | 741 * @brief STR Exclusive (16 bit) |
748 */ | 748 */ |
749 uint32_t __STREXH(uint16_t value, uint16_t *addr) | 749 uint32_t __STREXH(uint16_t value, uint16_t *addr) |
750 { | 750 { |
751 uint32_t result=0; | 751 uint32_t result=0; |
752 | 752 |
753 __ASM volatile ("strexh %0, %2, [%1]" : "=r" (result) : "r" (addr), "r" (value) ); | 753 __ASM volatile ("strexh %0, %2, [%1]" : "=&r" (result) : "r" (addr), "r" (value) ); |
754 return(result); | 754 return(result); |
755 } | 755 } |
756 | 756 |
757 /** | 757 /** |
758 * @brief STR Exclusive (32 bit) | 758 * @brief STR Exclusive (32 bit) |