summaryrefslogtreecommitdiff
path: root/arm9/lib/include
diff options
context:
space:
mode:
Diffstat (limited to 'arm9/lib/include')
-rw-r--r--arm9/lib/include/OS_context.h6
-rw-r--r--arm9/lib/include/OS_init.h3
-rw-r--r--arm9/lib/include/OS_interrupt.h1
-rw-r--r--arm9/lib/include/OS_message.h28
-rw-r--r--arm9/lib/include/OS_valarm.h25
-rw-r--r--arm9/lib/include/OS_vramExclusive.h10
-rw-r--r--arm9/lib/include/gx.h2
-rw-r--r--arm9/lib/include/registers.h1
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