[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v3 12/26] tcg: forbid ld/st function to modify globa
From: |
Aurelien Jarno |
Subject: |
[Qemu-devel] [PATCH v3 12/26] tcg: forbid ld/st function to modify globals |
Date: |
Fri, 19 Oct 2012 23:39:01 +0200 |
Mapping a memory address using a global and accessing it through
ld/st operations is currently broken. As it doesn't make any sense
to do that performance wise, let's forbid that.
Update the TCG documentation, and remove partial support for that.
Reviewed-by: Richard Henderson <address@hidden>
Signed-off-by: Aurelien Jarno <address@hidden>
---
tcg/README | 3 +++
tcg/tcg-opc.h | 14 +++++++-------
2 files changed, 10 insertions(+), 7 deletions(-)
diff --git a/tcg/README b/tcg/README
index aa86992..9d1b100 100644
--- a/tcg/README
+++ b/tcg/README
@@ -349,6 +349,9 @@ st32_i64 t0, t1, offset
write(t0, t1 + offset)
Write 8, 16, 32 or 64 bits to host memory.
+All this opcodes assume that the pointed host memory doesn't correspond
+to a global. In the latter case the behaviour is unpredictable.
+
********* 64-bit target on 32-bit host support
The following opcodes are internal to TCG. Thus they are to be implemented by
diff --git a/tcg/tcg-opc.h b/tcg/tcg-opc.h
index 2072281..9651063 100644
--- a/tcg/tcg-opc.h
+++ b/tcg/tcg-opc.h
@@ -57,9 +57,9 @@ DEF(ld8s_i32, 1, 1, 1, 0)
DEF(ld16u_i32, 1, 1, 1, 0)
DEF(ld16s_i32, 1, 1, 1, 0)
DEF(ld_i32, 1, 1, 1, 0)
-DEF(st8_i32, 0, 2, 1, TCG_OPF_SIDE_EFFECTS)
-DEF(st16_i32, 0, 2, 1, TCG_OPF_SIDE_EFFECTS)
-DEF(st_i32, 0, 2, 1, TCG_OPF_SIDE_EFFECTS)
+DEF(st8_i32, 0, 2, 1, 0)
+DEF(st16_i32, 0, 2, 1, 0)
+DEF(st_i32, 0, 2, 1, 0)
/* arith */
DEF(add_i32, 1, 2, 0, 0)
DEF(sub_i32, 1, 2, 0, 0)
@@ -115,10 +115,10 @@ DEF(ld16s_i64, 1, 1, 1, IMPL64)
DEF(ld32u_i64, 1, 1, 1, IMPL64)
DEF(ld32s_i64, 1, 1, 1, IMPL64)
DEF(ld_i64, 1, 1, 1, IMPL64)
-DEF(st8_i64, 0, 2, 1, TCG_OPF_SIDE_EFFECTS | IMPL64)
-DEF(st16_i64, 0, 2, 1, TCG_OPF_SIDE_EFFECTS | IMPL64)
-DEF(st32_i64, 0, 2, 1, TCG_OPF_SIDE_EFFECTS | IMPL64)
-DEF(st_i64, 0, 2, 1, TCG_OPF_SIDE_EFFECTS | IMPL64)
+DEF(st8_i64, 0, 2, 1, IMPL64)
+DEF(st16_i64, 0, 2, 1, IMPL64)
+DEF(st32_i64, 0, 2, 1, IMPL64)
+DEF(st_i64, 0, 2, 1, IMPL64)
/* arith */
DEF(add_i64, 1, 2, 0, IMPL64)
DEF(sub_i64, 1, 2, 0, IMPL64)
--
1.7.10.4
- [Qemu-devel] [PATCH v3 15/26] target-alpha: rename helper flags, (continued)
- [Qemu-devel] [PATCH v3 15/26] target-alpha: rename helper flags, Aurelien Jarno, 2012/10/19
- [Qemu-devel] [PATCH v3 24/26] target-sparc: rename helper flags, Aurelien Jarno, 2012/10/19
- [Qemu-devel] [PATCH 07/26] tcg: rewrite tcg_reg_alloc_mov(), Aurelien Jarno, 2012/10/19
- [Qemu-devel] [PATCH v3 20/26] target-mips: rename helper flags, Aurelien Jarno, 2012/10/19
- [Qemu-devel] [PATCH v3 26/26] tcg: remove compatiblity call flags, Aurelien Jarno, 2012/10/19
- [Qemu-devel] [PATCH v3 19/26] target-microblaze: rename helper flags, Aurelien Jarno, 2012/10/19
- [Qemu-devel] [PATCH v3 14/26] tcg: rework TCG helper flags, Aurelien Jarno, 2012/10/19
- [Qemu-devel] [PATCH v3 04/26] tcg: sync output arguments on liveness request, Aurelien Jarno, 2012/10/19
- [Qemu-devel] [PATCH v3 03/26] tcg: add temp_sync(), Aurelien Jarno, 2012/10/19
- [Qemu-devel] [PATCH v3 08/26] tcg: always mark dead input arguments as dead, Aurelien Jarno, 2012/10/19
- [Qemu-devel] [PATCH v3 12/26] tcg: forbid ld/st function to modify globals,
Aurelien Jarno <=
- [Qemu-devel] [PATCH v3 13/26] tcg: synchronize globals for ops with side effects, Aurelien Jarno, 2012/10/19
- [Qemu-devel] [PATCH v3 10/26] tcg: don't explicitly save globals and temps, Aurelien Jarno, 2012/10/19
- [Qemu-devel] [PATCH v3 16/26] target-arm: rename helper flags, Aurelien Jarno, 2012/10/19
- [Qemu-devel] [PATCH v3 22/26] target-s390x: rename helper flags, Aurelien Jarno, 2012/10/19
- Re: [Qemu-devel] [PATCH v3 00/26] tcg: rework liveness analysis and register allocator, Richard Henderson, 2012/10/21