Annotation of elwix/tools/uboot_mkimage/include/compiler.h, revision 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>