daily update
[deliverable/binutils-gdb.git] / opcodes / m32r-asm.c
index b45f720ee4d04a557c6ddc79a01cf7949ab64104..e02c747abffc4ac05d6d39cde4034cb08fea8147 100644 (file)
@@ -88,8 +88,11 @@ parse_hi16 (CGEN_CPU_DESC cd,
        return MISSING_CLOSING_PARENTHESIS;
       ++*strp;
       if (errmsg == NULL
-         && result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER)
-       value >>= 16;
+         && result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER)
+       {
+         value >>= 16;
+         value &= 0xffff;
+       }
       *valuep = value;
       return errmsg;
     }
@@ -97,16 +100,17 @@ parse_hi16 (CGEN_CPU_DESC cd,
     {
       *strp += 6;
       errmsg = cgen_parse_address (cd, strp, opindex, BFD_RELOC_M32R_HI16_SLO,
-                                  & result_type, & value);
+                                  & result_type, & value);
       if (**strp != ')')
        return MISSING_CLOSING_PARENTHESIS;
       ++*strp;
       if (errmsg == NULL
          && result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER)
-        {
-          value = value + (value & 0x8000 ? 0x10000 : 0);
-          value >>= 16;
-        }
+       {
+         value += 0x8000;
+         value >>= 16;
+         value &= 0xffff;
+       }
       *valuep = value;
       return errmsg;
     }
@@ -141,11 +145,7 @@ parse_slo16 (CGEN_CPU_DESC cd,
       ++*strp;
       if (errmsg == NULL
          && result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER)
-        {
-         value &= 0xffff;
-          if (value & 0x8000)
-           value |= ~0xffff;
-        }
+       value = ((value & 0xffff) ^ 0x8000) - 0x8000;
       *valuep = value;
       return errmsg;
     }
@@ -343,6 +343,9 @@ m32r_cgen_init_asm (CGEN_CPU_DESC cd)
   m32r_cgen_init_ibld_table (cd);
   cd->parse_handlers = & m32r_cgen_parse_handlers[0];
   cd->parse_operand = m32r_cgen_parse_operand;
+#ifdef CGEN_ASM_INIT_HOOK
+CGEN_ASM_INIT_HOOK
+#endif
 }
 
 \f
This page took 0.023484 seconds and 4 git commands to generate.