Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/external/gpl3/binutils/dist/gas/config Fix a bug where the o...



details:   https://anonhg.NetBSD.org/src/rev/f9a472d7b7fa
branches:  trunk
changeset: 338550:f9a472d7b7fa
user:      matt <matt%NetBSD.org@localhost>
date:      Fri May 29 22:18:51 2015 +0000

description:
Fix a bug where the octeon+ saa/saad instructions think they are using the AT
register when they actually aren't.

diffstat:

 external/gpl3/binutils/dist/gas/config/tc-mips.c |  14 ++++++++++++--
 1 files changed, 12 insertions(+), 2 deletions(-)

diffs (34 lines):

diff -r 979f9996de45 -r f9a472d7b7fa external/gpl3/binutils/dist/gas/config/tc-mips.c
--- a/external/gpl3/binutils/dist/gas/config/tc-mips.c  Fri May 29 19:39:41 2015 +0000
+++ b/external/gpl3/binutils/dist/gas/config/tc-mips.c  Fri May 29 22:18:51 2015 +0000
@@ -9235,18 +9235,28 @@
 
        
     case M_SAA_AB:
-      ab = 1;
+      ab = (offset_expr.X_op != O_constant || offset_expr.X_add_number != 0);
     case M_SAA_OB:
       s = "saa";
       off0 = 1;
       fmt = "t,(b)";
+      if (!ab)
+       {
+         tempreg = AT;
+         goto ld_noat;
+       }
       goto ld_st;
     case M_SAAD_AB:
-      ab = 1;
+      ab = (offset_expr.X_op != O_constant || offset_expr.X_add_number != 0);
     case M_SAAD_OB:
       s = "saad";
       off0 = 1;
       fmt = "t,(b)";
+      if (!ab)
+       {
+         tempreg = AT;
+         goto ld_noat;
+       }
       goto ld_st;
 
    /* New code added to support COPZ instructions.



Home | Main Index | Thread Index | Old Index