mirror of https://github.com/xemu-project/xemu.git
target-xtensa: fetch 3rd opcode byte only when needed
According to ISA, 3.5.4, third opcode byte should not be fetched for 2-byte instructions. Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
This commit is contained in:
parent
692f737cc2
commit
a044ec2a06
|
@ -749,7 +749,7 @@ static void disas_xtensa_insn(DisasContext *dc)
|
||||||
|
|
||||||
uint8_t b0 = ldub_code(dc->pc);
|
uint8_t b0 = ldub_code(dc->pc);
|
||||||
uint8_t b1 = ldub_code(dc->pc + 1);
|
uint8_t b1 = ldub_code(dc->pc + 1);
|
||||||
uint8_t b2 = ldub_code(dc->pc + 2);
|
uint8_t b2 = 0;
|
||||||
|
|
||||||
static const uint32_t B4CONST[] = {
|
static const uint32_t B4CONST[] = {
|
||||||
0xffffffff, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 16, 32, 64, 128, 256
|
0xffffffff, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 16, 32, 64, 128, 256
|
||||||
|
@ -764,6 +764,7 @@ static void disas_xtensa_insn(DisasContext *dc)
|
||||||
HAS_OPTION(XTENSA_OPTION_CODE_DENSITY);
|
HAS_OPTION(XTENSA_OPTION_CODE_DENSITY);
|
||||||
} else {
|
} else {
|
||||||
dc->next_pc = dc->pc + 3;
|
dc->next_pc = dc->pc + 3;
|
||||||
|
b2 = ldub_code(dc->pc + 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (OP0) {
|
switch (OP0) {
|
||||||
|
|
Loading…
Reference in New Issue