Grayscale lib on archos: Fixed bug introduced with the register usage change. Reusing a register twice won't work that well...


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@7577 a1c6a512-1295-4272-9138-f99709370657
diff --git a/apps/plugins/lib/gray_core.c b/apps/plugins/lib/gray_core.c
index 7fcd3da..ed37f61 100644
--- a/apps/plugins/lib/gray_core.c
+++ b/apps/plugins/lib/gray_core.c
@@ -390,7 +390,7 @@
                     "mov.l   @%[patp]+,r7\n"
                     "mov.l   @%[patp]+,r8\n"
                     "mov.l   @%[patp]+,r9\n"
-                    "mov.l   @%[patp],%[rx]  \n"
+                    "mov.l   @%[patp],r10\n"
 
                     "tst     %[mask],%[mask] \n"  /* nothing to keep? */
                     "bt      .ur_sloop   \n"  /* yes: jump to short loop */
@@ -410,11 +410,11 @@
                     "rotcl   r0          \n"
                     "shlr    r9          \n"
                     "rotcl   r0          \n"
-                    "shlr    %[rx]       \n"
-                    "mov.b   @%[addr],%[patp]\n"  /* read old value */
+                    "shlr    r10         \n"
+                    "mov.b   @%[addr],%[rx]  \n"  /* read old value */
                     "rotcl   r0          \n"
-                    "and     %[mask],%[patp] \n"  /* mask out unneeded bits */
-                    "or      %[patp],r0  \n"  /* set new bits */
+                    "and     %[mask],%[rx]   \n"  /* mask out unneeded bits */
+                    "or      %[rx],r0    \n"  /* set new bits */
                     "mov.b   r0,@%[addr] \n"  /* store value to bitplane */
                     "add     %[psiz],%[addr] \n"  /* advance to next bitplane */
                     "cmp/hi  %[addr],%[end]  \n"  /* last bitplane done? */
@@ -438,7 +438,7 @@
                     "rotcl   r0          \n"
                     "shlr    r9          \n"
                     "rotcl   r0          \n"
-                    "shlr    %[rx]       \n"
+                    "shlr    r10         \n"
                     "rotcl   r0          \n"
                     "mov.b   r0,@%[addr]     \n"  /* store byte to bitplane */
                     "add     %[psiz],%[addr] \n"  /* advance to next bitplane */
@@ -455,7 +455,7 @@
                     [end] "r"(end),
                     [patp]"[rx]"(pat_ptr)
                     : /* clobbers */
-                    "r0", "r1", "r2", "r3", "r6", "r7", "r8", "r9"
+                    "r0", "r1", "r2", "r3", "r6", "r7", "r8", "r9", "r10"
                 );
             }
 #elif defined(CPU_COLDFIRE) && (LCD_DEPTH == 2)
diff --git a/apps/plugins/lib/gray_draw.c b/apps/plugins/lib/gray_draw.c
index d03f450..d9b9a36 100644
--- a/apps/plugins/lib/gray_draw.c
+++ b/apps/plugins/lib/gray_draw.c
@@ -675,7 +675,7 @@
         "mov.l   @%[patp]+,r7\n"
         "mov.l   @%[patp]+,r8\n"
         "mov.l   @%[patp]+,r9\n"
-        "mov.l   @%[patp],%[rx]  \n"
+        "mov.l   @%[patp],r10\n"
 
         "not     %[mask],%[mask] \n"  /* "set" mask -> "keep" mask */
         "extu.b  %[mask],%[mask] \n"  /* mask out high bits */
@@ -697,11 +697,11 @@
         "rotcl   r0          \n"
         "shlr    r9          \n"
         "rotcl   r0          \n"
-        "shlr    %[rx]       \n"
-        "mov.b   @%[addr],%[patp]\n"  /* read old value */
+        "shlr    r10         \n"
+        "mov.b   @%[addr],%[rx]  \n"  /* read old value */
         "rotcl   r0          \n"
-        "and     %[mask],%[patp] \n"  /* mask out unneeded bits */
-        "or      %[patp],r0  \n"  /* set new bits */
+        "and     %[mask],%[rx]   \n"  /* mask out unneeded bits */
+        "or      %[rx],r0    \n"  /* set new bits */
         "mov.b   r0,@%[addr] \n"  /* store value to bitplane */
         "add     %[psiz],%[addr] \n"  /* advance to next bitplane */
         "cmp/hi  %[addr],%[end]  \n"  /* last bitplane done? */
@@ -725,7 +725,7 @@
         "rotcl   r0          \n"
         "shlr    r9          \n"
         "rotcl   r0          \n"
-        "shlr    %[rx]       \n"
+        "shlr    r10         \n"
         "rotcl   r0          \n"
         "mov.b   r0,@%[addr] \n"  /* store byte to bitplane */
         "add     %[psiz],%[addr] \n"  /* advance to next bitplane */
@@ -742,7 +742,7 @@
         [end] "r"(end),
         [patp]"[rx]"(pat_ptr)
         : /* clobbers */
-        "r0", "r1", "r2", "r3", "r6", "r7", "r8", "r9"
+        "r0", "r1", "r2", "r3", "r6", "r7", "r8", "r9", "r10"
     );
 #elif defined(CPU_COLDFIRE) && (LCD_DEPTH == 2)
     unsigned long pat_stack[8];