mirror of https://github.com/mgba-emu/mgba.git
Now include source for HLE BIOS, even without assembler script
This commit is contained in:
parent
54fffb7fff
commit
dd479ad907
|
@ -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}
|
Loading…
Reference in New Issue