ps2sdk  1.1
A collection of Open Source libraries used for developing applications on Sony's PlayStation 2® (PS2).
kernel.h
Go to the documentation of this file.
1 /*
2 # _____ ___ ____ ___ ____
3 # ____| | ____| | | |____|
4 # | ___| |____ ___| ____| | \ PS2DEV Open Source Project.
5 #-----------------------------------------------------------------------
6 # (C)2001, Gustavo Scotti (gustavo@scotti.com)
7 # (c) 2003 Marcus R. Brown <mrbrown@0xd6.org>
8 # Licenced under Academic Free License version 2.0
9 # Review ps2sdk README & LICENSE files for further details.
10 */
11 
17 #ifndef __KERNEL_H__
18 #define __KERNEL_H__
19 
20 #include <stddef.h>
21 #include <stdarg.h>
22 #include <sifdma.h>
23 
24 #define DI DIntr
25 #define EI EIntr
26 
27 // Workaround for EE kernel bug: call this immediately before returning from any interrupt handler.
28 #define ExitHandler() asm volatile("sync\nei\n")
29 
30 // note: 'sync' is the same as 'sync.l'
31 #define EE_SYNC() __asm__ volatile ("sync")
32 #define EE_SYNCL() __asm__ volatile ("sync.l")
33 #define EE_SYNCP() __asm__ volatile ("sync.p")
34 
35 #define UNCACHED_SEG(x) \
36  ((void *)(((u32)(x)) | 0x20000000))
37 
38 #define IS_UNCACHED_SEG(x) \
39  (((u32)(x)) & 0x20000000)
40 
41 #define UCAB_SEG(x) \
42  ((void *)(((u32)(x)) | 0x30000000))
43 
44 #define PUSHDATA( t, x, v, l) \
45  *(t *)(x) = (v); (l) = sizeof(t)
46 
47 #define POPDATA( t, x, v, l) \
48  (v) = *(t *)(x); (l) = sizeof(t)
49 
50 #define ALIGNED(x) __attribute__((aligned((x))))
51 
52 // GP functions
53 void *ChangeGP(void *gp);
54 void SetGP(void *gp);
55 void *GetGP(void);
56 
57 extern void *_gp;
58 #define SetModuleGP() ChangeGP(&_gp)
59 
65 #define TH_SELF 0
66 
68 #define MAX_THREADS 256 //A few will be used for the kernel patches. Thread 0 is always the idle thread.
69 #define MAX_SEMAPHORES 256 //A few will be used for the kernel patches.
70 #define MAX_PRIORITY 128
71 #define MAX_HANDLERS 128
72 #define MAX_ALARMS 64
73 
75 #define WRITEBACK_DCACHE 0
76 #define INVALIDATE_DCACHE 1
77 #define INVALIDATE_ICACHE 2
78 #define INVALIDATE_CACHE 3 //Invalidate both data & instruction caches.
79 
81 enum
82 {
95 // INTC_TIM3, //Reserved by the EE kernel for alarms (do not use)
96  INTC_SFIFO = 13, //Error encountered during SFIFO transfer
97  INTC_VU0WD //VU0 WatchDog; ForceBreak is sent to VU0 if left in RUN state for extended periods of time.
98 };
99 
100 //For backward-compatibility
101 #define kINTC_GS INTC_GS
102 #define kINTC_SBUS INTC_SBUS
103 #define kINTC_VBLANK_START INTC_VBLANK_S
104 #define kINTC_VBLANK_END INTC_VBLANK_E
105 #define kINTC_VIF0 INTC_VIF0
106 #define kINTC_VIF1 INTC_VIF1
107 #define kINTC_VU0 INTC_VU0
108 #define kINTC_VU1 INTC_VU1
109 #define kINTC_IPU INTC_IPU
110 #define kINTC_TIMER0 INTC_TIM0
111 #define kINTC_TIMER1 INTC_TIM1
112 
114 enum
115 {
126 
127  DMAC_CIS = 13, //Channel interrupt
128  DMAC_MEIS, //MemFIFO empty interrupt
129  DMAC_BEIS, //Bus error interrupt
130 };
131 
133 #define INIT_DMAC 0x01
134 #define INIT_VU1 0x02
135 #define INIT_VIF1 0x04
136 #define INIT_GIF 0x08
137 #define INIT_VU0 0x10
138 #define INIT_VIF0 0x20
139 #define INIT_IPU 0x40
140 
141 static inline void nopdelay(void)
142 {
143  int i = 0xfffff;
144 
145  do {
146  __asm__ ("nop\nnop\nnop\nnop\nnop\n");
147  } while (i-- != -1);
148 }
149 
150 static inline int ee_get_opmode(void)
151 {
152  u32 status;
153 
154  __asm__ volatile (
155  ".set\tpush\n\t" \
156  ".set\tnoreorder\n\t" \
157  "mfc0\t%0, $12\n\t" \
158  ".set\tpop\n\t" : "=r" (status));
159 
160  return((status >> 3) & 3);
161 }
162 
163 static inline int ee_set_opmode(u32 opmode)
164 {
165  u32 status, mask;
166 
167  __asm__ volatile (
168  ".set\tpush\n\t" \
169  ".set\tnoreorder\n\t" \
170  "mfc0\t%0, $12\n\t" \
171  "li\t%1, 0xffffffe7\n\t" \
172  "and\t%0, %1\n\t" \
173  "or\t%0, %2\n\t" \
174  "mtc0\t%0, $12\n\t" \
175  "sync.p\n\t"
176  ".set\tpop\n\t" : "=r" (status), "=r" (mask) : "r" (opmode));
177 
178  return((status >> 3) & 3);
179 }
180 
181 static inline int ee_kmode_enter()
182 {
183  u32 status, mask;
184 
185  __asm__ volatile (
186  ".set\tpush\n\t" \
187  ".set\tnoreorder\n\t" \
188  "mfc0\t%0, $12\n\t" \
189  "li\t%1, 0xffffffe7\n\t" \
190  "and\t%0, %1\n\t" \
191  "mtc0\t%0, $12\n\t" \
192  "sync.p\n\t"
193  ".set\tpop\n\t" : "=r" (status), "=r" (mask));
194 
195  return status;
196 }
197 
198 static inline int ee_kmode_exit()
199 {
200  int status;
201 
202  __asm__ volatile (
203  ".set\tpush\n\t" \
204  ".set\tnoreorder\n\t" \
205  "mfc0\t%0, $12\n\t" \
206  "ori\t%0, 0x10\n\t" \
207  "mtc0\t%0, $12\n\t" \
208  "sync.p\n\t" \
209  ".set\tpop\n\t" : "=r" (status));
210 
211  return status;
212 }
213 
214 typedef struct t_ee_sema
215 {
216  int count,
222 } ee_sema_t;
223 
224 typedef struct t_ee_thread
225 {
226  int status; // 0x00
227  void *func; // 0x04
228  void *stack; // 0x08
229  int stack_size; // 0x0C
230  void *gp_reg; // 0x10
231  int initial_priority; // 0x14
232  int current_priority; // 0x18
233  u32 attr; // 0x1C
234  u32 option; // 0x20 Do not use - officially documented to not work.
235 
236 } ee_thread_t;
237 
239 #define THS_RUN 0x01
240 #define THS_READY 0x02
241 #define THS_WAIT 0x04
242 #define THS_SUSPEND 0x08
243 #define THS_WAITSUSPEND 0x0c
244 #define THS_DORMANT 0x10
245 
247 #define TSW_NONE 0 //Thread is not in WAIT state
248 #define TSW_SLEEP 1
249 #define TSW_SEMA 2
250 
251 // sizeof() == 0x30
252 typedef struct t_ee_thread_status
253 {
254  int status; // 0x00
255  void *func; // 0x04
256  void *stack; // 0x08
257  int stack_size; // 0x0C
258  void *gp_reg; // 0x10
259  int initial_priority; // 0x14
260  int current_priority; // 0x18
261  u32 attr; // 0x1C
262  u32 option; // 0x20
263  u32 waitType; // 0x24
264  u32 waitId; // 0x28
265  u32 wakeupCount; // 0x2C
267 
270  CPU_CONFIG_ENABLE_DIE = 0, //Enable Dual Issue
271  CPU_CONFIG_ENABLE_ICE, //Enable Instruction Cache
272  CPU_CONFIG_ENABLE_DCE, //Enable Data Cache
273  CPU_CONFIG_DISBLE_DIE, //Disable Dual Issue
274  CPU_CONFIG_DISBLE_ICE, //Disable Instruction Cache
275  CPU_CONFIG_DISBLE_DCE //Disable Data Cache
276 };
277 
279 #define CPU_DATA_CACHE 1
280 #define CPU_INSTRUCTION_CACHE 2
281 
282 #ifdef __cplusplus
283 extern "C" {
284 #endif
285 
286 /* Initialization/deinitialization routines. */
287 void _InitSys(void); //Run by crt0
288 
289 void TerminateLibrary(void); //Run by crt0
290 
291 /* Thread update functions */
292 int InitThread(void); //Run by _InitSys
293 
294 s32 iWakeupThread(s32 thread_id);
296 s32 iSuspendThread(s32 thread_id);
297 
298 /* TLB update functions */
299 void InitTLBFunctions(void); //Run by _InitSys
300 
301 void InitTLB(void);
302 void Exit(s32 exit_code) __attribute__((noreturn));
303 s32 ExecPS2(void *entry, void *gp, int num_args, char *args[]);
304 void LoadExecPS2(const char *filename, s32 num_args, char *args[]) __attribute__((noreturn));
305 void ExecOSD(int num_args, char *args[]) __attribute__((noreturn));
306 
307 /* Alarm update functions */
308 void InitAlarm(void); //Run by _InitSys
309 
310 /* libosd update functions */
311 void InitExecPS2(void); //ExecPS2 patch only. Run by _InitSys, Exit, LoadExecPS2, ExecPS2 and ExecOSD
312 void InitOsd(void); //ExecPS2 + System Configuration patches. Please refer to the comments within libosd_full.c
313 
314 int PatchIsNeeded(void); //Indicates whether the patch is required.
315 
316 /* Glue routines. */
317 int DIntr(void);
318 int EIntr(void);
319 
320 int EnableIntc(int intc);
321 int DisableIntc(int intc);
322 int EnableDmac(int dmac);
323 int DisableDmac(int dmac);
324 
325 int iEnableIntc(int intc);
326 int iDisableIntc(int intc);
327 int iEnableDmac(int dmac);
328 int iDisableDmac(int dmac);
329 
330 void SyncDCache(void *start, void *end);
331 void iSyncDCache(void *start, void *end);
332 void InvalidDCache(void *start, void *end);
333 void iInvalidDCache(void *start, void *end);
334 
335 /* System call prototypes */
336 void ResetEE(u32 init_bitfield);
337 void SetGsCrt(s16 interlace, s16 pal_ntsc, s16 field);
338 void _Exit(s32 exit_code) __attribute__((noreturn));
339 void _LoadExecPS2(const char *filename, s32 num_args, char *args[]) __attribute__((noreturn));
340 s32 _ExecPS2(void *entry, void *gp, int num_args, char *args[]);
341 void RFU009(u32 arg0, u32 arg1);
342 s32 AddSbusIntcHandler(s32 cause, void (*handler)(int call));
345 void SetVTLBRefillHandler(s32 handler_num, void* handler_func);
346 void SetVCommonHandler(s32 handler_num, void* handler_func);
347 void SetVInterruptHandler(s32 handler_num, void* handler_func);
348 s32 AddIntcHandler(s32 cause, s32(*handler_func)(s32 cause), s32 next);
349 s32 AddIntcHandler2(s32 cause, s32(*handler_func)(s32 cause, void* arg, void* addr), s32 next, void* arg);
350 s32 RemoveIntcHandler(s32 cause, s32 handler_id);
351 s32 AddDmacHandler(s32 channel, s32 (*handler)(s32 channel), s32 next);
352 s32 AddDmacHandler2(s32 channel, s32 (*handler)(s32 channel, void *arg, void *addr), s32 next, void* arg);
353 s32 RemoveDmacHandler(s32 channel, s32 handler_id);
356 s32 _EnableDmac(s32 channel);
358 
359 //Alarm value is in H-SYNC ticks.
360 s32 SetAlarm(u16 time, void (*callback)(s32 alarm_id, u16 time, void *common), void *common);
361 s32 _SetAlarm(u16 time, void (*callback)(s32 alarm_id, u16 time, void *common), void *common);
362 s32 ReleaseAlarm(s32 alarm_id);
364 
369 
370 s32 iSetAlarm(u16 time, void (*callback)(s32 alarm_id, u16 time, void *common), void *common);
371 s32 _iSetAlarm(u16 time, void (*callback)(s32 alarm_id, u16 time, void *common), void *common);
374 
376 s32 DeleteThread(s32 thread_id);
377 s32 StartThread(s32 thread_id, void *args);
378 void ExitThread(void);
379 void ExitDeleteThread(void);
382 // void DisableDispatchThread(void); // not supported
383 // void EnableDispatchThread(void); // not supported
384 s32 ChangeThreadPriority(s32 thread_id, s32 priority);
385 s32 iChangeThreadPriority(s32 thread_id, s32 priority);
391 s32 _iGetThreadId(void); //This is actually GetThreadId(), used for a hack by SCE to work around the iWakeupThread design flaw.
395 s32 WakeupThread(s32 thread_id);
396 s32 _iWakeupThread(s32 thread_id);
399 s32 SuspendThread(s32 thread_id);
401 s32 ResumeThread(s32 thread_id);
402 s32 iResumeThread(s32 thread_id);
403 
404 u8 RFU059(void);
405 
406 void * SetupThread(void * gp, void * stack, s32 stack_size, void * args, void * root_func);
407 void SetupHeap(void * heap_start, s32 heap_size);
408 void *EndOfHeap(void);
409 
411 s32 DeleteSema(s32 sema_id);
412 s32 SignalSema(s32 sema_id);
413 s32 iSignalSema(s32 sema_id);
414 s32 WaitSema(s32 sema_id);
415 s32 PollSema(s32 sema_id);
416 s32 iPollSema(s32 sema_id);
419 s32 iDeleteSema(s32 sema_id);
420 void SetOsdConfigParam(void* addr);
421 void GetOsdConfigParam(void* addr);
422 void GetGsHParam(void* addr1, void* addr2, void* addr3);
424 void SetGsHParam(void* addr1, void* addr2, void* addr3, void* addr4);
425 void SetGsVParam(s32 arg1);
426 
427 //TLB functions are only available if InitTLBFunctions() is run (Normally run by crt0).
428 int PutTLBEntry(unsigned int PageMask, unsigned int EntryHi, unsigned int EntryLo0, unsigned int EntryLo1);
429 int iPutTLBEntry(unsigned int PageMask, unsigned int EntryHi, unsigned int EntryLo0, unsigned int EntryLo1);
430 int _SetTLBEntry(unsigned int index, unsigned int PageMask, unsigned int EntryHi, unsigned int EntryLo0, unsigned int EntryLo1);
431 int iSetTLBEntry(unsigned int index, unsigned int PageMask, unsigned int EntryHi, unsigned int EntryLo0, unsigned int EntryLo1);
432 int GetTLBEntry(unsigned int index, unsigned int *PageMask, unsigned int *EntryHi, unsigned int *EntryLo0, unsigned int *EntryLo1);
433 int iGetTLBEntry(unsigned int index, unsigned int *PageMask, unsigned int *EntryHi, unsigned int *EntryLo0, unsigned int *EntryLo1);
434 int ProbeTLBEntry(unsigned int EntryHi, unsigned int *PageMask, unsigned int *EntryLo0, unsigned int *EntryLo1);
435 int iProbeTLBEntry(unsigned int EntryHi, unsigned int *PageMask, unsigned int *EntryLo0, unsigned int *EntryLo1);
436 int ExpandScratchPad(unsigned int page);
437 
438 void EnableIntcHandler(u32 cause);
442 void EnableDmacHandler(u32 channel);
443 void iEnableDmacHandler(u32 channel);
444 void DisableDmacHandler(u32 channel);
445 void iDisableDmacHandler(u32 channel);
446 void KSeg0(s32 arg1);
449 u32 GetCop0(s32 reg_id);
450 void FlushCache(s32 operation);
451 u32 CpuConfig(u32 config);
452 u32 iGetCop0(s32 reg_id);
453 void iFlushCache(s32 operation);
455 void SetCPUTimerHandler(void (*handler)(void));
456 void SetCPUTimer(s32 compval);
457 
458 //These two are not available in the unpatched Protokernel (Unpatched SCPH-10000 and SCPH-15000 kernels).
459 void SetOsdConfigParam2(void* config, s32 size, s32 offset);
460 void GetOsdConfigParam2(void* config, s32 size, s32 offset);
461 
462 u64 GsGetIMR(void);
466 void SetPgifHandler(void* handler);
467 void SetVSyncFlag(u32 *, u64 *);
468 void SetSyscall(s32 syscall_num, void* handler);
469 //void _print(const char *fmt, ...); // null function
470 
471 void SifStopDma(void); //Disables SIF0 (IOP -> EE).
472 
477 
478 //Enables SIF0 (IOP -> EE). Sets channel 5 CHCR to 0x184 (CHAIN, TIE and STR).
479 void SifSetDChain(void);
480 void iSifSetDChain(void);
481 
482 //Sets/gets SIF register values (Refer to sifdma.h for a register list).
483 int SifSetReg(u32 register_num, int register_value);
484 int SifGetReg(u32 register_num);
485 
486 void _ExecOSD(int num_args, char *args[]) __attribute__((noreturn));
488 void PSMode(void);
491 
492 //Internal function for getting board-specific offsets, only present in later kernels (ROMVER > 20010608).
493 void _GetGsDxDyOffset(int mode, int *dx, int *dy, int *dw, int *dh);
494 
495 //Internal function for reinitializing the TLB, only present in later kernels. Please use InitTLB() instead to initialize the TLB with all kernels.
496 int _InitTLB(void);
497 /* (PSX only) Sets the memory size. 0 = 64MB mode, 1 = 32MB mode. The mode is only binding when either _InitTLB() or the PSX ExecPS2() syscall is called.
498  The stack pointer must remain in range of usable memory, or a TLB exception will occur. */
499 int SetMemoryMode(int mode); //Arbitrarily named.
500 
501 void _SyncDCache(void *start, void *end);
502 void _InvalidDCache(void *start, void *end);
503 
504 /* stdlib - program termination */
505 void abort(void) __attribute__((noreturn));
506 void exit(int retval) __attribute__((noreturn));
507 void _exit(int retval) __attribute__((noreturn));
508 
509 /* errno.h */
510 #ifndef errno
511 extern int errno __attribute__((section("data")));
512 int *__errno(void);
513 #endif
514 
515 void *GetSyscallHandler(int syscall_no);
516 void *GetExceptionHandler(int except_no);
517 void *GetInterruptHandler(int intr_no);
518 
519 /* Helper functions for kernel patching */
520 int kCopy(void *dest, const void *src, int size);
521 int kCopyBytes(void *dest, const void *src, int size);
522 int Copy(void *dest, const void *src, int size);
523 void setup(int syscall_num, void* handler); //alias of "SetSyscall"
524 void *GetEntryAddress(int syscall);
525 
526 #ifdef __cplusplus
527 }
528 #endif
529 
530 #endif /* __KERNEL_H__ */
#define gp
Definition: as_reg_compat.h:84
jpgData * info
Definition: camera-test.c:14
s32 CreateSema(ee_sema_t *sema)
CPU_CONFIG
Definition: kernel.h:269
@ CPU_CONFIG_ENABLE_ICE
Definition: kernel.h:271
@ CPU_CONFIG_DISBLE_ICE
Definition: kernel.h:274
@ CPU_CONFIG_ENABLE_DIE
Definition: kernel.h:270
@ CPU_CONFIG_ENABLE_DCE
Definition: kernel.h:272
@ CPU_CONFIG_DISBLE_DCE
Definition: kernel.h:275
@ CPU_CONFIG_DISBLE_DIE
Definition: kernel.h:273
s32 iWakeupThread(s32 thread_id)
s32 _iRotateThreadReadyQueue(s32 priority)
static int ee_kmode_exit()
Definition: kernel.h:198
s32 MachineType(void)
u32 GetCop0(s32 reg_id)
void SetupHeap(void *heap_start, s32 heap_size)
s32 _iWakeupThread(s32 thread_id)
static int ee_get_opmode(void)
Definition: kernel.h:150
void _exit(int retval)
s32 Deci2Call(s32, u32 *)
void SetVCommonHandler(s32 handler_num, void *handler_func)
s32 AddIntcHandler2(s32 cause, s32(*handler_func)(s32 cause, void *arg, void *addr), s32 next, void *arg)
void SetGsVParam(s32 arg1)
void PSMode(void)
u64 GsGetIMR(void)
s32 SignalSema(s32 sema_id)
void GetGsHParam(void *addr1, void *addr2, void *addr3)
s32 DeleteSema(s32 sema_id)
void TerminateLibrary(void)
s32 iSignalSema(s32 sema_id)
s32 iPollSema(s32 sema_id)
s32 iDeleteSema(s32 sema_id)
s32 iSifDmaStat(u32 id)
static int ee_set_opmode(u32 opmode)
Definition: kernel.h:163
void exit(int retval)
Definition: terminate.c:25
s32 iResumeThread(s32 thread_id)
s32 ReferSemaStatus(s32 sema_id, ee_sema_t *sema)
int DisableDmac(int dmac)
u32 SifSetDma(SifDmaTransfer_t *sdd, s32 len)
void SifSetDChain(void)
static void nopdelay(void)
Definition: kernel.h:141
int EnableIntc(int intc)
void * SetupThread(void *gp, void *stack, s32 stack_size, void *args, void *root_func)
int PatchIsNeeded(void)
Definition: libosd_common.c:20
void InitExecPS2(void)
Definition: libosd.c:47
s32 _iSuspendThread(s32 thread_id)
u32 iCpuConfig(u32 config)
void _InvalidDCache(void *start, void *end)
void iEnableDmacHandler(u32 channel)
void * GetSyscallHandler(int syscall_no)
int DisableIntc(int intc)
int GetTLBEntry(unsigned int index, unsigned int *PageMask, unsigned int *EntryHi, unsigned int *EntryLo0, unsigned int *EntryLo1)
Definition: tlbsrc.c:111
s32 _DisableIntc(s32 cause)
void InitAlarm(void)
Definition: alarm.c:43
void SetCPUTimer(s32 compval)
int * __errno(void)
void iDisableIntcHandler(u32 cause)
s32 _iEnableIntc(s32 cause)
int iSetTLBEntry(unsigned int index, unsigned int PageMask, unsigned int EntryHi, unsigned int EntryLo0, unsigned int EntryLo1)
void SetPgifHandler(void *handler)
s32 RemoveIntcHandler(s32 cause, s32 handler_id)
s32 ReferThreadStatus(s32 thread_id, ee_thread_status_t *info)
s32 iRotateThreadReadyQueue(s32 priority)
int iDisableDmac(int dmac)
s32 CreateThread(ee_thread_t *thread)
void EnableDmacHandler(u32 channel)
s32 Interrupt2Iop(s32 cause)
s32 GetGsVParam(void)
static int ee_kmode_enter()
Definition: kernel.h:181
void RFU009(u32 arg0, u32 arg1)
void SifStopDma(void)
int iGetTLBEntry(unsigned int index, unsigned int *PageMask, unsigned int *EntryHi, unsigned int *EntryLo0, unsigned int *EntryLo1)
void SetVTLBRefillHandler(s32 handler_num, void *handler_func)
void SetVInterruptHandler(s32 handler_num, void *handler_func)
void SetGsCrt(s16 interlace, s16 pal_ntsc, s16 field)
void InitTLB(void)
Definition: tlbfunc.c:57
void Exit(s32 exit_code)
s32 iReleaseWaitThread(s32 thread_id)
void ExitThread(void)
u32 iSifSetDma(SifDmaTransfer_t *sdd, s32 len)
s32 AddSbusIntcHandler(s32 cause, void(*handler)(int call))
u32 iGetCop0(s32 reg_id)
s32 iReleaseAlarm(s32 alarm_id)
void SyncDCache(void *start, void *end)
s32 _iReleaseAlarm(s32 alarm_id)
s32 _iDisableIntc(s32 cause)
s32 AddIntcHandler(s32 cause, s32(*handler_func)(s32 cause), s32 next)
void iSifSetDChain(void)
int InitThread(void)
s32 _EnableDmac(s32 channel)
s32 ReleaseWaitThread(s32 thread_id)
u8 RFU059(void)
int iDisableIntc(int intc)
void InvalidDCache(void *start, void *end)
@ DMAC_CIS
Definition: kernel.h:127
@ DMAC_FROM_IPU
Definition: kernel.h:119
@ DMAC_SIF1
Definition: kernel.h:122
@ DMAC_FROM_SPR
Definition: kernel.h:124
@ DMAC_SIF2
Definition: kernel.h:123
@ DMAC_SIF0
Definition: kernel.h:121
@ DMAC_TO_SPR
Definition: kernel.h:125
@ DMAC_VIF1
Definition: kernel.h:117
@ DMAC_GIF
Definition: kernel.h:118
@ DMAC_TO_IPU
Definition: kernel.h:120
@ DMAC_MEIS
Definition: kernel.h:128
@ DMAC_BEIS
Definition: kernel.h:129
@ DMAC_VIF0
Definition: kernel.h:116
s32 iSetAlarm(u16 time, void(*callback)(s32 alarm_id, u16 time, void *common), void *common)
void SetGsHParam(void *addr1, void *addr2, void *addr3, void *addr4)
void * GetEntryAddress(int syscall)
s32 iSuspendThread(s32 thread_id)
u64 iGsGetIMR(void)
s32 iTerminateThread(s32 thread_id)
s32 ResumeThread(s32 thread_id)
void InitOsd(void)
Definition: libosd_full.c:69
void ResetEE(u32 init_bitfield)
u64 iGsPutIMR(u64 imr)
void abort(void)
Definition: terminate.c:16
void * ChangeGP(void *gp)
int iProbeTLBEntry(unsigned int EntryHi, unsigned int *PageMask, unsigned int *EntryLo0, unsigned int *EntryLo1)
s32 WakeupThread(s32 thread_id)
int ProbeTLBEntry(unsigned int EntryHi, unsigned int *PageMask, unsigned int *EntryLo0, unsigned int *EntryLo1)
Definition: tlbsrc.c:136
s32 PollSema(s32 sema_id)
s32 WaitSema(s32 sema_id)
void InitTLBFunctions(void)
Definition: tlbfunc.c:41
s32 StartThread(s32 thread_id, void *args)
s32 _iDisableDmac(s32 channel)
s32 AddDmacHandler(s32 channel, s32(*handler)(s32 channel), s32 next)
void _SyncDCache(void *start, void *end)
s32 _DisableDmac(s32 channel)
int PutTLBEntry(unsigned int PageMask, unsigned int EntryHi, unsigned int EntryLo0, unsigned int EntryLo1)
Definition: tlbsrc.c:61
void KSeg0(s32 arg1)
void * EndOfHeap(void)
s32 SleepThread(void)
void ExitDeleteThread(void)
void * GetInterruptHandler(int intr_no)
int Copy(void *dest, const void *src, int size)
void _InitSys(void)
void * _gp
int SifSetReg(u32 register_num, int register_value)
void _Exit(s32 exit_code)
s32 _EnableIntc(s32 cause)
s32 _SetAlarm(u16 time, void(*callback)(s32 alarm_id, u16 time, void *common), void *common)
s32 iReferSemaStatus(s32 sema_id, ee_sema_t *sema)
void DisableDmacHandler(u32 channel)
@ INTC_VIF0
Definition: kernel.h:87
@ INTC_VIF1
Definition: kernel.h:88
@ INTC_SFIFO
Definition: kernel.h:96
@ INTC_SBUS
Definition: kernel.h:84
@ INTC_TIM2
Definition: kernel.h:94
@ INTC_VU0
Definition: kernel.h:89
@ INTC_VU1
Definition: kernel.h:90
@ INTC_VBLANK_S
Definition: kernel.h:85
@ INTC_GS
Definition: kernel.h:83
@ INTC_VU0WD
Definition: kernel.h:97
@ INTC_TIM1
Definition: kernel.h:93
@ INTC_IPU
Definition: kernel.h:91
@ INTC_VBLANK_E
Definition: kernel.h:86
@ INTC_TIM0
Definition: kernel.h:92
void SetOsdConfigParam(void *addr)
s32 _ReleaseAlarm(s32 alarm_id)
void iFlushCache(s32 operation)
s32 EnableCache(s32 cache)
int iPutTLBEntry(unsigned int PageMask, unsigned int EntryHi, unsigned int EntryLo0, unsigned int EntryLo1)
void _LoadExecPS2(const char *filename, s32 num_args, char *args[])
int SetMemoryMode(int mode)
void SetGP(void *gp)
void SetCPUTimerHandler(void(*handler)(void))
void iInvalidDCache(void *start, void *end)
s32 _ExecPS2(void *entry, void *gp, int num_args, char *args[])
s32 RemoveDmacHandler(s32 channel, s32 handler_id)
s32 iCancelWakeupThread(s32 thread_id)
void FlushCache(s32 operation)
void * GetGP(void)
int _InitTLB(void)
s32 _iGetThreadId(void)
s32 _iEnableDmac(s32 channel)
s32 ExecPS2(void *entry, void *gp, int num_args, char *args[])
void SetSyscall(s32 syscall_num, void *handler)
s32 DisableCache(s32 cache)
void ExecOSD(int num_args, char *args[])
s32 iReferThreadStatus(s32 thread_id, ee_thread_status_t *info)
int kCopy(void *dest, const void *src, int size)
s32 GetMemorySize(void)
void iDisableDmacHandler(u32 channel)
s32 iChangeThreadPriority(s32 thread_id, s32 priority)
s32 SifDmaStat(u32 id)
s32 _iSetAlarm(u16 time, void(*callback)(s32 alarm_id, u16 time, void *common), void *common)
void setup(int syscall_num, void *handler)
s32 RotateThreadReadyQueue(s32 priority)
int ExpandScratchPad(unsigned int page)
Definition: tlbsrc.c:163
int errno
s32 TerminateThread(s32 thread_id)
int kCopyBytes(void *dest, const void *src, int size)
void LoadExecPS2(const char *filename, s32 num_args, char *args[])
u64 GsPutIMR(u64 imr)
int iEnableIntc(int intc)
void _ExecOSD(int num_args, char *args[])
void iSyncDCache(void *start, void *end)
int DIntr(void)
void GetOsdConfigParam(void *addr)
s32 CancelWakeupThread(s32 thread_id)
void GetOsdConfigParam2(void *config, s32 size, s32 offset)
int SifGetReg(u32 register_num)
int _SetTLBEntry(unsigned int index, unsigned int PageMask, unsigned int EntryHi, unsigned int EntryLo0, unsigned int EntryLo1)
s32 DeleteThread(s32 thread_id)
u32 CpuConfig(u32 config)
void SetVSyncFlag(u32 *, u64 *)
void * GetExceptionHandler(int except_no)
void DisableIntcHandler(u32 cause)
int EnableDmac(int dmac)
void iEnableIntcHandler(u32 cause)
s32 SetAlarm(u16 time, void(*callback)(s32 alarm_id, u16 time, void *common), void *common)
void SetOsdConfigParam2(void *config, s32 size, s32 offset)
void EnableIntcHandler(u32 cause)
s32 SuspendThread(s32 thread_id)
s32 AddDmacHandler2(s32 channel, s32(*handler)(s32 channel, void *arg, void *addr), s32 next, void *arg)
void _GetGsDxDyOffset(int mode, int *dx, int *dy, int *dw, int *dh)
s32 ChangeThreadPriority(s32 thread_id, s32 priority)
s32 ReleaseAlarm(s32 alarm_id)
Definition: alarm.c:110
int iEnableDmac(int dmac)
s32 RemoveSbusIntcHandler(s32 cause)
int EIntr(void)
s32 GetThreadId(void)
u32 time
Definition: libmouse.c:37
s32 index
Definition: libpad.c:194
s32 mode
Definition: rpc_client.c:15
int init_count
Definition: kernel.h:218
int count
Definition: kernel.h:216
int max_count
Definition: kernel.h:217
u32 option
Definition: kernel.h:221
u32 attr
Definition: kernel.h:220
int wait_threads
Definition: kernel.h:219
int initial_priority
Definition: kernel.h:259
int current_priority
Definition: kernel.h:260
void * gp_reg
Definition: kernel.h:230
u32 option
Definition: kernel.h:234
int current_priority
Definition: kernel.h:232
int stack_size
Definition: kernel.h:229
int status
Definition: kernel.h:226
void * func
Definition: kernel.h:227
void * stack
Definition: kernel.h:228
u32 attr
Definition: kernel.h:233
int initial_priority
Definition: kernel.h:231
signed int s32
Definition: tamtypes.h:58
unsigned int u32
Definition: tamtypes.h:30
signed short s16
Definition: tamtypes.h:52
unsigned short u16
Definition: tamtypes.h:24
unsigned char u8
Definition: tamtypes.h:23
unsigned long u64
Definition: tamtypes.h:34