summaryrefslogtreecommitdiff
path: root/apps/plugins/lib/gray_blockfuncs.c
diff options
context:
space:
mode:
authorJens Arnold <amiconn@rockbox.org>2004-06-25 21:01:37 +0000
committerJens Arnold <amiconn@rockbox.org>2004-06-25 21:01:37 +0000
commitb058366b1310bb8495bdc002a86e3c2500aa5e6f (patch)
tree5519cd20511c6b8f6c42a0764fe49883c31816f7 /apps/plugins/lib/gray_blockfuncs.c
parent7c6bdd64935452464b21f99198896c34569105e5 (diff)
downloadrockbox-b058366b1310bb8495bdc002a86e3c2500aa5e6f.tar.gz
rockbox-b058366b1310bb8495bdc002a86e3c2500aa5e6f.zip
Save and restore pr register within _writearray() / _writeblock(). Cleaner coding, fixes GCC 3.3.1 build.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@4803 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/plugins/lib/gray_blockfuncs.c')
-rw-r--r--apps/plugins/lib/gray_blockfuncs.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/apps/plugins/lib/gray_blockfuncs.c b/apps/plugins/lib/gray_blockfuncs.c
index 4eea73a63b..47ff1672a8 100644
--- a/apps/plugins/lib/gray_blockfuncs.c
+++ b/apps/plugins/lib/gray_blockfuncs.c
@@ -54,6 +54,7 @@ static void _writeblock(unsigned char *address, unsigned mask, unsigned bits)
54 * see there for an explanation) for all 8 pixels and put them on an 54 * see there for an explanation) for all 8 pixels and put them on an
55 * extra stack */ 55 * extra stack */
56 asm ( 56 asm (
57 "sts.l pr,@-r15 \n" /* save pr (fix GCC331 build, cleaner) */
57 "mov #8,r3 \n" /* loop count in r3: 8 pixels */ 58 "mov #8,r3 \n" /* loop count in r3: 8 pixels */
58 "mov %6,r2 \n" /* copy mask */ 59 "mov %6,r2 \n" /* copy mask */
59 60
@@ -103,6 +104,7 @@ static void _writeblock(unsigned char *address, unsigned mask, unsigned bits)
103 "add #-1,r3 \n" /* decrease loop count */ 104 "add #-1,r3 \n" /* decrease loop count */
104 "cmp/pl r3 \n" /* loop count > 0? */ 105 "cmp/pl r3 \n" /* loop count > 0? */
105 "bt .wb_loop \n" /* yes: loop */ 106 "bt .wb_loop \n" /* yes: loop */
107 "lds.l @r15+,pr \n" /* retsore pr */
106 : /* outputs */ 108 : /* outputs */
107 /* %0, in & out */ "+r"(_gray_random_buffer), 109 /* %0, in & out */ "+r"(_gray_random_buffer),
108 /* %1, in & out */ "+r"(pat_ptr) 110 /* %1, in & out */ "+r"(pat_ptr)