summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorred031000 <rubenru09@aol.com>2020-06-07 22:33:50 +0100
committerred031000 <rubenru09@aol.com>2020-06-07 22:35:13 +0100
commit8baf7924fc2770e491a14494c35565f4b36c99ce (patch)
treeb5976a135c50b1e5ddb5c8f6fa7cfe1c85826260
parent5dfe3440383dd530bda24985f802d8c94bb452b8 (diff)
finally finish OS_reset and stop git being stupid
-rw-r--r--arm9/asm/arm9_itcm.s21
-rw-r--r--arm9/lib/.gitignore3
-rw-r--r--arm9/lib/include/OS_reset.h5
-rw-r--r--arm9/lib/src/OS_reset.c45
-rw-r--r--files/.gitattributes2
5 files changed, 34 insertions, 42 deletions
diff --git a/arm9/asm/arm9_itcm.s b/arm9/asm/arm9_itcm.s
index 13f0ad5c..5c3dc240 100644
--- a/arm9/asm/arm9_itcm.s
+++ b/arm9/asm/arm9_itcm.s
@@ -2,27 +2,6 @@
.include "global.inc"
.section .text
- ; OS
- arm_func_start OSi_DoResetSystem ;OS_reset.c
-OSi_DoResetSystem: ; 0x01FF84A4
- stmfd sp!, {lr}
- sub sp, sp, #4
- ldr r0, _01FF84DC
-_01FF84B0:
- ldrh r1, [r0]
- cmp r1, #0
- beq _01FF84B0
- ldr r0, _01FF84E0
- mov r1, #0
- strh r1, [r0]
- bl OSi_ReloadRomData
- bl OSi_DoBoot
- add sp, sp, #4
- ldmfd sp!, {lr}
- bx lr
-_01FF84DC: .word OSi_IsResetOccurred
-_01FF84E0: .word 0x04000208
-
; MI
arm_func_start MIi_DmaSetParams_wait_noInt
MIi_DmaSetParams_wait_noInt: ; 0x01FF84E4
diff --git a/arm9/lib/.gitignore b/arm9/lib/.gitignore
new file mode 100644
index 00000000..f64bee72
--- /dev/null
+++ b/arm9/lib/.gitignore
@@ -0,0 +1,3 @@
+libsyscall.a
+
+syscall/*.o
diff --git a/arm9/lib/include/OS_reset.h b/arm9/lib/include/OS_reset.h
index fd918370..cb7680d1 100644
--- a/arm9/lib/include/OS_reset.h
+++ b/arm9/lib/include/OS_reset.h
@@ -16,10 +16,11 @@ void OS_InitReset(void);
static void OSi_CommonCallback(PXIFifoTag tag, u32 data, BOOL err);
static void OSi_SendToPxi(u16 data);
void OS_ResetSystem(u32 parameter);
+static void OSi_DoResetSystem(void);
void OSi_DoBoot(void);
static void OSi_CpuClear32(register u32 data, register void *destp, register u32 size);
-void OSi_ReloadRomData(void);
-void OSi_ReadCardRom32(u32 src, void *dst, s32 len);
+static void OSi_ReloadRomData(void);
+static void OSi_ReadCardRom32(u32 src, void *dst, s32 len);
static inline u32 OS_GetResetParameter(void)
{
diff --git a/arm9/lib/src/OS_reset.c b/arm9/lib/src/OS_reset.c
index b7bf5f0b..0857bf0b 100644
--- a/arm9/lib/src/OS_reset.c
+++ b/arm9/lib/src/OS_reset.c
@@ -23,7 +23,6 @@ extern void DC_StoreAll(void);
extern void DC_InvalidateAll(void);
extern void IC_InvalidateAll(void);
extern void DC_WaitWriteBufferEmpty(void);
-extern void OSi_DoResetSystem(void); //in itcm, should technically be in this file
ARM_FUNC void OS_InitReset(void) {
if (OSi_IsInitReset) {
@@ -64,10 +63,19 @@ ARM_FUNC void OS_ResetSystem(u32 parameter) {
(void)OS_ResetRequestIrqMask((u32)~0);
*(u32 *)HW_RESET_PARAMETER_BUF = parameter;
OSi_SendToPxi(OS_PXI_COMMAND_RESET);
- OSi_DoResetSystem(); //oh boy this is in itcm, that's gonna be fun to deal with Kappa
+ OSi_DoResetSystem();
}
#pragma section ITCM begin
+ARM_FUNC static void OSi_DoResetSystem(void)
+{
+ while (!OSi_IsResetOccurred) { }
+
+ reg_OS_IME = 0;
+ OSi_ReloadRomData();
+ OSi_DoBoot();
+}
+
ARM_FUNC asm void OSi_DoBoot(void)
{
mov ip, #0x04000000
@@ -127,22 +135,7 @@ _01FF8284:
bx lr
}
-enum
-{
- CARD_MASTER_SELECT_ROM = 0x0,
- CARD_MASTER_ENABLE = 0x80,
- CARD_CMD_READ_PAGE = 0xb7,
- CARD_CTRL_CMD_MASK = 0x07000000,
- CARD_CTRL_CMD_PAGE = 0x01000000,
- CARD_CTRL_READ = 0x00000000,
- CARD_CTRL_RESET_HI = 0x20000000,
- CARD_CTRL_START = 0x80000000,
- CARD_CTRL_READY = 0x00800000,
- CARD_ENUM_END
-};
-
-
-ARM_FUNC void OSi_ReloadRomData(void)
+ARM_FUNC static void OSi_ReloadRomData(void)
{
u32 header = (u32)HW_ROM_HEADER_BUF;
const u32 rom_base = *(u32 *)HW_ROM_BASE_OFFSET_BUF;
@@ -182,7 +175,21 @@ ARM_FUNC void OSi_ReloadRomData(void)
OSi_ReadCardRom32(src_arm7, (void *)dst_arm7, (s32)len_arm7);
}
-ARM_FUNC void OSi_ReadCardRom32(u32 src, void *dst, s32 len) //should be static, can't mark as such
+enum
+{
+ CARD_MASTER_SELECT_ROM = 0x0,
+ CARD_MASTER_ENABLE = 0x80,
+ CARD_CMD_READ_PAGE = 0xb7,
+ CARD_CTRL_CMD_MASK = 0x07000000,
+ CARD_CTRL_CMD_PAGE = 0x01000000,
+ CARD_CTRL_READ = 0x00000000,
+ CARD_CTRL_RESET_HI = 0x20000000,
+ CARD_CTRL_START = 0x80000000,
+ CARD_CTRL_READY = 0x00800000,
+ CARD_ENUM_END
+};
+
+ARM_FUNC static void OSi_ReadCardRom32(u32 src, void *dst, s32 len)
{
vu32 *const hdr_GAME_BUF = (vu32 *)(HW_ROM_HEADER_BUF + 0x60);
diff --git a/files/.gitattributes b/files/.gitattributes
new file mode 100644
index 00000000..6129766f
--- /dev/null
+++ b/files/.gitattributes
@@ -0,0 +1,2 @@
+*.bin binary
+*.txt eol=crlf