From 86c6d635d0048b29bb077e1f8f75eb044d661bd7 Mon Sep 17 00:00:00 2001 From: GustavWi Date: Wed, 4 Mar 2015 13:06:27 +0100 Subject: [PATCH] IAR support for ethernet library --- libraries/net/lwip/lwip-sys/arch/cc.h | 4 ++-- libraries/net/lwip/lwip-sys/arch/sys_arch.c | 4 ++++ .../protocols/NTPClient_HelloWorld/NTPClient/NTPClient.h | 7 +++++++ 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/libraries/net/lwip/lwip-sys/arch/cc.h b/libraries/net/lwip/lwip-sys/arch/cc.h index a17082e2ba..00b6782d3b 100644 --- a/libraries/net/lwip/lwip-sys/arch/cc.h +++ b/libraries/net/lwip/lwip-sys/arch/cc.h @@ -71,8 +71,8 @@ typedef uintptr_t mem_ptr_t; #define PACK_STRUCT_STRUCT #define PACK_STRUCT_END #define PACK_STRUCT_FIELD(fld) fld -// #define PACK_STRUCT_USE_INCLUDES - #error NEEDS ALIGNED // FIXME TBD + #define IAR_STR(a) #a + #define ALIGNED(n) _Pragma(IAR_STR(data_alignment= ## n ##)) #else /* GCC tools (CodeSourcery) */ #define PACK_STRUCT_BEGIN diff --git a/libraries/net/lwip/lwip-sys/arch/sys_arch.c b/libraries/net/lwip/lwip-sys/arch/sys_arch.c index c7f2c0f875..b7a8eea25a 100644 --- a/libraries/net/lwip/lwip-sys/arch/sys_arch.c +++ b/libraries/net/lwip/lwip-sys/arch/sys_arch.c @@ -427,7 +427,11 @@ sys_thread_t sys_thread_new(const char *pcName, t->def.tpriority = (osPriority)priority; t->def.stacksize = stacksize; #ifndef __MBED_CMSIS_RTOS_CA9 + #if defined (__ICCARM__) + t->def.stack_pointer = (uint32_t*)malloc(stacksize); + #else t->def.stack_pointer = (unsigned char*)malloc(stacksize); + #endif if (t->def.stack_pointer == NULL) { error("Error allocating the stack memory"); } diff --git a/libraries/tests/net/protocols/NTPClient_HelloWorld/NTPClient/NTPClient.h b/libraries/tests/net/protocols/NTPClient_HelloWorld/NTPClient/NTPClient.h index e0373784f3..b7cf6ff127 100644 --- a/libraries/tests/net/protocols/NTPClient_HelloWorld/NTPClient/NTPClient.h +++ b/libraries/tests/net/protocols/NTPClient_HelloWorld/NTPClient/NTPClient.h @@ -61,6 +61,9 @@ public: NTPResult setTime(const char* host, uint16_t port = NTP_DEFAULT_PORT, uint32_t timeout = NTP_DEFAULT_TIMEOUT); //Blocking private: +#if defined (__ICCARM__) + #pragma pack() +#endif struct NTPPacket //See RFC 4330 for Simple NTP { //WARN: We are in LE! Network is BE! @@ -86,7 +89,11 @@ private: uint32_t rxTm_f; uint32_t txTm_s; uint32_t txTm_f; +#if defined (__ICCARM__) + }; +#else } __attribute__ ((packed)); +#endif UDPSocket m_sock; };