diff options
| author | Andree Buschmann <AndreeBuschmann@t-online.de> | 2010-05-10 19:12:03 +0000 |
|---|---|---|
| committer | Andree Buschmann <AndreeBuschmann@t-online.de> | 2010-05-10 19:12:03 +0000 |
| commit | 18b5488a4a5c84e64f1d45537ee0e46055f83482 (patch) | |
| tree | cbe7891e1b243292b264738738dd22eda352ed8b | |
| parent | 08d3c0be378a8e929379b398e0feb2eb164bc36a (diff) | |
| download | rockbox-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.S | 20 |
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] |