diff options
author | Max Filippov <jcmvbkbc@gmail.com> | 2012-01-14 13:29:29 +0400 |
---|---|---|
committer | Max Filippov <jcmvbkbc@gmail.com> | 2012-02-18 01:25:28 +0400 |
commit | a044ec2a066a6002f83aba5ee937db17e7493fa8 (patch) | |
tree | d1dd49275340ad073a7653a97361758cb5cd2384 /target-xtensa | |
parent | target-xtensa: implement info tlb monitor command (diff) | |
download | qemu-kvm-a044ec2a066a6002f83aba5ee937db17e7493fa8.tar.gz qemu-kvm-a044ec2a066a6002f83aba5ee937db17e7493fa8.tar.bz2 qemu-kvm-a044ec2a066a6002f83aba5ee937db17e7493fa8.zip |
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>
Diffstat (limited to 'target-xtensa')
-rw-r--r-- | target-xtensa/translate.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/target-xtensa/translate.c b/target-xtensa/translate.c index c81450d1a..6a0177f02 100644 --- a/target-xtensa/translate.c +++ b/target-xtensa/translate.c @@ -749,7 +749,7 @@ static void disas_xtensa_insn(DisasContext *dc) uint8_t b0 = ldub_code(dc->pc); 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[] = { 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); } else { dc->next_pc = dc->pc + 3; + b2 = ldub_code(dc->pc + 2); } switch (OP0) { |