diff options
Diffstat (limited to 'arm9/lib/include')
-rw-r--r-- | arm9/lib/include/OS_context.h | 6 | ||||
-rw-r--r-- | arm9/lib/include/OS_init.h | 3 | ||||
-rw-r--r-- | arm9/lib/include/OS_interrupt.h | 1 | ||||
-rw-r--r-- | arm9/lib/include/OS_message.h | 28 | ||||
-rw-r--r-- | arm9/lib/include/OS_valarm.h | 25 | ||||
-rw-r--r-- | arm9/lib/include/OS_vramExclusive.h | 10 | ||||
-rw-r--r-- | arm9/lib/include/gx.h | 2 | ||||
-rw-r--r-- | arm9/lib/include/registers.h | 1 |
8 files changed, 72 insertions, 4 deletions
diff --git a/arm9/lib/include/OS_context.h b/arm9/lib/include/OS_context.h index 7a58a2b1..7c25ce2e 100644 --- a/arm9/lib/include/OS_context.h +++ b/arm9/lib/include/OS_context.h @@ -15,8 +15,8 @@ typedef struct OSContext CPContext cp_context; } OSContext; -extern u32 OS_SaveContext(OSContext *context); -extern void OS_LoadContext(OSContext *context); -extern void OS_InitContext(OSContext *context, u32 func, u32 stack); +void OS_InitContext(register OSContext *context, register u32 newpc, register u32 newsp); +BOOL OS_SaveContext(OSContext *context); +void OS_LoadContext(OSContext *context); #endif //POKEDIAMOND_OS_CONTEXT_H diff --git a/arm9/lib/include/OS_init.h b/arm9/lib/include/OS_init.h index 499c9f6c..f0b80220 100644 --- a/arm9/lib/include/OS_init.h +++ b/arm9/lib/include/OS_init.h @@ -24,6 +24,9 @@ #include "OS_interrupt.h" #include "OS_reset.h" #include "OS_exception.h" +#include "OS_message.h" +#include "OS_valarm.h" +#include "OS_vramExclusive.h" void OS_Init(void); diff --git a/arm9/lib/include/OS_interrupt.h b/arm9/lib/include/OS_interrupt.h index d84cae00..893e6d65 100644 --- a/arm9/lib/include/OS_interrupt.h +++ b/arm9/lib/include/OS_interrupt.h @@ -4,6 +4,7 @@ #include "consts.h" #include "nitro/OS_interrupt_shared.h" +#define OS_IE_V_COUNT (1UL << REG_OS_IE_VE_SHIFT) #define OS_IE_TIMER0 (1UL << REG_OS_IE_T0_SHIFT) #define OS_IE_TIMER1 (1UL << REG_OS_IE_T1_SHIFT) diff --git a/arm9/lib/include/OS_message.h b/arm9/lib/include/OS_message.h new file mode 100644 index 00000000..2dc26d50 --- /dev/null +++ b/arm9/lib/include/OS_message.h @@ -0,0 +1,28 @@ +#ifndef POKEDIAMOND_OS_MESSAGE_H +#define POKEDIAMOND_OS_MESSAGE_H + +#include "nitro/types.h" +#include "OS_thread.h" + +typedef void *OSMessage; + +typedef struct OSMessageQueue +{ + OSThreadQueue queueSend; + OSThreadQueue queueReceive; + OSMessage *msgArray; + s32 msgCount; + s32 firstIndex; + s32 usedCount; +} OSMessageQueue; + +#define OS_MESSAGE_NOBLOCK 0 +#define OS_MESSAGE_BLOCK 1 + +void OS_InitMessageQueue(OSMessageQueue *mq, OSMessage *msgArray, s32 msgCount); +BOOL OS_SendMessage(OSMessageQueue *mq, OSMessage msg, s32 flags); +BOOL OS_ReceiveMessage(OSMessageQueue *mq, OSMessage *msg, s32 flags); +BOOL OS_JamMessage(OSMessageQueue *mq, OSMessage msg, s32 flags); +BOOL OS_ReadMessage(OSMessageQueue *mq, OSMessage *msg, s32 flags); + +#endif //POKEDIAMOND_OS_MESSAGE_H diff --git a/arm9/lib/include/OS_valarm.h b/arm9/lib/include/OS_valarm.h new file mode 100644 index 00000000..b4850f9d --- /dev/null +++ b/arm9/lib/include/OS_valarm.h @@ -0,0 +1,25 @@ +#ifndef POKEDIAMOND_OS_VALARM_H +#define POKEDIAMOND_OS_VALARM_H + +#include "nitro/types.h" +#include "OS_alarm.h" + +typedef struct OSiVAlarm OSVAlarm; +struct OSiVAlarm +{ + OSAlarmHandler handler; + void *arg; + u32 tag; + u32 frame; + s16 fire; + s16 delay; + OSVAlarm *prev; + OSVAlarm *next; + BOOL period; + BOOL finish; + BOOL canceled; +}; + +void OS_InitVAlarm(void); + +#endif //POKEDIAMOND_OS_VALARM_H diff --git a/arm9/lib/include/OS_vramExclusive.h b/arm9/lib/include/OS_vramExclusive.h new file mode 100644 index 00000000..d7c3ef92 --- /dev/null +++ b/arm9/lib/include/OS_vramExclusive.h @@ -0,0 +1,10 @@ +#ifndef POKEDIAMOND_OS_VRAMEXCLUSIVE_H +#define POKEDIAMOND_OS_VRAMEXCLUSIVE_H + +#include "nitro/types.h" + +void OSi_InitVramExclusive(void); +BOOL OSi_TryLockVram(u16 bank, u16 lockId); +void OSi_UnlockVram(u16 bank, u16 lockId); + +#endif //POKEDIAMOND_OS_VRAMEXCLUSIVE_H diff --git a/arm9/lib/include/gx.h b/arm9/lib/include/gx.h index bc89aa04..f9478851 100644 --- a/arm9/lib/include/gx.h +++ b/arm9/lib/include/gx.h @@ -4,6 +4,7 @@ #include "fx.h" #include "MI_memory.h" #include "MI_dma.h" +#include "OS_vramExclusive.h" //temporary while other files aren't decompiled @@ -11,7 +12,6 @@ void GXi_NopClearFifo128_(void *); void MI_Copy16B(const void *, void *); void MI_Copy64B(void *src, void *dst); void MIi_CpuCopy32(const void *src, void *dst, u32 size); -void OSi_UnlockVram(u16, u16); #include "GXcommon.h" #include "GX_struct_2d.h" diff --git a/arm9/lib/include/registers.h b/arm9/lib/include/registers.h index 6bfb52ac..b2915f8c 100644 --- a/arm9/lib/include/registers.h +++ b/arm9/lib/include/registers.h @@ -345,6 +345,7 @@ #define reg_MI_MCD1 (*(REGType32v *)0x4100010) #define reg_CARD_DATA (*(REGType32v *)0x4100010) //? +#define REG_OS_IE_VE_SHIFT 2 #define REG_OS_IE_T0_SHIFT 3 #define REG_OS_IE_T1_SHIFT 4 |