1#ifndef RUNTIME_PLATFORM_H
2#define RUNTIME_PLATFORM_H
11typedef signed short s16;
14typedef signed long s32;
17typedef signed long long s64;
20typedef unsigned char u8;
23typedef unsigned short u16;
26typedef unsigned long u32;
29typedef unsigned long long u64;
79#if defined(__MWERKS__) && defined(__PPCGEKKO__)
83#ifndef ATTRIBUTE_ALIGN
84#if defined(__MWERKS__) || defined(__GNUC__)
85#define ATTRIBUTE_ALIGN(num) __attribute__((aligned(num)))
86#elif defined(_MSC_VER)
87#define ATTRIBUTE_ALIGN(num)
89#error unknown compiler
94#if defined(__MWERKS__) && !defined(M2CTX)
95#define SECTION_INIT __declspec(section ".init")
102#if defined(__MWERKS__) && !defined(M2CTX)
103#define SECTION_CTORS __declspec(section ".ctors")
109#ifndef ATTRIBUTE_NORETURN
110#if defined(__clang__) || defined(__GNUC__)
111#define ATTRIBUTE_NORETURN __attribute__((noreturn))
113#define ATTRIBUTE_NORETURN
117#ifndef ATTRIBUTE_RESTRICT
118#if defined(__MWERKS__) && !defined(M2CTX)
119#define ATTRIBUTE_RESTRICT __restrict
121#define ATTRIBUTE_RESTRICT
126#define AT_ADDRESS(x) = FIXEDADDR(x)
127#elif defined(__MWERKS__) && !defined(M2CTX)
128#define AT_ADDRESS(x) : (x)
145#define U16_MAX 0xFFFF
146#define U32_MAX 0xFFFFFFFF
148#define S16_MAX 0x7FFF
149#define S32_MAX 0x7FFFFFFF
150#define F32_MAX 3.4028235e38f
152#define SQ(x) ((x) * (x))
153#define MIN(a, b) (((a) > (b)) ? (b) : (a))
154#define MAX(a, b) (((a) > (b)) ? (a) : (b))
156#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]))
159#ifndef _Static_assert
160#define _Static_assert static_assert
164#define STATIC_ASSERT(cond) \
166 int x[1 - 2 * !(cond)]; \
169#define STATIC_ASSERT(cond) _Static_assert((cond), "(" #cond ") failed")
172#define RETURN_IF(cond) \
179#if defined(__MWERKS__) && !defined(M2CTX)
180#define SDATA __declspec(section ".sdata")
181#define WEAK __declspec(weak)