NXP LPC LWIP port documentation  v1.10
LWIP port for LPC devices
C:/dev/git/lwip_work/lpc43xx/lwip_lpc/nxpcommon/arch/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 
00037 /* Types based on stdint.h */
00038 typedef uint8_t            u8_t; 
00039 typedef int8_t             s8_t; 
00040 typedef uint16_t           u16_t; 
00041 typedef int16_t            s16_t; 
00042 typedef uint32_t           u32_t; 
00043 typedef int32_t            s32_t; 
00044 typedef uintptr_t          mem_ptr_t; 
00045 
00046 /* Define (sn)printf formatters for these lwIP types */
00047 #define U16_F "hu"
00048 #define S16_F "hd"
00049 #define X16_F "hx"
00050 #define U32_F "lu"
00051 #define S32_F "ld"
00052 #define X32_F "lx"
00053 #define SZT_F "uz"
00054 
00055 /* ARM/LPC17xx is little endian only */
00056 #define BYTE_ORDER LITTLE_ENDIAN
00057 
00058 /* Use LWIP error codes */
00059 #define LWIP_PROVIDE_ERRNO
00060 
00061 #if defined(__arm__) && defined(__ARMCC_VERSION) 
00062   /* Keil uVision4 tools */
00063     #define PACK_STRUCT_BEGIN __packed
00064     #define PACK_STRUCT_STRUCT
00065     #define PACK_STRUCT_END
00066     #define PACK_STRUCT_FIELD(fld) fld
00067   #define ALIGNED(n)  __align(n)
00068 #elif defined (__IAR_SYSTEMS_ICC__) 
00069   /* IAR Embedded Workbench tools */
00070     #define PACK_STRUCT_BEGIN __packed
00071     #define PACK_STRUCT_STRUCT
00072     #define PACK_STRUCT_END
00073     #define PACK_STRUCT_FIELD(fld) fld
00074 //    #define PACK_STRUCT_USE_INCLUDES
00075   #error NEEDS ALIGNED // FIXME TBD
00076 #else 
00077   /* GCC tools (CodeSourcery) */
00078     #define PACK_STRUCT_BEGIN
00079     #define PACK_STRUCT_STRUCT __attribute__ ((__packed__))
00080     #define PACK_STRUCT_END
00081     #define PACK_STRUCT_FIELD(fld) fld
00082   #define ALIGNED(n)  __attribute__((aligned (n)))
00083   #define ALIGNED(n)  __align(n)
00084 #endif 
00085 
00086 /* Used with IP headers only */
00087 #define LWIP_CHKSUM_ALGORITHM 1
00088 
00089 #ifdef LWIP_DEBUG 
00090 void assert_printf(char *msg, int line, char *file);
00091 
00092 /* Plaform specific diagnostic output */
00093 #define LWIP_PLATFORM_DIAG(vars) printf vars
00094 #define LWIP_PLATFORM_ASSERT(flag) { assert_printf((flag), __LINE__, __FILE__); }
00095 #else
00096 #define LWIP_PLATFORM_DIAG(msg) { ; }
00097 #define LWIP_PLATFORM_ASSERT(flag) { while (1); }
00098 #endif 
00099 
00100 #endif /* __CC_H__ */