wut  1.0.0-beta9
Wii U Toolchain
context.h
Go to the documentation of this file.
1 #pragma once
2 #include <wut.h>
3 
11 #ifdef __cplusplus
12 extern "C" {
13 #endif
14 
15 typedef struct OSContext OSContext;
16 
17 #define OS_CONTEXT_TAG 0x4F53436F6E747874ull
18 
20 {
22  uint64_t tag;
23 
24  uint32_t gpr[32];
25  uint32_t cr;
26  uint32_t lr;
27  uint32_t ctr;
28  uint32_t xer;
29  uint32_t srr0;
30  uint32_t srr1;
31  uint32_t dsisr;
32  uint32_t dar;
33  WUT_UNKNOWN_BYTES(0xC);
34  uint32_t fpscr;
35  double fpr[32];
36  uint16_t spinLockCount;
37  uint16_t state;
38  uint32_t gqr[8];
39  WUT_UNKNOWN_BYTES(4);
40  double psf[32];
41  uint64_t coretime[3];
42  uint64_t starttime;
43  uint32_t error;
44  WUT_UNKNOWN_BYTES(4);
45  uint32_t pmc1;
46  uint32_t pmc2;
47  uint32_t pmc3;
48  uint32_t pmc4;
49  uint32_t mmcr0;
50  uint32_t mmcr1;
51 };
52 WUT_CHECK_OFFSET(OSContext, 0x00, tag);
53 WUT_CHECK_OFFSET(OSContext, 0x08, gpr);
54 WUT_CHECK_OFFSET(OSContext, 0x88, cr);
55 WUT_CHECK_OFFSET(OSContext, 0x8c, lr);
56 WUT_CHECK_OFFSET(OSContext, 0x90, ctr);
57 WUT_CHECK_OFFSET(OSContext, 0x94, xer);
58 WUT_CHECK_OFFSET(OSContext, 0x98, srr0);
59 WUT_CHECK_OFFSET(OSContext, 0x9c, srr1);
60 WUT_CHECK_OFFSET(OSContext, 0xa0, dsisr);
61 WUT_CHECK_OFFSET(OSContext, 0xa4, dar);
62 WUT_CHECK_OFFSET(OSContext, 0xb4, fpscr);
63 WUT_CHECK_OFFSET(OSContext, 0xb8, fpr);
64 WUT_CHECK_OFFSET(OSContext, 0x1b8, spinLockCount);
65 WUT_CHECK_OFFSET(OSContext, 0x1ba, state);
66 WUT_CHECK_OFFSET(OSContext, 0x1bc, gqr);
67 WUT_CHECK_OFFSET(OSContext, 0x1e0, psf);
68 WUT_CHECK_OFFSET(OSContext, 0x2e0, coretime);
69 WUT_CHECK_OFFSET(OSContext, 0x2f8, starttime);
70 WUT_CHECK_OFFSET(OSContext, 0x300, error);
71 WUT_CHECK_OFFSET(OSContext, 0x308, pmc1);
72 WUT_CHECK_OFFSET(OSContext, 0x30c, pmc2);
73 WUT_CHECK_OFFSET(OSContext, 0x310, pmc3);
74 WUT_CHECK_OFFSET(OSContext, 0x314, pmc4);
75 WUT_CHECK_OFFSET(OSContext, 0x318, mmcr0);
76 WUT_CHECK_OFFSET(OSContext, 0x31c, mmcr1);
77 WUT_CHECK_SIZE(OSContext, 0x320);
78 
79 void
80 OSInitContext(OSContext *context,
81  void *entry,
82  void *stack);
83 
84 void
85 OSDumpContext(OSContext *context);
86 
87 void
88 OSLoadContext(OSContext *context);
89 
90 uint32_t
91 OSSaveContext(OSContext *context);
92 
93 void
94 OSLoadFPUContext(OSContext *context);
95 
96 void
97 OSSaveFPUContext(OSContext *context);
98 
99 OSContext *
101 
102 void
104 
105 void *
106 OSSwitchStack(void *stack);
107 
108 #ifdef __cplusplus
109 }
110 #endif
111 
OSSaveContext
uint32_t OSSaveContext(OSContext *context)
OSSaveFPUContext
void OSSaveFPUContext(OSContext *context)
OSGetCurrentContext
OSContext * OSGetCurrentContext()
OSLoadFPUContext
void OSLoadFPUContext(OSContext *context)
OSSwitchStack
void * OSSwitchStack(void *stack)
OSContext
struct OSContext OSContext
Definition: context.h:15
WUT_ALIGNAS
struct WUT_ALIGNAS(8) OSContext
Definition: context.h:19
OSSetCurrentContext
void OSSetCurrentContext(OSContext *context)
wut.h
OSInitContext
void OSInitContext(OSContext *context, void *entry, void *stack)
OSLoadContext
void OSLoadContext(OSContext *context)
OSDumpContext
void OSDumpContext(OSContext *context)