Daiki Kato / mbed-os-lychee

Dependents:   mbed-os-example-blinky-gr-lychee GR-Boads_Camera_sample GR-Boards_Audio_Recoder GR-Boads_Camera_DisplayApp ... more

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 /* ARM/LPC17xx is little endian only */
00039 #if !defined(BYTE_ORDER) || (BYTE_ORDER != LITTLE_ENDIAN && BYTE_ORDER != BIG_ENDIAN)
00040 #ifdef BYTE_ORDER
00041 #undef BYTE_ORDER
00042 #endif
00043 #define BYTE_ORDER LITTLE_ENDIAN
00044 #endif
00045 
00046 /* Use LWIP error codes */
00047 #define LWIP_PROVIDE_ERRNO
00048 
00049 #if defined(__arm__) && defined(__ARMCC_VERSION) 
00050     /* Keil uVision4 tools */
00051     #define PACK_STRUCT_BEGIN __packed
00052     #define PACK_STRUCT_STRUCT
00053     #define PACK_STRUCT_END
00054     #define PACK_STRUCT_FIELD(fld) fld
00055     #define ALIGNED(n)  __align(n)
00056 #elif defined (__IAR_SYSTEMS_ICC__) 
00057     /* IAR Embedded Workbench tools */
00058     #define PACK_STRUCT_BEGIN __packed
00059     #define PACK_STRUCT_STRUCT
00060     #define PACK_STRUCT_END
00061     #define PACK_STRUCT_FIELD(fld) fld
00062     #define IAR_STR(a) #a
00063     #define ALIGNED(n) _Pragma(IAR_STR(data_alignment= ## n ##))
00064 #else 
00065     /* GCC tools (CodeSourcery) */
00066     #define PACK_STRUCT_BEGIN
00067     #define PACK_STRUCT_STRUCT __attribute__ ((__packed__))
00068     #define PACK_STRUCT_END
00069     #define PACK_STRUCT_FIELD(fld) fld
00070     #define ALIGNED(n)  __attribute__((aligned (n)))
00071 #endif 
00072 
00073 /* Provide Thumb-2 routines for GCC to improve performance */
00074 #if defined(TOOLCHAIN_GCC) && defined(__thumb2__)
00075     #define MEMCPY(dst,src,len)     thumb2_memcpy(dst,src,len)
00076     #define LWIP_CHKSUM             thumb2_checksum
00077     /* Set algorithm to 0 so that unused lwip_standard_chksum function
00078        doesn't generate compiler warning */
00079     #define LWIP_CHKSUM_ALGORITHM   0
00080 
00081     void* thumb2_memcpy(void* pDest, const void* pSource, size_t length);
00082     uint16_t thumb2_checksum(const void* pData, int length);
00083 #else
00084     /* Used with IP headers only */
00085     #define LWIP_CHKSUM_ALGORITHM   1
00086 #endif
00087 
00088 
00089 #ifdef LWIP_DEBUG
00090 
00091 #include "stdio.h"
00092 
00093 void assert_printf(char *msg, int line, char *file);
00094 
00095 /* Plaform specific diagnostic output */
00096 #define LWIP_PLATFORM_DIAG(vars) printf vars
00097 #define LWIP_PLATFORM_ASSERT(flag) { assert_printf((flag), __LINE__, __FILE__); }
00098 #else
00099 #define LWIP_PLATFORM_DIAG(msg) { ; }
00100 #define LWIP_PLATFORM_ASSERT(flag) { ; }
00101 #endif 
00102 
00103 #include "cmsis.h"
00104 #define LWIP_PLATFORM_HTONS(x)      __REV16(x)
00105 #define LWIP_PLATFORM_HTONL(x)      __REV(x)
00106 
00107 #endif /* __CC_H__ */