* config/tc-hppa.c (md_apply_fix): Handle 22 bit fmt insn like a
authorJeff Law <law@redhat.com>
Mon, 3 May 1999 09:26:28 +0000 (09:26 +0000)
committerJeff Law <law@redhat.com>
Mon, 3 May 1999 09:26:28 +0000 (09:26 +0000)
        17 bit fmt insn.

gas/ChangeLog
gas/config/tc-hppa.c

index 852b6c7787db526180faac50ebbbb459edc7164c..fcd0af382988a67b774473003d79bd5b7bfc306d 100644 (file)
@@ -1,3 +1,8 @@
+Mon May  3 10:26:03 1999  Jeffrey A Law  (law@cygnus.com)
+
+       * config/tc-hppa.c (md_apply_fix): Handle 22 bit fmt insn like a
+       17 bit fmt insn.
+
 1999-04-30  Nick Clifton  <nickc@cygnus.com>
 
        * config/tc-mcore.c (mcore_s_section): Dump literals before
index 8785de8769dd654a759f4fe96397f18f6d404121..c0f532c36266cfad42e9f62612bdf36025046d2a 100644 (file)
@@ -3039,7 +3039,7 @@ md_apply_fix (fixP, valp)
          && fmt != 32
 #endif
          )
-       new_val = ((fmt == 12 || fmt == 17) ? 8 : 0);
+       new_val = ((fmt == 12 || fmt == 17 || fmt == 22) ? 8 : 0);
 #ifdef OBJ_SOM
       /* These field selectors imply that we do not want an addend.  */
       else if (hppa_fixP->fx_r_field == e_psel
@@ -3048,7 +3048,7 @@ md_apply_fix (fixP, valp)
               || hppa_fixP->fx_r_field == e_tsel
               || hppa_fixP->fx_r_field == e_rtsel
               || hppa_fixP->fx_r_field == e_ltsel)
-       new_val = ((fmt == 12 || fmt == 17) ? 8 : 0);
+       new_val = ((fmt == 12 || fmt == 17 || fmt == 22) ? 8 : 0);
       /* This is truely disgusting.  The machine independent code blindly
         adds in the value of the symbol being relocated against.  Damn!  */
       else if (fmt == 32
@@ -3063,13 +3063,13 @@ md_apply_fix (fixP, valp)
       /* Handle pc-relative exceptions from above.  */
 #define arg_reloc_stub_needed(CALLER, CALLEE) \
   ((CALLEE) && (CALLER) && ((CALLEE) != (CALLER)))
-      if ((fmt == 12 || fmt == 17)
+      if ((fmt == 12 || fmt == 17 || fmt == 22)
          && fixP->fx_addsy
          && fixP->fx_pcrel
          && !arg_reloc_stub_needed ((long) ((obj_symbol_type *)
                        fixP->fx_addsy->bsym)->tc_data.ap.hppa_arg_reloc,
                                    hppa_fixP->fx_arg_reloc)
-         && ((int)(*valp) > -262144 && (int)(*valp) < 262143)
+         && (((int)(*valp) > -262144 && (int)(*valp) < 262143) && fmt != 22)
          && S_GET_SEGMENT (fixP->fx_addsy) == hppa_fixP->segment
          && !(fixP->fx_subsy
               && S_GET_SEGMENT (fixP->fx_subsy) != hppa_fixP->segment))