* config/tc-hppa.c (pa_ip): Handle PA2.0 unit completers. Handle
[deliverable/binutils-gdb.git] / gas / config / tc-hppa.c
index 2f3f2d99260c044cb44ee4e54089b84feccfd4fc..fe53273d9d5f4b46b1b779cdcdf687a129a49ce1 100644 (file)
@@ -2794,6 +2794,30 @@ pa_ip (str)
                            flag = 1;
                            s += 3;
                          }
+                       else if (strncasecmp (s, "swz", 3) == 0)
+                         {
+                           cmpltr = 1;
+                           flag = 0;
+                           s += 3;
+                         }
+                       else if (strncasecmp (s, "swc", 3) == 0)
+                         {
+                           cmpltr = 5;
+                           flag = 0;
+                           s += 3;
+                         }
+                       else if (strncasecmp (s, "nwz", 3) == 0)
+                         {
+                           cmpltr = 1;
+                           flag = 1;
+                           s += 3;
+                         }
+                       else if (strncasecmp (s, "nwc", 3) == 0)
+                         {
+                           cmpltr = 5;
+                           flag = 1;
+                           s += 3;
+                         }
                        /* ",*" is a valid condition.  */
                        else if (*args != 'U')
                          as_bad (_("Invalid Unit Instruction Condition."));
@@ -3307,6 +3331,20 @@ pa_ip (str)
              opcode |= (num & 0x20) << 6;
              INSERT_FIELD_AND_CONTINUE (opcode, num & 0x1f, 5);
 
+           /* Handle a 5 bit immediate at 10 with 'd' as the complement
+              of the high bit of the immediate.  */
+           case 'B':
+             num = pa_get_absolute_expression (&the_insn, &s);
+             if (strict && the_insn.exp.X_op != O_constant)
+               break;
+             s = expr_end;
+             CHECK_FIELD (num, 63, 0, strict);
+             if (num & 0x20)
+               ;
+             else
+               opcode |= (1 << 13);
+             INSERT_FIELD_AND_CONTINUE (opcode, num & 0x1f, 21);
+
            /* Handle a 5 bit immediate at 10.  */
            case 'Q':
              num = pa_get_absolute_expression (&the_insn, &s);
@@ -4217,7 +4255,7 @@ md_apply_fix (fixP, valp)
   if (hppa_fixP)
     {
       unsigned long buf_wd = bfd_get_32 (stdoutput, buf);
-      unsigned char fmt = bfd_hppa_insn2fmt (buf_wd);
+      int fmt = bfd_hppa_insn2fmt (buf_wd);
 
       /* If there is a symbol associated with this fixup, then it's something
         which will need a SOM relocation (except for some PC-relative relocs).
This page took 0.027427 seconds and 4 git commands to generate.