summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndree Buschmann <AndreeBuschmann@t-online.de>2010-05-10 19:12:03 +0000
committerAndree Buschmann <AndreeBuschmann@t-online.de>2010-05-10 19:12:03 +0000
commit18b5488a4a5c84e64f1d45537ee0e46055f83482 (patch)
treecbe7891e1b243292b264738738dd22eda352ed8b
parent08d3c0be378a8e929379b398e0feb2eb164bc36a (diff)
downloadrockbox-18b5488a4a5c84e64f1d45537ee0e46055f83482.zip
rockbox-18b5488a4a5c84e64f1d45537ee0e46055f83482.tar.gz
rockbox-18b5488a4a5c84e64f1d45537ee0e46055f83482.tar.bz2
rockbox-18b5488a4a5c84e64f1d45537ee0e46055f83482.tar.xz
Minor speed up (+3%) of iPod Video screen updates.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@25938 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--firmware/target/arm/ipod/video/lcd-as-video.S20
1 files changed, 13 insertions, 7 deletions
diff --git a/firmware/target/arm/ipod/video/lcd-as-video.S b/firmware/target/arm/ipod/video/lcd-as-video.S
index 4b0cabc..21a04a6 100644
--- a/firmware/target/arm/ipod/video/lcd-as-video.S
+++ b/firmware/target/arm/ipod/video/lcd-as-video.S
@@ -25,7 +25,9 @@
* void lcd_write_data(const fb_data *addr,
* int pixelcount);
*
- * Writes pixelcount pixels from src-pointer (lcd_framebuffer) to BCM dataport.
+ * Writes pixelcount pixels from src-pointer (lcd_framebuffer) to BCM dataport.
+ * Use the sequence ld 2, wr 2, ld 2, wr 2 with alternating registers for best
+ * performance.
*/
.align 2
.global lcd_write_data
@@ -37,20 +39,24 @@ lcd_write_data: /* r1 = pixel count, must be even */
subs r1, r1, #16
.loop16:
- ldmgeia r0!, {r2-r4, r12}
- stmgeia lr, {r2-r4, r12}
- ldmgeia r0!, {r2-r4, r12}
- stmgeia lr, {r2-r4, r12}
+ ldmgeia r0!, {r2-r3}
+ stmgeia lr, {r2-r3}
+ ldmgeia r0!, {r4, r12}
+ stmgeia lr, {r4, r12}
+ ldmgeia r0!, {r2-r3}
+ stmgeia lr, {r2-r3}
+ ldmgeia r0!, {r4, r12}
+ stmgeia lr, {r4, r12}
subges r1, r1, #16
bge .loop16
/* no need to correct the count, we're just checking bits from now */
tst r1, #8
ldmneia r0!, {r2-r4, r12}
- stmneia lr, {r2-r4, r12}
+ stmneia lr, {r2-r4, r12}
tst r1, #4
ldmneia r0!, {r2-r3}
- stmneia lr, {r2-r3}
+ stmneia lr, {r2-r3}
tst r1, #2
ldrne r3, [r0], #4
strne r3, [lr]