wut v1.9.1
Wii U Toolchain
Loading...
Searching...
No Matches
kernel.h
Go to the documentation of this file.
1#pragma once
2#include <wut.h>
4
11#ifdef __cplusplus
12extern "C" {
13#endif
14
33
34typedef void (*OSExceptionCallbackExFn)(OSExceptionType exceptionType, OSContext *interruptedContext, OSContext *cbContext);
35
36typedef void (*KernelTimerCallbackFn)(OSExceptionType exception, OSContext *interruptedContext, OSContext *currentContext);
37
38typedef uint32_t KernelTimerHandle;
39
46WUT_CHECK_OFFSET(OSExceptionChainInfo, 0, callback);
47WUT_CHECK_OFFSET(OSExceptionChainInfo, 4, stack);
48WUT_CHECK_OFFSET(OSExceptionChainInfo, 8, context);
49WUT_CHECK_SIZE(OSExceptionChainInfo, 12);
50
100WUT_CHECK_OFFSET(KernelInfo0, 0x00, upid);
101WUT_CHECK_OFFSET(KernelInfo0, 0x04, rampid);
102WUT_CHECK_OFFSET(KernelInfo0, 0x08, appFlags);
103WUT_CHECK_OFFSET(KernelInfo0, 0x0C, dataAreaStart);
104WUT_CHECK_OFFSET(KernelInfo0, 0x10, dataAreaEnd);
105WUT_CHECK_OFFSET(KernelInfo0, 0x14, physDataAreaStart);
106WUT_CHECK_OFFSET(KernelInfo0, 0x18, physDataAreaEnd);
107WUT_CHECK_OFFSET(KernelInfo0, 0x1C, physAvailStart);
108WUT_CHECK_OFFSET(KernelInfo0, 0x20, physAvailEnd);
109WUT_CHECK_OFFSET(KernelInfo0, 0x24, physCodeGenStart);
110WUT_CHECK_OFFSET(KernelInfo0, 0x28, physCodeGenEnd);
111WUT_CHECK_OFFSET(KernelInfo0, 0x2C, sdaBase);
112WUT_CHECK_OFFSET(KernelInfo0, 0x30, sda2Base);
113WUT_CHECK_OFFSET(KernelInfo0, 0x34, systemHeapSize);
114WUT_CHECK_OFFSET(KernelInfo0, 0x38, stackEnd0);
115WUT_CHECK_OFFSET(KernelInfo0, 0x3C, stackEnd1);
116WUT_CHECK_OFFSET(KernelInfo0, 0x40, stackEnd2);
117WUT_CHECK_OFFSET(KernelInfo0, 0x44, stackBase0);
118WUT_CHECK_OFFSET(KernelInfo0, 0x48, stackBase1);
119WUT_CHECK_OFFSET(KernelInfo0, 0x4C, stackBase2);
120WUT_CHECK_OFFSET(KernelInfo0, 0x50, exceptionStackEnd0);
121WUT_CHECK_OFFSET(KernelInfo0, 0x54, exceptionStackEnd1);
122WUT_CHECK_OFFSET(KernelInfo0, 0x58, exceptionStackEnd2);
123WUT_CHECK_OFFSET(KernelInfo0, 0x5C, exceptionStackBase0);
124WUT_CHECK_OFFSET(KernelInfo0, 0x60, exceptionStackBase1);
125WUT_CHECK_OFFSET(KernelInfo0, 0x64, exceptionStackBase2);
126WUT_CHECK_OFFSET(KernelInfo0, 0x68, lockedCacheBase0);
127WUT_CHECK_OFFSET(KernelInfo0, 0x6C, lockedCacheBase1);
128WUT_CHECK_OFFSET(KernelInfo0, 0x70, lockedCacheBase2);
129WUT_CHECK_OFFSET(KernelInfo0, 0x74, coreinit);
130WUT_CHECK_OFFSET(KernelInfo0, 0x9C, unk0x9C);
131WUT_CHECK_OFFSET(KernelInfo0, 0xA0, titleId);
132WUT_CHECK_SIZE(KernelInfo0, 0xA8);
133
134typedef struct KernelInfo6
135{
136 uint64_t osTitleId;
137 uint32_t unk0x08;
138 WUT_PADDING_BYTES(0x108 - 0xC);
140WUT_CHECK_OFFSET(KernelInfo6, 0x00, osTitleId);
141WUT_CHECK_OFFSET(KernelInfo6, 0x08, unk0x08);
142WUT_CHECK_SIZE(KernelInfo6, 0x108);
143
144void
146 OSExceptionChainInfo *chainInfo,
147 OSExceptionChainInfo *prevChainInfo);
148
151 void *exceptionStack,
152 OSContext *context);
153
154uint32_t
156 uint64_t startTimeInTicks,
157 uint64_t intervalInTicks,
158 uint32_t unknown);
159
160void
162 void *arg1,
163 uint32_t unknown1,
164 uint32_t unknown2);
165
166void
167__KernelGetInfo(uint32_t type,
168 void *outBuffer,
169 uint32_t outBufferSize,
170 uint32_t core);
171
172static inline void
173__KernelGetInfo0(KernelInfo0 *outBuffer, uint32_t core)
174{
175 __KernelGetInfo(0, outBuffer, sizeof(KernelInfo0), core);
176}
177
178static inline void
179__KernelGetInfo6(KernelInfo6 *outBuffer, uint32_t core)
180{
181 __KernelGetInfo(6, outBuffer, sizeof(KernelInfo6), core);
182}
183
184#ifdef __cplusplus
185}
186#endif
187
OSExceptionType
Definition exception.h:27
uint64_t titleId
Definition kernel.h:98
void * stackEnd0
Definition kernel.h:81
void * lockedCacheBase0
Definition kernel.h:93
void * stackBase2
Definition kernel.h:86
void * stackEnd1
Definition kernel.h:82
void * stackBase1
Definition kernel.h:85
void * dataAreaStart
Definition kernel.h:70
void * stackBase0
Definition kernel.h:84
void * physCodeGenStart
Definition kernel.h:76
int32_t upid
Definition kernel.h:67
uint32_t systemHeapSize
Definition kernel.h:80
void * exceptionStackBase1
Definition kernel.h:91
void * physAvailEnd
Definition kernel.h:75
void * sda2Base
Definition kernel.h:79
void * exceptionStackBase2
Definition kernel.h:92
OSContext * context
Definition kernel.h:44
void * physDataAreaStart
Definition kernel.h:72
uint32_t unk0x9C
Definition kernel.h:97
OSExceptionCallbackExFn callback
Definition kernel.h:42
void * lockedCacheBase2
Definition kernel.h:95
int32_t rampid
Definition kernel.h:68
void * exceptionStackEnd0
Definition kernel.h:87
void * physCodeGenEnd
Definition kernel.h:77
uint32_t unk0x08
Definition kernel.h:137
struct CoreinitInfo coreinit
Definition kernel.h:96
uint64_t osTitleId
Definition kernel.h:136
void * exceptionStackBase0
Definition kernel.h:90
void * lockedCacheBase1
Definition kernel.h:94
void * stackEnd2
Definition kernel.h:83
void * physAvailStart
Definition kernel.h:74
void * dataAreaEnd
Definition kernel.h:71
uint32_t appFlags
Definition kernel.h:69
void * exceptionStackEnd1
Definition kernel.h:88
void * exceptionStackEnd2
Definition kernel.h:89
void * physDataAreaEnd
Definition kernel.h:73
void * sdaBase
Definition kernel.h:78
void __KernelGetInfo(uint32_t type, void *outBuffer, uint32_t outBufferSize, uint32_t core)
uint32_t __KernelPrimeTimer(KernelTimerHandle handle, uint64_t startTimeInTicks, uint64_t intervalInTicks, uint32_t unknown)
void __KernelSetUserModeExHandler(OSExceptionType exceptionType, OSExceptionChainInfo *chainInfo, OSExceptionChainInfo *prevChainInfo)
OSICICommand
Definition kernel.h:16
void(* OSExceptionCallbackExFn)(OSExceptionType exceptionType, OSContext *interruptedContext, OSContext *cbContext)
Definition kernel.h:34
void(* KernelTimerCallbackFn)(OSExceptionType exception, OSContext *interruptedContext, OSContext *currentContext)
Definition kernel.h:36
static void __KernelGetInfo6(KernelInfo6 *outBuffer, uint32_t core)
Definition kernel.h:179
uint32_t KernelTimerHandle
Definition kernel.h:38
void __KernelSendICI(OSICICommand cmd, void *arg1, uint32_t unknown1, uint32_t unknown2)
KernelTimerHandle __KernelAllocateTimer(KernelTimerCallbackFn, void *exceptionStack, OSContext *context)
static void __KernelGetInfo0(KernelInfo0 *outBuffer, uint32_t core)
Definition kernel.h:173
@ OS_ICI_COMMAND_IOP_SHELL_CORE_TRACE
Definition kernel.h:24
@ OS_ICI_COMMAND_PROC_KILL
Definition kernel.h:28
@ OS_ICI_COMMAND_RESCHEDULE_CORE
Definition kernel.h:18
@ OS_ICI_COMMAND_PROC_EXIT
Definition kernel.h:20
@ OS_ICI_COMMAND_PANIC_0X15
Definition kernel.h:27
@ OS_ICI_COMMAND_UNKNOWN
Definition kernel.h:30
@ OS_ICI_COMMAND_INVALID_IC_RANGE
Definition kernel.h:17
@ OS_ICI_COMMAND_OVERLAY_ARENA
Definition kernel.h:31
@ OS_ICI_COMMAND_PROC_CRASH
Definition kernel.h:29
@ OS_ICI_COMMAND_SYSTEM_FATAL
Definition kernel.h:25
@ OS_ICI_COMMAND_SET_DABR
Definition kernel.h:21
@ OS_ICI_COMMAND_HALT_CORE
Definition kernel.h:19
@ OS_ICI_COMMAND_FAST_BG_EXIT
Definition kernel.h:23
@ OS_ICI_COMMAND_PROC_SCHED
Definition kernel.h:22
@ OS_ICI_COMMAND_SET_IABR
Definition kernel.h:26