summaryrefslogtreecommitdiff
path: root/apps/plugins/lib
diff options
context:
space:
mode:
Diffstat (limited to 'apps/plugins/lib')
-rw-r--r--apps/plugins/lib/gray_blockfuncs.c2
-rw-r--r--apps/plugins/lib/gray_drawgraymap.c2
2 files changed, 4 insertions, 0 deletions
diff --git a/apps/plugins/lib/gray_blockfuncs.c b/apps/plugins/lib/gray_blockfuncs.c
index 4eea73a..47ff167 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)
* see there for an explanation) for all 8 pixels and put them on an
* extra stack */
asm (
+ "sts.l pr,@-r15 \n" /* save pr (fix GCC331 build, cleaner) */
"mov #8,r3 \n" /* loop count in r3: 8 pixels */
"mov %6,r2 \n" /* copy mask */
@@ -103,6 +104,7 @@ static void _writeblock(unsigned char *address, unsigned mask, unsigned bits)
"add #-1,r3 \n" /* decrease loop count */
"cmp/pl r3 \n" /* loop count > 0? */
"bt .wb_loop \n" /* yes: loop */
+ "lds.l @r15+,pr \n" /* retsore pr */
: /* outputs */
/* %0, in & out */ "+r"(_gray_random_buffer),
/* %1, in & out */ "+r"(pat_ptr)
diff --git a/apps/plugins/lib/gray_drawgraymap.c b/apps/plugins/lib/gray_drawgraymap.c
index 5febeb2..dc33446 100644
--- a/apps/plugins/lib/gray_drawgraymap.c
+++ b/apps/plugins/lib/gray_drawgraymap.c
@@ -49,6 +49,7 @@ static void _writearray(unsigned char *address, unsigned char *src, int stride,
* _writepixel, see there for an explanation) for all 8 pixels and put them
* on an extra "stack" */
asm (
+ "sts.l pr,@-r15 \n" /* save pr (fix GCC331 build, cleaner) */
"mov #8,r3 \n" /* loop count in r3: 8 pixels */
"mov %7,r2 \n" /* copy mask */
@@ -98,6 +99,7 @@ static void _writearray(unsigned char *address, unsigned char *src, int stride,
"add #-1,r3 \n" /* decrease loop count */
"cmp/pl r3 \n" /* loop count > 0? */
"bt .wa_loop \n" /* yes: loop */
+ "lds.l @r15+,pr \n" /* restore pr */
: /* outputs */
/* %0, in & out */ "+r"(_gray_random_buffer),
/* %1, in & out */ "+r"(pat_ptr)