summaryrefslogtreecommitdiff
path: root/arm7/lib/include
diff options
context:
space:
mode:
Diffstat (limited to 'arm7/lib/include')
-rw-r--r--arm7/lib/include/MI_dma.h6
-rw-r--r--arm7/lib/include/MI_memory.h10
-rw-r--r--arm7/lib/include/OS_alarm.h9
-rw-r--r--arm7/lib/include/OS_context.h20
-rw-r--r--arm7/lib/include/OS_init.h4
-rw-r--r--arm7/lib/include/OS_interrupt.h17
-rw-r--r--arm7/lib/include/OS_mutex.h9
-rw-r--r--arm7/lib/include/OS_spinLock.h28
-rw-r--r--arm7/lib/include/OS_terminate_proc.h6
-rw-r--r--arm7/lib/include/OS_thread.h36
-rw-r--r--arm7/lib/include/consts.h2
-rw-r--r--arm7/lib/include/mmap.h3
-rw-r--r--arm7/lib/include/registers.h6
-rw-r--r--arm7/lib/include/syscall.h6
-rw-r--r--arm7/lib/include/systemWork.h7
15 files changed, 162 insertions, 7 deletions
diff --git a/arm7/lib/include/MI_dma.h b/arm7/lib/include/MI_dma.h
index b728f814..e65f0b89 100644
--- a/arm7/lib/include/MI_dma.h
+++ b/arm7/lib/include/MI_dma.h
@@ -1,7 +1,7 @@
-#ifndef GUARD_MI_DMA_H
-#define GUARD_MI_DMA_H
+#ifndef POKEDIAMOND_ARM7_MI_DMA_H
+#define POKEDIAMOND_ARM7_MI_DMA_H
-#include "nitro/dma.h"
+#include "nitro/MI_dma_shared.h"
#include "nitro/types.h"
void MI_StopDma(u32 channel);
diff --git a/arm7/lib/include/MI_memory.h b/arm7/lib/include/MI_memory.h
index cb0c53fc..53398ec5 100644
--- a/arm7/lib/include/MI_memory.h
+++ b/arm7/lib/include/MI_memory.h
@@ -12,4 +12,14 @@ void MIi_CpuCopyFast(register u32 * src, register u32 * dst, register u32 size);
void MI_CpuFill8(register u8 value, register u8 * dst, register u32 size);
void MI_CpuCopy8(register u8 * src, register u8 * dst, register u32 size);
+static inline void MI_CpuFill32(void *dest, u32 data, u32 size)
+{
+ MIi_CpuClear32(data, dest, size);
+}
+
+static inline void MI_CpuClear32(void *dest, u32 size)
+{
+ MI_CpuFill32(dest, 0, size);
+}
+
#endif
diff --git a/arm7/lib/include/OS_alarm.h b/arm7/lib/include/OS_alarm.h
new file mode 100644
index 00000000..8ae89e97
--- /dev/null
+++ b/arm7/lib/include/OS_alarm.h
@@ -0,0 +1,9 @@
+#ifndef POKEDIAMOND_ARM7_OS_ALARM_H
+#define POKEDIAMOND_ARM7_OS_ALARM_H
+
+#include "nitro/OS_alarm_shared.h"
+
+void OS_CreateAlarm(OSAlarm *alarm);
+void OS_SetAlarm(OSAlarm *alarm, OSTick tick, OSAlarmHandler handler, void *arg);
+
+#endif //POKEDIAMOND_ARM7_OS_ALARM_H
diff --git a/arm7/lib/include/OS_context.h b/arm7/lib/include/OS_context.h
new file mode 100644
index 00000000..b01ccb8b
--- /dev/null
+++ b/arm7/lib/include/OS_context.h
@@ -0,0 +1,20 @@
+#ifndef POKEDIAMOND_ARM7_OS_CONTEXT_H
+#define POKEDIAMOND_ARM7_OS_CONTEXT_H
+
+#include "nitro/types.h"
+
+typedef struct OSContext
+{
+ u32 cpsr;
+ u32 r[13];
+ u32 sp;
+ u32 lr;
+ u32 pc_plus4;
+ u32 sp_svc;
+} OSContext;
+
+extern u32 OS_SaveContext(OSContext *context);
+extern void OS_LoadContext(OSContext *context);
+extern void OS_InitContext(OSContext *context, u32 func, u32 stack);
+
+#endif //POKEDIAMOND_ARM7_OS_CONTEXT_H
diff --git a/arm7/lib/include/OS_init.h b/arm7/lib/include/OS_init.h
index c90740c2..03d64ae1 100644
--- a/arm7/lib/include/OS_init.h
+++ b/arm7/lib/include/OS_init.h
@@ -6,6 +6,10 @@
#include "OS_arena.h"
#include "OS_alloc.h"
#include "OS_reset.h"
+#include "OS_terminate_proc.h"
+#include "OS_spinLock.h"
+#include "OS_context.h"
+#include "OS_interrupt.h"
void OS_Init(void);
diff --git a/arm7/lib/include/OS_interrupt.h b/arm7/lib/include/OS_interrupt.h
index afcb9b5f..fb869483 100644
--- a/arm7/lib/include/OS_interrupt.h
+++ b/arm7/lib/include/OS_interrupt.h
@@ -2,5 +2,22 @@
#define POKEDIAMOND_ARM7_OS_INTERRUPT_H
#include "nitro/OS_interrupt_shared.h"
+#include "consts.h"
+
+extern OSIrqFunction OS_IRQTable[];
+extern OSIrqCallbackInfo OSi_IrqCallbackInfo[9];
+
+static inline void OSi_SetVBlankCount(u32 count)
+{
+ *(u32 *)HW_VBLANK_COUNT_BUF = count;
+}
+
+void OS_InitIrqTable(void);
+void OS_SetIrqFunction(OSIrqMask intrBit, OSIrqFunction function);
+void OSi_EnterTimerCallback(u32 timerNo, void (*callback) (void *), void *arg);
+OSIrqMask OS_SetIrqMask(OSIrqMask mask);
+OSIrqMask OS_EnableIrqMask(OSIrqMask mask);
+OSIrqMask OS_DisableIrqMask(OSIrqMask mask);
+OSIrqMask OS_ResetRequestIrqMask(OSIrqMask mask);
#endif //POKEDIAMOND_ARM7_OS_INTERRUPT_H
diff --git a/arm7/lib/include/OS_mutex.h b/arm7/lib/include/OS_mutex.h
index 6b8da6a8..216da68c 100644
--- a/arm7/lib/include/OS_mutex.h
+++ b/arm7/lib/include/OS_mutex.h
@@ -1,9 +1,10 @@
-#ifndef GUARD_OS_MUTEX_H
-#define GUARD_OS_MUTEX_H
+#ifndef POKEDIAMOND_ARM7_OS_MUTEX_H
+#define POKEDIAMOND_ARM7_OS_MUTEX_H
+#include "OS_context.h"
#include "nitro/OS_mutex_shared.h"
-#include "nitro/types.h"
void OS_InitMutex(OSMutex* mutex);
+void OSi_UnlockAllMutex(OSThread * thread);
-#endif
+#endif //POKEDIAMOND_ARM7_OS_MUTEX_H
diff --git a/arm7/lib/include/OS_spinLock.h b/arm7/lib/include/OS_spinLock.h
new file mode 100644
index 00000000..f7366d1f
--- /dev/null
+++ b/arm7/lib/include/OS_spinLock.h
@@ -0,0 +1,28 @@
+#ifndef POKEDIAMOND_ARM7_OS_SPINLOCK_H
+#define POKEDIAMOND_ARM7_OS_SPINLOCK_H
+
+#include "consts.h"
+#include "nitro/OS_spinLock_shared.h"
+#include "syscall.h"
+
+void OS_InitLock(void);
+void FUN_037F8CB4(s32 ct);
+s32 OSi_DoLockByWord(u16 lockId, OSLockWord *lockp, void (*ctrlFuncp) (void), BOOL disableFiq);
+s32 OSi_DoUnlockByWord(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp) (void), BOOL disableFIQ);
+s32 OSi_DoTryLockByWord(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp) (void), BOOL disableFiq);
+s32 OS_LockCartridge(u16 lockID);
+s32 OS_UnlockCartridge(u16 lockID);
+s32 OS_TryLockCartridge(u16 lockID);
+void OSi_AllocateCartridgeBus(void);
+void OSi_FreeCartridgeBus(void);
+u16 OS_ReadOwnerOfLockWord(OSLockWord * lock);
+s32 OS_UnLockCartridge(u16 lockID);
+s32 OS_GetLockID(void);
+void OS_ReleaseLockID(register u16 lockID);
+
+static inline void OSi_WaitByLoop(void)
+{
+ FUN_037F8CB4(0x1000 / 4);
+}
+
+#endif //POKEDIAMOND_ARM7_OS_SPINLOCK_H
diff --git a/arm7/lib/include/OS_terminate_proc.h b/arm7/lib/include/OS_terminate_proc.h
new file mode 100644
index 00000000..ea2273c8
--- /dev/null
+++ b/arm7/lib/include/OS_terminate_proc.h
@@ -0,0 +1,6 @@
+#ifndef POKEDIAMOND_ARM7_OS_TERMINATE_PROC_H
+#define POKEDIAMOND_ARM7_OS_TERMINATE_PROC_H
+
+void OS_Terminate(void);
+
+#endif //POKEDIAMOND_ARM7_OS_TERMINATE_PROC_H
diff --git a/arm7/lib/include/OS_thread.h b/arm7/lib/include/OS_thread.h
new file mode 100644
index 00000000..b1d3a01b
--- /dev/null
+++ b/arm7/lib/include/OS_thread.h
@@ -0,0 +1,36 @@
+#ifndef POKEDIAMOND_ARM7_OS_THREAD_H
+#define POKEDIAMOND_ARM7_OS_THREAD_H
+
+#include "OS_context.h"
+#include "nitro/OS_thread_shared.h"
+
+static s32 OSi_GetUnusedThreadId(void);
+static void OSi_InsertLinkToQueue(OSThreadQueue *queue, OSThread *thread);
+static OSThread *OSi_RemoveLinkFromQueue(OSThreadQueue *queue);
+static OSThread *OSi_RemoveSpecifiedLinkFromQueue(OSThreadQueue *queue, OSThread *thread);
+OSMutex *OSi_RemoveMutexLinkFromQueue(OSMutexQueue *queue);
+static void OSi_InsertThreadToList(OSThread *thread);
+static void OSi_RemoveThreadFromList(OSThread *thread);
+static void OSi_RescheduleThread(void);
+void OS_InitThread(void);
+void OS_CreateThread(OSThread *thread, void (*func) (void *), void *arg, void *stack, u32 stackSize, u32 prio);
+void OS_ExitThread(void);
+static void OSi_ExitThread_ArgSpecified(OSThread *thread, void *arg);
+static void OSi_ExitThread(void *arg);
+static void OSi_ExitThread_Destroy(void);
+void OS_JoinThread(OSThread *thread);
+BOOL OS_IsThreadTerminated(const OSThread *thread);
+void OS_SleepThread(OSThreadQueue *queue);
+void OS_WakeupThread(OSThreadQueue *queue);
+void OS_WakeupThreadDirect(OSThread *thread);
+OSThread *OS_SelectThread(void);
+void OS_RescheduleThread(void);
+BOOL OS_SetThreadPriority(OSThread *thread, u32 prio);
+void OS_Sleep(u32 msec);
+static void OSi_SleepAlarmCallback(void *arg);
+OSSwitchThreadCallback OS_SetSwitchThreadCallback(OSSwitchThreadCallback callback);
+u32 OS_DisableScheduler(void);
+u32 OS_EnableScheduler(void);
+void OS_SetThreadDestructor(OSThread *thread, OSThreadDestructor dtor);
+
+#endif //POKEDIAMOND_ARM7_OS_THREAD_H
diff --git a/arm7/lib/include/consts.h b/arm7/lib/include/consts.h
index dd297402..a6c4c393 100644
--- a/arm7/lib/include/consts.h
+++ b/arm7/lib/include/consts.h
@@ -3,5 +3,7 @@
#include "nitro/consts_shared.h"
#include "mmap.h"
+#include "registers.h"
+#include "systemWork.h"
#endif //POKEDIAMOND_ARM7_CONSTS_H
diff --git a/arm7/lib/include/mmap.h b/arm7/lib/include/mmap.h
index 24d15ad7..1b403dc5 100644
--- a/arm7/lib/include/mmap.h
+++ b/arm7/lib/include/mmap.h
@@ -23,4 +23,7 @@
#define HW_PRV_WRAM_SYSRV (HW_PRV_WRAM + HW_PRV_WRAM_SIZE - HW_PRV_WRAM_SYSRV_SIZE)
+#define HW_VBLANK_COUNT_BUF (HW_MAIN_MEM + 0x007ffc3c)
+#define HW_LOCK_ID_FLAG_SUB (HW_MAIN_MEM + 0x007fffb8)
+
#endif //POKEDIAMOND_ARM7_MMAP_H
diff --git a/arm7/lib/include/registers.h b/arm7/lib/include/registers.h
new file mode 100644
index 00000000..4ef8bdfb
--- /dev/null
+++ b/arm7/lib/include/registers.h
@@ -0,0 +1,6 @@
+#ifndef POKEDIAMOND_ARM7_REGISTERS_H
+#define POKEDIAMOND_ARM7_REGISTERS_H
+
+#include "nitro/registers_shared.h"
+
+#endif //POKEDIAMOND_ARM7_REGISTERS_H
diff --git a/arm7/lib/include/syscall.h b/arm7/lib/include/syscall.h
new file mode 100644
index 00000000..55462cc7
--- /dev/null
+++ b/arm7/lib/include/syscall.h
@@ -0,0 +1,6 @@
+#ifndef POKEDIAMOND_ARM7_SYSCALL_H
+#define POKEDIAMOND_ARM7_SYSCALL_H
+
+void SVC_WaitByLoop(u32 ct);
+
+#endif //POKEDIAMOND_ARM7_SYSCALL_H
diff --git a/arm7/lib/include/systemWork.h b/arm7/lib/include/systemWork.h
new file mode 100644
index 00000000..95a17845
--- /dev/null
+++ b/arm7/lib/include/systemWork.h
@@ -0,0 +1,7 @@
+#ifndef POKEDIAMOND_ARM7_SYSTEMWORK_H
+#define POKEDIAMOND_ARM7_SYSTEMWORK_H
+
+#include "OS_context.h"
+#include "nitro/OS_systemWork_shared.h"
+
+#endif //POKEDIAMOND_ARM7_SYSTEMWORK_H