ubsan: iq2000: left shift of negative value
cpu/ * iq2000.cpu (f-offset): Avoid left shift of negative values. opcodes/ * iq2000-ibld.c: Regenerate.
This commit is contained in:
parent
1a1e2852a5
commit
3e1056a1a6
@ -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>
|
2019-12-20 Alan Modra <amodra@gmail.com>
|
||||||
|
|
||||||
* or1korbis.cpu (f-disp26, f-disp21): Don't left shift negative values.
|
* or1korbis.cpu (f-disp26, f-disp21): Don't left shift negative values.
|
||||||
|
@ -207,7 +207,7 @@
|
|||||||
(df f-offset "pc offset field" (PCREL-ADDR) 15 16 INT
|
(df f-offset "pc offset field" (PCREL-ADDR) 15 16 INT
|
||||||
; Actually, this is relative to the address of the delay slot.
|
; Actually, this is relative to the address of the delay slot.
|
||||||
((value pc) (sra SI (sub SI value pc) 2))
|
((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.
|
; Instruction fields that scarcely appear in instructions.
|
||||||
|
|
||||||
|
@ -1,3 +1,7 @@
|
|||||||
|
2019-12-23 Alan Modra <amodra@gmail.com>
|
||||||
|
|
||||||
|
* iq2000-ibld.c: Regenerate.
|
||||||
|
|
||||||
2019-12-23 Alan Modra <amodra@gmail.com>
|
2019-12-23 Alan Modra <amodra@gmail.com>
|
||||||
|
|
||||||
* d30v-dis.c (extract_value): Make num param a uint64_t, constify
|
* d30v-dis.c (extract_value): Make num param a uint64_t, constify
|
||||||
|
@ -838,7 +838,7 @@ iq2000_cgen_extract_operand (CGEN_CPU_DESC cd,
|
|||||||
{
|
{
|
||||||
long value;
|
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);
|
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;
|
fields->f_offset = value;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
Loading…
Reference in New Issue
Block a user