aboutsummaryrefslogtreecommitdiff
path: root/configs
diff options
context:
space:
mode:
authorRichard Henderson <richard.henderson@linaro.org>2023-12-12 09:01:38 -0800
committerMichael Tokarev <mjt@tls.msk.ru>2023-12-14 11:25:31 +0300
commit5b2fd6cf37352d671db09b54e4bc9d2ce707ca6d (patch)
treec5956b6645e430a069f6fc7d3e8ad0bdd8a1c6a7 /configs
parentb8311827286a08743a0257372b75fe98c0b8a67b (diff)
target/i386: Fix 32-bit wrapping of pc/eip computation
In 32-bit mode, pc = eip + cs_base is also 32-bit, and must wrap. Failure to do so results in incorrect memory exceptions to the guest. Before 732d548732ed, this was implicitly done via truncation to target_ulong but only in qemu-system-i386, not qemu-system-x86_64. To fix this, we must add conditional zero-extensions. Since we have to test for 32 vs 64-bit anyway, note that cs_base is always zero in 64-bit mode. Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2022 Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Reviewed-by: Paolo Bonzini <pbonzini@redhat.com> Message-Id: <20231212172510.103305-1-richard.henderson@linaro.org> (cherry picked from commit b5e0d5d22fbffc3d8f7d3e86d7a2d05a1a974e27) Signed-off-by: Michael Tokarev <mjt@tls.msk.ru> (Mjt: context fix in target/i386/tcg/tcg-cpu.c for v8.1.0-1190-gb77af26e97 "accel/tcg: Replace CPUState.env_ptr with cpu_env()")
Diffstat (limited to 'configs')
0 files changed, 0 insertions, 0 deletions