all repos — mgba @ dd479ad907be1fb3363d687456ffa7f04f2bd185

mGBA Game Boy Advance Emulator

Now include source for HLE BIOS, even without assembler script
Jeffrey Pfau jeffrey@endrift.com
Wed, 17 Apr 2013 00:46:32 -0700
commit

dd479ad907be1fb3363d687456ffa7f04f2bd185

parent

54fffb7fff09bc5daca6f995b041b185f0cf2524

1 files changed, 67 insertions(+), 0 deletions(-)

jump to
A 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}