View | Details | Raw Unified | Return to bug 10740
Collapse All | Expand All

(-)a/gas/config/tc-i386-intel.c (+46 lines)
Lines 721-726 i386_intel_operand (char *operand_string, int got_a_float) Link Here
721
      if (i.mem_operands
721
      if (i.mem_operands
722
	  >= 2 - !current_templates->start->opcode_modifier.isstring)
722
	  >= 2 - !current_templates->start->opcode_modifier.isstring)
723
	{
723
	{
724
	  /* Handle
725
726
	     call	0x9090,0x90909090
727
	     lcall	0x9090,0x90909090
728
	     jmp	0x9090,0x90909090
729
	     ljmp	0x9090,0x90909090
730
	   */
731
732
	  if ((current_templates->start->opcode_modifier.jumpintersegment
733
	       || current_templates->start->opcode_modifier.jumpdword
734
	       || current_templates->start->opcode_modifier.jump)
735
	      && this_operand == 1
736
	      && intel_state.seg == NULL
737
	      && i.mem_operands == 1
738
	      && i.disp_operands == 1
739
	      && intel_state.op_modifier == O_absent)
740
	    {
741
	      i386_operand_type types;
742
743
	      /* Try to process the first operand as immediate,  */
744
	      this_operand = 0;
745
	      operand_type_set (&types, ~0);
746
	      if (i386_finalize_immediate (exp_seg, i.op[0].imms,
747
					   types, operand_string))
748
		{
749
		  this_operand = 1;
750
		  expP = &im_expressions[0];
751
		  i.op[this_operand].imms = expP;
752
		  *expP = exp;
753
754
		  /* Try to process the second operand as immediate,  */
755
		  if (i386_finalize_immediate (exp_seg, expP, types,
756
					       operand_string))
757
		    {
758
		      i.mem_operands = 0;
759
		      i.disp_operands = 0;
760
		      i.imm_operands = 2;
761
		      i.types[0].bitfield.mem = 0;
762
		      i.types[0].bitfield.disp16 = 0;
763
		      i.types[0].bitfield.disp32 = 0;
764
		      i.types[0].bitfield.disp32s = 0;
765
		      return 1;
766
		    }
767
		}
768
	    }
769
724
	  as_bad (_("too many memory references for `%s'"),
770
	  as_bad (_("too many memory references for `%s'"),
725
		  current_templates->start->name);
771
		  current_templates->start->name);
726
	  return 0;
772
	  return 0;

Return to bug 10740