112 lines
2.5 KiB
C
112 lines
2.5 KiB
C
#ifndef __GCC_H
|
|
#define __GCC_H
|
|
|
|
#ifndef __ORDER_BIG_ENDIAN__
|
|
#define __ORDER_BIG_ENDIAN__ (1)
|
|
#endif
|
|
|
|
#ifndef __ORDER_LITTLE_ENDIAN__
|
|
#define __ORDER_LITTLE_ENDIAN__ (2)
|
|
#endif
|
|
|
|
#define __BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__
|
|
|
|
/* CPP header guards */
|
|
#ifdef __cplusplus
|
|
#define EXTERN_C_BEGIN extern "C" {
|
|
#define EXTERN_C_END }
|
|
#else
|
|
#define EXTERN_C_BEGIN
|
|
#define EXTERN_C_END
|
|
#endif
|
|
|
|
#define __MACRO_BEGIN do {
|
|
#define __MACRO_END \
|
|
} \
|
|
while (0)
|
|
|
|
#if defined(__GNUC__)
|
|
#ifndef __ASM
|
|
#define __ASM __asm
|
|
#endif
|
|
#ifndef __INLINE
|
|
#define __INLINE inline
|
|
#endif
|
|
#ifndef __INLINE__
|
|
#define __INLINE__ inline
|
|
#endif
|
|
#ifndef __ALWAYS_INLINE
|
|
#define __ALWAYS_INLINE inline __attribute__((always_inline))
|
|
#endif
|
|
#ifndef __ALWAYS_STATIC_INLINE
|
|
#define __ALWAYS_STATIC_INLINE __attribute__((always_inline)) static inline
|
|
#endif
|
|
#ifndef __STATIC_INLINE
|
|
#define __STATIC_INLINE static inline
|
|
#endif
|
|
#ifndef __NO_RETURN
|
|
#define __NO_RETURN __attribute__((noreturn))
|
|
#endif
|
|
#ifndef __USED
|
|
#define __USED __attribute__((used))
|
|
#endif
|
|
#ifndef __UNUSED__
|
|
#define __UNUSED__ __attribute__((__unused__))
|
|
#endif
|
|
#ifndef __WEAK
|
|
#define __WEAK __attribute__((weak))
|
|
#endif
|
|
#ifndef __WEAK__
|
|
#define __WEAK__ __attribute__((weak))
|
|
#endif
|
|
#ifndef __PACKED
|
|
#define __PACKED __attribute__((packed, aligned(1)))
|
|
#endif
|
|
#ifndef __PACKED__
|
|
#define __PACKED__ __attribute__((packed))
|
|
#endif
|
|
#ifndef __PACKED_STRUCT
|
|
#define __PACKED_STRUCT struct __attribute__((packed, aligned(1)))
|
|
#endif
|
|
#ifndef __PACKED_UNION
|
|
#define __PACKED_UNION union __attribute__((packed, aligned(1)))
|
|
#endif
|
|
#ifndef __IRQ
|
|
#define __IRQ __attribute__((interrupt))
|
|
#endif
|
|
#ifndef __IRQ_ALIGN64
|
|
#define __IRQ_ALIGN64 __attribute__((interrupt, aligned(64)))
|
|
#endif
|
|
#ifndef ALIGN4
|
|
#define ALIGN4 __attribute((aligned(4)))
|
|
#endif
|
|
#ifndef PACK_START
|
|
#define PACK_START
|
|
#endif
|
|
#ifndef PACK_END
|
|
#define PACK_END __attribute__((packed))
|
|
#endif
|
|
#ifndef likely
|
|
#define likely(x) __builtin_expect(!!(x), 1)
|
|
#endif
|
|
#ifndef unlikely
|
|
#define unlikely(x) __builtin_expect(!!(x), 0)
|
|
#endif
|
|
#ifndef __ALIGNED__
|
|
#define __ALIGNED__(x) __attribute__((aligned(x)))
|
|
#endif
|
|
#ifndef SECTION
|
|
#define SECTION(x) __attribute__((section(x)))
|
|
#endif
|
|
#ifndef __CONST__
|
|
#define __CONST__ __attribute__((__const__))
|
|
#endif
|
|
#ifndef __NAKED__
|
|
#define __NAKED__ __attribute__((naked))
|
|
#endif
|
|
#ifndef __deprecated
|
|
#define __deprecated __attribute__((deprecated))
|
|
#endif
|
|
#endif
|
|
|
|
#endif |