Fix incorrect encoding of 'push lr' and 'pop pc'.
authorDavid Given <dg@cowlark.com>
Fri, 28 Jun 2013 23:32:39 +0000 (00:32 +0100)
committerDavid Given <dg@cowlark.com>
Fri, 28 Jun 2013 23:32:39 +0000 (00:32 +0100)
--HG--
branch : dtrg-videocore

mach/vc4/as/mach5.c

index 350806e..e98f675 100644 (file)
@@ -174,13 +174,11 @@ void stack_instr(quad opcode, int loreg, int hireg, int extrareg)
         case 26: /* lr */
             extrareg = 26;
             hireg = loreg = -1;
-            b = 0;
             break;
 
                case 31: /* pc */
                        extrareg = 31;
                        hireg = loreg = -1;
-                       b = 0;
                        break;
 
                default:
@@ -204,7 +202,10 @@ void stack_instr(quad opcode, int loreg, int hireg, int extrareg)
                serror("invalid register range");
 
        if (hireg == -1)
-               m = 31;
+       {
+               b = 3;
+               m = 15;
+       }
        else
                m = hireg - loreg;