SSBM Decomp
Loading...
Searching...
No Matches
platform.h
Go to the documentation of this file.
1#ifndef RUNTIME_PLATFORM_H
2#define RUNTIME_PLATFORM_H
3
4#include <stdbool.h> // IWYU pragma: export
5#include <stddef.h> // IWYU pragma: export
6
8typedef signed char s8;
9
11typedef signed short s16;
12
14typedef signed long s32;
15
17typedef signed long long s64;
18
20typedef unsigned char u8;
21
23typedef unsigned short u16;
24
26typedef unsigned long u32;
27
29typedef unsigned long long u64;
30
32typedef unsigned short ushort;
33
35typedef unsigned int uint;
36
38typedef volatile u8 vu8;
39
41typedef volatile u16 vu16;
42
44typedef volatile u32 vu32;
45
47typedef volatile u64 vu64;
48
50typedef volatile s8 vs8;
51
53typedef volatile s16 vs16;
54
56typedef volatile s32 vs32;
57
59typedef volatile s64 vs64;
60
62typedef float f32;
63
65typedef double f64;
66
68typedef volatile f32 vf32;
69
71typedef volatile f64 vf64;
72
74typedef int enum_t;
75
77typedef void (*Event)(void);
78
79#if defined(__MWERKS__) && defined(__PPCGEKKO__)
80#define MWERKS_GEKKO
81#endif
82
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)
88#else
89#error unknown compiler
90#endif
91#endif
92
93#ifndef SECTION_INIT
94#if defined(__MWERKS__) && !defined(M2CTX)
95#define SECTION_INIT __declspec(section ".init")
96#else
97#define SECTION_INIT
98#endif
99#endif
100
101#ifndef ATTRIBUTE_NORETURN
102#if defined(__clang__) || defined(__GNUC__)
103#define ATTRIBUTE_NORETURN __attribute__((noreturn))
104#else
105#define ATTRIBUTE_NORETURN
106#endif
107#endif
108
109#ifndef ATTRIBUTE_RESTRICT
110#if defined(__MWERKS__) && !defined(M2CTX)
111#define ATTRIBUTE_RESTRICT __restrict
112#else
113#define ATTRIBUTE_RESTRICT
114#endif
115#endif
116
117#ifdef PERMUTER
118#define AT_ADDRESS(x) = FIXEDADDR(x)
119#elif defined(__MWERKS__) && !defined(M2CTX)
120#define AT_ADDRESS(x) : (x)
121#else
122#define AT_ADDRESS(x)
123#endif
124
125#ifdef __PPCGEKKO__
126#define qr0 0
127#define qr1 1
128#define qr2 2
129#define qr3 3
130#define qr4 4
131#define qr5 5
132#define qr6 6
133#define qr7 7
134#endif
135
136#define U8_MAX 0xFF
137#define U16_MAX 0xFFFF
138#define U32_MAX 0xFFFFFFFF
139#define S8_MAX 0x7F
140#define S16_MAX 0x7FFF
141#define S32_MAX 0x7FFFFFFF
142#define F32_MAX 3.4028235e38f
143
144#define SQ(x) ((x) * (x))
145#define MIN(a, b) (((a) > (b)) ? (b) : (a))
146#define MAX(a, b) (((a) > (b)) ? (a) : (b))
147
148#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]))
149
150#ifdef __cplusplus
151#ifndef _Static_assert
152#define _Static_assert static_assert
153#endif
154#endif
155#ifdef __MWERKS__
156#define STATIC_ASSERT(cond) \
157 struct { \
158 int x[1 - 2 * !(cond)]; \
159 };
160#else
161#define STATIC_ASSERT(cond) _Static_assert((cond), "(" #cond ") failed")
162#endif
163
164#define RETURN_IF(cond) \
165 do { \
166 if ((cond)) { \
167 return; \
168 } \
169 } while (0)
170
171#if defined(__MWERKS__) && !defined(M2CTX)
172#define SDATA __declspec(section ".sdata")
173#define WEAK __declspec(weak)
174#else
175#define SDATA
176#define WEAK
177#endif
178
179#endif
volatile s8 vs8
A volatile, signed 8-bit integer.
Definition platform.h:50
signed char s8
A signed 8-bit integer.
Definition platform.h:8
volatile u8 vu8
A volatile, unsigned 8-bit integer.
Definition platform.h:38
unsigned long u32
An unsigned 32-bit integer.
Definition platform.h:26
signed long long s64
A signed 64-bit integer.
Definition platform.h:17
volatile s64 vs64
A volatile, signed 64-bit integer.
Definition platform.h:59
float f32
A 32-bit floating-point number.
Definition platform.h:62
signed short s16
A signed 16-bit integer.
Definition platform.h:11
volatile u16 vu16
A volatile, unsigned 16-bit integer.
Definition platform.h:41
volatile s32 vs32
A volatile, signed 32-bit integer.
Definition platform.h:56
volatile s16 vs16
A volatile, signed 16-bit integer.
Definition platform.h:53
unsigned int uint
An unsigned integer of platform-dependent size.
Definition platform.h:35
double f64
A 64-bit floating-point number.
Definition platform.h:65
volatile f64 vf64
A volatile 64-bit floating-point number.
Definition platform.h:71
unsigned short u16
An unsigned 16-bit integer.
Definition platform.h:23
unsigned short ushort
An unsigned short integer of platform-dependent size.
Definition platform.h:32
volatile u32 vu32
A volatile, unsigned 32-bit integer.
Definition platform.h:44
volatile u64 vu64
A volatile, unsigned 64-bit integer.
Definition platform.h:47
int enum_t
The underlying type of an enum, used as a placeholder.
Definition platform.h:74
volatile f32 vf32
A volatile 32-bit floating-point number.
Definition platform.h:68
unsigned long long u64
An unsigned 64-bit integer.
Definition platform.h:29
signed long s32
A signed 32-bit integer.
Definition platform.h:14
void(* Event)(void)
A void callback with no arguments.
Definition platform.h:77
unsigned char u8
An unsigned 8-bit integer.
Definition platform.h:20