Browse Source

ubsan: iq2000: left shift of negative value

cpu/
	* iq2000.cpu (f-offset): Avoid left shift of negative values.
opcodes/
	* iq2000-ibld.c: Regenerate.
binutils-2_34-branch
Alan Modra 6 years ago
parent
commit
3e1056a1a6
  1. 4
      cpu/ChangeLog
  2. 2
      cpu/iq2000.cpu
  3. 4
      opcodes/ChangeLog
  4. 2
      opcodes/iq2000-ibld.c

4
cpu/ChangeLog

@ -1,3 +1,7 @@
2019-12-23 Alan Modra <amodra@gmail.com>
* iq2000.cpu (f-offset): Avoid left shift of negative values.
2019-12-20 Alan Modra <amodra@gmail.com>
* or1korbis.cpu (f-disp26, f-disp21): Don't left shift negative values.

2
cpu/iq2000.cpu

@ -207,7 +207,7 @@
(df f-offset "pc offset field" (PCREL-ADDR) 15 16 INT
; Actually, this is relative to the address of the delay slot.
((value pc) (sra SI (sub SI value pc) 2))
((value pc) (add SI (sll SI value 2) (add pc 4))))
((value pc) (add SI (mul SI value 4) (add pc 4))))
; Instruction fields that scarcely appear in instructions.

4
opcodes/ChangeLog

@ -1,3 +1,7 @@
2019-12-23 Alan Modra <amodra@gmail.com>
* iq2000-ibld.c: Regenerate.
2019-12-23 Alan Modra <amodra@gmail.com>
* d30v-dis.c (extract_value): Make num param a uint64_t, constify

2
opcodes/iq2000-ibld.c

@ -838,7 +838,7 @@ iq2000_cgen_extract_operand (CGEN_CPU_DESC cd,
{
long value;
length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED)|(1<<CGEN_IFLD_PCREL_ADDR), 0, 15, 16, 32, total_length, pc, & value);
value = ((((value) << (2))) + (((pc) + (4))));
value = ((((value) * (4))) + (((pc) + (4))));
fields->f_offset = value;
}
break;

Loading…
Cancel
Save