Mario Kart 64
Loading...
Searching...
No Matches
libultra_internal.h
Go to the documentation of this file.
1#ifndef _LIBULTRA_INTERNAL_H_
2#define _LIBULTRA_INTERNAL_H_
3#include <libultraship.h>
4#include "macros.h"
5
6#ifdef TARGET_N64
7typedef struct __OSEventState {
8 OSMesgQueue* messageQueue;
9 OSMesg message;
10} __OSEventState;
11#endif
12
17
18/*
19 * This define is needed because the original definitions in __osDequeueThread.c are declared
20 * seperately instead of part of a single struct, however some code alises over this memory
21 * assuming a unified structure. To fix this, we declare the full type here and then alias the
22 * symbol names to the correct members in AVOID_UB.
23 */
24typedef struct {
25 /*0x00*/ struct OSThread_s* next;
26 /*0x04*/ OSPri priority;
27 /*0x08*/ struct OSThread_s* queue;
28 /*0x0C*/ struct OSThread_s* tlnext;
29 /*0x10*/ struct OSThread_s* unk10;
30 /*0x14*/ u32 unk14;
32
33// Original OSThread_ListHead definitions
38
39// Original EEPROM definitions
40extern u32 D_80365E00[15];
41extern u32 D_80365E3C;
42
43#ifdef TARGET_N64
44typedef struct {
45 u32 initialized; // probably something like initialized?
46 OSThread* mgrThread;
47 OSMesgQueue* cmdQueue;
48 OSMesgQueue* eventQueue;
49 OSMesgQueue* accessQueue;
50 s32 (*dma_func)(s32, u32, void*, size_t);
51 s32 (*edma_func)(OSPiHandle*, s32, u32, void*, size_t);
52} OSMgrArgs;
53#endif
54
61s32 __osSiRawStartDma(s32, void*);
63void __osSiGetAccess(void);
64void __osSiRelAccess(void);
65u32 __osProbeTLB(void*);
67void __osPiGetAccess(void);
68void __osSetSR(u32);
69u32 __osGetSR(void);
70void __osSetFpcCsr(u32);
71s32 __osSiRawReadIo(void*, u32*);
72s32 __osSiRawWriteIo(void*, u32);
73s32 osPiRawReadIo(u32 a0, u32* a1);
74void __osSpSetStatus(u32);
75u32 __osSpGetStatus(void);
76s32 __osSpSetPc(void*);
77s32 __osSpDeviceBusy(void);
78s32 __osSiDeviceBusy(void);
79s32 __osSpRawStartDma(u32 dir, void* sp_ptr, void* dram_ptr, size_t size);
80void __osSetHWIntrRoutine(OSHWIntr interrupt, s32 (*callback)(void), void* sp);
82void __osViInit(void);
83OSViContext* __osViGetCurrentContext(void);
84OSViContext* __osViGetCurrentContext2(void);
85void __osViSwapContext(void);
89s32 __osAiDeviceBusy(void);
91u32 __osGetCause(void);
92s32 __osAtomicDec(u32*);
93#endif
OSThread * __osActiveQueue
Definition __osDequeueThread.c:5
OSThread * __osRunningThread
Definition __osDequeueThread.c:6
OSThread * __osFaultedThread
Definition __osDequeueThread.c:7
OSThread * __osRunQueue
Definition __osDequeueThread.c:4
s32 __osSiRawWriteIo(void *, u32)
Definition __osSiRawWriteIo.c:4
s32 __osSpSetPc(void *)
Definition __osSpSetPc.c:4
s32 __osSpDeviceBusy(void)
Definition __osSpDeviceBusy.c:4
void __osSetSR(u32)
s32 __osAtomicDec(u32 *)
Definition __osAtomicDec.c:3
void __osViSwapContext(void)
Definition __osViSwapContext.c:7
u32 __osSpGetStatus(void)
Definition __osSpGetStatus.c:4
void __osSetTimerIntr(u64)
Definition osTimer.c:59
u32 __osGetCause(void)
void __osSpSetStatus(u32)
Definition __osSpSetStatus.c:4
u32 __osProbeTLB(void *)
s32 __osSiRawReadIo(void *, u32 *)
Definition __osSiRawReadIo.c:4
void __osDispatchThread(void)
void __osSetCompare(u32)
s32 __osSiRawStartDma(s32, void *)
Definition __osSiRawStartDma.c:4
u32 D_80365E00[15]
void __osDequeueThread(OSThread **, OSThread *)
void __osViInit(void)
Definition __osViInit.c:17
s32 __osDisableInt(void)
u64 __osInsertTimer(OSTimer *)
Definition osTimer.c:68
void __osSiRelAccess(void)
Definition __osSiCreateAccessQueue.c:23
s32 __osAiDeviceBusy(void)
Definition __osAiDeviceBusy.c:4
OSThread * __osPopThread(OSThread **)
s32 __osSiDeviceBusy(void)
Definition __osSiDeviceBusy.c:4
u32 __osGetSR(void)
s32 osPiRawReadIo(u32 a0, u32 *a1)
Definition osPiRawReadIo.c:6
OSViContext * __osViGetCurrentContext2(void)
void __osSiCreateAccessQueue(void)
Definition __osSiCreateAccessQueue.c:9
void __osEnqueueThread(OSThread **, OSThread *)
void __osSetHWIntrRoutine(OSHWIntr interrupt, s32(*callback)(void), void *sp)
void __osSetFpcCsr(u32)
void __osSiGetAccess(void)
Definition __osSiCreateAccessQueue.c:15
void __osRestoreInt(s32)
s32 __osSpRawStartDma(u32 dir, void *sp_ptr, void *dram_ptr, size_t size)
Definition __osSpRawStartDma.c:4
u32 D_80365E3C
OSViContext * __osViGetCurrentContext(void)
Definition __osViGetCurrentContext.c:5
s32 __osLeoInterrupt()
Definition __osLeoInterrupt.c:14
void __osPiCreateAccessQueue(void)
Definition __osPiCreateAccessQueue.c:9
void __osPiGetAccess(void)
Definition __osPiCreateAccessQueue.c:15
void __osEnqueueAndYield(OSThread **)
unsigned long long int u64
Definition llconv.c:2
struct OSThread_s OSThread
s32 OSPri
Definition os_thread.h:21
struct OSTimer_str OSTimer
Definition libultra_internal.h:24
OSPri priority
Definition libultra_internal.h:26
struct OSThread_s * next
Definition libultra_internal.h:25
struct OSThread_s * queue
Definition libultra_internal.h:27
u32 unk14
Definition libultra_internal.h:30
struct OSThread_s * unk10
Definition libultra_internal.h:29
struct OSThread_s * tlnext
Definition libultra_internal.h:28
Definition os_thread.h:50
Definition libultra_internal.h:13
OSThread * next
Definition libultra_internal.h:14
OSPri priority
Definition libultra_internal.h:15