From 7b3404b932a8fadddb44774407b22127b0f02115 Mon Sep 17 00:00:00 2001 From: red031000 Date: Fri, 1 May 2020 20:10:48 +0100 Subject: remove include/nitro and shift everything to arm9/lib --- arm9/lib/src/OS_init.c | 38 ++++++++++++++++++++++++++ arm9/lib/src/OS_system.c | 71 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 109 insertions(+) create mode 100644 arm9/lib/src/OS_init.c create mode 100644 arm9/lib/src/OS_system.c (limited to 'arm9/lib/src') diff --git a/arm9/lib/src/OS_init.c b/arm9/lib/src/OS_init.c new file mode 100644 index 00000000..90b01ffa --- /dev/null +++ b/arm9/lib/src/OS_init.c @@ -0,0 +1,38 @@ +// +// Created by mart on 4/12/20. +// + +#include "function_target.h" +#include "OS_init.h" + +extern void PXI_Init(); +extern void OS_InitLock(); +extern void OS_InitIrqTable(); +extern void OS_SetIrqStackChecker(); +extern void OS_InitException(); +extern void MI_Init(); +extern void OS_InitVAlarm(); +extern void OSi_InitVramExclusive(); +extern void OS_InitThread(); +extern void OS_InitReset(); +extern void CTRDG_Init(); +extern void CARD_Init(); +extern void PM_Init(); + +ARM_FUNC void OS_Init(void) { + OS_InitArena(); + PXI_Init(); + OS_InitLock(); + OS_InitArenaEx(); + OS_InitIrqTable(); + OS_SetIrqStackChecker(); + OS_InitException(); + MI_Init(); + OS_InitVAlarm(); + OSi_InitVramExclusive(); + OS_InitThread(); + OS_InitReset(); + CTRDG_Init(); + CARD_Init(); + PM_Init(); +} diff --git a/arm9/lib/src/OS_system.c b/arm9/lib/src/OS_system.c new file mode 100644 index 00000000..5e891ad9 --- /dev/null +++ b/arm9/lib/src/OS_system.c @@ -0,0 +1,71 @@ +// +// Created by mart on 4/23/20. +// + +#include "function_target.h" +#include "OS_system.h" + +ARM_FUNC asm OSIntrMode OS_EnableInterrupts() { + mrs r0, cpsr + bic r1, r0, #HW_PSR_DISABLE_IRQ + msr cpsr_c, r1 + and r0, r0, #HW_PSR_DISABLE_IRQ + bx lr +} + +ARM_FUNC asm OSIntrMode OS_DisableInterrupts() { + mrs r0, cpsr + orr r1, r0, #HW_PSR_DISABLE_IRQ + msr cpsr_c, r1 + and r0, r0, #HW_PSR_DISABLE_IRQ + bx lr +} + +ARM_FUNC asm OSIntrMode OS_RestoreInterrupts(register OSIntrMode state) { + mrs r1, cpsr + bic r2, r1, #HW_PSR_DISABLE_IRQ + orr r2, r2, r0 + msr cpsr_c, r2 + and r0, r1, #HW_PSR_DISABLE_IRQ + bx lr +} + +ARM_FUNC asm OSIntrMode OS_DisableInterrupts_IrqAndFiq() { + mrs r0, cpsr + orr r1, r0, #HW_PSR_DISABLE_IRQ_FIQ + msr cpsr_c, r1 + and r0, r0, #HW_PSR_DISABLE_IRQ_FIQ + bx lr +} + +ARM_FUNC asm OSIntrMode OS_RestoreInterrupts_IrqAndFiq(register OSIntrMode state) { + mrs r1, cpsr + bic r2, r1, #HW_PSR_DISABLE_IRQ_FIQ + orr r2, r2, r0 + msr cpsr_c, r2 + and r0, r1, #HW_PSR_DISABLE_IRQ_FIQ + bx lr +} + +ARM_FUNC asm OSIntrMode OS_GetCpsrIrq() { + mrs r0, cpsr + and r0, r0, #HW_PSR_DISABLE_IRQ + bx lr +} + +ARM_FUNC asm OSProcMode OS_GetProcMode() { + mrs r0, cpsr + and r0, r0, #HW_PSR_CPU_MODE_MASK + bx lr +} + +ARM_FUNC asm void OS_SpinWait() { + subs r0, r0, #0x4 + bhs OS_SpinWait + bx lr +} + +ARM_FUNC void OS_WaitVBlankIntr() { + SVC_WaitByLoop(0x1); + OS_WaitIrq(TRUE, OS_IE_V_BLANK); +} -- cgit v1.2.3 From 527b257015fa32ac4007b1d7e9198ac37d8e1542 Mon Sep 17 00:00:00 2001 From: red031000 Date: Fri, 1 May 2020 20:38:36 +0100 Subject: macro and register --- arm9/lib/src/OS_system.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'arm9/lib/src') diff --git a/arm9/lib/src/OS_system.c b/arm9/lib/src/OS_system.c index 5e891ad9..c2b08681 100644 --- a/arm9/lib/src/OS_system.c +++ b/arm9/lib/src/OS_system.c @@ -21,7 +21,7 @@ ARM_FUNC asm OSIntrMode OS_DisableInterrupts() { bx lr } -ARM_FUNC asm OSIntrMode OS_RestoreInterrupts(register OSIntrMode state) { +ARM_FUNC asm OSIntrMode OS_RestoreInterrupts(OSIntrMode state) { mrs r1, cpsr bic r2, r1, #HW_PSR_DISABLE_IRQ orr r2, r2, r0 @@ -38,7 +38,7 @@ ARM_FUNC asm OSIntrMode OS_DisableInterrupts_IrqAndFiq() { bx lr } -ARM_FUNC asm OSIntrMode OS_RestoreInterrupts_IrqAndFiq(register OSIntrMode state) { +ARM_FUNC asm OSIntrMode OS_RestoreInterrupts_IrqAndFiq(OSIntrMode state) { mrs r1, cpsr bic r2, r1, #HW_PSR_DISABLE_IRQ_FIQ orr r2, r2, r0 -- cgit v1.2.3