picodrive/platform/pandora/asm_utils.s
notaz 84100c0fd5 Gizmondo port updated to 1.51b
git-svn-id: file:///home/notaz/opt/svn/PicoDrive@567 be3aeb3a-fb24-0410-a615-afba39da0efa
2008-08-10 10:18:36 +00:00

64 lines
1.3 KiB
ArmAsm

@ vim:filetype=armasm
.global cache_flush_d_inval_i
cache_flush_d_inval_i:
mov r2, #0x0 @ must be 0 ???
swi 0x9f0002
bx lr
.global clut_line @ void *dest, void *src, unsigned short *pal, int pixels_mask
clut_line:
stmfd sp!, {r4-r11,lr}
and lr, r3, #0xff0000
mov lr, lr, lsr #15 @ mask
mov r3, r3, lsr #3
and r3, r3, #0xff @ counter
add r11,r0, #800*2
clut_line_loop:
ldmia r1!, {r10,r12}
and r4, lr, r10, lsl #1
ldrh r4, [r2, r4]
and r5, lr, r10, lsr #7
ldrh r5, [r2, r5]
orr r4, r4, r4, lsl #16
and r6, lr, r10, lsr #15
ldrh r6, [r2, r6]
orr r5, r5, r5, lsl #16
and r7, lr, r10, lsr #23
ldrh r7, [r2, r7]
orr r6, r6, r6, lsl #16
and r8, lr, r12, lsl #1
ldrh r8, [r2, r8]
orr r7, r7, r7, lsl #16
and r9, lr, r12, lsr #7
ldrh r9, [r2, r9]
orr r8, r8, r8, lsl #16
and r10,lr, r12, lsr #15
ldrh r10,[r2, r10]
orr r9, r9, r9, lsl #16
and r12,lr, r12, lsr #23
ldrh r12,[r2, r12]
orr r10,r10,r10, lsl #16
subs r3, r3, #1
orr r12,r12,r12, lsl #16
stmia r0!, {r4-r10,r12}
stmia r11!,{r4-r10,r12}
bne clut_line_loop
ldmfd sp!, {r4-r11,pc}