bx lr
+.global block_and @ void *src, size_t n, int andpat
+
+block_and:
+ stmfd sp!, {r4-r5}
+ orr r2, r2, r2, lsl #8
+ orr r2, r2, r2, lsl #16
+ mov r1, r1, lsr #4
+block_loop_and:
+ ldmia r0, {r3-r5,r12}
+ subs r1, r1, #1
+ and r3, r3, r2
+ and r4, r4, r2
+ and r5, r5, r2
+ and r12,r12,r2
+ stmia r0!, {r3-r5,r12}
+ bne block_loop_and
+ ldmfd sp!, {r4-r5}
+ bx lr
+
+
.global block_andor @ void *src, size_t n, int andpat, int orpat
block_andor:
bx lr
-.global soft_scale @ void *dst, unsigned short *pal, int offs, int lines
+.global memset32 @ int *dest, int c, int count
+
+memset32:
+ stmfd sp!, {lr}
+
+ mov r3, r1
+ subs r2, r2, #4
+ bmi mst32_fin
+
+ mov r12,r1
+ mov lr, r1
+
+mst32_loop:
+ subs r2, r2, #4
+ stmia r0!, {r1,r3,r12,lr}
+ bpl mst32_loop
+
+mst32_fin:
+ tst r2, #1
+ strne r1, [r0], #4
+
+ tst r2, #2
+ stmneia r0!, {r1,r3}
+
+ ldmfd sp!, {lr}
+ bx lr
+
+
+
+.global soft_scale @ void *dst, unsigned short *pal, int line_offs, int lines
soft_scale:
stmfd sp!,{r4-r11,lr}