aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Maydell <peter.maydell@linaro.org>2024-02-14 13:00:11 +0000
committerPeter Maydell <peter.maydell@linaro.org>2024-02-14 13:00:11 +0000
commit2766e3668c29a5757aa426fc0b8391e55f69e13e (patch)
tree819a6661e884bcbeb336b9f673be574572ffbdd9
parent62357c047a5abc6ede992159ed7c0aaaeb50617a (diff)
parente41f1825b43796c3508ef309ed0b150ef89acc44 (diff)
downloadqemu-2766e3668c29a5757aa426fc0b8391e55f69e13e.zip
qemu-2766e3668c29a5757aa426fc0b8391e55f69e13e.tar.gz
qemu-2766e3668c29a5757aa426fc0b8391e55f69e13e.tar.bz2
Merge tag 'pull-tcg-20240213' of https://gitlab.com/rth7680/qemu into staging
tcg: Increase width of temp_subindex tcg/arm: Fix goto_tb for large translation blocks # -----BEGIN PGP SIGNATURE----- # # iQFRBAABCgA7FiEEekgeeIaLTbaoWgXAZN846K9+IV8FAmXMFdUdHHJpY2hhcmQu # aGVuZGVyc29uQGxpbmFyby5vcmcACgkQZN846K9+IV+WbwgAsl+6/JTasUNgfJ/d # ufSRMb6MIwzQoGK9CMAiy489Sct+MGF2eEmV49vCEUSX/Kh6kkekJ3oWVOg9BJKp # 2U+LUgRdQIBExuk5mb1DV2zErV/VJw/8Ybm/kfzkDNzUwoZHmzDQti+KkewefMXa # OesRVQxHOVKZo4BlZ+hrcPREOfcQfEE8QjpmL0k/nova6QHHYu41ZRpxrOcelxgM # RuuoE5LAjCXq5P9SII3DjoIDOVoWdqb1TOtc3mx11PHcZnLAjKVZfe8wozJRpNgz # ZlJ9N+GjOTz1iY5aAj5DG3UK7TcJN2n0ABhUJbxhu6z6agrmEV3s4bngKWbNHq7h # NPyNpg== # =Ryxw # -----END PGP SIGNATURE----- # gpg: Signature made Wed 14 Feb 2024 01:22:29 GMT # gpg: using RSA key 7A481E78868B4DB6A85A05C064DF38E8AF7E215F # gpg: issuer "richard.henderson@linaro.org" # gpg: Good signature from "Richard Henderson <richard.henderson@linaro.org>" [full] # Primary key fingerprint: 7A48 1E78 868B 4DB6 A85A 05C0 64DF 38E8 AF7E 215F * tag 'pull-tcg-20240213' of https://gitlab.com/rth7680/qemu: tcg/arm: Fix goto_tb for large translation blocks tcg: Increase width of temp_subindex Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
-rw-r--r--include/tcg/tcg.h2
-rw-r--r--tcg/arm/tcg-target.c.inc4
2 files changed, 3 insertions, 3 deletions
diff --git a/include/tcg/tcg.h b/include/tcg/tcg.h
index daf2a5b..451f3fe 100644
--- a/include/tcg/tcg.h
+++ b/include/tcg/tcg.h
@@ -412,7 +412,7 @@ typedef struct TCGTemp {
unsigned int mem_coherent:1;
unsigned int mem_allocated:1;
unsigned int temp_allocated:1;
- unsigned int temp_subindex:1;
+ unsigned int temp_subindex:2;
int64_t val;
struct TCGTemp *mem_base;
diff --git a/tcg/arm/tcg-target.c.inc b/tcg/arm/tcg-target.c.inc
index ffd23ef..6a04c73 100644
--- a/tcg/arm/tcg-target.c.inc
+++ b/tcg/arm/tcg-target.c.inc
@@ -1771,9 +1771,9 @@ static void tcg_out_goto_tb(TCGContext *s, int which)
* shifted immediate from pc.
*/
int h = -i_disp;
- int l = h & 0xfff;
+ int l = -(h & 0xfff);
- h = encode_imm_nofail(h - l);
+ h = encode_imm_nofail(h + l);
tcg_out_dat_imm(s, COND_AL, ARITH_SUB, TCG_REG_R0, TCG_REG_PC, h);
tcg_out_ld32_12(s, COND_AL, TCG_REG_PC, TCG_REG_R0, l);
}