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")
101#ifndef ATTRIBUTE_NORETURN
102#if defined(__clang__) || defined(__GNUC__)
103#define ATTRIBUTE_NORETURN __attribute__((noreturn))
105#define ATTRIBUTE_NORETURN
109#ifndef ATTRIBUTE_RESTRICT
110#if defined(__MWERKS__) && !defined(M2CTX)
111#define ATTRIBUTE_RESTRICT __restrict
113#define ATTRIBUTE_RESTRICT
118#define AT_ADDRESS(x) = FIXEDADDR(x)
119#elif defined(__MWERKS__) && !defined(M2CTX)
120#define AT_ADDRESS(x) : (x)
137#define U16_MAX 0xFFFF
138#define U32_MAX 0xFFFFFFFF
140#define S16_MAX 0x7FFF
141#define S32_MAX 0x7FFFFFFF
142#define F32_MAX 3.4028235e38f
144#define SQ(x) ((x) * (x))
145#define MIN(a, b) (((a) > (b)) ? (b) : (a))
146#define MAX(a, b) (((a) > (b)) ? (a) : (b))
148#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]))
151#ifndef _Static_assert
152#define _Static_assert static_assert
156#define STATIC_ASSERT(cond) \
158 int x[1 - 2 * !(cond)]; \
161#define STATIC_ASSERT(cond) _Static_assert((cond), "(" #cond ") failed")
164#define RETURN_IF(cond) \
171#if defined(__MWERKS__) && !defined(M2CTX)
172#define SDATA __declspec(section ".sdata")
173#define WEAK __declspec(weak)