From dd479ad907be1fb3363d687456ffa7f04f2bd185 Mon Sep 17 00:00:00 2001 From: Jeffrey Pfau Date: Wed, 17 Apr 2013 00:46:32 -0700 Subject: [PATCH] Now include source for HLE BIOS, even without assembler script --- src/gba/hle-bios.s | 67 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 src/gba/hle-bios.s diff --git a/src/gba/hle-bios.s b/src/gba/hle-bios.s new file mode 100644 index 000000000..a0dcb1336 --- /dev/null +++ b/src/gba/hle-bios.s @@ -0,0 +1,67 @@ +#define nop andeq r0, r0 + +.text + +b resetBase +b undefBase +b swiBase +b pabtBase +b dabtBase +nop +b irqBase +b fiqBase + +resetBase: +mov pc, #0x8000000 + +swiBase: +cmp sp, #0 +moveq sp, #0x04000000 +subeq sp, #0x20 +stmfd sp!, {lr} +ldrb r0, [lr, #-2] +cmp r0, #4 +bleq IntrWait +cmp r0, #5 +bleq IntrWait +ldmfd sp!, {lr} +movs pc, lr + +irqBase: +stmfd sp!, {r0-r3, r12, lr} +mov r0, #0x04000000 +add lr, pc, #0 +ldr pc, [r0, #-4] +ldmfd sp!, {r0-r3, r12, lr} +subs pc, lr, #4 + +IntrWait: +stmfd sp!, {r2,lr} +add sp, #-4 +strh r1, [sp, #0] +IntrWaitLoop: +mov r2, #0x04000000 +add r2, #0x200 +ldrh r0, [r2, #0] +strh r0, [sp, #2] +ldrh r1, [sp, #0] +orr r1, r0, r1 +strh r1, [r2, #0] +mov r0, #0x1F +msr cpsr, r0 +swi #0x020000 +mov r0, #0xD3 +msr cpsr, r0 +mov r0, #0x04000000 +ldrh r2, [r0, #-8] +ldrh r1, [sp, #0] +ands r1, r2 +eorne r1, r2 +strneh r1, [r0, #-8] +ldrh r0, [sp, #2] +mov r1, #0x04000000 +add r1, #0x200 +strh r0, [r1, #0] +beq IntrWaitLoop +add sp, #4 +ldmfd sp!, {r2,pc}