SSBM Decomp
Loading...
Searching...
No Matches
OSContext.h
Go to the documentation of this file.
1#ifndef DOLPHIN_OS_OSCONTEXT_H
2#define DOLPHIN_OS_OSCONTEXT_H
3
4#include <platform.h>
5
6#define __OS_CONTEXT_FRAME 768
7
8#define OS_CONTEXT_R0 0
9#define OS_CONTEXT_R1 4
10#define OS_CONTEXT_R2 8
11#define OS_CONTEXT_R3 12
12#define OS_CONTEXT_R4 16
13#define OS_CONTEXT_R5 20
14#define OS_CONTEXT_R6 24
15#define OS_CONTEXT_R7 28
16#define OS_CONTEXT_R8 32
17#define OS_CONTEXT_R9 36
18#define OS_CONTEXT_R10 40
19#define OS_CONTEXT_R11 44
20#define OS_CONTEXT_R12 48
21#define OS_CONTEXT_R13 52
22#define OS_CONTEXT_R14 56
23#define OS_CONTEXT_R15 60
24#define OS_CONTEXT_R16 64
25#define OS_CONTEXT_R17 68
26#define OS_CONTEXT_R18 72
27#define OS_CONTEXT_R19 76
28#define OS_CONTEXT_R20 80
29#define OS_CONTEXT_R21 84
30#define OS_CONTEXT_R22 88
31#define OS_CONTEXT_R23 92
32#define OS_CONTEXT_R24 96
33#define OS_CONTEXT_R25 100
34#define OS_CONTEXT_R26 104
35#define OS_CONTEXT_R27 108
36#define OS_CONTEXT_R28 112
37#define OS_CONTEXT_R29 116
38#define OS_CONTEXT_R30 120
39#define OS_CONTEXT_R31 124
40
41#define OS_CONTEXT_CR 128
42#define OS_CONTEXT_LR 132
43#define OS_CONTEXT_CTR 136
44#define OS_CONTEXT_XER 140
45
46#define OS_CONTEXT_FPR0 144
47#define OS_CONTEXT_FPR1 152
48#define OS_CONTEXT_FPR2 160
49#define OS_CONTEXT_FPR3 168
50#define OS_CONTEXT_FPR4 176
51#define OS_CONTEXT_FPR5 184
52#define OS_CONTEXT_FPR6 192
53#define OS_CONTEXT_FPR7 200
54#define OS_CONTEXT_FPR8 208
55#define OS_CONTEXT_FPR9 216
56#define OS_CONTEXT_FPR10 224
57#define OS_CONTEXT_FPR11 232
58#define OS_CONTEXT_FPR12 240
59#define OS_CONTEXT_FPR13 248
60#define OS_CONTEXT_FPR14 256
61#define OS_CONTEXT_FPR15 264
62#define OS_CONTEXT_FPR16 272
63#define OS_CONTEXT_FPR17 280
64#define OS_CONTEXT_FPR18 288
65#define OS_CONTEXT_FPR19 296
66#define OS_CONTEXT_FPR20 304
67#define OS_CONTEXT_FPR21 312
68#define OS_CONTEXT_FPR22 320
69#define OS_CONTEXT_FPR23 328
70#define OS_CONTEXT_FPR24 336
71#define OS_CONTEXT_FPR25 344
72#define OS_CONTEXT_FPR26 352
73#define OS_CONTEXT_FPR27 360
74#define OS_CONTEXT_FPR28 368
75#define OS_CONTEXT_FPR29 376
76#define OS_CONTEXT_FPR30 384
77#define OS_CONTEXT_FPR31 392
78
79#define OS_CONTEXT_FPSCR 400
80
81#define OS_CONTEXT_SRR0 408
82#define OS_CONTEXT_SRR1 412
83
84#define OS_CONTEXT_MODE 416
85#define OS_CONTEXT_STATE 418
86
87#define OS_CONTEXT_GQR0 420
88#define OS_CONTEXT_GQR1 424
89#define OS_CONTEXT_GQR2 428
90#define OS_CONTEXT_GQR3 432
91#define OS_CONTEXT_GQR4 436
92#define OS_CONTEXT_GQR5 440
93#define OS_CONTEXT_GQR6 444
94#define OS_CONTEXT_GQR7 448
95#define __OSCONTEXT_PADDING 452
96
97#define OS_CONTEXT_PSF0 456
98#define OS_CONTEXT_PSF1 464
99#define OS_CONTEXT_PSF2 472
100#define OS_CONTEXT_PSF3 480
101#define OS_CONTEXT_PSF4 488
102#define OS_CONTEXT_PSF5 496
103#define OS_CONTEXT_PSF6 504
104#define OS_CONTEXT_PSF7 512
105#define OS_CONTEXT_PSF8 520
106#define OS_CONTEXT_PSF9 528
107#define OS_CONTEXT_PSF10 536
108#define OS_CONTEXT_PSF11 544
109#define OS_CONTEXT_PSF12 552
110#define OS_CONTEXT_PSF13 560
111#define OS_CONTEXT_PSF14 568
112#define OS_CONTEXT_PSF15 576
113#define OS_CONTEXT_PSF16 584
114#define OS_CONTEXT_PSF17 592
115#define OS_CONTEXT_PSF18 600
116#define OS_CONTEXT_PSF19 608
117#define OS_CONTEXT_PSF20 616
118#define OS_CONTEXT_PSF21 624
119#define OS_CONTEXT_PSF22 632
120#define OS_CONTEXT_PSF23 640
121#define OS_CONTEXT_PSF24 648
122#define OS_CONTEXT_PSF25 656
123#define OS_CONTEXT_PSF26 664
124#define OS_CONTEXT_PSF27 672
125#define OS_CONTEXT_PSF28 680
126#define OS_CONTEXT_PSF29 688
127#define OS_CONTEXT_PSF30 696
128#define OS_CONTEXT_PSF31 704
129#define OS_CONTEXT_STATE_EXC 0x02u
130
131#define OS_CONTEXT_STATE_FPSAVED 0x01u
132
133typedef struct OSContext {
134 u32 gprs[32]; // at 0x0
135 u32 cr; // at 0x80
136 u32 lr; // at 0x84
137 u32 ctr; // at 0x88
138 u32 xer; // at 0x8C
139 f64 fprs[32]; // at 0x90
140 f64 fpscr; // at 0x190
141 u32 srr0; // at 0x198
142 u32 srr1; // at 0x19C
143 u16 mode; // at 0x1A0
144 u16 state; // at 0x1A2
145 u32 gqrs[8]; // at 0x1A4
146 f64 psfs[32]; // at 0x1C8
147} OSContext;
148
149extern OSContext* OS_CURRENT_CONTEXT AT_ADDRESS(0x800000D4);
150extern OSContext* OS_CURRENT_FPU_CONTEXT AT_ADDRESS(0x800000D8);
151
157void* OSGetStackPointer(void);
158void OSSwitchFiber(void*, void*);
159void OSSwitchFiberEx(u32, u32, u32, u32, void*, void*);
161void OSInitContext(OSContext* ctx, u32 pc, u32 newsp);
162void OSDumpContext(const OSContext*);
163void __OSContextInit(void);
164void __OSLoadFPUContext(u32 _, OSContext* fpuctx);
165void OSLoadFPUContext(OSContext* fpuctx);
167
168#endif
void OSLoadContext(OSContext *)
Definition OSContext.c:379
void * OSGetStackPointer(void)
Definition OSContext.c:393
void OSSetCurrentContext(OSContext *)
Definition OSContext.c:254
void __OSSaveFPUContext(u32 unused1, u32 unused2, OSContext *fpuctx)
Definition OSContext.c:187
void OSInitContext(OSContext *ctx, u32 pc, u32 newsp)
Definition OSContext.c:467
void __OSContextInit(void)
Definition OSContext.c:585
void OSDumpContext(const OSContext *)
Definition OSContext.c:473
void __OSLoadFPUContext(u32 _, OSContext *fpuctx)
Definition OSContext.c:93
void OSClearContext(OSContext *)
void OSSwitchFiber(void *, void *)
void OSLoadFPUContext(OSContext *fpuctx)
Definition OSContext.c:201
OSContext * OSGetCurrentContext(void)
Definition OSContext.c:260
bool OSSaveContext(OSContext *)
Definition OSContext.c:303
void OSSaveFPUContext(OSContext *)
Definition OSContext.c:215
void OSSwitchFiberEx(u32, u32, u32, u32, void *, void *)
static char unused1[]
Definition class.c:69
static char unused2[]
Definition class.c:70
static char _[]
Definition dsp_task.c:312
unsigned long u32
An unsigned 32-bit integer.
Definition platform.h:26
double f64
A 64-bit floating-point number.
Definition platform.h:65
unsigned short u16
An unsigned 16-bit integer.
Definition platform.h:23
#define AT_ADDRESS(x)
Definition platform.h:122
Definition OSContext.h:133
u32 lr
Definition OSContext.h:136
f64 psfs[32]
Definition OSContext.h:146
u32 cr
Definition OSContext.h:135
u32 ctr
Definition OSContext.h:137
u32 srr1
Definition OSContext.h:142
u32 srr0
Definition OSContext.h:141
u32 gqrs[8]
Definition OSContext.h:145
u16 mode
Definition OSContext.h:143
u32 gprs[32]
Definition OSContext.h:134
f64 fprs[32]
Definition OSContext.h:139
u16 state
Definition OSContext.h:144
u32 xer
Definition OSContext.h:138
f64 fpscr
Definition OSContext.h:140