UNDEFINED case for instruction BLX
Bug #1925512 reported by
JIANG Muhui
This bug affects 1 person
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
QEMU |
Fix Released
|
Undecided
|
Unassigned |
Bug Description
Hi
I refer to the instruction BLX imm (T2 encoding) in ARMv7 (Thumb mode).
11110 S imm10H 11 J1 0 J2 imm10L H
if H == '1' then UNDEFINED;
I1 = NOT(J1 EOR S); I2 = NOT(J2 EOR S); imm32 = SignExtend(
targetInstrSet = InstrSet_A32;
if InITBlock() && !LastInITBlock() then UNPREDICTABLE;
According to the manual, if H equals to 1, this instruction should be an UNDEFINED instruction. However, it seems QEMU does not check this constraint in function trans_BLX_i. Thanks
Regards
Muhui
tags: | added: arm tcg |
Changed in qemu: | |
status: | Fix Committed → Fix Released |
To post a comment you must log in.
It's right there in trans_BLX_i:
if (s->thumb && (a->imm & 2)) {
return false;
}