X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=opcodes%2Fiq2000-asm.c;h=38d803a86474fa65e8a07c58a55c4013662a171c;hb=33b71eeb2e25ed4cb83a1fe43cc3d0625dd51e40;hp=8bd4786129fa557e84a9a165ae2d01a8f0198324;hpb=e9c55a7bd7f322580c8c7ecd9ba15feba74488e8;p=deliverable%2Fbinutils-gdb.git diff --git a/opcodes/iq2000-asm.c b/opcodes/iq2000-asm.c index 8bd4786129..38d803a864 100644 --- a/opcodes/iq2000-asm.c +++ b/opcodes/iq2000-asm.c @@ -53,11 +53,11 @@ static const char * parse_insn_normal static int iq2000_cgen_isa_register PARAMS ((const char **)); static const char * parse_jtargq10 PARAMS ((CGEN_CPU_DESC, const char **, int, int, enum cgen_parse_operand_result *, bfd_vma *)); -static const char * parse_mimm PARAMS ((CGEN_CPU_DESC, const char **, int, long *)); +static const char * parse_mimm PARAMS ((CGEN_CPU_DESC, const char **, int, unsigned long *)); static const char * parse_imm PARAMS ((CGEN_CPU_DESC, const char **, int, unsigned long *)); static const char * parse_hi16 PARAMS ((CGEN_CPU_DESC, const char **, int, unsigned long *)); -static const char * parse_lo16 PARAMS ((CGEN_CPU_DESC, const char **, int, long *)); -static const char * parse_mlo16 PARAMS ((CGEN_CPU_DESC, const char **, int, long *)); +static const char * parse_lo16 PARAMS ((CGEN_CPU_DESC, const char **, int, unsigned long *)); +static const char * parse_mlo16 PARAMS ((CGEN_CPU_DESC, const char **, int, unsigned long *)); /* Special check to ensure that instruction exists for given machine */ int @@ -106,11 +106,11 @@ parse_mimm (cd, strp, opindex, valuep) CGEN_CPU_DESC cd; const char **strp; int opindex; - long *valuep; + unsigned long *valuep; { const char *errmsg; - /* Verify this isn't a register */ + /* Verify this isn't a register. */ if (iq2000_cgen_isa_register (strp)) errmsg = _("immediate value cannot be register"); else @@ -121,6 +121,7 @@ parse_mimm (cd, strp, opindex, valuep) if (errmsg == NULL) { long x = (-value) & 0xFFFF0000; + if (x != 0 && x != (long) 0xFFFF0000) errmsg = _("immediate value out of range"); else @@ -261,7 +262,7 @@ parse_lo16 (cd, strp, opindex, valuep) CGEN_CPU_DESC cd; const char **strp; int opindex; - long *valuep; + unsigned long *valuep; { if (strncasecmp (*strp, "%lo(", 4) == 0) { @@ -294,7 +295,7 @@ parse_mlo16 (cd, strp, opindex, valuep) CGEN_CPU_DESC cd; const char **strp; int opindex; - long *valuep; + unsigned long *valuep; { if (strncasecmp (*strp, "%lo(", 4) == 0) { @@ -350,7 +351,7 @@ iq2000_cgen_parse_operand (cd, opindex, strp, fields) switch (opindex) { case IQ2000_OPERAND__INDEX : - errmsg = cgen_parse_unsigned_integer (cd, strp, IQ2000_OPERAND__INDEX, &fields->f_index); + errmsg = cgen_parse_unsigned_integer (cd, strp, IQ2000_OPERAND__INDEX, (unsigned long *) (& fields->f_index)); break; case IQ2000_OPERAND_BASE : errmsg = cgen_parse_keyword (cd, strp, & iq2000_cgen_opval_gr_names, & fields->f_rs); @@ -363,40 +364,40 @@ iq2000_cgen_parse_operand (cd, opindex, strp, fields) } break; case IQ2000_OPERAND_BITNUM : - errmsg = cgen_parse_unsigned_integer (cd, strp, IQ2000_OPERAND_BITNUM, &fields->f_rt); + errmsg = cgen_parse_unsigned_integer (cd, strp, IQ2000_OPERAND_BITNUM, (unsigned long *) (& fields->f_rt)); break; case IQ2000_OPERAND_BYTECOUNT : - errmsg = cgen_parse_unsigned_integer (cd, strp, IQ2000_OPERAND_BYTECOUNT, &fields->f_bytecount); + errmsg = cgen_parse_unsigned_integer (cd, strp, IQ2000_OPERAND_BYTECOUNT, (unsigned long *) (& fields->f_bytecount)); break; case IQ2000_OPERAND_CAM_Y : - errmsg = cgen_parse_unsigned_integer (cd, strp, IQ2000_OPERAND_CAM_Y, &fields->f_cam_y); + errmsg = cgen_parse_unsigned_integer (cd, strp, IQ2000_OPERAND_CAM_Y, (unsigned long *) (& fields->f_cam_y)); break; case IQ2000_OPERAND_CAM_Z : - errmsg = cgen_parse_unsigned_integer (cd, strp, IQ2000_OPERAND_CAM_Z, &fields->f_cam_z); + errmsg = cgen_parse_unsigned_integer (cd, strp, IQ2000_OPERAND_CAM_Z, (unsigned long *) (& fields->f_cam_z)); break; case IQ2000_OPERAND_CM_3FUNC : - errmsg = cgen_parse_unsigned_integer (cd, strp, IQ2000_OPERAND_CM_3FUNC, &fields->f_cm_3func); + errmsg = cgen_parse_unsigned_integer (cd, strp, IQ2000_OPERAND_CM_3FUNC, (unsigned long *) (& fields->f_cm_3func)); break; case IQ2000_OPERAND_CM_3Z : - errmsg = cgen_parse_unsigned_integer (cd, strp, IQ2000_OPERAND_CM_3Z, &fields->f_cm_3z); + errmsg = cgen_parse_unsigned_integer (cd, strp, IQ2000_OPERAND_CM_3Z, (unsigned long *) (& fields->f_cm_3z)); break; case IQ2000_OPERAND_CM_4FUNC : - errmsg = cgen_parse_unsigned_integer (cd, strp, IQ2000_OPERAND_CM_4FUNC, &fields->f_cm_4func); + errmsg = cgen_parse_unsigned_integer (cd, strp, IQ2000_OPERAND_CM_4FUNC, (unsigned long *) (& fields->f_cm_4func)); break; case IQ2000_OPERAND_CM_4Z : - errmsg = cgen_parse_unsigned_integer (cd, strp, IQ2000_OPERAND_CM_4Z, &fields->f_cm_4z); + errmsg = cgen_parse_unsigned_integer (cd, strp, IQ2000_OPERAND_CM_4Z, (unsigned long *) (& fields->f_cm_4z)); break; case IQ2000_OPERAND_COUNT : - errmsg = cgen_parse_unsigned_integer (cd, strp, IQ2000_OPERAND_COUNT, &fields->f_count); + errmsg = cgen_parse_unsigned_integer (cd, strp, IQ2000_OPERAND_COUNT, (unsigned long *) (& fields->f_count)); break; case IQ2000_OPERAND_EXECODE : - errmsg = cgen_parse_unsigned_integer (cd, strp, IQ2000_OPERAND_EXECODE, &fields->f_excode); + errmsg = cgen_parse_unsigned_integer (cd, strp, IQ2000_OPERAND_EXECODE, (unsigned long *) (& fields->f_excode)); break; case IQ2000_OPERAND_HI16 : - errmsg = parse_hi16 (cd, strp, IQ2000_OPERAND_HI16, &fields->f_imm); + errmsg = parse_hi16 (cd, strp, IQ2000_OPERAND_HI16, (unsigned long *) (& fields->f_imm)); break; case IQ2000_OPERAND_IMM : - errmsg = parse_imm (cd, strp, IQ2000_OPERAND_IMM, &fields->f_imm); + errmsg = parse_imm (cd, strp, IQ2000_OPERAND_IMM, (unsigned long *) (& fields->f_imm)); break; case IQ2000_OPERAND_JMPTARG : { @@ -407,28 +408,29 @@ iq2000_cgen_parse_operand (cd, opindex, strp, fields) break; case IQ2000_OPERAND_JMPTARGQ10 : { - bfd_vma value; + bfd_vma value = 0; + errmsg = parse_jtargq10 (cd, strp, IQ2000_OPERAND_JMPTARGQ10, 0, NULL, & value); fields->f_jtargq10 = value; } break; case IQ2000_OPERAND_LO16 : - errmsg = parse_lo16 (cd, strp, IQ2000_OPERAND_LO16, &fields->f_imm); + errmsg = parse_lo16 (cd, strp, IQ2000_OPERAND_LO16, (unsigned long *) (& fields->f_imm)); break; case IQ2000_OPERAND_MASK : - errmsg = cgen_parse_unsigned_integer (cd, strp, IQ2000_OPERAND_MASK, &fields->f_mask); + errmsg = cgen_parse_unsigned_integer (cd, strp, IQ2000_OPERAND_MASK, (unsigned long *) (& fields->f_mask)); break; case IQ2000_OPERAND_MASKL : - errmsg = cgen_parse_unsigned_integer (cd, strp, IQ2000_OPERAND_MASKL, &fields->f_maskl); + errmsg = cgen_parse_unsigned_integer (cd, strp, IQ2000_OPERAND_MASKL, (unsigned long *) (& fields->f_maskl)); break; case IQ2000_OPERAND_MASKQ10 : - errmsg = cgen_parse_unsigned_integer (cd, strp, IQ2000_OPERAND_MASKQ10, &fields->f_maskq10); + errmsg = cgen_parse_unsigned_integer (cd, strp, IQ2000_OPERAND_MASKQ10, (unsigned long *) (& fields->f_maskq10)); break; case IQ2000_OPERAND_MASKR : - errmsg = cgen_parse_unsigned_integer (cd, strp, IQ2000_OPERAND_MASKR, &fields->f_rs); + errmsg = cgen_parse_unsigned_integer (cd, strp, IQ2000_OPERAND_MASKR, (unsigned long *) (& fields->f_rs)); break; case IQ2000_OPERAND_MLO16 : - errmsg = parse_mlo16 (cd, strp, IQ2000_OPERAND_MLO16, &fields->f_imm); + errmsg = parse_mlo16 (cd, strp, IQ2000_OPERAND_MLO16, (unsigned long *) (& fields->f_imm)); break; case IQ2000_OPERAND_OFFSET : { @@ -456,7 +458,7 @@ iq2000_cgen_parse_operand (cd, opindex, strp, fields) errmsg = cgen_parse_keyword (cd, strp, & iq2000_cgen_opval_gr_names, & fields->f_rt_rs); break; case IQ2000_OPERAND_SHAMT : - errmsg = cgen_parse_unsigned_integer (cd, strp, IQ2000_OPERAND_SHAMT, &fields->f_shamt); + errmsg = cgen_parse_unsigned_integer (cd, strp, IQ2000_OPERAND_SHAMT, (unsigned long *) (& fields->f_shamt)); break; default :