Annotation of elwix/tools/uboot_mkimage/include/compiler.h, revision 1.1.1.1

1.1       misho       1: /*
                      2:  * Keep all the ugly #ifdef for system stuff here
                      3:  */
                      4: 
                      5: #ifndef __COMPILER_H__
                      6: #define __COMPILER_H__
                      7: 
                      8: #include <stddef.h>
                      9: 
                     10: #ifdef USE_HOSTCC
                     11: 
                     12: #if defined(__BEOS__)   || \
                     13:     defined(__NetBSD__)  || \
                     14:     defined(__FreeBSD__) || \
                     15:     defined(__sun__)    || \
                     16:     defined(__APPLE__)
                     17: # include <inttypes.h>
                     18: #elif defined(__linux__) || defined(__WIN32__) || defined(__MINGW32__)
                     19: # include <stdint.h>
                     20: #endif
                     21: 
                     22: #include <errno.h>
                     23: #include <stdlib.h>
                     24: #include <stdint.h>
                     25: #include <stdio.h>
                     26: #include <string.h>
                     27: 
                     28: #if !defined(__WIN32__) && !defined(__MINGW32__)
                     29: # include <sys/mman.h>
                     30: #endif
                     31: 
                     32: /* Not all systems (like Windows) has this define, and yes
                     33:  * we do replace/emulate mmap() on those systems ...
                     34:  */
                     35: #ifndef MAP_FAILED
                     36: # define MAP_FAILED ((void *)-1)
                     37: #endif
                     38: 
                     39: #include <fcntl.h>
                     40: #ifndef O_BINARY               /* should be define'd on __WIN32__ */
                     41: #define O_BINARY       0
                     42: #endif
                     43: 
                     44: #ifdef __linux__
                     45: # include <endian.h>
                     46: # include <byteswap.h>
                     47: #elif defined(__MACH__)
                     48: # include <machine/endian.h>
                     49: typedef unsigned long ulong;
                     50: #endif
                     51: 
                     52: typedef uint8_t __u8;
                     53: typedef uint16_t __u16;
                     54: typedef uint32_t __u32;
                     55: typedef unsigned int uint;
                     56: 
                     57: #define uswap_16(x) \
                     58:        ((((x) & 0xff00) >> 8) | \
                     59:         (((x) & 0x00ff) << 8))
                     60: #define uswap_32(x) \
                     61:        ((((x) & 0xff000000) >> 24) | \
                     62:         (((x) & 0x00ff0000) >>  8) | \
                     63:         (((x) & 0x0000ff00) <<  8) | \
                     64:         (((x) & 0x000000ff) << 24))
                     65: #define _uswap_64(x, sfx) \
                     66:        ((((x) & 0xff00000000000000##sfx) >> 56) | \
                     67:         (((x) & 0x00ff000000000000##sfx) >> 40) | \
                     68:         (((x) & 0x0000ff0000000000##sfx) >> 24) | \
                     69:         (((x) & 0x000000ff00000000##sfx) >>  8) | \
                     70:         (((x) & 0x00000000ff000000##sfx) <<  8) | \
                     71:         (((x) & 0x0000000000ff0000##sfx) << 24) | \
                     72:         (((x) & 0x000000000000ff00##sfx) << 40) | \
                     73:         (((x) & 0x00000000000000ff##sfx) << 56))
                     74: #if defined(__GNUC__)
                     75: # define uswap_64(x) _uswap_64(x, ull)
                     76: #else
                     77: # define uswap_64(x) _uswap_64(x, )
                     78: #endif
                     79: 
                     80: #if __BYTE_ORDER == __LITTLE_ENDIAN
                     81: # define cpu_to_le16(x)                (x)
                     82: # define cpu_to_le32(x)                (x)
                     83: # define cpu_to_le64(x)                (x)
                     84: # define le16_to_cpu(x)                (x)
                     85: # define le32_to_cpu(x)                (x)
                     86: # define le64_to_cpu(x)                (x)
                     87: # define cpu_to_be16(x)                uswap_16(x)
                     88: # define cpu_to_be32(x)                uswap_32(x)
                     89: # define cpu_to_be64(x)                uswap_64(x)
                     90: # define be16_to_cpu(x)                uswap_16(x)
                     91: # define be32_to_cpu(x)                uswap_32(x)
                     92: # define be64_to_cpu(x)                uswap_64(x)
                     93: #else
                     94: # define cpu_to_le16(x)                uswap_16(x)
                     95: # define cpu_to_le32(x)                uswap_32(x)
                     96: # define cpu_to_le64(x)                uswap_64(x)
                     97: # define le16_to_cpu(x)                uswap_16(x)
                     98: # define le32_to_cpu(x)                uswap_32(x)
                     99: # define le64_to_cpu(x)                uswap_64(x)
                    100: # define cpu_to_be16(x)                (x)
                    101: # define cpu_to_be32(x)                (x)
                    102: # define cpu_to_be64(x)                (x)
                    103: # define be16_to_cpu(x)                (x)
                    104: # define be32_to_cpu(x)                (x)
                    105: # define be64_to_cpu(x)                (x)
                    106: #endif
                    107: 
                    108: #else /* !USE_HOSTCC */
                    109: 
                    110: #include <linux/string.h>
                    111: #include <linux/types.h>
                    112: #include <asm/byteorder.h>
                    113: 
                    114: /* Types for `void *' pointers. */
                    115: #if __WORDSIZE == 64
                    116: typedef unsigned long int       uintptr_t;
                    117: #else
                    118: typedef unsigned int            uintptr_t;
                    119: #endif
                    120: 
                    121: #endif
                    122: 
                    123: /* compiler options */
                    124: #define uninitialized_var(x)           x = x
                    125: 
                    126: #define likely(x)      __builtin_expect(!!(x), 1)
                    127: #define unlikely(x)    __builtin_expect(!!(x), 0)
                    128: 
                    129: #endif

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>