ON Semiconductor / mbed-os

Dependents:   mbed-TFT-example-NCS36510 mbed-Accelerometer-example-NCS36510 mbed-Accelerometer-example-NCS36510

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers cc.h Source File

cc.h

00001 /* 
00002  * Copyright (c) 2001-2003 Swedish Institute of Computer Science. 
00003  * All rights reserved.  
00004  *  
00005  * Redistribution and use in source and binary forms, with or without modification,  
00006  * are permitted provided that the following conditions are met: 
00007  * 
00008  * 1. Redistributions of source code must retain the above copyright notice, 
00009  *    this list of conditions and the following disclaimer. 
00010  * 2. Redistributions in binary form must reproduce the above copyright notice, 
00011  *    this list of conditions and the following disclaimer in the documentation 
00012  *    and/or other materials provided with the distribution. 
00013  * 3. The name of the author may not be used to endorse or promote products 
00014  *    derived from this software without specific prior written permission.  
00015  * 
00016  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED  
00017  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF  
00018  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT  
00019  * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,  
00020  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT  
00021  * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS  
00022  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN  
00023  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING  
00024  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY  
00025  * OF SUCH DAMAGE. 
00026  * 
00027  * This file is part of the lwIP TCP/IP stack. 
00028  *  
00029  * Author: Adam Dunkels <adam@sics.se> 
00030  * 
00031  */ 
00032 #ifndef __CC_H__ 
00033 #define __CC_H__ 
00034 
00035 #include <stdint.h>
00036 #include <stddef.h> /* for size_t */
00037 
00038 /* Types based on stdint.h */
00039 typedef uint8_t            u8_t; 
00040 typedef int8_t             s8_t; 
00041 typedef uint16_t           u16_t; 
00042 typedef int16_t            s16_t; 
00043 typedef uint32_t           u32_t; 
00044 typedef int32_t            s32_t; 
00045 typedef uintptr_t          mem_ptr_t; 
00046 
00047 /* Define (sn)printf formatters for these lwIP types */
00048 #define U16_F "hu"
00049 #define S16_F "hd"
00050 #define X16_F "hx"
00051 #define U32_F "lu"
00052 #define S32_F "ld"
00053 #define X32_F "lx"
00054 #define SZT_F "uz"
00055 
00056 /* ARM/LPC17xx is little endian only */
00057 #if !defined(BYTE_ORDER) || (BYTE_ORDER != LITTLE_ENDIAN && BYTE_ORDER != BIG_ENDIAN)
00058 #ifdef BYTE_ORDER
00059 #undef BYTE_ORDER
00060 #endif
00061 #define BYTE_ORDER LITTLE_ENDIAN
00062 #endif
00063 
00064 /* Use LWIP error codes */
00065 #define LWIP_PROVIDE_ERRNO
00066 
00067 #if defined(__arm__) && defined(__ARMCC_VERSION) 
00068     /* Keil uVision4 tools */
00069     #define PACK_STRUCT_BEGIN __packed
00070     #define PACK_STRUCT_STRUCT
00071     #define PACK_STRUCT_END
00072     #define PACK_STRUCT_FIELD(fld) fld
00073     #define ALIGNED(n)  __align(n)
00074 #elif defined (__IAR_SYSTEMS_ICC__) 
00075     /* IAR Embedded Workbench tools */
00076     #define PACK_STRUCT_BEGIN __packed
00077     #define PACK_STRUCT_STRUCT
00078     #define PACK_STRUCT_END
00079     #define PACK_STRUCT_FIELD(fld) fld
00080     #define IAR_STR(a) #a
00081     #define ALIGNED(n) _Pragma(IAR_STR(data_alignment= ## n ##))
00082 #else 
00083     /* GCC tools (CodeSourcery) */
00084     #define PACK_STRUCT_BEGIN
00085     #define PACK_STRUCT_STRUCT __attribute__ ((__packed__))
00086     #define PACK_STRUCT_END
00087     #define PACK_STRUCT_FIELD(fld) fld
00088     #define ALIGNED(n)  __attribute__((aligned (n)))
00089 #endif 
00090 
00091 /* Provide Thumb-2 routines for GCC to improve performance */
00092 #if defined(TOOLCHAIN_GCC) && defined(__thumb2__)
00093     #define MEMCPY(dst,src,len)     thumb2_memcpy(dst,src,len)
00094     #define LWIP_CHKSUM             thumb2_checksum
00095     /* Set algorithm to 0 so that unused lwip_standard_chksum function
00096        doesn't generate compiler warning */
00097     #define LWIP_CHKSUM_ALGORITHM   0
00098 
00099     void* thumb2_memcpy(void* pDest, const void* pSource, size_t length);
00100     u16_t thumb2_checksum(const void* pData, int length);
00101 #else
00102     /* Used with IP headers only */
00103     #define LWIP_CHKSUM_ALGORITHM   1
00104 #endif
00105 
00106 
00107 #ifdef LWIP_DEBUG
00108 
00109 #include "stdio.h"
00110 
00111 void assert_printf(char *msg, int line, char *file);
00112 
00113 /* Plaform specific diagnostic output */
00114 #define LWIP_PLATFORM_DIAG(vars) printf vars
00115 #define LWIP_PLATFORM_ASSERT(flag) { assert_printf((flag), __LINE__, __FILE__); }
00116 #else
00117 #define LWIP_PLATFORM_DIAG(msg) { ; }
00118 #define LWIP_PLATFORM_ASSERT(flag) { ; }
00119 #endif 
00120 
00121 #include "cmsis.h"
00122 #define LWIP_PLATFORM_HTONS(x)      __REV16(x)
00123 #define LWIP_PLATFORM_HTONL(x)      __REV(x)
00124 
00125 #endif /* __CC_H__ */