1
The following changes since commit 95d1fbabae0cd44156ac4b96d512d143ca7dfd5e:
1
The following changes since commit da1034094d375afe9e3d8ec8980550ea0f06f7e0:
2
2
3
Merge remote-tracking branch 'remotes/kraxel/tags/fixes-20200716-pull-request' into staging (2020-07-16 18:50:51 +0100)
3
Merge tag 'for-upstream' of https://gitlab.com/bonzini/qemu into staging (2023-10-03 07:43:44 -0400)
4
4
5
are available in the Git repository at:
5
are available in the Git repository at:
6
6
7
https://github.com/rth7680/qemu.git tags/pull-tcg-20200717
7
https://gitlab.com/rth7680/qemu.git tags/pull-tcg-20231003
8
8
9
for you to fetch changes up to ba3c35d9c4026361fd380b269dc6def9510b7166:
9
for you to fetch changes up to 971537eca2e6c7aaf185bbf10d4cbd84cf9d8a38:
10
10
11
tcg/cpu-exec: precise single-stepping after an interrupt (2020-07-17 11:09:34 -0700)
11
tcg/loongarch64: Fix buid error (2023-10-03 08:53:17 -0700)
12
12
13
----------------------------------------------------------------
13
----------------------------------------------------------------
14
Fix vector min/max fallback expansion
14
accel: Introduce AccelClass::cpu_common_[un]realize
15
Fix singlestep from exception and interrupt
15
accel: Target agnostic code movement
16
accel/tcg: Cleanups to use CPUState instead of CPUArchState
17
accel/tcg: Move CPUNegativeOffsetState into CPUState
18
tcg: Split out tcg init functions to tcg/startup.h
19
linux-user/hppa: Fix struct target_sigcontext layout
20
build: Remove --enable-gprof
16
21
17
----------------------------------------------------------------
22
----------------------------------------------------------------
18
Luc Michel (1):
23
Anton Johansson (9):
19
tcg/cpu-exec: precise single-stepping after an exception
24
target/arm: Replace TARGET_PAGE_ENTRY_EXTRA
20
25
accel/tcg: Modify tlb_*() to use CPUState
21
Richard Henderson (2):
26
accel/tcg: Modify probe_access_internal() to use CPUState
22
tcg: Save/restore vecop_list around minmax fallback
27
accel/tcg: Modify memory access functions to use CPUState
23
tcg/cpu-exec: precise single-stepping after an interrupt
28
accel/tcg: Modify atomic_mmu_lookup() to use CPUState
24
29
accel/tcg: Use CPUState in atomicity helpers
25
accel/tcg/cpu-exec.c | 19 ++++++++++++++++++-
30
accel/tcg: Remove env_tlb()
26
tcg/tcg-op-vec.c | 2 ++
31
accel/tcg: Unify user and softmmu do_[st|ld]*_mmu()
27
2 files changed, 20 insertions(+), 1 deletion(-)
32
accel/tcg: move ld/st helpers to ldst_common.c.inc
28
33
34
Philippe Mathieu-Daudé (19):
35
accel: Rename accel_cpu_realizefn() -> accel_cpu_realize()
36
accel: Rename AccelCPUClass::cpu_realizefn() -> cpu_target_realize()
37
accel: Rename accel_cpu_realize() -> accel_cpu_common_realize()
38
accel: Introduce accel_cpu_common_unrealize() stub
39
accel: Declare AccelClass::cpu_common_[un]realize() handlers
40
accel/tcg: Have tcg_exec_realizefn() return a boolean
41
accel/tcg: Restrict tcg_exec_[un]realizefn() to TCG
42
exec: Make EXCP_FOO definitions target agnostic
43
exec: Move cpu_loop_foo() target agnostic functions to 'cpu-common.h'
44
accel/tcg: Restrict dump_exec_info() declaration
45
accel: Make accel-blocker.o target agnostic
46
accel: Rename accel-common.c -> accel-target.c
47
exec: Rename cpu.c -> cpu-target.c
48
exec: Rename target specific page-vary.c -> page-vary-target.c
49
accel/tcg: Rename target-specific 'internal.h' -> 'internal-target.h'
50
accel/tcg: Make monitor.c a target-agnostic unit
51
accel/tcg: Make icount.o a target agnostic unit
52
accel/tcg: Make cpu-exec-common.c a target agnostic unit
53
tests/avocado: Re-enable MIPS Malta tests (GitLab issue #1884 fixed)
54
55
Richard Henderson (18):
56
accel/tcg: Move CPUTLB definitions from cpu-defs.h
57
qom: Propagate alignment through type system
58
target/arm: Remove size and alignment for cpu subclasses
59
target/*: Add instance_align to all cpu base classes
60
accel/tcg: Validate placement of CPUNegativeOffsetState
61
accel/tcg: Move CPUNegativeOffsetState into CPUState
62
accel/tcg: Remove CPUState.icount_decr_ptr
63
accel/tcg: Move can_do_io to CPUNegativeOffsetState
64
accel/tcg: Remove cpu_neg()
65
tcg: Rename cpu_env to tcg_env
66
accel/tcg: Replace CPUState.env_ptr with cpu_env()
67
accel/tcg: Remove cpu_set_cpustate_pointers
68
accel/tcg: Remove env_neg()
69
tcg: Remove TCGContext.tlb_fast_offset
70
tcg: Remove argument to tcg_prologue_init
71
tcg: Split out tcg init functions to tcg/startup.h
72
linux-user/hppa: Fix struct target_sigcontext layout
73
build: Remove --enable-gprof
74
75
gaosong (1):
76
tcg/loongarch64: Fix buid error
77
78
MAINTAINERS | 7 +-
79
docs/about/deprecated.rst | 14 -
80
meson.build | 18 +-
81
accel/tcg/atomic_template.h | 20 +-
82
accel/tcg/internal-common.h | 28 +
83
accel/tcg/{internal.h => internal-target.h} | 21 +-
84
bsd-user/bsd-proc.h | 3 -
85
include/exec/cpu-all.h | 67 +-
86
include/exec/cpu-common.h | 39 +
87
include/exec/cpu-defs.h | 138 ---
88
include/exec/cpu_ldst.h | 8 +-
89
include/exec/exec-all.h | 32 +-
90
include/hw/core/accel-cpu.h | 2 +-
91
include/hw/core/cpu.h | 171 ++-
92
include/qemu/accel.h | 12 +-
93
include/tcg/startup.h | 58 +
94
include/tcg/tcg.h | 6 +-
95
target/alpha/cpu.h | 1 -
96
target/arm/common-semi-target.h | 2 +-
97
target/arm/cpu-param.h | 12 -
98
target/arm/cpu.h | 1 -
99
target/arm/tcg/translate-a32.h | 2 +-
100
target/arm/tcg/translate-a64.h | 4 +-
101
target/arm/tcg/translate.h | 16 +-
102
target/avr/cpu.h | 1 -
103
target/cris/cpu.h | 1 -
104
target/hexagon/cpu.h | 2 +-
105
target/hexagon/gen_tcg.h | 120 +-
106
target/hexagon/gen_tcg_hvx.h | 20 +-
107
target/hexagon/macros.h | 8 +-
108
target/hppa/cpu.h | 1 -
109
target/i386/cpu.h | 1 -
110
target/loongarch/cpu.h | 1 -
111
target/m68k/cpu.h | 1 -
112
target/microblaze/cpu.h | 6 +-
113
target/mips/cpu.h | 4 +-
114
target/mips/tcg/translate.h | 6 +-
115
target/nios2/cpu.h | 1 -
116
target/openrisc/cpu.h | 1 -
117
target/ppc/cpu.h | 1 -
118
target/riscv/cpu.h | 2 +-
119
target/rx/cpu.h | 1 -
120
target/s390x/cpu.h | 1 -
121
target/sh4/cpu.h | 1 -
122
target/sparc/cpu.h | 1 -
123
target/tricore/cpu.h | 1 -
124
target/xtensa/cpu.h | 3 +-
125
accel/{accel-common.c => accel-target.c} | 27 +-
126
accel/dummy-cpus.c | 2 +-
127
accel/hvf/hvf-accel-ops.c | 2 +-
128
accel/kvm/kvm-accel-ops.c | 2 +-
129
accel/tcg/cpu-exec-common.c | 5 +-
130
accel/tcg/cpu-exec.c | 31 +-
131
accel/tcg/cputlb.c | 787 +++++-------
132
softmmu/icount.c => accel/tcg/icount-common.c | 7 +-
133
accel/tcg/monitor.c | 2 +-
134
accel/tcg/plugin-gen.c | 10 +-
135
accel/tcg/tb-maint.c | 3 +-
136
accel/tcg/tcg-accel-ops-icount.c | 8 +-
137
accel/tcg/tcg-accel-ops-mttcg.c | 4 +-
138
accel/tcg/tcg-accel-ops-rr.c | 6 +-
139
accel/tcg/tcg-accel-ops.c | 2 +-
140
accel/tcg/tcg-all.c | 8 +-
141
accel/tcg/translate-all.c | 15 +-
142
accel/tcg/translator.c | 24 +-
143
accel/tcg/user-exec.c | 279 +----
144
bsd-user/main.c | 6 +-
145
bsd-user/signal.c | 15 +-
146
cpus-common.c => cpu-common.c | 0
147
cpu.c => cpu-target.c | 13 +-
148
gdbstub/gdbstub.c | 4 +-
149
gdbstub/user-target.c | 2 +-
150
hw/core/cpu-common.c | 6 +-
151
hw/i386/kvm/clock.c | 2 +-
152
hw/intc/mips_gic.c | 2 +-
153
hw/intc/riscv_aclint.c | 12 +-
154
hw/intc/riscv_imsic.c | 2 +-
155
hw/ppc/e500.c | 4 +-
156
hw/ppc/spapr.c | 2 +-
157
linux-user/elfload.c | 4 +-
158
linux-user/exit.c | 6 -
159
linux-user/hppa/signal.c | 2 +-
160
linux-user/i386/cpu_loop.c | 2 +-
161
linux-user/main.c | 8 +-
162
linux-user/signal.c | 20 +-
163
linux-user/syscall.c | 2 +-
164
monitor/hmp-cmds-target.c | 2 +-
165
page-vary.c => page-vary-target.c | 0
166
qom/object.c | 14 +
167
semihosting/arm-compat-semi.c | 6 +-
168
semihosting/syscalls.c | 28 +-
169
softmmu/watchpoint.c | 2 +-
170
target/alpha/cpu.c | 3 +-
171
target/alpha/translate.c | 146 +--
172
target/arm/cpu.c | 12 +-
173
target/arm/cpu64.c | 4 -
174
target/arm/helper.c | 2 +-
175
target/arm/ptw.c | 4 +-
176
target/arm/tcg/mte_helper.c | 2 +-
177
target/arm/tcg/sve_helper.c | 2 +-
178
target/arm/tcg/tlb_helper.c | 4 +-
179
target/arm/tcg/translate-a64.c | 384 +++---
180
target/arm/tcg/translate-m-nocp.c | 24 +-
181
target/arm/tcg/translate-mve.c | 52 +-
182
target/arm/tcg/translate-neon.c | 78 +-
183
target/arm/tcg/translate-sme.c | 8 +-
184
target/arm/tcg/translate-sve.c | 172 +--
185
target/arm/tcg/translate-vfp.c | 56 +-
186
target/arm/tcg/translate.c | 234 ++--
187
target/avr/cpu.c | 3 +-
188
target/avr/translate.c | 66 +-
189
target/cris/cpu.c | 3 +-
190
target/cris/translate.c | 72 +-
191
target/hexagon/cpu.c | 4 +-
192
target/hexagon/genptr.c | 36 +-
193
target/hexagon/idef-parser/parser-helpers.c | 2 +-
194
target/hexagon/translate.c | 52 +-
195
target/hppa/cpu.c | 2 +-
196
target/hppa/mem_helper.c | 2 +-
197
target/hppa/translate.c | 161 ++-
198
target/i386/cpu.c | 2 +-
199
target/i386/hvf/hvf-cpu.c | 2 +-
200
target/i386/kvm/kvm-cpu.c | 4 +-
201
target/i386/nvmm/nvmm-all.c | 14 +-
202
target/i386/tcg/sysemu/excp_helper.c | 2 +-
203
target/i386/tcg/tcg-cpu.c | 4 +-
204
target/i386/tcg/translate.c | 584 ++++-----
205
target/i386/whpx/whpx-all.c | 26 +-
206
target/loongarch/cpu.c | 9 +-
207
target/loongarch/translate.c | 22 +-
208
target/m68k/cpu.c | 9 +-
209
target/m68k/translate.c | 306 ++---
210
target/microblaze/cpu.c | 2 +-
211
target/microblaze/translate.c | 52 +-
212
target/mips/cpu.c | 2 +-
213
target/mips/tcg/lcsr_translate.c | 6 +-
214
target/mips/tcg/msa_translate.c | 34 +-
215
target/mips/tcg/mxu_translate.c | 4 +-
216
target/mips/tcg/sysemu/mips-semi.c | 4 +-
217
target/mips/tcg/translate.c | 1288 ++++++++++----------
218
target/mips/tcg/vr54xx_translate.c | 2 +-
219
target/nios2/cpu.c | 5 +-
220
target/nios2/translate.c | 52 +-
221
target/openrisc/cpu.c | 7 +-
222
target/openrisc/translate.c | 86 +-
223
target/ppc/cpu_init.c | 1 -
224
target/ppc/excp_helper.c | 10 +-
225
target/ppc/translate.c | 366 +++---
226
target/riscv/cpu.c | 8 +-
227
target/riscv/translate.c | 56 +-
228
target/rx/cpu.c | 5 +-
229
target/rx/translate.c | 58 +-
230
target/s390x/cpu.c | 2 -
231
target/s390x/tcg/translate.c | 426 +++----
232
target/sh4/cpu.c | 3 +-
233
target/sh4/op_helper.c | 2 +-
234
target/sh4/translate.c | 128 +-
235
target/sparc/cpu.c | 3 +-
236
target/sparc/translate.c | 332 ++---
237
target/tricore/cpu.c | 10 +-
238
target/tricore/translate.c | 230 ++--
239
target/xtensa/cpu.c | 2 +-
240
target/xtensa/translate.c | 192 +--
241
tcg/tcg-op-gvec.c | 300 ++---
242
tcg/tcg-op-ldst.c | 22 +-
243
tcg/tcg-op.c | 2 +-
244
tcg/tcg.c | 23 +-
245
accel/tcg/ldst_atomicity.c.inc | 88 +-
246
accel/tcg/ldst_common.c.inc | 225 ++++
247
target/cris/translate_v10.c.inc | 28 +-
248
target/i386/tcg/decode-new.c.inc | 4 +-
249
target/i386/tcg/emit.c.inc | 262 ++--
250
target/loongarch/insn_trans/trans_atomic.c.inc | 4 +-
251
target/loongarch/insn_trans/trans_branch.c.inc | 2 +-
252
target/loongarch/insn_trans/trans_extra.c.inc | 10 +-
253
target/loongarch/insn_trans/trans_farith.c.inc | 6 +-
254
target/loongarch/insn_trans/trans_fcmp.c.inc | 8 +-
255
target/loongarch/insn_trans/trans_fmemory.c.inc | 8 +-
256
target/loongarch/insn_trans/trans_fmov.c.inc | 20 +-
257
target/loongarch/insn_trans/trans_memory.c.inc | 8 +-
258
target/loongarch/insn_trans/trans_privileged.c.inc | 52 +-
259
target/loongarch/insn_trans/trans_vec.c.inc | 24 +-
260
target/mips/tcg/micromips_translate.c.inc | 12 +-
261
target/mips/tcg/nanomips_translate.c.inc | 200 +--
262
target/ppc/power8-pmu-regs.c.inc | 8 +-
263
target/ppc/translate/branch-impl.c.inc | 2 +-
264
target/ppc/translate/dfp-impl.c.inc | 22 +-
265
target/ppc/translate/fixedpoint-impl.c.inc | 2 +-
266
target/ppc/translate/fp-impl.c.inc | 50 +-
267
target/ppc/translate/processor-ctrl-impl.c.inc | 8 +-
268
target/ppc/translate/spe-impl.c.inc | 30 +-
269
target/ppc/translate/storage-ctrl-impl.c.inc | 26 +-
270
target/ppc/translate/vmx-impl.c.inc | 34 +-
271
target/ppc/translate/vsx-impl.c.inc | 54 +-
272
target/riscv/insn_trans/trans_privileged.c.inc | 8 +-
273
target/riscv/insn_trans/trans_rvbf16.c.inc | 10 +-
274
target/riscv/insn_trans/trans_rvd.c.inc | 48 +-
275
target/riscv/insn_trans/trans_rvf.c.inc | 46 +-
276
target/riscv/insn_trans/trans_rvh.c.inc | 8 +-
277
target/riscv/insn_trans/trans_rvi.c.inc | 16 +-
278
target/riscv/insn_trans/trans_rvm.c.inc | 16 +-
279
target/riscv/insn_trans/trans_rvv.c.inc | 130 +-
280
target/riscv/insn_trans/trans_rvvk.c.inc | 30 +-
281
target/riscv/insn_trans/trans_rvzce.c.inc | 2 +-
282
target/riscv/insn_trans/trans_rvzfa.c.inc | 38 +-
283
target/riscv/insn_trans/trans_rvzfh.c.inc | 54 +-
284
target/riscv/insn_trans/trans_rvzicbo.c.inc | 8 +-
285
target/riscv/insn_trans/trans_svinval.c.inc | 6 +-
286
target/riscv/insn_trans/trans_xthead.c.inc | 2 +-
287
target/s390x/tcg/translate_vx.c.inc | 104 +-
288
tcg/aarch64/tcg-target.c.inc | 2 +-
289
tcg/arm/tcg-target.c.inc | 2 +-
290
tcg/loongarch64/tcg-target.c.inc | 68 +-
291
accel/meson.build | 4 +-
292
accel/tcg/meson.build | 8 +-
293
meson_options.txt | 3 -
294
scripts/meson-buildoptions.sh | 3 -
295
softmmu/meson.build | 4 -
296
target/hexagon/README | 10 +-
297
target/hexagon/gen_tcg_funcs.py | 16 +-
298
tests/avocado/boot_linux_console.py | 7 -
299
tests/avocado/machine_mips_malta.py | 6 -
300
tests/avocado/replay_kernel.py | 7 -
301
tests/avocado/tuxrun_baselines.py | 4 -
302
tests/qemu-iotests/meson.build | 2 +-
303
225 files changed, 5102 insertions(+), 5323 deletions(-)
304
create mode 100644 accel/tcg/internal-common.h
305
rename accel/tcg/{internal.h => internal-target.h} (89%)
306
create mode 100644 include/tcg/startup.h
307
rename accel/{accel-common.c => accel-target.c} (86%)
308
rename softmmu/icount.c => accel/tcg/icount-common.c (99%)
309
rename cpus-common.c => cpu-common.c (100%)
310
rename cpu.c => cpu-target.c (97%)
311
rename page-vary.c => page-vary-target.c (100%)
312
diff view generated by jsdifflib
New patch
1
From: Philippe Mathieu-Daudé <philmd@linaro.org>
1
2
3
We use the '*fn' suffix for handlers, this is a public method.
4
Drop the suffix.
5
6
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
7
Reviewed-by: Claudio Fontana <cfontana@suse.de>
8
Message-Id: <20231003123026.99229-2-philmd@linaro.org>
9
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
10
---
11
include/qemu/accel.h | 4 ++--
12
accel/accel-common.c | 2 +-
13
cpu.c | 2 +-
14
target/i386/kvm/kvm-cpu.c | 2 +-
15
4 files changed, 5 insertions(+), 5 deletions(-)
16
17
diff --git a/include/qemu/accel.h b/include/qemu/accel.h
18
index XXXXXXX..XXXXXXX 100644
19
--- a/include/qemu/accel.h
20
+++ b/include/qemu/accel.h
21
@@ -XXX,XX +XXX,XX @@ void accel_setup_post(MachineState *ms);
22
void accel_cpu_instance_init(CPUState *cpu);
23
24
/**
25
- * accel_cpu_realizefn:
26
+ * accel_cpu_realize:
27
* @cpu: The CPU that needs to call accel-specific cpu realization.
28
* @errp: currently unused.
29
*/
30
-bool accel_cpu_realizefn(CPUState *cpu, Error **errp);
31
+bool accel_cpu_realize(CPUState *cpu, Error **errp);
32
33
/**
34
* accel_supported_gdbstub_sstep_flags:
35
diff --git a/accel/accel-common.c b/accel/accel-common.c
36
index XXXXXXX..XXXXXXX 100644
37
--- a/accel/accel-common.c
38
+++ b/accel/accel-common.c
39
@@ -XXX,XX +XXX,XX @@ void accel_cpu_instance_init(CPUState *cpu)
40
}
41
}
42
43
-bool accel_cpu_realizefn(CPUState *cpu, Error **errp)
44
+bool accel_cpu_realize(CPUState *cpu, Error **errp)
45
{
46
CPUClass *cc = CPU_GET_CLASS(cpu);
47
48
diff --git a/cpu.c b/cpu.c
49
index XXXXXXX..XXXXXXX 100644
50
--- a/cpu.c
51
+++ b/cpu.c
52
@@ -XXX,XX +XXX,XX @@ void cpu_exec_realizefn(CPUState *cpu, Error **errp)
53
/* cache the cpu class for the hotpath */
54
cpu->cc = CPU_GET_CLASS(cpu);
55
56
- if (!accel_cpu_realizefn(cpu, errp)) {
57
+ if (!accel_cpu_realize(cpu, errp)) {
58
return;
59
}
60
61
diff --git a/target/i386/kvm/kvm-cpu.c b/target/i386/kvm/kvm-cpu.c
62
index XXXXXXX..XXXXXXX 100644
63
--- a/target/i386/kvm/kvm-cpu.c
64
+++ b/target/i386/kvm/kvm-cpu.c
65
@@ -XXX,XX +XXX,XX @@ static bool kvm_cpu_realizefn(CPUState *cs, Error **errp)
66
* x86_cpu_realize():
67
* -> x86_cpu_expand_features()
68
* -> cpu_exec_realizefn():
69
- * -> accel_cpu_realizefn()
70
+ * -> accel_cpu_realize()
71
* kvm_cpu_realizefn() -> host_cpu_realizefn()
72
* -> check/update ucode_rev, phys_bits, mwait
73
*/
74
--
75
2.34.1
76
77
diff view generated by jsdifflib
New patch
1
From: Philippe Mathieu-Daudé <philmd@linaro.org>
1
2
3
The AccelCPUClass::cpu_realizefn handler is meant for target
4
specific code, rename it using '_target_' to emphasis it.
5
6
Suggested-by: Claudio Fontana <cfontana@suse.de>
7
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
8
Message-Id: <20231003123026.99229-3-philmd@linaro.org>
9
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
10
---
11
include/hw/core/accel-cpu.h | 2 +-
12
accel/accel-common.c | 4 ++--
13
target/i386/hvf/hvf-cpu.c | 2 +-
14
target/i386/kvm/kvm-cpu.c | 2 +-
15
target/i386/tcg/tcg-cpu.c | 2 +-
16
5 files changed, 6 insertions(+), 6 deletions(-)
17
18
diff --git a/include/hw/core/accel-cpu.h b/include/hw/core/accel-cpu.h
19
index XXXXXXX..XXXXXXX 100644
20
--- a/include/hw/core/accel-cpu.h
21
+++ b/include/hw/core/accel-cpu.h
22
@@ -XXX,XX +XXX,XX @@ typedef struct AccelCPUClass {
23
24
void (*cpu_class_init)(CPUClass *cc);
25
void (*cpu_instance_init)(CPUState *cpu);
26
- bool (*cpu_realizefn)(CPUState *cpu, Error **errp);
27
+ bool (*cpu_target_realize)(CPUState *cpu, Error **errp);
28
} AccelCPUClass;
29
30
#endif /* ACCEL_CPU_H */
31
diff --git a/accel/accel-common.c b/accel/accel-common.c
32
index XXXXXXX..XXXXXXX 100644
33
--- a/accel/accel-common.c
34
+++ b/accel/accel-common.c
35
@@ -XXX,XX +XXX,XX @@ bool accel_cpu_realize(CPUState *cpu, Error **errp)
36
{
37
CPUClass *cc = CPU_GET_CLASS(cpu);
38
39
- if (cc->accel_cpu && cc->accel_cpu->cpu_realizefn) {
40
- return cc->accel_cpu->cpu_realizefn(cpu, errp);
41
+ if (cc->accel_cpu && cc->accel_cpu->cpu_target_realize) {
42
+ return cc->accel_cpu->cpu_target_realize(cpu, errp);
43
}
44
return true;
45
}
46
diff --git a/target/i386/hvf/hvf-cpu.c b/target/i386/hvf/hvf-cpu.c
47
index XXXXXXX..XXXXXXX 100644
48
--- a/target/i386/hvf/hvf-cpu.c
49
+++ b/target/i386/hvf/hvf-cpu.c
50
@@ -XXX,XX +XXX,XX @@ static void hvf_cpu_accel_class_init(ObjectClass *oc, void *data)
51
{
52
AccelCPUClass *acc = ACCEL_CPU_CLASS(oc);
53
54
- acc->cpu_realizefn = host_cpu_realizefn;
55
+ acc->cpu_target_realize = host_cpu_realizefn;
56
acc->cpu_instance_init = hvf_cpu_instance_init;
57
}
58
59
diff --git a/target/i386/kvm/kvm-cpu.c b/target/i386/kvm/kvm-cpu.c
60
index XXXXXXX..XXXXXXX 100644
61
--- a/target/i386/kvm/kvm-cpu.c
62
+++ b/target/i386/kvm/kvm-cpu.c
63
@@ -XXX,XX +XXX,XX @@ static void kvm_cpu_accel_class_init(ObjectClass *oc, void *data)
64
{
65
AccelCPUClass *acc = ACCEL_CPU_CLASS(oc);
66
67
- acc->cpu_realizefn = kvm_cpu_realizefn;
68
+ acc->cpu_target_realize = kvm_cpu_realizefn;
69
acc->cpu_instance_init = kvm_cpu_instance_init;
70
}
71
static const TypeInfo kvm_cpu_accel_type_info = {
72
diff --git a/target/i386/tcg/tcg-cpu.c b/target/i386/tcg/tcg-cpu.c
73
index XXXXXXX..XXXXXXX 100644
74
--- a/target/i386/tcg/tcg-cpu.c
75
+++ b/target/i386/tcg/tcg-cpu.c
76
@@ -XXX,XX +XXX,XX @@ static void tcg_cpu_accel_class_init(ObjectClass *oc, void *data)
77
AccelCPUClass *acc = ACCEL_CPU_CLASS(oc);
78
79
#ifndef CONFIG_USER_ONLY
80
- acc->cpu_realizefn = tcg_cpu_realizefn;
81
+ acc->cpu_target_realize = tcg_cpu_realizefn;
82
#endif /* CONFIG_USER_ONLY */
83
84
acc->cpu_class_init = tcg_cpu_class_init;
85
--
86
2.34.1
87
88
diff view generated by jsdifflib
New patch
1
From: Philippe Mathieu-Daudé <philmd@linaro.org>
1
2
3
accel_cpu_realize() is a generic function working with CPUs
4
from any target. Rename it using '_common_' to emphasis it is
5
not target specific.
6
7
Suggested-by: Claudio Fontana <cfontana@suse.de>
8
9
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
10
Message-Id: <20231003123026.99229-4-philmd@linaro.org>
11
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
12
---
13
include/qemu/accel.h | 4 ++--
14
accel/accel-common.c | 2 +-
15
cpu.c | 2 +-
16
target/i386/kvm/kvm-cpu.c | 2 +-
17
4 files changed, 5 insertions(+), 5 deletions(-)
18
19
diff --git a/include/qemu/accel.h b/include/qemu/accel.h
20
index XXXXXXX..XXXXXXX 100644
21
--- a/include/qemu/accel.h
22
+++ b/include/qemu/accel.h
23
@@ -XXX,XX +XXX,XX @@ void accel_setup_post(MachineState *ms);
24
void accel_cpu_instance_init(CPUState *cpu);
25
26
/**
27
- * accel_cpu_realize:
28
+ * accel_cpu_common_realize:
29
* @cpu: The CPU that needs to call accel-specific cpu realization.
30
* @errp: currently unused.
31
*/
32
-bool accel_cpu_realize(CPUState *cpu, Error **errp);
33
+bool accel_cpu_common_realize(CPUState *cpu, Error **errp);
34
35
/**
36
* accel_supported_gdbstub_sstep_flags:
37
diff --git a/accel/accel-common.c b/accel/accel-common.c
38
index XXXXXXX..XXXXXXX 100644
39
--- a/accel/accel-common.c
40
+++ b/accel/accel-common.c
41
@@ -XXX,XX +XXX,XX @@ void accel_cpu_instance_init(CPUState *cpu)
42
}
43
}
44
45
-bool accel_cpu_realize(CPUState *cpu, Error **errp)
46
+bool accel_cpu_common_realize(CPUState *cpu, Error **errp)
47
{
48
CPUClass *cc = CPU_GET_CLASS(cpu);
49
50
diff --git a/cpu.c b/cpu.c
51
index XXXXXXX..XXXXXXX 100644
52
--- a/cpu.c
53
+++ b/cpu.c
54
@@ -XXX,XX +XXX,XX @@ void cpu_exec_realizefn(CPUState *cpu, Error **errp)
55
/* cache the cpu class for the hotpath */
56
cpu->cc = CPU_GET_CLASS(cpu);
57
58
- if (!accel_cpu_realize(cpu, errp)) {
59
+ if (!accel_cpu_common_realize(cpu, errp)) {
60
return;
61
}
62
63
diff --git a/target/i386/kvm/kvm-cpu.c b/target/i386/kvm/kvm-cpu.c
64
index XXXXXXX..XXXXXXX 100644
65
--- a/target/i386/kvm/kvm-cpu.c
66
+++ b/target/i386/kvm/kvm-cpu.c
67
@@ -XXX,XX +XXX,XX @@ static bool kvm_cpu_realizefn(CPUState *cs, Error **errp)
68
* x86_cpu_realize():
69
* -> x86_cpu_expand_features()
70
* -> cpu_exec_realizefn():
71
- * -> accel_cpu_realize()
72
+ * -> accel_cpu_common_realize()
73
* kvm_cpu_realizefn() -> host_cpu_realizefn()
74
* -> check/update ucode_rev, phys_bits, mwait
75
*/
76
--
77
2.34.1
78
79
diff view generated by jsdifflib
New patch
1
From: Philippe Mathieu-Daudé <philmd@linaro.org>
1
2
3
Prepare the stub for parity with accel_cpu_common_realize().
4
5
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
6
Message-Id: <20231003123026.99229-5-philmd@linaro.org>
7
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
8
---
9
include/qemu/accel.h | 6 ++++++
10
accel/accel-common.c | 4 ++++
11
cpu.c | 4 +++-
12
3 files changed, 13 insertions(+), 1 deletion(-)
13
14
diff --git a/include/qemu/accel.h b/include/qemu/accel.h
15
index XXXXXXX..XXXXXXX 100644
16
--- a/include/qemu/accel.h
17
+++ b/include/qemu/accel.h
18
@@ -XXX,XX +XXX,XX @@ void accel_cpu_instance_init(CPUState *cpu);
19
*/
20
bool accel_cpu_common_realize(CPUState *cpu, Error **errp);
21
22
+/**
23
+ * accel_cpu_common_unrealize:
24
+ * @cpu: The CPU that needs to call accel-specific cpu unrealization.
25
+ */
26
+void accel_cpu_common_unrealize(CPUState *cpu);
27
+
28
/**
29
* accel_supported_gdbstub_sstep_flags:
30
*
31
diff --git a/accel/accel-common.c b/accel/accel-common.c
32
index XXXXXXX..XXXXXXX 100644
33
--- a/accel/accel-common.c
34
+++ b/accel/accel-common.c
35
@@ -XXX,XX +XXX,XX @@ bool accel_cpu_common_realize(CPUState *cpu, Error **errp)
36
return true;
37
}
38
39
+void accel_cpu_common_unrealize(CPUState *cpu)
40
+{
41
+}
42
+
43
int accel_supported_gdbstub_sstep_flags(void)
44
{
45
AccelState *accel = current_accel();
46
diff --git a/cpu.c b/cpu.c
47
index XXXXXXX..XXXXXXX 100644
48
--- a/cpu.c
49
+++ b/cpu.c
50
@@ -XXX,XX +XXX,XX @@ void cpu_exec_unrealizefn(CPUState *cpu)
51
cpu_list_remove(cpu);
52
/*
53
* Now that the vCPU has been removed from the RCU list, we can call
54
- * tcg_exec_unrealizefn, which may free fields using call_rcu.
55
+ * tcg_exec_unrealizefn and
56
+ * accel_cpu_common_unrealize, which may free fields using call_rcu.
57
*/
58
+ accel_cpu_common_unrealize(cpu);
59
if (tcg_enabled()) {
60
tcg_exec_unrealizefn(cpu);
61
}
62
--
63
2.34.1
64
65
diff view generated by jsdifflib
New patch
1
From: Philippe Mathieu-Daudé <philmd@linaro.org>
1
2
3
Currently accel_cpu_realize() only performs target-specific
4
realization. Introduce the cpu_common_[un]realize fields in
5
the base AccelClass to be able to perform target-agnostic
6
[un]realization of vCPUs.
7
8
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
9
Message-Id: <20231003123026.99229-6-philmd@linaro.org>
10
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
11
---
12
include/qemu/accel.h | 2 ++
13
accel/accel-common.c | 21 +++++++++++++++++++--
14
2 files changed, 21 insertions(+), 2 deletions(-)
15
16
diff --git a/include/qemu/accel.h b/include/qemu/accel.h
17
index XXXXXXX..XXXXXXX 100644
18
--- a/include/qemu/accel.h
19
+++ b/include/qemu/accel.h
20
@@ -XXX,XX +XXX,XX @@ typedef struct AccelClass {
21
bool (*has_memory)(MachineState *ms, AddressSpace *as,
22
hwaddr start_addr, hwaddr size);
23
#endif
24
+ bool (*cpu_common_realize)(CPUState *cpu, Error **errp);
25
+ void (*cpu_common_unrealize)(CPUState *cpu);
26
27
/* gdbstub related hooks */
28
int (*gdbstub_supported_sstep_flags)(void);
29
diff --git a/accel/accel-common.c b/accel/accel-common.c
30
index XXXXXXX..XXXXXXX 100644
31
--- a/accel/accel-common.c
32
+++ b/accel/accel-common.c
33
@@ -XXX,XX +XXX,XX @@ void accel_cpu_instance_init(CPUState *cpu)
34
bool accel_cpu_common_realize(CPUState *cpu, Error **errp)
35
{
36
CPUClass *cc = CPU_GET_CLASS(cpu);
37
+ AccelState *accel = current_accel();
38
+ AccelClass *acc = ACCEL_GET_CLASS(accel);
39
40
- if (cc->accel_cpu && cc->accel_cpu->cpu_target_realize) {
41
- return cc->accel_cpu->cpu_target_realize(cpu, errp);
42
+ /* target specific realization */
43
+ if (cc->accel_cpu && cc->accel_cpu->cpu_target_realize
44
+ && !cc->accel_cpu->cpu_target_realize(cpu, errp)) {
45
+ return false;
46
}
47
+
48
+ /* generic realization */
49
+ if (acc->cpu_common_realize && !acc->cpu_common_realize(cpu, errp)) {
50
+ return false;
51
+ }
52
+
53
return true;
54
}
55
56
void accel_cpu_common_unrealize(CPUState *cpu)
57
{
58
+ AccelState *accel = current_accel();
59
+ AccelClass *acc = ACCEL_GET_CLASS(accel);
60
+
61
+ /* generic unrealization */
62
+ if (acc->cpu_common_unrealize) {
63
+ acc->cpu_common_unrealize(cpu);
64
+ }
65
}
66
67
int accel_supported_gdbstub_sstep_flags(void)
68
--
69
2.34.1
70
71
diff view generated by jsdifflib
New patch
1
From: Philippe Mathieu-Daudé <philmd@linaro.org>
1
2
3
Following the example documented since commit e3fe3988d7 ("error:
4
Document Error API usage rules"), have tcg_exec_realizefn() return
5
a boolean indicating whether an error is set or not.
6
7
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
8
Reviewed-by: Claudio Fontana <cfontana@suse.de>
9
Message-Id: <20231003123026.99229-7-philmd@linaro.org>
10
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
11
---
12
include/exec/cpu-all.h | 2 +-
13
accel/tcg/cpu-exec.c | 4 +++-
14
2 files changed, 4 insertions(+), 2 deletions(-)
15
16
diff --git a/include/exec/cpu-all.h b/include/exec/cpu-all.h
17
index XXXXXXX..XXXXXXX 100644
18
--- a/include/exec/cpu-all.h
19
+++ b/include/exec/cpu-all.h
20
@@ -XXX,XX +XXX,XX @@ void dump_exec_info(GString *buf);
21
22
/* accel/tcg/cpu-exec.c */
23
int cpu_exec(CPUState *cpu);
24
-void tcg_exec_realizefn(CPUState *cpu, Error **errp);
25
+bool tcg_exec_realizefn(CPUState *cpu, Error **errp);
26
void tcg_exec_unrealizefn(CPUState *cpu);
27
28
/**
29
diff --git a/accel/tcg/cpu-exec.c b/accel/tcg/cpu-exec.c
30
index XXXXXXX..XXXXXXX 100644
31
--- a/accel/tcg/cpu-exec.c
32
+++ b/accel/tcg/cpu-exec.c
33
@@ -XXX,XX +XXX,XX @@ int cpu_exec(CPUState *cpu)
34
return ret;
35
}
36
37
-void tcg_exec_realizefn(CPUState *cpu, Error **errp)
38
+bool tcg_exec_realizefn(CPUState *cpu, Error **errp)
39
{
40
static bool tcg_target_initialized;
41
CPUClass *cc = CPU_GET_CLASS(cpu);
42
@@ -XXX,XX +XXX,XX @@ void tcg_exec_realizefn(CPUState *cpu, Error **errp)
43
tcg_iommu_init_notifier_list(cpu);
44
#endif /* !CONFIG_USER_ONLY */
45
/* qemu_plugin_vcpu_init_hook delayed until cpu_index assigned. */
46
+
47
+ return true;
48
}
49
50
/* undo the initializations in reverse order */
51
--
52
2.34.1
53
54
diff view generated by jsdifflib
New patch
1
From: Philippe Mathieu-Daudé <philmd@linaro.org>
1
2
3
We don't need to expose these TCG-specific methods to the
4
whole code base. Register them as AccelClass handlers, they
5
will be called by the generic accel_cpu_[un]realize() methods.
6
7
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
8
Reviewed-by: Claudio Fontana <cfontana@suse.de>
9
Message-Id: <20231003123026.99229-8-philmd@linaro.org>
10
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
11
---
12
accel/tcg/internal.h | 3 +++
13
include/exec/cpu-all.h | 2 --
14
accel/tcg/tcg-all.c | 2 ++
15
cpu.c | 9 ---------
16
4 files changed, 5 insertions(+), 11 deletions(-)
17
18
diff --git a/accel/tcg/internal.h b/accel/tcg/internal.h
19
index XXXXXXX..XXXXXXX 100644
20
--- a/accel/tcg/internal.h
21
+++ b/accel/tcg/internal.h
22
@@ -XXX,XX +XXX,XX @@ bool tb_invalidate_phys_page_unwind(tb_page_addr_t addr, uintptr_t pc);
23
void cpu_restore_state_from_tb(CPUState *cpu, TranslationBlock *tb,
24
uintptr_t host_pc);
25
26
+bool tcg_exec_realizefn(CPUState *cpu, Error **errp);
27
+void tcg_exec_unrealizefn(CPUState *cpu);
28
+
29
/* Return the current PC from CPU, which may be cached in TB. */
30
static inline vaddr log_pc(CPUState *cpu, const TranslationBlock *tb)
31
{
32
diff --git a/include/exec/cpu-all.h b/include/exec/cpu-all.h
33
index XXXXXXX..XXXXXXX 100644
34
--- a/include/exec/cpu-all.h
35
+++ b/include/exec/cpu-all.h
36
@@ -XXX,XX +XXX,XX @@ void dump_exec_info(GString *buf);
37
38
/* accel/tcg/cpu-exec.c */
39
int cpu_exec(CPUState *cpu);
40
-bool tcg_exec_realizefn(CPUState *cpu, Error **errp);
41
-void tcg_exec_unrealizefn(CPUState *cpu);
42
43
/**
44
* cpu_set_cpustate_pointers(cpu)
45
diff --git a/accel/tcg/tcg-all.c b/accel/tcg/tcg-all.c
46
index XXXXXXX..XXXXXXX 100644
47
--- a/accel/tcg/tcg-all.c
48
+++ b/accel/tcg/tcg-all.c
49
@@ -XXX,XX +XXX,XX @@ static void tcg_accel_class_init(ObjectClass *oc, void *data)
50
AccelClass *ac = ACCEL_CLASS(oc);
51
ac->name = "tcg";
52
ac->init_machine = tcg_init_machine;
53
+ ac->cpu_common_realize = tcg_exec_realizefn;
54
+ ac->cpu_common_unrealize = tcg_exec_unrealizefn;
55
ac->allowed = &tcg_allowed;
56
ac->gdbstub_supported_sstep_flags = tcg_gdbstub_supported_sstep_flags;
57
58
diff --git a/cpu.c b/cpu.c
59
index XXXXXXX..XXXXXXX 100644
60
--- a/cpu.c
61
+++ b/cpu.c
62
@@ -XXX,XX +XXX,XX @@ void cpu_exec_realizefn(CPUState *cpu, Error **errp)
63
return;
64
}
65
66
- /* NB: errp parameter is unused currently */
67
- if (tcg_enabled()) {
68
- tcg_exec_realizefn(cpu, errp);
69
- }
70
-
71
/* Wait until cpu initialization complete before exposing cpu. */
72
cpu_list_add(cpu);
73
74
@@ -XXX,XX +XXX,XX @@ void cpu_exec_unrealizefn(CPUState *cpu)
75
cpu_list_remove(cpu);
76
/*
77
* Now that the vCPU has been removed from the RCU list, we can call
78
- * tcg_exec_unrealizefn and
79
* accel_cpu_common_unrealize, which may free fields using call_rcu.
80
*/
81
accel_cpu_common_unrealize(cpu);
82
- if (tcg_enabled()) {
83
- tcg_exec_unrealizefn(cpu);
84
- }
85
}
86
87
/*
88
--
89
2.34.1
90
91
diff view generated by jsdifflib
New patch
1
From: Anton Johansson <anjo@rev.ng>
1
2
3
TARGET_PAGE_ENTRY_EXTRA is a macro that allows guests to specify additional
4
fields for caching with the full TLB entry. This macro is replaced with
5
a union in CPUTLBEntryFull, thus making CPUTLB target-agnostic at the
6
cost of slightly inflated CPUTLBEntryFull for non-arm guests.
7
8
Note, this is needed to ensure that fields in CPUTLB don't vary in
9
offset between various targets.
10
11
(arm is the only guest actually making use of this feature.)
12
13
Signed-off-by: Anton Johansson <anjo@rev.ng>
14
Message-Id: <20230912153428.17816-2-anjo@rev.ng>
15
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
16
---
17
include/exec/cpu-defs.h | 18 +++++++++++++++---
18
target/arm/cpu-param.h | 12 ------------
19
target/arm/ptw.c | 4 ++--
20
target/arm/tcg/mte_helper.c | 2 +-
21
target/arm/tcg/sve_helper.c | 2 +-
22
target/arm/tcg/tlb_helper.c | 4 ++--
23
target/arm/tcg/translate-a64.c | 2 +-
24
7 files changed, 22 insertions(+), 22 deletions(-)
25
26
diff --git a/include/exec/cpu-defs.h b/include/exec/cpu-defs.h
27
index XXXXXXX..XXXXXXX 100644
28
--- a/include/exec/cpu-defs.h
29
+++ b/include/exec/cpu-defs.h
30
@@ -XXX,XX +XXX,XX @@ typedef struct CPUTLBEntryFull {
31
* This may be used to cache items from the guest cpu
32
* page tables for later use by the implementation.
33
*/
34
-#ifdef TARGET_PAGE_ENTRY_EXTRA
35
- TARGET_PAGE_ENTRY_EXTRA
36
-#endif
37
+ union {
38
+ /*
39
+ * Cache the attrs and shareability fields from the page table entry.
40
+ *
41
+ * For ARMMMUIdx_Stage2*, pte_attrs is the S2 descriptor bits [5:2].
42
+ * Otherwise, pte_attrs is the same as the MAIR_EL1 8-bit format.
43
+ * For shareability and guarded, as in the SH and GP fields respectively
44
+ * of the VMSAv8-64 PTEs.
45
+ */
46
+ struct {
47
+ uint8_t pte_attrs;
48
+ uint8_t shareability;
49
+ bool guarded;
50
+ } arm;
51
+ } extra;
52
} CPUTLBEntryFull;
53
#endif /* CONFIG_SOFTMMU */
54
55
diff --git a/target/arm/cpu-param.h b/target/arm/cpu-param.h
56
index XXXXXXX..XXXXXXX 100644
57
--- a/target/arm/cpu-param.h
58
+++ b/target/arm/cpu-param.h
59
@@ -XXX,XX +XXX,XX @@
60
# define TARGET_PAGE_BITS_VARY
61
# define TARGET_PAGE_BITS_MIN 10
62
63
-/*
64
- * Cache the attrs and shareability fields from the page table entry.
65
- *
66
- * For ARMMMUIdx_Stage2*, pte_attrs is the S2 descriptor bits [5:2].
67
- * Otherwise, pte_attrs is the same as the MAIR_EL1 8-bit format.
68
- * For shareability and guarded, as in the SH and GP fields respectively
69
- * of the VMSAv8-64 PTEs.
70
- */
71
-# define TARGET_PAGE_ENTRY_EXTRA \
72
- uint8_t pte_attrs; \
73
- uint8_t shareability; \
74
- bool guarded;
75
#endif
76
77
#endif
78
diff --git a/target/arm/ptw.c b/target/arm/ptw.c
79
index XXXXXXX..XXXXXXX 100644
80
--- a/target/arm/ptw.c
81
+++ b/target/arm/ptw.c
82
@@ -XXX,XX +XXX,XX @@ static bool S1_ptw_translate(CPUARMState *env, S1Translate *ptw,
83
}
84
ptw->out_phys = full->phys_addr | (addr & ~TARGET_PAGE_MASK);
85
ptw->out_rw = full->prot & PAGE_WRITE;
86
- pte_attrs = full->pte_attrs;
87
+ pte_attrs = full->extra.arm.pte_attrs;
88
ptw->out_space = full->attrs.space;
89
#else
90
g_assert_not_reached();
91
@@ -XXX,XX +XXX,XX @@ static bool get_phys_addr_lpae(CPUARMState *env, S1Translate *ptw,
92
93
/* When in aarch64 mode, and BTI is enabled, remember GP in the TLB. */
94
if (aarch64 && cpu_isar_feature(aa64_bti, cpu)) {
95
- result->f.guarded = extract64(attrs, 50, 1); /* GP */
96
+ result->f.extra.arm.guarded = extract64(attrs, 50, 1); /* GP */
97
}
98
}
99
100
diff --git a/target/arm/tcg/mte_helper.c b/target/arm/tcg/mte_helper.c
101
index XXXXXXX..XXXXXXX 100644
102
--- a/target/arm/tcg/mte_helper.c
103
+++ b/target/arm/tcg/mte_helper.c
104
@@ -XXX,XX +XXX,XX @@ static uint8_t *allocation_tag_mem_probe(CPUARMState *env, int ptr_mmu_idx,
105
assert(!(flags & TLB_INVALID_MASK));
106
107
/* If the virtual page MemAttr != Tagged, access unchecked. */
108
- if (full->pte_attrs != 0xf0) {
109
+ if (full->extra.arm.pte_attrs != 0xf0) {
110
return NULL;
111
}
112
113
diff --git a/target/arm/tcg/sve_helper.c b/target/arm/tcg/sve_helper.c
114
index XXXXXXX..XXXXXXX 100644
115
--- a/target/arm/tcg/sve_helper.c
116
+++ b/target/arm/tcg/sve_helper.c
117
@@ -XXX,XX +XXX,XX @@ bool sve_probe_page(SVEHostPage *info, bool nofault, CPUARMState *env,
118
info->tagged = (flags & PAGE_ANON) && (flags & PAGE_MTE);
119
#else
120
info->attrs = full->attrs;
121
- info->tagged = full->pte_attrs == 0xf0;
122
+ info->tagged = full->extra.arm.pte_attrs == 0xf0;
123
#endif
124
125
/* Ensure that info->host[] is relative to addr, not addr + mem_off. */
126
diff --git a/target/arm/tcg/tlb_helper.c b/target/arm/tcg/tlb_helper.c
127
index XXXXXXX..XXXXXXX 100644
128
--- a/target/arm/tcg/tlb_helper.c
129
+++ b/target/arm/tcg/tlb_helper.c
130
@@ -XXX,XX +XXX,XX @@ bool arm_cpu_tlb_fill(CPUState *cs, vaddr address, int size,
131
address &= TARGET_PAGE_MASK;
132
}
133
134
- res.f.pte_attrs = res.cacheattrs.attrs;
135
- res.f.shareability = res.cacheattrs.shareability;
136
+ res.f.extra.arm.pte_attrs = res.cacheattrs.attrs;
137
+ res.f.extra.arm.shareability = res.cacheattrs.shareability;
138
139
tlb_set_page_full(cs, mmu_idx, address, &res.f);
140
return true;
141
diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c
142
index XXXXXXX..XXXXXXX 100644
143
--- a/target/arm/tcg/translate-a64.c
144
+++ b/target/arm/tcg/translate-a64.c
145
@@ -XXX,XX +XXX,XX @@ static bool is_guarded_page(CPUARMState *env, DisasContext *s)
146
false, &host, &full, 0);
147
assert(!(flags & TLB_INVALID_MASK));
148
149
- return full->guarded;
150
+ return full->extra.arm.guarded;
151
#endif
152
}
153
154
--
155
2.34.1
diff view generated by jsdifflib
New patch
1
Accept that we will consume space in CPUState for CONFIG_USER_ONLY,
2
since we cannot test CONFIG_SOFTMMU within hw/core/cpu.h.
1
3
4
Reviewed-by: Anton Johansson <anjo@rev.ng>
5
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6
---
7
include/exec/cpu-defs.h | 150 ----------------------------------------
8
include/hw/core/cpu.h | 141 +++++++++++++++++++++++++++++++++++++
9
2 files changed, 141 insertions(+), 150 deletions(-)
10
11
diff --git a/include/exec/cpu-defs.h b/include/exec/cpu-defs.h
12
index XXXXXXX..XXXXXXX 100644
13
--- a/include/exec/cpu-defs.h
14
+++ b/include/exec/cpu-defs.h
15
@@ -XXX,XX +XXX,XX @@
16
17
#include "exec/target_long.h"
18
19
-/*
20
- * Fix the number of mmu modes to 16, which is also the maximum
21
- * supported by the softmmu tlb api.
22
- */
23
-#define NB_MMU_MODES 16
24
-
25
#if defined(CONFIG_SOFTMMU) && defined(CONFIG_TCG)
26
-#include "exec/tlb-common.h"
27
-
28
-/* use a fully associative victim tlb of 8 entries */
29
-#define CPU_VTLB_SIZE 8
30
-
31
#define CPU_TLB_DYN_MIN_BITS 6
32
#define CPU_TLB_DYN_DEFAULT_BITS 8
33
34
@@ -XXX,XX +XXX,XX @@
35
36
#endif /* CONFIG_SOFTMMU && CONFIG_TCG */
37
38
-#if defined(CONFIG_SOFTMMU)
39
-/*
40
- * The full TLB entry, which is not accessed by generated TCG code,
41
- * so the layout is not as critical as that of CPUTLBEntry. This is
42
- * also why we don't want to combine the two structs.
43
- */
44
-typedef struct CPUTLBEntryFull {
45
- /*
46
- * @xlat_section contains:
47
- * - For ram, an offset which must be added to the virtual address
48
- * to obtain the ram_addr_t of the target RAM
49
- * - For other memory regions,
50
- * + in the lower TARGET_PAGE_BITS, the physical section number
51
- * + with the TARGET_PAGE_BITS masked off, the offset within
52
- * the target MemoryRegion
53
- */
54
- hwaddr xlat_section;
55
-
56
- /*
57
- * @phys_addr contains the physical address in the address space
58
- * given by cpu_asidx_from_attrs(cpu, @attrs).
59
- */
60
- hwaddr phys_addr;
61
-
62
- /* @attrs contains the memory transaction attributes for the page. */
63
- MemTxAttrs attrs;
64
-
65
- /* @prot contains the complete protections for the page. */
66
- uint8_t prot;
67
-
68
- /* @lg_page_size contains the log2 of the page size. */
69
- uint8_t lg_page_size;
70
-
71
- /*
72
- * Additional tlb flags for use by the slow path. If non-zero,
73
- * the corresponding CPUTLBEntry comparator must have TLB_FORCE_SLOW.
74
- */
75
- uint8_t slow_flags[MMU_ACCESS_COUNT];
76
-
77
- /*
78
- * Allow target-specific additions to this structure.
79
- * This may be used to cache items from the guest cpu
80
- * page tables for later use by the implementation.
81
- */
82
- union {
83
- /*
84
- * Cache the attrs and shareability fields from the page table entry.
85
- *
86
- * For ARMMMUIdx_Stage2*, pte_attrs is the S2 descriptor bits [5:2].
87
- * Otherwise, pte_attrs is the same as the MAIR_EL1 8-bit format.
88
- * For shareability and guarded, as in the SH and GP fields respectively
89
- * of the VMSAv8-64 PTEs.
90
- */
91
- struct {
92
- uint8_t pte_attrs;
93
- uint8_t shareability;
94
- bool guarded;
95
- } arm;
96
- } extra;
97
-} CPUTLBEntryFull;
98
-#endif /* CONFIG_SOFTMMU */
99
-
100
-#if defined(CONFIG_SOFTMMU) && defined(CONFIG_TCG)
101
-/*
102
- * Data elements that are per MMU mode, minus the bits accessed by
103
- * the TCG fast path.
104
- */
105
-typedef struct CPUTLBDesc {
106
- /*
107
- * Describe a region covering all of the large pages allocated
108
- * into the tlb. When any page within this region is flushed,
109
- * we must flush the entire tlb. The region is matched if
110
- * (addr & large_page_mask) == large_page_addr.
111
- */
112
- vaddr large_page_addr;
113
- vaddr large_page_mask;
114
- /* host time (in ns) at the beginning of the time window */
115
- int64_t window_begin_ns;
116
- /* maximum number of entries observed in the window */
117
- size_t window_max_entries;
118
- size_t n_used_entries;
119
- /* The next index to use in the tlb victim table. */
120
- size_t vindex;
121
- /* The tlb victim table, in two parts. */
122
- CPUTLBEntry vtable[CPU_VTLB_SIZE];
123
- CPUTLBEntryFull vfulltlb[CPU_VTLB_SIZE];
124
- CPUTLBEntryFull *fulltlb;
125
-} CPUTLBDesc;
126
-
127
-/*
128
- * Data elements that are shared between all MMU modes.
129
- */
130
-typedef struct CPUTLBCommon {
131
- /* Serialize updates to f.table and d.vtable, and others as noted. */
132
- QemuSpin lock;
133
- /*
134
- * Within dirty, for each bit N, modifications have been made to
135
- * mmu_idx N since the last time that mmu_idx was flushed.
136
- * Protected by tlb_c.lock.
137
- */
138
- uint16_t dirty;
139
- /*
140
- * Statistics. These are not lock protected, but are read and
141
- * written atomically. This allows the monitor to print a snapshot
142
- * of the stats without interfering with the cpu.
143
- */
144
- size_t full_flush_count;
145
- size_t part_flush_count;
146
- size_t elide_flush_count;
147
-} CPUTLBCommon;
148
-
149
-/*
150
- * The entire softmmu tlb, for all MMU modes.
151
- * The meaning of each of the MMU modes is defined in the target code.
152
- * Since this is placed within CPUNegativeOffsetState, the smallest
153
- * negative offsets are at the end of the struct.
154
- */
155
-
156
-typedef struct CPUTLB {
157
- CPUTLBCommon c;
158
- CPUTLBDesc d[NB_MMU_MODES];
159
- CPUTLBDescFast f[NB_MMU_MODES];
160
-} CPUTLB;
161
-
162
-#else
163
-
164
-typedef struct CPUTLB { } CPUTLB;
165
-
166
-#endif /* CONFIG_SOFTMMU && CONFIG_TCG */
167
-
168
-/*
169
- * This structure must be placed in ArchCPU immediately
170
- * before CPUArchState, as a field named "neg".
171
- */
172
-typedef struct CPUNegativeOffsetState {
173
- CPUTLB tlb;
174
- IcountDecr icount_decr;
175
-} CPUNegativeOffsetState;
176
-
177
#endif
178
diff --git a/include/hw/core/cpu.h b/include/hw/core/cpu.h
179
index XXXXXXX..XXXXXXX 100644
180
--- a/include/hw/core/cpu.h
181
+++ b/include/hw/core/cpu.h
182
@@ -XXX,XX +XXX,XX @@
183
#include "exec/cpu-common.h"
184
#include "exec/hwaddr.h"
185
#include "exec/memattrs.h"
186
+#include "exec/tlb-common.h"
187
#include "qapi/qapi-types-run-state.h"
188
#include "qemu/bitmap.h"
189
#include "qemu/rcu_queue.h"
190
@@ -XXX,XX +XXX,XX @@ struct CPUClass {
191
bool gdb_stop_before_watchpoint;
192
};
193
194
+/*
195
+ * Fix the number of mmu modes to 16, which is also the maximum
196
+ * supported by the softmmu tlb api.
197
+ */
198
+#define NB_MMU_MODES 16
199
+
200
+/* Use a fully associative victim tlb of 8 entries. */
201
+#define CPU_VTLB_SIZE 8
202
+
203
+/*
204
+ * The full TLB entry, which is not accessed by generated TCG code,
205
+ * so the layout is not as critical as that of CPUTLBEntry. This is
206
+ * also why we don't want to combine the two structs.
207
+ */
208
+typedef struct CPUTLBEntryFull {
209
+ /*
210
+ * @xlat_section contains:
211
+ * - in the lower TARGET_PAGE_BITS, a physical section number
212
+ * - with the lower TARGET_PAGE_BITS masked off, an offset which
213
+ * must be added to the virtual address to obtain:
214
+ * + the ram_addr_t of the target RAM (if the physical section
215
+ * number is PHYS_SECTION_NOTDIRTY or PHYS_SECTION_ROM)
216
+ * + the offset within the target MemoryRegion (otherwise)
217
+ */
218
+ hwaddr xlat_section;
219
+
220
+ /*
221
+ * @phys_addr contains the physical address in the address space
222
+ * given by cpu_asidx_from_attrs(cpu, @attrs).
223
+ */
224
+ hwaddr phys_addr;
225
+
226
+ /* @attrs contains the memory transaction attributes for the page. */
227
+ MemTxAttrs attrs;
228
+
229
+ /* @prot contains the complete protections for the page. */
230
+ uint8_t prot;
231
+
232
+ /* @lg_page_size contains the log2 of the page size. */
233
+ uint8_t lg_page_size;
234
+
235
+ /*
236
+ * Additional tlb flags for use by the slow path. If non-zero,
237
+ * the corresponding CPUTLBEntry comparator must have TLB_FORCE_SLOW.
238
+ */
239
+ uint8_t slow_flags[MMU_ACCESS_COUNT];
240
+
241
+ /*
242
+ * Allow target-specific additions to this structure.
243
+ * This may be used to cache items from the guest cpu
244
+ * page tables for later use by the implementation.
245
+ */
246
+ union {
247
+ /*
248
+ * Cache the attrs and shareability fields from the page table entry.
249
+ *
250
+ * For ARMMMUIdx_Stage2*, pte_attrs is the S2 descriptor bits [5:2].
251
+ * Otherwise, pte_attrs is the same as the MAIR_EL1 8-bit format.
252
+ * For shareability and guarded, as in the SH and GP fields respectively
253
+ * of the VMSAv8-64 PTEs.
254
+ */
255
+ struct {
256
+ uint8_t pte_attrs;
257
+ uint8_t shareability;
258
+ bool guarded;
259
+ } arm;
260
+ } extra;
261
+} CPUTLBEntryFull;
262
+
263
+/*
264
+ * Data elements that are per MMU mode, minus the bits accessed by
265
+ * the TCG fast path.
266
+ */
267
+typedef struct CPUTLBDesc {
268
+ /*
269
+ * Describe a region covering all of the large pages allocated
270
+ * into the tlb. When any page within this region is flushed,
271
+ * we must flush the entire tlb. The region is matched if
272
+ * (addr & large_page_mask) == large_page_addr.
273
+ */
274
+ vaddr large_page_addr;
275
+ vaddr large_page_mask;
276
+ /* host time (in ns) at the beginning of the time window */
277
+ int64_t window_begin_ns;
278
+ /* maximum number of entries observed in the window */
279
+ size_t window_max_entries;
280
+ size_t n_used_entries;
281
+ /* The next index to use in the tlb victim table. */
282
+ size_t vindex;
283
+ /* The tlb victim table, in two parts. */
284
+ CPUTLBEntry vtable[CPU_VTLB_SIZE];
285
+ CPUTLBEntryFull vfulltlb[CPU_VTLB_SIZE];
286
+ CPUTLBEntryFull *fulltlb;
287
+} CPUTLBDesc;
288
+
289
+/*
290
+ * Data elements that are shared between all MMU modes.
291
+ */
292
+typedef struct CPUTLBCommon {
293
+ /* Serialize updates to f.table and d.vtable, and others as noted. */
294
+ QemuSpin lock;
295
+ /*
296
+ * Within dirty, for each bit N, modifications have been made to
297
+ * mmu_idx N since the last time that mmu_idx was flushed.
298
+ * Protected by tlb_c.lock.
299
+ */
300
+ uint16_t dirty;
301
+ /*
302
+ * Statistics. These are not lock protected, but are read and
303
+ * written atomically. This allows the monitor to print a snapshot
304
+ * of the stats without interfering with the cpu.
305
+ */
306
+ size_t full_flush_count;
307
+ size_t part_flush_count;
308
+ size_t elide_flush_count;
309
+} CPUTLBCommon;
310
+
311
+/*
312
+ * The entire softmmu tlb, for all MMU modes.
313
+ * The meaning of each of the MMU modes is defined in the target code.
314
+ * Since this is placed within CPUNegativeOffsetState, the smallest
315
+ * negative offsets are at the end of the struct.
316
+ */
317
+typedef struct CPUTLB {
318
+#ifdef CONFIG_TCG
319
+ CPUTLBCommon c;
320
+ CPUTLBDesc d[NB_MMU_MODES];
321
+ CPUTLBDescFast f[NB_MMU_MODES];
322
+#endif
323
+} CPUTLB;
324
+
325
/*
326
* Low 16 bits: number of cycles left, used only in icount mode.
327
* High 16 bits: Set to -1 to force TCG to stop executing linked TBs
328
@@ -XXX,XX +XXX,XX @@ typedef union IcountDecr {
329
} u16;
330
} IcountDecr;
331
332
+/*
333
+ * This structure must be placed in ArchCPU immediately
334
+ * before CPUArchState, as a field named "neg".
335
+ */
336
+typedef struct CPUNegativeOffsetState {
337
+ CPUTLB tlb;
338
+ IcountDecr icount_decr;
339
+} CPUNegativeOffsetState;
340
+
341
typedef struct CPUBreakpoint {
342
vaddr pc;
343
int flags; /* BP_* */
344
--
345
2.34.1
diff view generated by jsdifflib
New patch
1
Propagate alignment just like size. This is required in order to
2
get the correct alignment on most cpu subclasses where the size and
3
alignment is only specified for the base cpu type.
1
4
5
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
6
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7
---
8
qom/object.c | 14 ++++++++++++++
9
1 file changed, 14 insertions(+)
10
11
diff --git a/qom/object.c b/qom/object.c
12
index XXXXXXX..XXXXXXX 100644
13
--- a/qom/object.c
14
+++ b/qom/object.c
15
@@ -XXX,XX +XXX,XX @@ static size_t type_object_get_size(TypeImpl *ti)
16
return 0;
17
}
18
19
+static size_t type_object_get_align(TypeImpl *ti)
20
+{
21
+ if (ti->instance_align) {
22
+ return ti->instance_align;
23
+ }
24
+
25
+ if (type_has_parent(ti)) {
26
+ return type_object_get_align(type_get_parent(ti));
27
+ }
28
+
29
+ return 0;
30
+}
31
+
32
size_t object_type_get_instance_size(const char *typename)
33
{
34
TypeImpl *type = type_get_by_name(typename);
35
@@ -XXX,XX +XXX,XX @@ static void type_initialize(TypeImpl *ti)
36
37
ti->class_size = type_class_get_size(ti);
38
ti->instance_size = type_object_get_size(ti);
39
+ ti->instance_align = type_object_get_align(ti);
40
/* Any type with zero instance_size is implicitly abstract.
41
* This means interface types are all abstract.
42
*/
43
--
44
2.34.1
45
46
diff view generated by jsdifflib
New patch
1
Inherit the size and alignment from TYPE_ARM_CPU.
1
2
3
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
4
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
5
---
6
target/arm/cpu.c | 3 ---
7
target/arm/cpu64.c | 4 ----
8
2 files changed, 7 deletions(-)
9
10
diff --git a/target/arm/cpu.c b/target/arm/cpu.c
11
index XXXXXXX..XXXXXXX 100644
12
--- a/target/arm/cpu.c
13
+++ b/target/arm/cpu.c
14
@@ -XXX,XX +XXX,XX @@ void arm_cpu_register(const ARMCPUInfo *info)
15
{
16
TypeInfo type_info = {
17
.parent = TYPE_ARM_CPU,
18
- .instance_size = sizeof(ARMCPU),
19
- .instance_align = __alignof__(ARMCPU),
20
.instance_init = arm_cpu_instance_init,
21
- .class_size = sizeof(ARMCPUClass),
22
.class_init = info->class_init ?: cpu_register_class_init,
23
.class_data = (void *)info,
24
};
25
diff --git a/target/arm/cpu64.c b/target/arm/cpu64.c
26
index XXXXXXX..XXXXXXX 100644
27
--- a/target/arm/cpu64.c
28
+++ b/target/arm/cpu64.c
29
@@ -XXX,XX +XXX,XX @@ void aarch64_cpu_register(const ARMCPUInfo *info)
30
{
31
TypeInfo type_info = {
32
.parent = TYPE_AARCH64_CPU,
33
- .instance_size = sizeof(ARMCPU),
34
.instance_init = aarch64_cpu_instance_init,
35
- .class_size = sizeof(ARMCPUClass),
36
.class_init = info->class_init ?: cpu_register_class_init,
37
.class_data = (void *)info,
38
};
39
@@ -XXX,XX +XXX,XX @@ void aarch64_cpu_register(const ARMCPUInfo *info)
40
static const TypeInfo aarch64_cpu_type_info = {
41
.name = TYPE_AARCH64_CPU,
42
.parent = TYPE_ARM_CPU,
43
- .instance_size = sizeof(ARMCPU),
44
.instance_finalize = aarch64_cpu_finalizefn,
45
.abstract = true,
46
- .class_size = sizeof(AArch64CPUClass),
47
.class_init = aarch64_cpu_class_init,
48
};
49
50
--
51
2.34.1
52
53
diff view generated by jsdifflib
New patch
1
1
The omission of alignment has technically been wrong since
2
269bd5d8f61, where QEMU_ALIGNED was added to CPUTLBDescFast.
3
4
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
5
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6
---
7
target/alpha/cpu.c | 1 +
8
target/avr/cpu.c | 1 +
9
target/cris/cpu.c | 1 +
10
target/hexagon/cpu.c | 1 +
11
target/hppa/cpu.c | 1 +
12
target/i386/cpu.c | 1 +
13
target/loongarch/cpu.c | 1 +
14
target/m68k/cpu.c | 1 +
15
target/microblaze/cpu.c | 1 +
16
target/mips/cpu.c | 1 +
17
target/nios2/cpu.c | 1 +
18
target/openrisc/cpu.c | 1 +
19
target/riscv/cpu.c | 2 +-
20
target/rx/cpu.c | 1 +
21
target/sh4/cpu.c | 1 +
22
target/sparc/cpu.c | 1 +
23
target/tricore/cpu.c | 1 +
24
target/xtensa/cpu.c | 1 +
25
18 files changed, 18 insertions(+), 1 deletion(-)
26
27
diff --git a/target/alpha/cpu.c b/target/alpha/cpu.c
28
index XXXXXXX..XXXXXXX 100644
29
--- a/target/alpha/cpu.c
30
+++ b/target/alpha/cpu.c
31
@@ -XXX,XX +XXX,XX @@ static const TypeInfo alpha_cpu_type_infos[] = {
32
.name = TYPE_ALPHA_CPU,
33
.parent = TYPE_CPU,
34
.instance_size = sizeof(AlphaCPU),
35
+ .instance_align = __alignof(AlphaCPU),
36
.instance_init = alpha_cpu_initfn,
37
.abstract = true,
38
.class_size = sizeof(AlphaCPUClass),
39
diff --git a/target/avr/cpu.c b/target/avr/cpu.c
40
index XXXXXXX..XXXXXXX 100644
41
--- a/target/avr/cpu.c
42
+++ b/target/avr/cpu.c
43
@@ -XXX,XX +XXX,XX @@ static const TypeInfo avr_cpu_type_info[] = {
44
.name = TYPE_AVR_CPU,
45
.parent = TYPE_CPU,
46
.instance_size = sizeof(AVRCPU),
47
+ .instance_align = __alignof(AVRCPU),
48
.instance_init = avr_cpu_initfn,
49
.class_size = sizeof(AVRCPUClass),
50
.class_init = avr_cpu_class_init,
51
diff --git a/target/cris/cpu.c b/target/cris/cpu.c
52
index XXXXXXX..XXXXXXX 100644
53
--- a/target/cris/cpu.c
54
+++ b/target/cris/cpu.c
55
@@ -XXX,XX +XXX,XX @@ static const TypeInfo cris_cpu_model_type_infos[] = {
56
.name = TYPE_CRIS_CPU,
57
.parent = TYPE_CPU,
58
.instance_size = sizeof(CRISCPU),
59
+ .instance_align = __alignof(CRISCPU),
60
.instance_init = cris_cpu_initfn,
61
.abstract = true,
62
.class_size = sizeof(CRISCPUClass),
63
diff --git a/target/hexagon/cpu.c b/target/hexagon/cpu.c
64
index XXXXXXX..XXXXXXX 100644
65
--- a/target/hexagon/cpu.c
66
+++ b/target/hexagon/cpu.c
67
@@ -XXX,XX +XXX,XX @@ static const TypeInfo hexagon_cpu_type_infos[] = {
68
.name = TYPE_HEXAGON_CPU,
69
.parent = TYPE_CPU,
70
.instance_size = sizeof(HexagonCPU),
71
+ .instance_align = __alignof(HexagonCPU),
72
.instance_init = hexagon_cpu_init,
73
.abstract = true,
74
.class_size = sizeof(HexagonCPUClass),
75
diff --git a/target/hppa/cpu.c b/target/hppa/cpu.c
76
index XXXXXXX..XXXXXXX 100644
77
--- a/target/hppa/cpu.c
78
+++ b/target/hppa/cpu.c
79
@@ -XXX,XX +XXX,XX @@ static const TypeInfo hppa_cpu_type_info = {
80
.name = TYPE_HPPA_CPU,
81
.parent = TYPE_CPU,
82
.instance_size = sizeof(HPPACPU),
83
+ .instance_align = __alignof(HPPACPU),
84
.instance_init = hppa_cpu_initfn,
85
.abstract = false,
86
.class_size = sizeof(HPPACPUClass),
87
diff --git a/target/i386/cpu.c b/target/i386/cpu.c
88
index XXXXXXX..XXXXXXX 100644
89
--- a/target/i386/cpu.c
90
+++ b/target/i386/cpu.c
91
@@ -XXX,XX +XXX,XX @@ static const TypeInfo x86_cpu_type_info = {
92
.name = TYPE_X86_CPU,
93
.parent = TYPE_CPU,
94
.instance_size = sizeof(X86CPU),
95
+ .instance_align = __alignof(X86CPU),
96
.instance_init = x86_cpu_initfn,
97
.instance_post_init = x86_cpu_post_initfn,
98
99
diff --git a/target/loongarch/cpu.c b/target/loongarch/cpu.c
100
index XXXXXXX..XXXXXXX 100644
101
--- a/target/loongarch/cpu.c
102
+++ b/target/loongarch/cpu.c
103
@@ -XXX,XX +XXX,XX @@ static const TypeInfo loongarch_cpu_type_infos[] = {
104
.name = TYPE_LOONGARCH_CPU,
105
.parent = TYPE_CPU,
106
.instance_size = sizeof(LoongArchCPU),
107
+ .instance_align = __alignof(LoongArchCPU),
108
.instance_init = loongarch_cpu_init,
109
110
.abstract = true,
111
diff --git a/target/m68k/cpu.c b/target/m68k/cpu.c
112
index XXXXXXX..XXXXXXX 100644
113
--- a/target/m68k/cpu.c
114
+++ b/target/m68k/cpu.c
115
@@ -XXX,XX +XXX,XX @@ static const TypeInfo m68k_cpus_type_infos[] = {
116
.name = TYPE_M68K_CPU,
117
.parent = TYPE_CPU,
118
.instance_size = sizeof(M68kCPU),
119
+ .instance_align = __alignof(M68kCPU),
120
.instance_init = m68k_cpu_initfn,
121
.abstract = true,
122
.class_size = sizeof(M68kCPUClass),
123
diff --git a/target/microblaze/cpu.c b/target/microblaze/cpu.c
124
index XXXXXXX..XXXXXXX 100644
125
--- a/target/microblaze/cpu.c
126
+++ b/target/microblaze/cpu.c
127
@@ -XXX,XX +XXX,XX @@ static const TypeInfo mb_cpu_type_info = {
128
.name = TYPE_MICROBLAZE_CPU,
129
.parent = TYPE_CPU,
130
.instance_size = sizeof(MicroBlazeCPU),
131
+ .instance_align = __alignof(MicroBlazeCPU),
132
.instance_init = mb_cpu_initfn,
133
.class_size = sizeof(MicroBlazeCPUClass),
134
.class_init = mb_cpu_class_init,
135
diff --git a/target/mips/cpu.c b/target/mips/cpu.c
136
index XXXXXXX..XXXXXXX 100644
137
--- a/target/mips/cpu.c
138
+++ b/target/mips/cpu.c
139
@@ -XXX,XX +XXX,XX @@ static const TypeInfo mips_cpu_type_info = {
140
.name = TYPE_MIPS_CPU,
141
.parent = TYPE_CPU,
142
.instance_size = sizeof(MIPSCPU),
143
+ .instance_align = __alignof(MIPSCPU),
144
.instance_init = mips_cpu_initfn,
145
.abstract = true,
146
.class_size = sizeof(MIPSCPUClass),
147
diff --git a/target/nios2/cpu.c b/target/nios2/cpu.c
148
index XXXXXXX..XXXXXXX 100644
149
--- a/target/nios2/cpu.c
150
+++ b/target/nios2/cpu.c
151
@@ -XXX,XX +XXX,XX @@ static const TypeInfo nios2_cpu_type_info = {
152
.name = TYPE_NIOS2_CPU,
153
.parent = TYPE_CPU,
154
.instance_size = sizeof(Nios2CPU),
155
+ .instance_align = __alignof(Nios2CPU),
156
.instance_init = nios2_cpu_initfn,
157
.class_size = sizeof(Nios2CPUClass),
158
.class_init = nios2_cpu_class_init,
159
diff --git a/target/openrisc/cpu.c b/target/openrisc/cpu.c
160
index XXXXXXX..XXXXXXX 100644
161
--- a/target/openrisc/cpu.c
162
+++ b/target/openrisc/cpu.c
163
@@ -XXX,XX +XXX,XX @@ static const TypeInfo openrisc_cpus_type_infos[] = {
164
.name = TYPE_OPENRISC_CPU,
165
.parent = TYPE_CPU,
166
.instance_size = sizeof(OpenRISCCPU),
167
+ .instance_align = __alignof(OpenRISCCPU),
168
.instance_init = openrisc_cpu_initfn,
169
.abstract = true,
170
.class_size = sizeof(OpenRISCCPUClass),
171
diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c
172
index XXXXXXX..XXXXXXX 100644
173
--- a/target/riscv/cpu.c
174
+++ b/target/riscv/cpu.c
175
@@ -XXX,XX +XXX,XX @@ static const TypeInfo riscv_cpu_type_infos[] = {
176
.name = TYPE_RISCV_CPU,
177
.parent = TYPE_CPU,
178
.instance_size = sizeof(RISCVCPU),
179
- .instance_align = __alignof__(RISCVCPU),
180
+ .instance_align = __alignof(RISCVCPU),
181
.instance_init = riscv_cpu_init,
182
.abstract = true,
183
.class_size = sizeof(RISCVCPUClass),
184
diff --git a/target/rx/cpu.c b/target/rx/cpu.c
185
index XXXXXXX..XXXXXXX 100644
186
--- a/target/rx/cpu.c
187
+++ b/target/rx/cpu.c
188
@@ -XXX,XX +XXX,XX @@ static const TypeInfo rx_cpu_info = {
189
.name = TYPE_RX_CPU,
190
.parent = TYPE_CPU,
191
.instance_size = sizeof(RXCPU),
192
+ .instance_align = __alignof(RXCPU),
193
.instance_init = rx_cpu_init,
194
.abstract = true,
195
.class_size = sizeof(RXCPUClass),
196
diff --git a/target/sh4/cpu.c b/target/sh4/cpu.c
197
index XXXXXXX..XXXXXXX 100644
198
--- a/target/sh4/cpu.c
199
+++ b/target/sh4/cpu.c
200
@@ -XXX,XX +XXX,XX @@ static const TypeInfo superh_cpu_type_infos[] = {
201
.name = TYPE_SUPERH_CPU,
202
.parent = TYPE_CPU,
203
.instance_size = sizeof(SuperHCPU),
204
+ .instance_align = __alignof(SuperHCPU),
205
.instance_init = superh_cpu_initfn,
206
.abstract = true,
207
.class_size = sizeof(SuperHCPUClass),
208
diff --git a/target/sparc/cpu.c b/target/sparc/cpu.c
209
index XXXXXXX..XXXXXXX 100644
210
--- a/target/sparc/cpu.c
211
+++ b/target/sparc/cpu.c
212
@@ -XXX,XX +XXX,XX @@ static const TypeInfo sparc_cpu_type_info = {
213
.name = TYPE_SPARC_CPU,
214
.parent = TYPE_CPU,
215
.instance_size = sizeof(SPARCCPU),
216
+ .instance_align = __alignof(SPARCCPU),
217
.instance_init = sparc_cpu_initfn,
218
.abstract = true,
219
.class_size = sizeof(SPARCCPUClass),
220
diff --git a/target/tricore/cpu.c b/target/tricore/cpu.c
221
index XXXXXXX..XXXXXXX 100644
222
--- a/target/tricore/cpu.c
223
+++ b/target/tricore/cpu.c
224
@@ -XXX,XX +XXX,XX @@ static const TypeInfo tricore_cpu_type_infos[] = {
225
.name = TYPE_TRICORE_CPU,
226
.parent = TYPE_CPU,
227
.instance_size = sizeof(TriCoreCPU),
228
+ .instance_align = __alignof(TriCoreCPU),
229
.instance_init = tricore_cpu_initfn,
230
.abstract = true,
231
.class_size = sizeof(TriCoreCPUClass),
232
diff --git a/target/xtensa/cpu.c b/target/xtensa/cpu.c
233
index XXXXXXX..XXXXXXX 100644
234
--- a/target/xtensa/cpu.c
235
+++ b/target/xtensa/cpu.c
236
@@ -XXX,XX +XXX,XX @@ static const TypeInfo xtensa_cpu_type_info = {
237
.name = TYPE_XTENSA_CPU,
238
.parent = TYPE_CPU,
239
.instance_size = sizeof(XtensaCPU),
240
+ .instance_align = __alignof(XtensaCPU),
241
.instance_init = xtensa_cpu_initfn,
242
.abstract = true,
243
.class_size = sizeof(XtensaCPUClass),
244
--
245
2.34.1
246
247
diff view generated by jsdifflib
New patch
1
Verify that the distance between CPUNegativeOffsetState and
2
CPUArchState is no greater than any alignment requirements.
1
3
4
Reviewed-by: Anton Johansson <anjo@rev.ng>
5
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6
---
7
include/exec/cpu-all.h | 6 ++++++
8
1 file changed, 6 insertions(+)
9
10
diff --git a/include/exec/cpu-all.h b/include/exec/cpu-all.h
11
index XXXXXXX..XXXXXXX 100644
12
--- a/include/exec/cpu-all.h
13
+++ b/include/exec/cpu-all.h
14
@@ -XXX,XX +XXX,XX @@ static inline CPUState *env_cpu(CPUArchState *env)
15
return &env_archcpu(env)->parent_obj;
16
}
17
18
+/*
19
+ * Validate placement of CPUNegativeOffsetState.
20
+ */
21
+QEMU_BUILD_BUG_ON(offsetof(ArchCPU, env) - offsetof(ArchCPU, neg) >=
22
+ sizeof(CPUNegativeOffsetState) + __alignof(CPUArchState));
23
+
24
/**
25
* env_neg(env)
26
* @env: The architecture environment
27
--
28
2.34.1
diff view generated by jsdifflib
New patch
1
Retain the separate structure to emphasize its importance.
2
Enforce CPUArchState always follows CPUState without padding.
1
3
4
Reviewed-by: Anton Johansson <anjo@rev.ng>
5
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6
---
7
include/exec/cpu-all.h | 22 +++++++++-------------
8
include/hw/core/cpu.h | 17 +++++++++++++++--
9
target/alpha/cpu.h | 1 -
10
target/arm/cpu.h | 1 -
11
target/avr/cpu.h | 1 -
12
target/cris/cpu.h | 1 -
13
target/hexagon/cpu.h | 2 +-
14
target/hppa/cpu.h | 1 -
15
target/i386/cpu.h | 1 -
16
target/loongarch/cpu.h | 1 -
17
target/m68k/cpu.h | 1 -
18
target/microblaze/cpu.h | 6 +++---
19
target/mips/cpu.h | 4 ++--
20
target/nios2/cpu.h | 1 -
21
target/openrisc/cpu.h | 1 -
22
target/ppc/cpu.h | 1 -
23
target/riscv/cpu.h | 2 +-
24
target/rx/cpu.h | 1 -
25
target/s390x/cpu.h | 1 -
26
target/sh4/cpu.h | 1 -
27
target/sparc/cpu.h | 1 -
28
target/tricore/cpu.h | 1 -
29
target/xtensa/cpu.h | 3 +--
30
accel/tcg/translate-all.c | 4 ++--
31
accel/tcg/translator.c | 8 ++++----
32
25 files changed, 38 insertions(+), 46 deletions(-)
33
34
diff --git a/include/exec/cpu-all.h b/include/exec/cpu-all.h
35
index XXXXXXX..XXXXXXX 100644
36
--- a/include/exec/cpu-all.h
37
+++ b/include/exec/cpu-all.h
38
@@ -XXX,XX +XXX,XX @@ int cpu_exec(CPUState *cpu);
39
static inline void cpu_set_cpustate_pointers(ArchCPU *cpu)
40
{
41
cpu->parent_obj.env_ptr = &cpu->env;
42
- cpu->parent_obj.icount_decr_ptr = &cpu->neg.icount_decr;
43
+ cpu->parent_obj.icount_decr_ptr = &cpu->parent_obj.neg.icount_decr;
44
}
45
46
+/* Validate correct placement of CPUArchState. */
47
+QEMU_BUILD_BUG_ON(offsetof(ArchCPU, parent_obj) != 0);
48
+QEMU_BUILD_BUG_ON(offsetof(ArchCPU, env) != sizeof(CPUState));
49
+
50
/**
51
* env_archcpu(env)
52
* @env: The architecture environment
53
@@ -XXX,XX +XXX,XX @@ static inline void cpu_set_cpustate_pointers(ArchCPU *cpu)
54
*/
55
static inline ArchCPU *env_archcpu(CPUArchState *env)
56
{
57
- return container_of(env, ArchCPU, env);
58
+ return (void *)env - sizeof(CPUState);
59
}
60
61
/**
62
@@ -XXX,XX +XXX,XX @@ static inline ArchCPU *env_archcpu(CPUArchState *env)
63
*/
64
static inline CPUState *env_cpu(CPUArchState *env)
65
{
66
- return &env_archcpu(env)->parent_obj;
67
+ return (void *)env - sizeof(CPUState);
68
}
69
70
-/*
71
- * Validate placement of CPUNegativeOffsetState.
72
- */
73
-QEMU_BUILD_BUG_ON(offsetof(ArchCPU, env) - offsetof(ArchCPU, neg) >=
74
- sizeof(CPUNegativeOffsetState) + __alignof(CPUArchState));
75
-
76
/**
77
* env_neg(env)
78
* @env: The architecture environment
79
@@ -XXX,XX +XXX,XX @@ QEMU_BUILD_BUG_ON(offsetof(ArchCPU, env) - offsetof(ArchCPU, neg) >=
80
*/
81
static inline CPUNegativeOffsetState *env_neg(CPUArchState *env)
82
{
83
- ArchCPU *arch_cpu = container_of(env, ArchCPU, env);
84
- return &arch_cpu->neg;
85
+ return &env_cpu(env)->neg;
86
}
87
88
/**
89
@@ -XXX,XX +XXX,XX @@ static inline CPUNegativeOffsetState *env_neg(CPUArchState *env)
90
*/
91
static inline CPUNegativeOffsetState *cpu_neg(CPUState *cpu)
92
{
93
- ArchCPU *arch_cpu = container_of(cpu, ArchCPU, parent_obj);
94
- return &arch_cpu->neg;
95
+ return &cpu->neg;
96
}
97
98
/**
99
diff --git a/include/hw/core/cpu.h b/include/hw/core/cpu.h
100
index XXXXXXX..XXXXXXX 100644
101
--- a/include/hw/core/cpu.h
102
+++ b/include/hw/core/cpu.h
103
@@ -XXX,XX +XXX,XX @@ typedef union IcountDecr {
104
} IcountDecr;
105
106
/*
107
- * This structure must be placed in ArchCPU immediately
108
- * before CPUArchState, as a field named "neg".
109
+ * Elements of CPUState most efficiently accessed from CPUArchState,
110
+ * via small negative offsets.
111
*/
112
typedef struct CPUNegativeOffsetState {
113
CPUTLB tlb;
114
@@ -XXX,XX +XXX,XX @@ struct qemu_work_item;
115
* dirty ring structure.
116
*
117
* State of one CPU core or thread.
118
+ *
119
+ * Align, in order to match possible alignment required by CPUArchState,
120
+ * and eliminate a hole between CPUState and CPUArchState within ArchCPU.
121
*/
122
struct CPUState {
123
/*< private >*/
124
@@ -XXX,XX +XXX,XX @@ struct CPUState {
125
126
/* track IOMMUs whose translations we've cached in the TCG TLB */
127
GArray *iommu_notifiers;
128
+
129
+ /*
130
+ * MUST BE LAST in order to minimize the displacement to CPUArchState.
131
+ */
132
+ char neg_align[-sizeof(CPUNegativeOffsetState) % 16] QEMU_ALIGNED(16);
133
+ CPUNegativeOffsetState neg;
134
};
135
136
+/* Validate placement of CPUNegativeOffsetState. */
137
+QEMU_BUILD_BUG_ON(offsetof(CPUState, neg) !=
138
+ sizeof(CPUState) - sizeof(CPUNegativeOffsetState));
139
+
140
typedef QTAILQ_HEAD(CPUTailQ, CPUState) CPUTailQ;
141
extern CPUTailQ cpus;
142
143
diff --git a/target/alpha/cpu.h b/target/alpha/cpu.h
144
index XXXXXXX..XXXXXXX 100644
145
--- a/target/alpha/cpu.h
146
+++ b/target/alpha/cpu.h
147
@@ -XXX,XX +XXX,XX @@ struct ArchCPU {
148
CPUState parent_obj;
149
/*< public >*/
150
151
- CPUNegativeOffsetState neg;
152
CPUAlphaState env;
153
154
/* This alarm doesn't exist in real hardware; we wish it did. */
155
diff --git a/target/arm/cpu.h b/target/arm/cpu.h
156
index XXXXXXX..XXXXXXX 100644
157
--- a/target/arm/cpu.h
158
+++ b/target/arm/cpu.h
159
@@ -XXX,XX +XXX,XX @@ struct ArchCPU {
160
CPUState parent_obj;
161
/*< public >*/
162
163
- CPUNegativeOffsetState neg;
164
CPUARMState env;
165
166
/* Coprocessor information */
167
diff --git a/target/avr/cpu.h b/target/avr/cpu.h
168
index XXXXXXX..XXXXXXX 100644
169
--- a/target/avr/cpu.h
170
+++ b/target/avr/cpu.h
171
@@ -XXX,XX +XXX,XX @@ struct ArchCPU {
172
CPUState parent_obj;
173
/*< public >*/
174
175
- CPUNegativeOffsetState neg;
176
CPUAVRState env;
177
};
178
179
diff --git a/target/cris/cpu.h b/target/cris/cpu.h
180
index XXXXXXX..XXXXXXX 100644
181
--- a/target/cris/cpu.h
182
+++ b/target/cris/cpu.h
183
@@ -XXX,XX +XXX,XX @@ struct ArchCPU {
184
CPUState parent_obj;
185
/*< public >*/
186
187
- CPUNegativeOffsetState neg;
188
CPUCRISState env;
189
};
190
191
diff --git a/target/hexagon/cpu.h b/target/hexagon/cpu.h
192
index XXXXXXX..XXXXXXX 100644
193
--- a/target/hexagon/cpu.h
194
+++ b/target/hexagon/cpu.h
195
@@ -XXX,XX +XXX,XX @@ struct ArchCPU {
196
/*< private >*/
197
CPUState parent_obj;
198
/*< public >*/
199
- CPUNegativeOffsetState neg;
200
+
201
CPUHexagonState env;
202
203
bool lldb_compat;
204
diff --git a/target/hppa/cpu.h b/target/hppa/cpu.h
205
index XXXXXXX..XXXXXXX 100644
206
--- a/target/hppa/cpu.h
207
+++ b/target/hppa/cpu.h
208
@@ -XXX,XX +XXX,XX @@ struct ArchCPU {
209
CPUState parent_obj;
210
/*< public >*/
211
212
- CPUNegativeOffsetState neg;
213
CPUHPPAState env;
214
QEMUTimer *alarm_timer;
215
};
216
diff --git a/target/i386/cpu.h b/target/i386/cpu.h
217
index XXXXXXX..XXXXXXX 100644
218
--- a/target/i386/cpu.h
219
+++ b/target/i386/cpu.h
220
@@ -XXX,XX +XXX,XX @@ struct ArchCPU {
221
CPUState parent_obj;
222
/*< public >*/
223
224
- CPUNegativeOffsetState neg;
225
CPUX86State env;
226
VMChangeStateEntry *vmsentry;
227
228
diff --git a/target/loongarch/cpu.h b/target/loongarch/cpu.h
229
index XXXXXXX..XXXXXXX 100644
230
--- a/target/loongarch/cpu.h
231
+++ b/target/loongarch/cpu.h
232
@@ -XXX,XX +XXX,XX @@ struct ArchCPU {
233
CPUState parent_obj;
234
/*< public >*/
235
236
- CPUNegativeOffsetState neg;
237
CPULoongArchState env;
238
QEMUTimer timer;
239
uint32_t phy_id;
240
diff --git a/target/m68k/cpu.h b/target/m68k/cpu.h
241
index XXXXXXX..XXXXXXX 100644
242
--- a/target/m68k/cpu.h
243
+++ b/target/m68k/cpu.h
244
@@ -XXX,XX +XXX,XX @@ struct ArchCPU {
245
CPUState parent_obj;
246
/*< public >*/
247
248
- CPUNegativeOffsetState neg;
249
CPUM68KState env;
250
};
251
252
diff --git a/target/microblaze/cpu.h b/target/microblaze/cpu.h
253
index XXXXXXX..XXXXXXX 100644
254
--- a/target/microblaze/cpu.h
255
+++ b/target/microblaze/cpu.h
256
@@ -XXX,XX +XXX,XX @@ typedef struct {
257
struct ArchCPU {
258
/*< private >*/
259
CPUState parent_obj;
260
-
261
/*< public >*/
262
+
263
+ CPUMBState env;
264
+
265
bool ns_axi_dp;
266
bool ns_axi_ip;
267
bool ns_axi_dc;
268
bool ns_axi_ic;
269
270
- CPUNegativeOffsetState neg;
271
- CPUMBState env;
272
MicroBlazeCPUConfig cfg;
273
};
274
275
diff --git a/target/mips/cpu.h b/target/mips/cpu.h
276
index XXXXXXX..XXXXXXX 100644
277
--- a/target/mips/cpu.h
278
+++ b/target/mips/cpu.h
279
@@ -XXX,XX +XXX,XX @@ struct ArchCPU {
280
CPUState parent_obj;
281
/*< public >*/
282
283
+ CPUMIPSState env;
284
+
285
Clock *clock;
286
Clock *count_div; /* Divider for CP0_Count clock */
287
- CPUNegativeOffsetState neg;
288
- CPUMIPSState env;
289
};
290
291
292
diff --git a/target/nios2/cpu.h b/target/nios2/cpu.h
293
index XXXXXXX..XXXXXXX 100644
294
--- a/target/nios2/cpu.h
295
+++ b/target/nios2/cpu.h
296
@@ -XXX,XX +XXX,XX @@ struct ArchCPU {
297
CPUState parent_obj;
298
/*< public >*/
299
300
- CPUNegativeOffsetState neg;
301
CPUNios2State env;
302
303
bool diverr_present;
304
diff --git a/target/openrisc/cpu.h b/target/openrisc/cpu.h
305
index XXXXXXX..XXXXXXX 100644
306
--- a/target/openrisc/cpu.h
307
+++ b/target/openrisc/cpu.h
308
@@ -XXX,XX +XXX,XX @@ struct ArchCPU {
309
CPUState parent_obj;
310
/*< public >*/
311
312
- CPUNegativeOffsetState neg;
313
CPUOpenRISCState env;
314
};
315
316
diff --git a/target/ppc/cpu.h b/target/ppc/cpu.h
317
index XXXXXXX..XXXXXXX 100644
318
--- a/target/ppc/cpu.h
319
+++ b/target/ppc/cpu.h
320
@@ -XXX,XX +XXX,XX @@ struct ArchCPU {
321
CPUState parent_obj;
322
/*< public >*/
323
324
- CPUNegativeOffsetState neg;
325
CPUPPCState env;
326
327
int vcpu_id;
328
diff --git a/target/riscv/cpu.h b/target/riscv/cpu.h
329
index XXXXXXX..XXXXXXX 100644
330
--- a/target/riscv/cpu.h
331
+++ b/target/riscv/cpu.h
332
@@ -XXX,XX +XXX,XX @@ struct ArchCPU {
333
/* < private > */
334
CPUState parent_obj;
335
/* < public > */
336
- CPUNegativeOffsetState neg;
337
+
338
CPURISCVState env;
339
340
char *dyn_csr_xml;
341
diff --git a/target/rx/cpu.h b/target/rx/cpu.h
342
index XXXXXXX..XXXXXXX 100644
343
--- a/target/rx/cpu.h
344
+++ b/target/rx/cpu.h
345
@@ -XXX,XX +XXX,XX @@ struct ArchCPU {
346
CPUState parent_obj;
347
/*< public >*/
348
349
- CPUNegativeOffsetState neg;
350
CPURXState env;
351
};
352
353
diff --git a/target/s390x/cpu.h b/target/s390x/cpu.h
354
index XXXXXXX..XXXXXXX 100644
355
--- a/target/s390x/cpu.h
356
+++ b/target/s390x/cpu.h
357
@@ -XXX,XX +XXX,XX @@ struct ArchCPU {
358
CPUState parent_obj;
359
/*< public >*/
360
361
- CPUNegativeOffsetState neg;
362
CPUS390XState env;
363
S390CPUModel *model;
364
/* needed for live migration */
365
diff --git a/target/sh4/cpu.h b/target/sh4/cpu.h
366
index XXXXXXX..XXXXXXX 100644
367
--- a/target/sh4/cpu.h
368
+++ b/target/sh4/cpu.h
369
@@ -XXX,XX +XXX,XX @@ struct ArchCPU {
370
CPUState parent_obj;
371
/*< public >*/
372
373
- CPUNegativeOffsetState neg;
374
CPUSH4State env;
375
};
376
377
diff --git a/target/sparc/cpu.h b/target/sparc/cpu.h
378
index XXXXXXX..XXXXXXX 100644
379
--- a/target/sparc/cpu.h
380
+++ b/target/sparc/cpu.h
381
@@ -XXX,XX +XXX,XX @@ struct ArchCPU {
382
CPUState parent_obj;
383
/*< public >*/
384
385
- CPUNegativeOffsetState neg;
386
CPUSPARCState env;
387
};
388
389
diff --git a/target/tricore/cpu.h b/target/tricore/cpu.h
390
index XXXXXXX..XXXXXXX 100644
391
--- a/target/tricore/cpu.h
392
+++ b/target/tricore/cpu.h
393
@@ -XXX,XX +XXX,XX @@ struct ArchCPU {
394
CPUState parent_obj;
395
/*< public >*/
396
397
- CPUNegativeOffsetState neg;
398
CPUTriCoreState env;
399
};
400
401
diff --git a/target/xtensa/cpu.h b/target/xtensa/cpu.h
402
index XXXXXXX..XXXXXXX 100644
403
--- a/target/xtensa/cpu.h
404
+++ b/target/xtensa/cpu.h
405
@@ -XXX,XX +XXX,XX @@ struct ArchCPU {
406
CPUState parent_obj;
407
/*< public >*/
408
409
- Clock *clock;
410
- CPUNegativeOffsetState neg;
411
CPUXtensaState env;
412
+ Clock *clock;
413
};
414
415
416
diff --git a/accel/tcg/translate-all.c b/accel/tcg/translate-all.c
417
index XXXXXXX..XXXXXXX 100644
418
--- a/accel/tcg/translate-all.c
419
+++ b/accel/tcg/translate-all.c
420
@@ -XXX,XX +XXX,XX @@ TranslationBlock *tb_gen_code(CPUState *cpu,
421
tcg_ctx->page_bits = TARGET_PAGE_BITS;
422
tcg_ctx->page_mask = TARGET_PAGE_MASK;
423
tcg_ctx->tlb_dyn_max_bits = CPU_TLB_DYN_MAX_BITS;
424
- tcg_ctx->tlb_fast_offset =
425
- (int)offsetof(ArchCPU, neg.tlb.f) - (int)offsetof(ArchCPU, env);
426
+ tcg_ctx->tlb_fast_offset = (int)offsetof(ArchCPU, parent_obj.neg.tlb.f)
427
+ - (int)offsetof(ArchCPU, env);
428
#endif
429
tcg_ctx->insn_start_words = TARGET_INSN_START_WORDS;
430
#ifdef TCG_GUEST_DEFAULT_MO
431
diff --git a/accel/tcg/translator.c b/accel/tcg/translator.c
432
index XXXXXXX..XXXXXXX 100644
433
--- a/accel/tcg/translator.c
434
+++ b/accel/tcg/translator.c
435
@@ -XXX,XX +XXX,XX @@ static TCGOp *gen_tb_start(DisasContextBase *db, uint32_t cflags)
436
if ((cflags & CF_USE_ICOUNT) || !(cflags & CF_NOIRQ)) {
437
count = tcg_temp_new_i32();
438
tcg_gen_ld_i32(count, cpu_env,
439
- offsetof(ArchCPU, neg.icount_decr.u32) -
440
- offsetof(ArchCPU, env));
441
+ offsetof(ArchCPU, parent_obj.neg.icount_decr.u32)
442
+ - offsetof(ArchCPU, env));
443
}
444
445
if (cflags & CF_USE_ICOUNT) {
446
@@ -XXX,XX +XXX,XX @@ static TCGOp *gen_tb_start(DisasContextBase *db, uint32_t cflags)
447
448
if (cflags & CF_USE_ICOUNT) {
449
tcg_gen_st16_i32(count, cpu_env,
450
- offsetof(ArchCPU, neg.icount_decr.u16.low) -
451
- offsetof(ArchCPU, env));
452
+ offsetof(ArchCPU, parent_obj.neg.icount_decr.u16.low)
453
+ - offsetof(ArchCPU, env));
454
}
455
456
/*
457
--
458
2.34.1
diff view generated by jsdifflib
New patch
1
We can now access icount_decr directly.
1
2
3
Reviewed-by: Anton Johansson <anjo@rev.ng>
4
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
5
---
6
include/exec/cpu-all.h | 1 -
7
include/hw/core/cpu.h | 2 --
8
hw/core/cpu-common.c | 4 ++--
9
3 files changed, 2 insertions(+), 5 deletions(-)
10
11
diff --git a/include/exec/cpu-all.h b/include/exec/cpu-all.h
12
index XXXXXXX..XXXXXXX 100644
13
--- a/include/exec/cpu-all.h
14
+++ b/include/exec/cpu-all.h
15
@@ -XXX,XX +XXX,XX @@ int cpu_exec(CPUState *cpu);
16
static inline void cpu_set_cpustate_pointers(ArchCPU *cpu)
17
{
18
cpu->parent_obj.env_ptr = &cpu->env;
19
- cpu->parent_obj.icount_decr_ptr = &cpu->parent_obj.neg.icount_decr;
20
}
21
22
/* Validate correct placement of CPUArchState. */
23
diff --git a/include/hw/core/cpu.h b/include/hw/core/cpu.h
24
index XXXXXXX..XXXXXXX 100644
25
--- a/include/hw/core/cpu.h
26
+++ b/include/hw/core/cpu.h
27
@@ -XXX,XX +XXX,XX @@ struct qemu_work_item;
28
* @as: Pointer to the first AddressSpace, for the convenience of targets which
29
* only have a single AddressSpace
30
* @env_ptr: Pointer to subclass-specific CPUArchState field.
31
- * @icount_decr_ptr: Pointer to IcountDecr field within subclass.
32
* @gdb_regs: Additional GDB registers.
33
* @gdb_num_regs: Number of total registers accessible to GDB.
34
* @gdb_num_g_regs: Number of registers in GDB 'g' packets.
35
@@ -XXX,XX +XXX,XX @@ struct CPUState {
36
MemoryRegion *memory;
37
38
CPUArchState *env_ptr;
39
- IcountDecr *icount_decr_ptr;
40
41
CPUJumpCache *tb_jmp_cache;
42
43
diff --git a/hw/core/cpu-common.c b/hw/core/cpu-common.c
44
index XXXXXXX..XXXXXXX 100644
45
--- a/hw/core/cpu-common.c
46
+++ b/hw/core/cpu-common.c
47
@@ -XXX,XX +XXX,XX @@ void cpu_exit(CPUState *cpu)
48
qatomic_set(&cpu->exit_request, 1);
49
/* Ensure cpu_exec will see the exit request after TCG has exited. */
50
smp_wmb();
51
- qatomic_set(&cpu->icount_decr_ptr->u16.high, -1);
52
+ qatomic_set(&cpu->neg.icount_decr.u16.high, -1);
53
}
54
55
static int cpu_common_gdb_read_register(CPUState *cpu, GByteArray *buf, int reg)
56
@@ -XXX,XX +XXX,XX @@ static void cpu_common_reset_hold(Object *obj)
57
cpu->halted = cpu->start_powered_off;
58
cpu->mem_io_pc = 0;
59
cpu->icount_extra = 0;
60
- qatomic_set(&cpu->icount_decr_ptr->u32, 0);
61
+ qatomic_set(&cpu->neg.icount_decr.u32, 0);
62
cpu->can_do_io = 1;
63
cpu->exception_index = -1;
64
cpu->crash_occurred = false;
65
--
66
2.34.1
diff view generated by jsdifflib
New patch
1
1
Minimize the displacement to can_do_io, since it may
2
be touched at the start of each TranslationBlock.
3
It fits into other padding within the substructure.
4
5
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
6
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7
---
8
include/hw/core/cpu.h | 6 ++----
9
accel/dummy-cpus.c | 2 +-
10
accel/hvf/hvf-accel-ops.c | 2 +-
11
accel/kvm/kvm-accel-ops.c | 2 +-
12
accel/tcg/cpu-exec-common.c | 2 +-
13
accel/tcg/cpu-exec.c | 2 +-
14
accel/tcg/cputlb.c | 2 +-
15
accel/tcg/tcg-accel-ops-icount.c | 2 +-
16
accel/tcg/tcg-accel-ops-mttcg.c | 2 +-
17
accel/tcg/tcg-accel-ops-rr.c | 4 ++--
18
accel/tcg/translator.c | 10 ++++++----
19
hw/core/cpu-common.c | 2 +-
20
softmmu/icount.c | 2 +-
21
softmmu/watchpoint.c | 2 +-
22
14 files changed, 21 insertions(+), 21 deletions(-)
23
24
diff --git a/include/hw/core/cpu.h b/include/hw/core/cpu.h
25
index XXXXXXX..XXXXXXX 100644
26
--- a/include/hw/core/cpu.h
27
+++ b/include/hw/core/cpu.h
28
@@ -XXX,XX +XXX,XX @@ typedef union IcountDecr {
29
typedef struct CPUNegativeOffsetState {
30
CPUTLB tlb;
31
IcountDecr icount_decr;
32
+ bool can_do_io;
33
} CPUNegativeOffsetState;
34
35
typedef struct CPUBreakpoint {
36
@@ -XXX,XX +XXX,XX @@ struct qemu_work_item;
37
* @crash_occurred: Indicates the OS reported a crash (panic) for this CPU
38
* @singlestep_enabled: Flags for single-stepping.
39
* @icount_extra: Instructions until next timer event.
40
- * @can_do_io: Nonzero if memory-mapped IO is safe. Deterministic execution
41
- * requires that IO only be performed on the last instruction of a TB
42
- * so that interrupts take effect immediately.
43
+ * @neg.can_do_io: True if memory-mapped IO is allowed.
44
* @cpu_ases: Pointer to array of CPUAddressSpaces (which define the
45
* AddressSpaces this CPU has)
46
* @num_ases: number of CPUAddressSpaces in @cpu_ases
47
@@ -XXX,XX +XXX,XX @@ struct CPUState {
48
int cluster_index;
49
uint32_t tcg_cflags;
50
uint32_t halted;
51
- uint32_t can_do_io;
52
int32_t exception_index;
53
54
AccelCPUState *accel;
55
diff --git a/accel/dummy-cpus.c b/accel/dummy-cpus.c
56
index XXXXXXX..XXXXXXX 100644
57
--- a/accel/dummy-cpus.c
58
+++ b/accel/dummy-cpus.c
59
@@ -XXX,XX +XXX,XX @@ static void *dummy_cpu_thread_fn(void *arg)
60
qemu_mutex_lock_iothread();
61
qemu_thread_get_self(cpu->thread);
62
cpu->thread_id = qemu_get_thread_id();
63
- cpu->can_do_io = 1;
64
+ cpu->neg.can_do_io = true;
65
current_cpu = cpu;
66
67
#ifndef _WIN32
68
diff --git a/accel/hvf/hvf-accel-ops.c b/accel/hvf/hvf-accel-ops.c
69
index XXXXXXX..XXXXXXX 100644
70
--- a/accel/hvf/hvf-accel-ops.c
71
+++ b/accel/hvf/hvf-accel-ops.c
72
@@ -XXX,XX +XXX,XX @@ static void *hvf_cpu_thread_fn(void *arg)
73
qemu_thread_get_self(cpu->thread);
74
75
cpu->thread_id = qemu_get_thread_id();
76
- cpu->can_do_io = 1;
77
+ cpu->neg.can_do_io = true;
78
current_cpu = cpu;
79
80
hvf_init_vcpu(cpu);
81
diff --git a/accel/kvm/kvm-accel-ops.c b/accel/kvm/kvm-accel-ops.c
82
index XXXXXXX..XXXXXXX 100644
83
--- a/accel/kvm/kvm-accel-ops.c
84
+++ b/accel/kvm/kvm-accel-ops.c
85
@@ -XXX,XX +XXX,XX @@ static void *kvm_vcpu_thread_fn(void *arg)
86
qemu_mutex_lock_iothread();
87
qemu_thread_get_self(cpu->thread);
88
cpu->thread_id = qemu_get_thread_id();
89
- cpu->can_do_io = 1;
90
+ cpu->neg.can_do_io = true;
91
current_cpu = cpu;
92
93
r = kvm_init_vcpu(cpu, &error_fatal);
94
diff --git a/accel/tcg/cpu-exec-common.c b/accel/tcg/cpu-exec-common.c
95
index XXXXXXX..XXXXXXX 100644
96
--- a/accel/tcg/cpu-exec-common.c
97
+++ b/accel/tcg/cpu-exec-common.c
98
@@ -XXX,XX +XXX,XX @@ void cpu_loop_exit_noexc(CPUState *cpu)
99
void cpu_loop_exit(CPUState *cpu)
100
{
101
/* Undo the setting in cpu_tb_exec. */
102
- cpu->can_do_io = 1;
103
+ cpu->neg.can_do_io = true;
104
/* Undo any setting in generated code. */
105
qemu_plugin_disable_mem_helpers(cpu);
106
siglongjmp(cpu->jmp_env, 1);
107
diff --git a/accel/tcg/cpu-exec.c b/accel/tcg/cpu-exec.c
108
index XXXXXXX..XXXXXXX 100644
109
--- a/accel/tcg/cpu-exec.c
110
+++ b/accel/tcg/cpu-exec.c
111
@@ -XXX,XX +XXX,XX @@ cpu_tb_exec(CPUState *cpu, TranslationBlock *itb, int *tb_exit)
112
113
qemu_thread_jit_execute();
114
ret = tcg_qemu_tb_exec(env, tb_ptr);
115
- cpu->can_do_io = 1;
116
+ cpu->neg.can_do_io = true;
117
qemu_plugin_disable_mem_helpers(cpu);
118
/*
119
* TODO: Delay swapping back to the read-write region of the TB
120
diff --git a/accel/tcg/cputlb.c b/accel/tcg/cputlb.c
121
index XXXXXXX..XXXXXXX 100644
122
--- a/accel/tcg/cputlb.c
123
+++ b/accel/tcg/cputlb.c
124
@@ -XXX,XX +XXX,XX @@ io_prepare(hwaddr *out_offset, CPUArchState *env, hwaddr xlat,
125
section = iotlb_to_section(cpu, xlat, attrs);
126
mr_offset = (xlat & TARGET_PAGE_MASK) + addr;
127
cpu->mem_io_pc = retaddr;
128
- if (!cpu->can_do_io) {
129
+ if (!cpu->neg.can_do_io) {
130
cpu_io_recompile(cpu, retaddr);
131
}
132
133
diff --git a/accel/tcg/tcg-accel-ops-icount.c b/accel/tcg/tcg-accel-ops-icount.c
134
index XXXXXXX..XXXXXXX 100644
135
--- a/accel/tcg/tcg-accel-ops-icount.c
136
+++ b/accel/tcg/tcg-accel-ops-icount.c
137
@@ -XXX,XX +XXX,XX @@ void icount_handle_interrupt(CPUState *cpu, int mask)
138
139
tcg_handle_interrupt(cpu, mask);
140
if (qemu_cpu_is_self(cpu) &&
141
- !cpu->can_do_io
142
+ !cpu->neg.can_do_io
143
&& (mask & ~old_mask) != 0) {
144
cpu_abort(cpu, "Raised interrupt while not in I/O function");
145
}
146
diff --git a/accel/tcg/tcg-accel-ops-mttcg.c b/accel/tcg/tcg-accel-ops-mttcg.c
147
index XXXXXXX..XXXXXXX 100644
148
--- a/accel/tcg/tcg-accel-ops-mttcg.c
149
+++ b/accel/tcg/tcg-accel-ops-mttcg.c
150
@@ -XXX,XX +XXX,XX @@ static void *mttcg_cpu_thread_fn(void *arg)
151
qemu_thread_get_self(cpu->thread);
152
153
cpu->thread_id = qemu_get_thread_id();
154
- cpu->can_do_io = 1;
155
+ cpu->neg.can_do_io = true;
156
current_cpu = cpu;
157
cpu_thread_signal_created(cpu);
158
qemu_guest_random_seed_thread_part2(cpu->random_seed);
159
diff --git a/accel/tcg/tcg-accel-ops-rr.c b/accel/tcg/tcg-accel-ops-rr.c
160
index XXXXXXX..XXXXXXX 100644
161
--- a/accel/tcg/tcg-accel-ops-rr.c
162
+++ b/accel/tcg/tcg-accel-ops-rr.c
163
@@ -XXX,XX +XXX,XX @@ static void *rr_cpu_thread_fn(void *arg)
164
qemu_thread_get_self(cpu->thread);
165
166
cpu->thread_id = qemu_get_thread_id();
167
- cpu->can_do_io = 1;
168
+ cpu->neg.can_do_io = true;
169
cpu_thread_signal_created(cpu);
170
qemu_guest_random_seed_thread_part2(cpu->random_seed);
171
172
@@ -XXX,XX +XXX,XX @@ void rr_start_vcpu_thread(CPUState *cpu)
173
cpu->thread = single_tcg_cpu_thread;
174
cpu->halt_cond = single_tcg_halt_cond;
175
cpu->thread_id = first_cpu->thread_id;
176
- cpu->can_do_io = 1;
177
+ cpu->neg.can_do_io = 1;
178
cpu->created = true;
179
}
180
}
181
diff --git a/accel/tcg/translator.c b/accel/tcg/translator.c
182
index XXXXXXX..XXXXXXX 100644
183
--- a/accel/tcg/translator.c
184
+++ b/accel/tcg/translator.c
185
@@ -XXX,XX +XXX,XX @@ static void set_can_do_io(DisasContextBase *db, bool val)
186
{
187
if (db->saved_can_do_io != val) {
188
db->saved_can_do_io = val;
189
- tcg_gen_st_i32(tcg_constant_i32(val), cpu_env,
190
- offsetof(ArchCPU, parent_obj.can_do_io) -
191
- offsetof(ArchCPU, env));
192
+
193
+ QEMU_BUILD_BUG_ON(sizeof_field(CPUState, neg.can_do_io) != 1);
194
+ tcg_gen_st8_i32(tcg_constant_i32(val), cpu_env,
195
+ offsetof(ArchCPU, parent_obj.neg.can_do_io) -
196
+ offsetof(ArchCPU, env));
197
}
198
}
199
200
@@ -XXX,XX +XXX,XX @@ static TCGOp *gen_tb_start(DisasContextBase *db, uint32_t cflags)
201
}
202
203
/*
204
- * cpu->can_do_io is set automatically here at the beginning of
205
+ * cpu->neg.can_do_io is set automatically here at the beginning of
206
* each translation block. The cost is minimal, plus it would be
207
* very easy to forget doing it in the translator.
208
*/
209
diff --git a/hw/core/cpu-common.c b/hw/core/cpu-common.c
210
index XXXXXXX..XXXXXXX 100644
211
--- a/hw/core/cpu-common.c
212
+++ b/hw/core/cpu-common.c
213
@@ -XXX,XX +XXX,XX @@ static void cpu_common_reset_hold(Object *obj)
214
cpu->mem_io_pc = 0;
215
cpu->icount_extra = 0;
216
qatomic_set(&cpu->neg.icount_decr.u32, 0);
217
- cpu->can_do_io = 1;
218
+ cpu->neg.can_do_io = true;
219
cpu->exception_index = -1;
220
cpu->crash_occurred = false;
221
cpu->cflags_next_tb = -1;
222
diff --git a/softmmu/icount.c b/softmmu/icount.c
223
index XXXXXXX..XXXXXXX 100644
224
--- a/softmmu/icount.c
225
+++ b/softmmu/icount.c
226
@@ -XXX,XX +XXX,XX @@ static int64_t icount_get_raw_locked(void)
227
CPUState *cpu = current_cpu;
228
229
if (cpu && cpu->running) {
230
- if (!cpu->can_do_io) {
231
+ if (!cpu->neg.can_do_io) {
232
error_report("Bad icount read");
233
exit(1);
234
}
235
diff --git a/softmmu/watchpoint.c b/softmmu/watchpoint.c
236
index XXXXXXX..XXXXXXX 100644
237
--- a/softmmu/watchpoint.c
238
+++ b/softmmu/watchpoint.c
239
@@ -XXX,XX +XXX,XX @@ void cpu_check_watchpoint(CPUState *cpu, vaddr addr, vaddr len,
240
* Force recompile to succeed, because icount may
241
* be read only at the end of the block.
242
*/
243
- if (!cpu->can_do_io) {
244
+ if (!cpu->neg.can_do_io) {
245
/* Force execution of one insn next time. */
246
cpu->cflags_next_tb = 1 | CF_LAST_IO | CF_NOIRQ
247
| curr_cflags(cpu);
248
--
249
2.34.1
250
251
diff view generated by jsdifflib
New patch
1
1
Now that CPUNegativeOffsetState is part of CPUState,
2
we can reference it directly.
3
4
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
5
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6
---
7
include/exec/cpu-all.h | 11 -----------
8
include/exec/exec-all.h | 2 +-
9
accel/tcg/cpu-exec.c | 14 +++++++-------
10
accel/tcg/tcg-accel-ops-icount.c | 6 +++---
11
accel/tcg/tcg-accel-ops.c | 2 +-
12
accel/tcg/translate-all.c | 6 +++---
13
softmmu/icount.c | 2 +-
14
7 files changed, 16 insertions(+), 27 deletions(-)
15
16
diff --git a/include/exec/cpu-all.h b/include/exec/cpu-all.h
17
index XXXXXXX..XXXXXXX 100644
18
--- a/include/exec/cpu-all.h
19
+++ b/include/exec/cpu-all.h
20
@@ -XXX,XX +XXX,XX @@ static inline CPUNegativeOffsetState *env_neg(CPUArchState *env)
21
return &env_cpu(env)->neg;
22
}
23
24
-/**
25
- * cpu_neg(cpu)
26
- * @cpu: The generic CPUState
27
- *
28
- * Return the CPUNegativeOffsetState associated with the cpu.
29
- */
30
-static inline CPUNegativeOffsetState *cpu_neg(CPUState *cpu)
31
-{
32
- return &cpu->neg;
33
-}
34
-
35
/**
36
* env_tlb(env)
37
* @env: The architecture environment
38
diff --git a/include/exec/exec-all.h b/include/exec/exec-all.h
39
index XXXXXXX..XXXXXXX 100644
40
--- a/include/exec/exec-all.h
41
+++ b/include/exec/exec-all.h
42
@@ -XXX,XX +XXX,XX @@ G_NORETURN void cpu_loop_exit_atomic(CPUState *cpu, uintptr_t pc);
43
*/
44
static inline bool cpu_loop_exit_requested(CPUState *cpu)
45
{
46
- return (int32_t)qatomic_read(&cpu_neg(cpu)->icount_decr.u32) < 0;
47
+ return (int32_t)qatomic_read(&cpu->neg.icount_decr.u32) < 0;
48
}
49
50
#if !defined(CONFIG_USER_ONLY) && defined(CONFIG_TCG)
51
diff --git a/accel/tcg/cpu-exec.c b/accel/tcg/cpu-exec.c
52
index XXXXXXX..XXXXXXX 100644
53
--- a/accel/tcg/cpu-exec.c
54
+++ b/accel/tcg/cpu-exec.c
55
@@ -XXX,XX +XXX,XX @@ static void align_clocks(SyncClocks *sc, CPUState *cpu)
56
return;
57
}
58
59
- cpu_icount = cpu->icount_extra + cpu_neg(cpu)->icount_decr.u16.low;
60
+ cpu_icount = cpu->icount_extra + cpu->neg.icount_decr.u16.low;
61
sc->diff_clk += icount_to_ns(sc->last_cpu_icount - cpu_icount);
62
sc->last_cpu_icount = cpu_icount;
63
64
@@ -XXX,XX +XXX,XX @@ static void init_delay_params(SyncClocks *sc, CPUState *cpu)
65
sc->realtime_clock = qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL_RT);
66
sc->diff_clk = qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) - sc->realtime_clock;
67
sc->last_cpu_icount
68
- = cpu->icount_extra + cpu_neg(cpu)->icount_decr.u16.low;
69
+ = cpu->icount_extra + cpu->neg.icount_decr.u16.low;
70
if (sc->diff_clk < max_delay) {
71
max_delay = sc->diff_clk;
72
}
73
@@ -XXX,XX +XXX,XX @@ static inline bool cpu_handle_exception(CPUState *cpu, int *ret)
74
if (cpu->exception_index < 0) {
75
#ifndef CONFIG_USER_ONLY
76
if (replay_has_exception()
77
- && cpu_neg(cpu)->icount_decr.u16.low + cpu->icount_extra == 0) {
78
+ && cpu->neg.icount_decr.u16.low + cpu->icount_extra == 0) {
79
/* Execute just one insn to trigger exception pending in the log */
80
cpu->cflags_next_tb = (curr_cflags(cpu) & ~CF_USE_ICOUNT)
81
| CF_LAST_IO | CF_NOIRQ | 1;
82
@@ -XXX,XX +XXX,XX @@ static inline bool cpu_handle_interrupt(CPUState *cpu,
83
* Ensure zeroing happens before reading cpu->exit_request or
84
* cpu->interrupt_request (see also smp_wmb in cpu_exit())
85
*/
86
- qatomic_set_mb(&cpu_neg(cpu)->icount_decr.u16.high, 0);
87
+ qatomic_set_mb(&cpu->neg.icount_decr.u16.high, 0);
88
89
if (unlikely(qatomic_read(&cpu->interrupt_request))) {
90
int interrupt_request;
91
@@ -XXX,XX +XXX,XX @@ static inline bool cpu_handle_interrupt(CPUState *cpu,
92
if (unlikely(qatomic_read(&cpu->exit_request))
93
|| (icount_enabled()
94
&& (cpu->cflags_next_tb == -1 || cpu->cflags_next_tb & CF_USE_ICOUNT)
95
- && cpu_neg(cpu)->icount_decr.u16.low + cpu->icount_extra == 0)) {
96
+ && cpu->neg.icount_decr.u16.low + cpu->icount_extra == 0)) {
97
qatomic_set(&cpu->exit_request, 0);
98
if (cpu->exception_index == -1) {
99
cpu->exception_index = EXCP_INTERRUPT;
100
@@ -XXX,XX +XXX,XX @@ static inline void cpu_loop_exec_tb(CPUState *cpu, TranslationBlock *tb,
101
}
102
103
*last_tb = NULL;
104
- insns_left = qatomic_read(&cpu_neg(cpu)->icount_decr.u32);
105
+ insns_left = qatomic_read(&cpu->neg.icount_decr.u32);
106
if (insns_left < 0) {
107
/* Something asked us to stop executing chained TBs; just
108
* continue round the main loop. Whatever requested the exit
109
@@ -XXX,XX +XXX,XX @@ static inline void cpu_loop_exec_tb(CPUState *cpu, TranslationBlock *tb,
110
icount_update(cpu);
111
/* Refill decrementer and continue execution. */
112
insns_left = MIN(0xffff, cpu->icount_budget);
113
- cpu_neg(cpu)->icount_decr.u16.low = insns_left;
114
+ cpu->neg.icount_decr.u16.low = insns_left;
115
cpu->icount_extra = cpu->icount_budget - insns_left;
116
117
/*
118
diff --git a/accel/tcg/tcg-accel-ops-icount.c b/accel/tcg/tcg-accel-ops-icount.c
119
index XXXXXXX..XXXXXXX 100644
120
--- a/accel/tcg/tcg-accel-ops-icount.c
121
+++ b/accel/tcg/tcg-accel-ops-icount.c
122
@@ -XXX,XX +XXX,XX @@ void icount_prepare_for_run(CPUState *cpu, int64_t cpu_budget)
123
* each vCPU execution. However u16.high can be raised
124
* asynchronously by cpu_exit/cpu_interrupt/tcg_handle_interrupt
125
*/
126
- g_assert(cpu_neg(cpu)->icount_decr.u16.low == 0);
127
+ g_assert(cpu->neg.icount_decr.u16.low == 0);
128
g_assert(cpu->icount_extra == 0);
129
130
replay_mutex_lock();
131
132
cpu->icount_budget = MIN(icount_get_limit(), cpu_budget);
133
insns_left = MIN(0xffff, cpu->icount_budget);
134
- cpu_neg(cpu)->icount_decr.u16.low = insns_left;
135
+ cpu->neg.icount_decr.u16.low = insns_left;
136
cpu->icount_extra = cpu->icount_budget - insns_left;
137
138
if (cpu->icount_budget == 0) {
139
@@ -XXX,XX +XXX,XX @@ void icount_process_data(CPUState *cpu)
140
icount_update(cpu);
141
142
/* Reset the counters */
143
- cpu_neg(cpu)->icount_decr.u16.low = 0;
144
+ cpu->neg.icount_decr.u16.low = 0;
145
cpu->icount_extra = 0;
146
cpu->icount_budget = 0;
147
148
diff --git a/accel/tcg/tcg-accel-ops.c b/accel/tcg/tcg-accel-ops.c
149
index XXXXXXX..XXXXXXX 100644
150
--- a/accel/tcg/tcg-accel-ops.c
151
+++ b/accel/tcg/tcg-accel-ops.c
152
@@ -XXX,XX +XXX,XX @@ void tcg_handle_interrupt(CPUState *cpu, int mask)
153
if (!qemu_cpu_is_self(cpu)) {
154
qemu_cpu_kick(cpu);
155
} else {
156
- qatomic_set(&cpu_neg(cpu)->icount_decr.u16.high, -1);
157
+ qatomic_set(&cpu->neg.icount_decr.u16.high, -1);
158
}
159
}
160
161
diff --git a/accel/tcg/translate-all.c b/accel/tcg/translate-all.c
162
index XXXXXXX..XXXXXXX 100644
163
--- a/accel/tcg/translate-all.c
164
+++ b/accel/tcg/translate-all.c
165
@@ -XXX,XX +XXX,XX @@ void cpu_restore_state_from_tb(CPUState *cpu, TranslationBlock *tb,
166
* Reset the cycle counter to the start of the block and
167
* shift if to the number of actually executed instructions.
168
*/
169
- cpu_neg(cpu)->icount_decr.u16.low += insns_left;
170
+ cpu->neg.icount_decr.u16.low += insns_left;
171
}
172
173
cpu->cc->tcg_ops->restore_state_to_opc(cpu, tb, data);
174
@@ -XXX,XX +XXX,XX @@ void cpu_io_recompile(CPUState *cpu, uintptr_t retaddr)
175
cc = CPU_GET_CLASS(cpu);
176
if (cc->tcg_ops->io_recompile_replay_branch &&
177
cc->tcg_ops->io_recompile_replay_branch(cpu, tb)) {
178
- cpu_neg(cpu)->icount_decr.u16.low++;
179
+ cpu->neg.icount_decr.u16.low++;
180
n = 2;
181
}
182
183
@@ -XXX,XX +XXX,XX @@ void cpu_interrupt(CPUState *cpu, int mask)
184
{
185
g_assert(qemu_mutex_iothread_locked());
186
cpu->interrupt_request |= mask;
187
- qatomic_set(&cpu_neg(cpu)->icount_decr.u16.high, -1);
188
+ qatomic_set(&cpu->neg.icount_decr.u16.high, -1);
189
}
190
191
#endif /* CONFIG_USER_ONLY */
192
diff --git a/softmmu/icount.c b/softmmu/icount.c
193
index XXXXXXX..XXXXXXX 100644
194
--- a/softmmu/icount.c
195
+++ b/softmmu/icount.c
196
@@ -XXX,XX +XXX,XX @@ static void icount_enable_adaptive(void)
197
static int64_t icount_get_executed(CPUState *cpu)
198
{
199
return (cpu->icount_budget -
200
- (cpu_neg(cpu)->icount_decr.u16.low + cpu->icount_extra));
201
+ (cpu->neg.icount_decr.u16.low + cpu->icount_extra));
202
}
203
204
/*
205
--
206
2.34.1
207
208
diff view generated by jsdifflib
New patch
1
Allow the name 'cpu_env' to be used for something else.
1
2
3
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
4
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
5
---
6
include/tcg/tcg.h | 2 +-
7
target/arm/tcg/translate-a32.h | 2 +-
8
target/arm/tcg/translate-a64.h | 4 +-
9
target/arm/tcg/translate.h | 16 +-
10
target/hexagon/gen_tcg.h | 120 +-
11
target/hexagon/gen_tcg_hvx.h | 20 +-
12
target/hexagon/macros.h | 8 +-
13
target/mips/tcg/translate.h | 6 +-
14
accel/tcg/plugin-gen.c | 8 +-
15
accel/tcg/translator.c | 6 +-
16
target/alpha/translate.c | 142 +-
17
target/arm/tcg/translate-a64.c | 378 ++---
18
target/arm/tcg/translate-m-nocp.c | 24 +-
19
target/arm/tcg/translate-mve.c | 52 +-
20
target/arm/tcg/translate-neon.c | 78 +-
21
target/arm/tcg/translate-sme.c | 8 +-
22
target/arm/tcg/translate-sve.c | 172 +--
23
target/arm/tcg/translate-vfp.c | 56 +-
24
target/arm/tcg/translate.c | 228 +--
25
target/avr/translate.c | 64 +-
26
target/cris/translate.c | 68 +-
27
target/hexagon/genptr.c | 36 +-
28
target/hexagon/idef-parser/parser-helpers.c | 2 +-
29
target/hexagon/translate.c | 48 +-
30
target/hppa/translate.c | 157 +-
31
target/i386/tcg/translate.c | 580 ++++----
32
target/loongarch/translate.c | 18 +-
33
target/m68k/translate.c | 302 ++--
34
target/microblaze/translate.c | 50 +-
35
target/mips/tcg/lcsr_translate.c | 6 +-
36
target/mips/tcg/msa_translate.c | 34 +-
37
target/mips/tcg/mxu_translate.c | 4 +-
38
target/mips/tcg/translate.c | 1284 ++++++++---------
39
target/mips/tcg/vr54xx_translate.c | 2 +-
40
target/nios2/translate.c | 48 +-
41
target/openrisc/translate.c | 84 +-
42
target/ppc/translate.c | 362 ++---
43
target/riscv/translate.c | 50 +-
44
target/rx/translate.c | 56 +-
45
target/s390x/tcg/translate.c | 424 +++---
46
target/sh4/translate.c | 124 +-
47
target/sparc/translate.c | 328 ++---
48
target/tricore/translate.c | 226 +--
49
target/xtensa/translate.c | 188 +--
50
tcg/tcg-op-gvec.c | 300 ++--
51
tcg/tcg-op-ldst.c | 22 +-
52
tcg/tcg-op.c | 2 +-
53
tcg/tcg.c | 4 +-
54
target/cris/translate_v10.c.inc | 28 +-
55
target/i386/tcg/decode-new.c.inc | 2 +-
56
target/i386/tcg/emit.c.inc | 262 ++--
57
.../loongarch/insn_trans/trans_atomic.c.inc | 4 +-
58
.../loongarch/insn_trans/trans_branch.c.inc | 2 +-
59
target/loongarch/insn_trans/trans_extra.c.inc | 10 +-
60
.../loongarch/insn_trans/trans_farith.c.inc | 6 +-
61
target/loongarch/insn_trans/trans_fcmp.c.inc | 8 +-
62
.../loongarch/insn_trans/trans_fmemory.c.inc | 8 +-
63
target/loongarch/insn_trans/trans_fmov.c.inc | 20 +-
64
.../loongarch/insn_trans/trans_memory.c.inc | 8 +-
65
.../insn_trans/trans_privileged.c.inc | 52 +-
66
target/loongarch/insn_trans/trans_vec.c.inc | 24 +-
67
target/mips/tcg/micromips_translate.c.inc | 12 +-
68
target/mips/tcg/nanomips_translate.c.inc | 200 +--
69
target/ppc/power8-pmu-regs.c.inc | 8 +-
70
target/ppc/translate/branch-impl.c.inc | 2 +-
71
target/ppc/translate/dfp-impl.c.inc | 22 +-
72
target/ppc/translate/fixedpoint-impl.c.inc | 2 +-
73
target/ppc/translate/fp-impl.c.inc | 50 +-
74
.../ppc/translate/processor-ctrl-impl.c.inc | 8 +-
75
target/ppc/translate/spe-impl.c.inc | 30 +-
76
target/ppc/translate/storage-ctrl-impl.c.inc | 26 +-
77
target/ppc/translate/vmx-impl.c.inc | 34 +-
78
target/ppc/translate/vsx-impl.c.inc | 54 +-
79
.../riscv/insn_trans/trans_privileged.c.inc | 8 +-
80
target/riscv/insn_trans/trans_rvbf16.c.inc | 10 +-
81
target/riscv/insn_trans/trans_rvd.c.inc | 48 +-
82
target/riscv/insn_trans/trans_rvf.c.inc | 46 +-
83
target/riscv/insn_trans/trans_rvh.c.inc | 8 +-
84
target/riscv/insn_trans/trans_rvi.c.inc | 16 +-
85
target/riscv/insn_trans/trans_rvm.c.inc | 16 +-
86
target/riscv/insn_trans/trans_rvv.c.inc | 130 +-
87
target/riscv/insn_trans/trans_rvvk.c.inc | 30 +-
88
target/riscv/insn_trans/trans_rvzce.c.inc | 2 +-
89
target/riscv/insn_trans/trans_rvzfa.c.inc | 38 +-
90
target/riscv/insn_trans/trans_rvzfh.c.inc | 54 +-
91
target/riscv/insn_trans/trans_rvzicbo.c.inc | 8 +-
92
target/riscv/insn_trans/trans_svinval.c.inc | 6 +-
93
target/riscv/insn_trans/trans_xthead.c.inc | 2 +-
94
target/s390x/tcg/translate_vx.c.inc | 104 +-
95
target/hexagon/README | 10 +-
96
target/hexagon/gen_tcg_funcs.py | 16 +-
97
91 files changed, 3818 insertions(+), 3819 deletions(-)
98
99
diff --git a/include/tcg/tcg.h b/include/tcg/tcg.h
100
index XXXXXXX..XXXXXXX 100644
101
--- a/include/tcg/tcg.h
102
+++ b/include/tcg/tcg.h
103
@@ -XXX,XX +XXX,XX @@ static inline bool temp_readonly(TCGTemp *ts)
104
extern __thread TCGContext *tcg_ctx;
105
extern const void *tcg_code_gen_epilogue;
106
extern uintptr_t tcg_splitwx_diff;
107
-extern TCGv_env cpu_env;
108
+extern TCGv_env tcg_env;
109
110
bool in_code_gen_buffer(const void *p);
111
112
diff --git a/target/arm/tcg/translate-a32.h b/target/arm/tcg/translate-a32.h
113
index XXXXXXX..XXXXXXX 100644
114
--- a/target/arm/tcg/translate-a32.h
115
+++ b/target/arm/tcg/translate-a32.h
116
@@ -XXX,XX +XXX,XX @@ bool mve_skip_vmov(DisasContext *s, int vn, int index, int size);
117
static inline TCGv_i32 load_cpu_offset(int offset)
118
{
119
TCGv_i32 tmp = tcg_temp_new_i32();
120
- tcg_gen_ld_i32(tmp, cpu_env, offset);
121
+ tcg_gen_ld_i32(tmp, tcg_env, offset);
122
return tmp;
123
}
124
125
diff --git a/target/arm/tcg/translate-a64.h b/target/arm/tcg/translate-a64.h
126
index XXXXXXX..XXXXXXX 100644
127
--- a/target/arm/tcg/translate-a64.h
128
+++ b/target/arm/tcg/translate-a64.h
129
@@ -XXX,XX +XXX,XX @@ static inline int vec_full_reg_offset(DisasContext *s, int regno)
130
static inline TCGv_ptr vec_full_reg_ptr(DisasContext *s, int regno)
131
{
132
TCGv_ptr ret = tcg_temp_new_ptr();
133
- tcg_gen_addi_ptr(ret, cpu_env, vec_full_reg_offset(s, regno));
134
+ tcg_gen_addi_ptr(ret, tcg_env, vec_full_reg_offset(s, regno));
135
return ret;
136
}
137
138
@@ -XXX,XX +XXX,XX @@ static inline int pred_gvec_reg_size(DisasContext *s)
139
static inline TCGv_ptr pred_full_reg_ptr(DisasContext *s, int regno)
140
{
141
TCGv_ptr ret = tcg_temp_new_ptr();
142
- tcg_gen_addi_ptr(ret, cpu_env, pred_full_reg_offset(s, regno));
143
+ tcg_gen_addi_ptr(ret, tcg_env, pred_full_reg_offset(s, regno));
144
return ret;
145
}
146
147
diff --git a/target/arm/tcg/translate.h b/target/arm/tcg/translate.h
148
index XXXXXXX..XXXXXXX 100644
149
--- a/target/arm/tcg/translate.h
150
+++ b/target/arm/tcg/translate.h
151
@@ -XXX,XX +XXX,XX @@ static inline TCGv_i32 get_ahp_flag(void)
152
{
153
TCGv_i32 ret = tcg_temp_new_i32();
154
155
- tcg_gen_ld_i32(ret, cpu_env,
156
+ tcg_gen_ld_i32(ret, tcg_env,
157
offsetof(CPUARMState, vfp.xregs[ARM_VFP_FPSCR]));
158
tcg_gen_extract_i32(ret, ret, 26, 1);
159
160
@@ -XXX,XX +XXX,XX @@ static inline void set_pstate_bits(uint32_t bits)
161
162
tcg_debug_assert(!(bits & CACHED_PSTATE_BITS));
163
164
- tcg_gen_ld_i32(p, cpu_env, offsetof(CPUARMState, pstate));
165
+ tcg_gen_ld_i32(p, tcg_env, offsetof(CPUARMState, pstate));
166
tcg_gen_ori_i32(p, p, bits);
167
- tcg_gen_st_i32(p, cpu_env, offsetof(CPUARMState, pstate));
168
+ tcg_gen_st_i32(p, tcg_env, offsetof(CPUARMState, pstate));
169
}
170
171
/* Clear bits within PSTATE. */
172
@@ -XXX,XX +XXX,XX @@ static inline void clear_pstate_bits(uint32_t bits)
173
174
tcg_debug_assert(!(bits & CACHED_PSTATE_BITS));
175
176
- tcg_gen_ld_i32(p, cpu_env, offsetof(CPUARMState, pstate));
177
+ tcg_gen_ld_i32(p, tcg_env, offsetof(CPUARMState, pstate));
178
tcg_gen_andi_i32(p, p, ~bits);
179
- tcg_gen_st_i32(p, cpu_env, offsetof(CPUARMState, pstate));
180
+ tcg_gen_st_i32(p, tcg_env, offsetof(CPUARMState, pstate));
181
}
182
183
/* If the singlestep state is Active-not-pending, advance to Active-pending. */
184
@@ -XXX,XX +XXX,XX @@ static inline void gen_swstep_exception(DisasContext *s, int isv, int ex)
185
{
186
/* Fill in the same_el field of the syndrome in the helper. */
187
uint32_t syn = syn_swstep(false, isv, ex);
188
- gen_helper_exception_swstep(cpu_env, tcg_constant_i32(syn));
189
+ gen_helper_exception_swstep(tcg_env, tcg_constant_i32(syn));
190
}
191
192
/*
193
@@ -XXX,XX +XXX,XX @@ static inline TCGv_ptr fpstatus_ptr(ARMFPStatusFlavour flavour)
194
default:
195
g_assert_not_reached();
196
}
197
- tcg_gen_addi_ptr(statusptr, cpu_env, offset);
198
+ tcg_gen_addi_ptr(statusptr, tcg_env, offset);
199
return statusptr;
200
}
201
202
@@ -XXX,XX +XXX,XX @@ static inline void set_disas_label(DisasContext *s, DisasLabel l)
203
static inline TCGv_ptr gen_lookup_cp_reg(uint32_t key)
204
{
205
TCGv_ptr ret = tcg_temp_new_ptr();
206
- gen_helper_lookup_cp_reg(ret, cpu_env, tcg_constant_i32(key));
207
+ gen_helper_lookup_cp_reg(ret, tcg_env, tcg_constant_i32(key));
208
return ret;
209
}
210
211
diff --git a/target/hexagon/gen_tcg.h b/target/hexagon/gen_tcg.h
212
index XXXXXXX..XXXXXXX 100644
213
--- a/target/hexagon/gen_tcg.h
214
+++ b/target/hexagon/gen_tcg.h
215
@@ -XXX,XX +XXX,XX @@
216
*/
217
#define fGEN_TCG_A5_ACS(SHORTCODE) \
218
do { \
219
- gen_helper_vacsh_pred(PeV, cpu_env, RxxV, RssV, RttV); \
220
- gen_helper_vacsh_val(RxxV, cpu_env, RxxV, RssV, RttV, \
221
+ gen_helper_vacsh_pred(PeV, tcg_env, RxxV, RssV, RttV); \
222
+ gen_helper_vacsh_val(RxxV, tcg_env, RxxV, RssV, RttV, \
223
tcg_constant_tl(ctx->need_commit)); \
224
} while (0)
225
226
@@ -XXX,XX +XXX,XX @@
227
#define fGEN_TCG_F2_sfrecipa(SHORTCODE) \
228
do { \
229
TCGv_i64 tmp = tcg_temp_new_i64(); \
230
- gen_helper_sfrecipa(tmp, cpu_env, RsV, RtV); \
231
+ gen_helper_sfrecipa(tmp, tcg_env, RsV, RtV); \
232
tcg_gen_extrh_i64_i32(RdV, tmp); \
233
tcg_gen_extrl_i64_i32(PeV, tmp); \
234
} while (0)
235
@@ -XXX,XX +XXX,XX @@
236
#define fGEN_TCG_F2_sfinvsqrta(SHORTCODE) \
237
do { \
238
TCGv_i64 tmp = tcg_temp_new_i64(); \
239
- gen_helper_sfinvsqrta(tmp, cpu_env, RsV); \
240
+ gen_helper_sfinvsqrta(tmp, tcg_env, RsV); \
241
tcg_gen_extrh_i64_i32(RdV, tmp); \
242
tcg_gen_extrl_i64_i32(PeV, tmp); \
243
} while (0)
244
@@ -XXX,XX +XXX,XX @@
245
246
/* Floating point */
247
#define fGEN_TCG_F2_conv_sf2df(SHORTCODE) \
248
- gen_helper_conv_sf2df(RddV, cpu_env, RsV)
249
+ gen_helper_conv_sf2df(RddV, tcg_env, RsV)
250
#define fGEN_TCG_F2_conv_df2sf(SHORTCODE) \
251
- gen_helper_conv_df2sf(RdV, cpu_env, RssV)
252
+ gen_helper_conv_df2sf(RdV, tcg_env, RssV)
253
#define fGEN_TCG_F2_conv_uw2sf(SHORTCODE) \
254
- gen_helper_conv_uw2sf(RdV, cpu_env, RsV)
255
+ gen_helper_conv_uw2sf(RdV, tcg_env, RsV)
256
#define fGEN_TCG_F2_conv_uw2df(SHORTCODE) \
257
- gen_helper_conv_uw2df(RddV, cpu_env, RsV)
258
+ gen_helper_conv_uw2df(RddV, tcg_env, RsV)
259
#define fGEN_TCG_F2_conv_w2sf(SHORTCODE) \
260
- gen_helper_conv_w2sf(RdV, cpu_env, RsV)
261
+ gen_helper_conv_w2sf(RdV, tcg_env, RsV)
262
#define fGEN_TCG_F2_conv_w2df(SHORTCODE) \
263
- gen_helper_conv_w2df(RddV, cpu_env, RsV)
264
+ gen_helper_conv_w2df(RddV, tcg_env, RsV)
265
#define fGEN_TCG_F2_conv_ud2sf(SHORTCODE) \
266
- gen_helper_conv_ud2sf(RdV, cpu_env, RssV)
267
+ gen_helper_conv_ud2sf(RdV, tcg_env, RssV)
268
#define fGEN_TCG_F2_conv_ud2df(SHORTCODE) \
269
- gen_helper_conv_ud2df(RddV, cpu_env, RssV)
270
+ gen_helper_conv_ud2df(RddV, tcg_env, RssV)
271
#define fGEN_TCG_F2_conv_d2sf(SHORTCODE) \
272
- gen_helper_conv_d2sf(RdV, cpu_env, RssV)
273
+ gen_helper_conv_d2sf(RdV, tcg_env, RssV)
274
#define fGEN_TCG_F2_conv_d2df(SHORTCODE) \
275
- gen_helper_conv_d2df(RddV, cpu_env, RssV)
276
+ gen_helper_conv_d2df(RddV, tcg_env, RssV)
277
#define fGEN_TCG_F2_conv_sf2uw(SHORTCODE) \
278
- gen_helper_conv_sf2uw(RdV, cpu_env, RsV)
279
+ gen_helper_conv_sf2uw(RdV, tcg_env, RsV)
280
#define fGEN_TCG_F2_conv_sf2w(SHORTCODE) \
281
- gen_helper_conv_sf2w(RdV, cpu_env, RsV)
282
+ gen_helper_conv_sf2w(RdV, tcg_env, RsV)
283
#define fGEN_TCG_F2_conv_sf2ud(SHORTCODE) \
284
- gen_helper_conv_sf2ud(RddV, cpu_env, RsV)
285
+ gen_helper_conv_sf2ud(RddV, tcg_env, RsV)
286
#define fGEN_TCG_F2_conv_sf2d(SHORTCODE) \
287
- gen_helper_conv_sf2d(RddV, cpu_env, RsV)
288
+ gen_helper_conv_sf2d(RddV, tcg_env, RsV)
289
#define fGEN_TCG_F2_conv_df2uw(SHORTCODE) \
290
- gen_helper_conv_df2uw(RdV, cpu_env, RssV)
291
+ gen_helper_conv_df2uw(RdV, tcg_env, RssV)
292
#define fGEN_TCG_F2_conv_df2w(SHORTCODE) \
293
- gen_helper_conv_df2w(RdV, cpu_env, RssV)
294
+ gen_helper_conv_df2w(RdV, tcg_env, RssV)
295
#define fGEN_TCG_F2_conv_df2ud(SHORTCODE) \
296
- gen_helper_conv_df2ud(RddV, cpu_env, RssV)
297
+ gen_helper_conv_df2ud(RddV, tcg_env, RssV)
298
#define fGEN_TCG_F2_conv_df2d(SHORTCODE) \
299
- gen_helper_conv_df2d(RddV, cpu_env, RssV)
300
+ gen_helper_conv_df2d(RddV, tcg_env, RssV)
301
#define fGEN_TCG_F2_conv_sf2uw_chop(SHORTCODE) \
302
- gen_helper_conv_sf2uw_chop(RdV, cpu_env, RsV)
303
+ gen_helper_conv_sf2uw_chop(RdV, tcg_env, RsV)
304
#define fGEN_TCG_F2_conv_sf2w_chop(SHORTCODE) \
305
- gen_helper_conv_sf2w_chop(RdV, cpu_env, RsV)
306
+ gen_helper_conv_sf2w_chop(RdV, tcg_env, RsV)
307
#define fGEN_TCG_F2_conv_sf2ud_chop(SHORTCODE) \
308
- gen_helper_conv_sf2ud_chop(RddV, cpu_env, RsV)
309
+ gen_helper_conv_sf2ud_chop(RddV, tcg_env, RsV)
310
#define fGEN_TCG_F2_conv_sf2d_chop(SHORTCODE) \
311
- gen_helper_conv_sf2d_chop(RddV, cpu_env, RsV)
312
+ gen_helper_conv_sf2d_chop(RddV, tcg_env, RsV)
313
#define fGEN_TCG_F2_conv_df2uw_chop(SHORTCODE) \
314
- gen_helper_conv_df2uw_chop(RdV, cpu_env, RssV)
315
+ gen_helper_conv_df2uw_chop(RdV, tcg_env, RssV)
316
#define fGEN_TCG_F2_conv_df2w_chop(SHORTCODE) \
317
- gen_helper_conv_df2w_chop(RdV, cpu_env, RssV)
318
+ gen_helper_conv_df2w_chop(RdV, tcg_env, RssV)
319
#define fGEN_TCG_F2_conv_df2ud_chop(SHORTCODE) \
320
- gen_helper_conv_df2ud_chop(RddV, cpu_env, RssV)
321
+ gen_helper_conv_df2ud_chop(RddV, tcg_env, RssV)
322
#define fGEN_TCG_F2_conv_df2d_chop(SHORTCODE) \
323
- gen_helper_conv_df2d_chop(RddV, cpu_env, RssV)
324
+ gen_helper_conv_df2d_chop(RddV, tcg_env, RssV)
325
#define fGEN_TCG_F2_sfadd(SHORTCODE) \
326
- gen_helper_sfadd(RdV, cpu_env, RsV, RtV)
327
+ gen_helper_sfadd(RdV, tcg_env, RsV, RtV)
328
#define fGEN_TCG_F2_sfsub(SHORTCODE) \
329
- gen_helper_sfsub(RdV, cpu_env, RsV, RtV)
330
+ gen_helper_sfsub(RdV, tcg_env, RsV, RtV)
331
#define fGEN_TCG_F2_sfcmpeq(SHORTCODE) \
332
- gen_helper_sfcmpeq(PdV, cpu_env, RsV, RtV)
333
+ gen_helper_sfcmpeq(PdV, tcg_env, RsV, RtV)
334
#define fGEN_TCG_F2_sfcmpgt(SHORTCODE) \
335
- gen_helper_sfcmpgt(PdV, cpu_env, RsV, RtV)
336
+ gen_helper_sfcmpgt(PdV, tcg_env, RsV, RtV)
337
#define fGEN_TCG_F2_sfcmpge(SHORTCODE) \
338
- gen_helper_sfcmpge(PdV, cpu_env, RsV, RtV)
339
+ gen_helper_sfcmpge(PdV, tcg_env, RsV, RtV)
340
#define fGEN_TCG_F2_sfcmpuo(SHORTCODE) \
341
- gen_helper_sfcmpuo(PdV, cpu_env, RsV, RtV)
342
+ gen_helper_sfcmpuo(PdV, tcg_env, RsV, RtV)
343
#define fGEN_TCG_F2_sfmax(SHORTCODE) \
344
- gen_helper_sfmax(RdV, cpu_env, RsV, RtV)
345
+ gen_helper_sfmax(RdV, tcg_env, RsV, RtV)
346
#define fGEN_TCG_F2_sfmin(SHORTCODE) \
347
- gen_helper_sfmin(RdV, cpu_env, RsV, RtV)
348
+ gen_helper_sfmin(RdV, tcg_env, RsV, RtV)
349
#define fGEN_TCG_F2_sfclass(SHORTCODE) \
350
do { \
351
TCGv imm = tcg_constant_tl(uiV); \
352
- gen_helper_sfclass(PdV, cpu_env, RsV, imm); \
353
+ gen_helper_sfclass(PdV, tcg_env, RsV, imm); \
354
} while (0)
355
#define fGEN_TCG_F2_sffixupn(SHORTCODE) \
356
- gen_helper_sffixupn(RdV, cpu_env, RsV, RtV)
357
+ gen_helper_sffixupn(RdV, tcg_env, RsV, RtV)
358
#define fGEN_TCG_F2_sffixupd(SHORTCODE) \
359
- gen_helper_sffixupd(RdV, cpu_env, RsV, RtV)
360
+ gen_helper_sffixupd(RdV, tcg_env, RsV, RtV)
361
#define fGEN_TCG_F2_sffixupr(SHORTCODE) \
362
- gen_helper_sffixupr(RdV, cpu_env, RsV)
363
+ gen_helper_sffixupr(RdV, tcg_env, RsV)
364
#define fGEN_TCG_F2_dfadd(SHORTCODE) \
365
- gen_helper_dfadd(RddV, cpu_env, RssV, RttV)
366
+ gen_helper_dfadd(RddV, tcg_env, RssV, RttV)
367
#define fGEN_TCG_F2_dfsub(SHORTCODE) \
368
- gen_helper_dfsub(RddV, cpu_env, RssV, RttV)
369
+ gen_helper_dfsub(RddV, tcg_env, RssV, RttV)
370
#define fGEN_TCG_F2_dfmax(SHORTCODE) \
371
- gen_helper_dfmax(RddV, cpu_env, RssV, RttV)
372
+ gen_helper_dfmax(RddV, tcg_env, RssV, RttV)
373
#define fGEN_TCG_F2_dfmin(SHORTCODE) \
374
- gen_helper_dfmin(RddV, cpu_env, RssV, RttV)
375
+ gen_helper_dfmin(RddV, tcg_env, RssV, RttV)
376
#define fGEN_TCG_F2_dfcmpeq(SHORTCODE) \
377
- gen_helper_dfcmpeq(PdV, cpu_env, RssV, RttV)
378
+ gen_helper_dfcmpeq(PdV, tcg_env, RssV, RttV)
379
#define fGEN_TCG_F2_dfcmpgt(SHORTCODE) \
380
- gen_helper_dfcmpgt(PdV, cpu_env, RssV, RttV)
381
+ gen_helper_dfcmpgt(PdV, tcg_env, RssV, RttV)
382
#define fGEN_TCG_F2_dfcmpge(SHORTCODE) \
383
- gen_helper_dfcmpge(PdV, cpu_env, RssV, RttV)
384
+ gen_helper_dfcmpge(PdV, tcg_env, RssV, RttV)
385
#define fGEN_TCG_F2_dfcmpuo(SHORTCODE) \
386
- gen_helper_dfcmpuo(PdV, cpu_env, RssV, RttV)
387
+ gen_helper_dfcmpuo(PdV, tcg_env, RssV, RttV)
388
#define fGEN_TCG_F2_dfclass(SHORTCODE) \
389
do { \
390
TCGv imm = tcg_constant_tl(uiV); \
391
- gen_helper_dfclass(PdV, cpu_env, RssV, imm); \
392
+ gen_helper_dfclass(PdV, tcg_env, RssV, imm); \
393
} while (0)
394
#define fGEN_TCG_F2_sfmpy(SHORTCODE) \
395
- gen_helper_sfmpy(RdV, cpu_env, RsV, RtV)
396
+ gen_helper_sfmpy(RdV, tcg_env, RsV, RtV)
397
#define fGEN_TCG_F2_sffma(SHORTCODE) \
398
- gen_helper_sffma(RxV, cpu_env, RxV, RsV, RtV)
399
+ gen_helper_sffma(RxV, tcg_env, RxV, RsV, RtV)
400
#define fGEN_TCG_F2_sffma_sc(SHORTCODE) \
401
- gen_helper_sffma_sc(RxV, cpu_env, RxV, RsV, RtV, PuV)
402
+ gen_helper_sffma_sc(RxV, tcg_env, RxV, RsV, RtV, PuV)
403
#define fGEN_TCG_F2_sffms(SHORTCODE) \
404
- gen_helper_sffms(RxV, cpu_env, RxV, RsV, RtV)
405
+ gen_helper_sffms(RxV, tcg_env, RxV, RsV, RtV)
406
#define fGEN_TCG_F2_sffma_lib(SHORTCODE) \
407
- gen_helper_sffma_lib(RxV, cpu_env, RxV, RsV, RtV)
408
+ gen_helper_sffma_lib(RxV, tcg_env, RxV, RsV, RtV)
409
#define fGEN_TCG_F2_sffms_lib(SHORTCODE) \
410
- gen_helper_sffms_lib(RxV, cpu_env, RxV, RsV, RtV)
411
+ gen_helper_sffms_lib(RxV, tcg_env, RxV, RsV, RtV)
412
413
#define fGEN_TCG_F2_dfmpyfix(SHORTCODE) \
414
- gen_helper_dfmpyfix(RddV, cpu_env, RssV, RttV)
415
+ gen_helper_dfmpyfix(RddV, tcg_env, RssV, RttV)
416
#define fGEN_TCG_F2_dfmpyhh(SHORTCODE) \
417
- gen_helper_dfmpyhh(RxxV, cpu_env, RxxV, RssV, RttV)
418
+ gen_helper_dfmpyhh(RxxV, tcg_env, RxxV, RssV, RttV)
419
420
/* Nothing to do for these in qemu, need to suppress compiler warnings */
421
#define fGEN_TCG_Y4_l2fetch(SHORTCODE) \
422
@@ -XXX,XX +XXX,XX @@
423
uiV = uiV; \
424
tcg_gen_movi_tl(hex_gpr[HEX_REG_PC], ctx->pkt->pc); \
425
TCGv excp = tcg_constant_tl(HEX_EXCP_TRAP0); \
426
- gen_helper_raise_exception(cpu_env, excp); \
427
+ gen_helper_raise_exception(tcg_env, excp); \
428
} while (0)
429
#endif
430
diff --git a/target/hexagon/gen_tcg_hvx.h b/target/hexagon/gen_tcg_hvx.h
431
index XXXXXXX..XXXXXXX 100644
432
--- a/target/hexagon/gen_tcg_hvx.h
433
+++ b/target/hexagon/gen_tcg_hvx.h
434
@@ -XXX,XX +XXX,XX @@ static inline void assert_vhist_tmp(DisasContext *ctx)
435
#define fGEN_TCG_V6_vhist(SHORTCODE) \
436
if (!ctx->pre_commit) { \
437
assert_vhist_tmp(ctx); \
438
- gen_helper_vhist(cpu_env); \
439
+ gen_helper_vhist(tcg_env); \
440
}
441
#define fGEN_TCG_V6_vhistq(SHORTCODE) \
442
do { \
443
@@ -XXX,XX +XXX,XX @@ static inline void assert_vhist_tmp(DisasContext *ctx)
444
sizeof(MMVector), sizeof(MMVector)); \
445
} else { \
446
assert_vhist_tmp(ctx); \
447
- gen_helper_vhistq(cpu_env); \
448
+ gen_helper_vhistq(tcg_env); \
449
} \
450
} while (0)
451
#define fGEN_TCG_V6_vwhist256(SHORTCODE) \
452
if (!ctx->pre_commit) { \
453
assert_vhist_tmp(ctx); \
454
- gen_helper_vwhist256(cpu_env); \
455
+ gen_helper_vwhist256(tcg_env); \
456
}
457
#define fGEN_TCG_V6_vwhist256q(SHORTCODE) \
458
do { \
459
@@ -XXX,XX +XXX,XX @@ static inline void assert_vhist_tmp(DisasContext *ctx)
460
sizeof(MMVector), sizeof(MMVector)); \
461
} else { \
462
assert_vhist_tmp(ctx); \
463
- gen_helper_vwhist256q(cpu_env); \
464
+ gen_helper_vwhist256q(tcg_env); \
465
} \
466
} while (0)
467
#define fGEN_TCG_V6_vwhist256_sat(SHORTCODE) \
468
if (!ctx->pre_commit) { \
469
assert_vhist_tmp(ctx); \
470
- gen_helper_vwhist256_sat(cpu_env); \
471
+ gen_helper_vwhist256_sat(tcg_env); \
472
}
473
#define fGEN_TCG_V6_vwhist256q_sat(SHORTCODE) \
474
do { \
475
@@ -XXX,XX +XXX,XX @@ static inline void assert_vhist_tmp(DisasContext *ctx)
476
sizeof(MMVector), sizeof(MMVector)); \
477
} else { \
478
assert_vhist_tmp(ctx); \
479
- gen_helper_vwhist256q_sat(cpu_env); \
480
+ gen_helper_vwhist256q_sat(tcg_env); \
481
} \
482
} while (0)
483
#define fGEN_TCG_V6_vwhist128(SHORTCODE) \
484
if (!ctx->pre_commit) { \
485
assert_vhist_tmp(ctx); \
486
- gen_helper_vwhist128(cpu_env); \
487
+ gen_helper_vwhist128(tcg_env); \
488
}
489
#define fGEN_TCG_V6_vwhist128q(SHORTCODE) \
490
do { \
491
@@ -XXX,XX +XXX,XX @@ static inline void assert_vhist_tmp(DisasContext *ctx)
492
sizeof(MMVector), sizeof(MMVector)); \
493
} else { \
494
assert_vhist_tmp(ctx); \
495
- gen_helper_vwhist128q(cpu_env); \
496
+ gen_helper_vwhist128q(tcg_env); \
497
} \
498
} while (0)
499
#define fGEN_TCG_V6_vwhist128m(SHORTCODE) \
500
if (!ctx->pre_commit) { \
501
TCGv tcgv_uiV = tcg_constant_tl(uiV); \
502
assert_vhist_tmp(ctx); \
503
- gen_helper_vwhist128m(cpu_env, tcgv_uiV); \
504
+ gen_helper_vwhist128m(tcg_env, tcgv_uiV); \
505
}
506
#define fGEN_TCG_V6_vwhist128qm(SHORTCODE) \
507
do { \
508
@@ -XXX,XX +XXX,XX @@ static inline void assert_vhist_tmp(DisasContext *ctx)
509
} else { \
510
TCGv tcgv_uiV = tcg_constant_tl(uiV); \
511
assert_vhist_tmp(ctx); \
512
- gen_helper_vwhist128qm(cpu_env, tcgv_uiV); \
513
+ gen_helper_vwhist128qm(tcg_env, tcgv_uiV); \
514
} \
515
} while (0)
516
517
diff --git a/target/hexagon/macros.h b/target/hexagon/macros.h
518
index XXXXXXX..XXXXXXX 100644
519
--- a/target/hexagon/macros.h
520
+++ b/target/hexagon/macros.h
521
@@ -XXX,XX +XXX,XX @@
522
__builtin_choose_expr(TYPE_TCGV(X), \
523
gen_store1, (void)0))
524
#define MEM_STORE1(VA, DATA, SLOT) \
525
- MEM_STORE1_FUNC(DATA)(cpu_env, VA, DATA, SLOT)
526
+ MEM_STORE1_FUNC(DATA)(tcg_env, VA, DATA, SLOT)
527
528
#define MEM_STORE2_FUNC(X) \
529
__builtin_choose_expr(TYPE_INT(X), \
530
@@ -XXX,XX +XXX,XX @@
531
__builtin_choose_expr(TYPE_TCGV(X), \
532
gen_store2, (void)0))
533
#define MEM_STORE2(VA, DATA, SLOT) \
534
- MEM_STORE2_FUNC(DATA)(cpu_env, VA, DATA, SLOT)
535
+ MEM_STORE2_FUNC(DATA)(tcg_env, VA, DATA, SLOT)
536
537
#define MEM_STORE4_FUNC(X) \
538
__builtin_choose_expr(TYPE_INT(X), \
539
@@ -XXX,XX +XXX,XX @@
540
__builtin_choose_expr(TYPE_TCGV(X), \
541
gen_store4, (void)0))
542
#define MEM_STORE4(VA, DATA, SLOT) \
543
- MEM_STORE4_FUNC(DATA)(cpu_env, VA, DATA, SLOT)
544
+ MEM_STORE4_FUNC(DATA)(tcg_env, VA, DATA, SLOT)
545
546
#define MEM_STORE8_FUNC(X) \
547
__builtin_choose_expr(TYPE_INT(X), \
548
@@ -XXX,XX +XXX,XX @@
549
__builtin_choose_expr(TYPE_TCGV_I64(X), \
550
gen_store8, (void)0))
551
#define MEM_STORE8(VA, DATA, SLOT) \
552
- MEM_STORE8_FUNC(DATA)(cpu_env, VA, DATA, SLOT)
553
+ MEM_STORE8_FUNC(DATA)(tcg_env, VA, DATA, SLOT)
554
#else
555
#define MEM_LOAD1s(VA) ((int8_t)mem_load1(env, pkt_has_store_s1, slot, VA))
556
#define MEM_LOAD1u(VA) ((uint8_t)mem_load1(env, pkt_has_store_s1, slot, VA))
557
diff --git a/target/mips/tcg/translate.h b/target/mips/tcg/translate.h
558
index XXXXXXX..XXXXXXX 100644
559
--- a/target/mips/tcg/translate.h
560
+++ b/target/mips/tcg/translate.h
561
@@ -XXX,XX +XXX,XX @@ enum {
562
};
563
564
#define gen_helper_0e1i(name, arg1, arg2) do { \
565
- gen_helper_##name(cpu_env, arg1, tcg_constant_i32(arg2)); \
566
+ gen_helper_##name(tcg_env, arg1, tcg_constant_i32(arg2)); \
567
} while (0)
568
569
#define gen_helper_1e0i(name, ret, arg1) do { \
570
- gen_helper_##name(ret, cpu_env, tcg_constant_i32(arg1)); \
571
+ gen_helper_##name(ret, tcg_env, tcg_constant_i32(arg1)); \
572
} while (0)
573
574
#define gen_helper_0e2i(name, arg1, arg2, arg3) do { \
575
- gen_helper_##name(cpu_env, arg1, arg2, tcg_constant_i32(arg3));\
576
+ gen_helper_##name(tcg_env, arg1, arg2, tcg_constant_i32(arg3));\
577
} while (0)
578
579
void generate_exception(DisasContext *ctx, int excp);
580
diff --git a/accel/tcg/plugin-gen.c b/accel/tcg/plugin-gen.c
581
index XXXXXXX..XXXXXXX 100644
582
--- a/accel/tcg/plugin-gen.c
583
+++ b/accel/tcg/plugin-gen.c
584
@@ -XXX,XX +XXX,XX @@ static void gen_empty_udata_cb(void)
585
TCGv_ptr udata = tcg_temp_ebb_new_ptr();
586
587
tcg_gen_movi_ptr(udata, 0);
588
- tcg_gen_ld_i32(cpu_index, cpu_env,
589
+ tcg_gen_ld_i32(cpu_index, tcg_env,
590
-offsetof(ArchCPU, env) + offsetof(CPUState, cpu_index));
591
gen_helper_plugin_vcpu_udata_cb(cpu_index, udata);
592
593
@@ -XXX,XX +XXX,XX @@ static void gen_empty_mem_cb(TCGv_i64 addr, uint32_t info)
594
595
tcg_gen_movi_i32(meminfo, info);
596
tcg_gen_movi_ptr(udata, 0);
597
- tcg_gen_ld_i32(cpu_index, cpu_env,
598
+ tcg_gen_ld_i32(cpu_index, tcg_env,
599
-offsetof(ArchCPU, env) + offsetof(CPUState, cpu_index));
600
601
gen_helper_plugin_vcpu_mem_cb(cpu_index, meminfo, addr, udata);
602
@@ -XXX,XX +XXX,XX @@ static void gen_empty_mem_helper(void)
603
TCGv_ptr ptr = tcg_temp_ebb_new_ptr();
604
605
tcg_gen_movi_ptr(ptr, 0);
606
- tcg_gen_st_ptr(ptr, cpu_env, offsetof(CPUState, plugin_mem_cbs) -
607
+ tcg_gen_st_ptr(ptr, tcg_env, offsetof(CPUState, plugin_mem_cbs) -
608
offsetof(ArchCPU, env));
609
tcg_temp_free_ptr(ptr);
610
}
611
@@ -XXX,XX +XXX,XX @@ void plugin_gen_disable_mem_helpers(void)
612
if (!tcg_ctx->plugin_tb->mem_helper) {
613
return;
614
}
615
- tcg_gen_st_ptr(tcg_constant_ptr(NULL), cpu_env,
616
+ tcg_gen_st_ptr(tcg_constant_ptr(NULL), tcg_env,
617
offsetof(CPUState, plugin_mem_cbs) - offsetof(ArchCPU, env));
618
}
619
620
diff --git a/accel/tcg/translator.c b/accel/tcg/translator.c
621
index XXXXXXX..XXXXXXX 100644
622
--- a/accel/tcg/translator.c
623
+++ b/accel/tcg/translator.c
624
@@ -XXX,XX +XXX,XX @@ static void set_can_do_io(DisasContextBase *db, bool val)
625
db->saved_can_do_io = val;
626
627
QEMU_BUILD_BUG_ON(sizeof_field(CPUState, neg.can_do_io) != 1);
628
- tcg_gen_st8_i32(tcg_constant_i32(val), cpu_env,
629
+ tcg_gen_st8_i32(tcg_constant_i32(val), tcg_env,
630
offsetof(ArchCPU, parent_obj.neg.can_do_io) -
631
offsetof(ArchCPU, env));
632
}
633
@@ -XXX,XX +XXX,XX @@ static TCGOp *gen_tb_start(DisasContextBase *db, uint32_t cflags)
634
635
if ((cflags & CF_USE_ICOUNT) || !(cflags & CF_NOIRQ)) {
636
count = tcg_temp_new_i32();
637
- tcg_gen_ld_i32(count, cpu_env,
638
+ tcg_gen_ld_i32(count, tcg_env,
639
offsetof(ArchCPU, parent_obj.neg.icount_decr.u32)
640
- offsetof(ArchCPU, env));
641
}
642
@@ -XXX,XX +XXX,XX @@ static TCGOp *gen_tb_start(DisasContextBase *db, uint32_t cflags)
643
}
644
645
if (cflags & CF_USE_ICOUNT) {
646
- tcg_gen_st16_i32(count, cpu_env,
647
+ tcg_gen_st16_i32(count, tcg_env,
648
offsetof(ArchCPU, parent_obj.neg.icount_decr.u16.low)
649
- offsetof(ArchCPU, env));
650
}
651
diff --git a/target/alpha/translate.c b/target/alpha/translate.c
652
index XXXXXXX..XXXXXXX 100644
653
--- a/target/alpha/translate.c
654
+++ b/target/alpha/translate.c
655
@@ -XXX,XX +XXX,XX @@ void alpha_translate_init(void)
656
int i;
657
658
for (i = 0; i < 31; i++) {
659
- cpu_std_ir[i] = tcg_global_mem_new_i64(cpu_env,
660
+ cpu_std_ir[i] = tcg_global_mem_new_i64(tcg_env,
661
offsetof(CPUAlphaState, ir[i]),
662
greg_names[i]);
663
}
664
665
for (i = 0; i < 31; i++) {
666
- cpu_fir[i] = tcg_global_mem_new_i64(cpu_env,
667
+ cpu_fir[i] = tcg_global_mem_new_i64(tcg_env,
668
offsetof(CPUAlphaState, fir[i]),
669
freg_names[i]);
670
}
671
@@ -XXX,XX +XXX,XX @@ void alpha_translate_init(void)
672
memcpy(cpu_pal_ir, cpu_std_ir, sizeof(cpu_pal_ir));
673
for (i = 0; i < 8; i++) {
674
int r = (i == 7 ? 25 : i + 8);
675
- cpu_pal_ir[r] = tcg_global_mem_new_i64(cpu_env,
676
+ cpu_pal_ir[r] = tcg_global_mem_new_i64(tcg_env,
677
offsetof(CPUAlphaState,
678
shadow[i]),
679
shadow_names[i]);
680
@@ -XXX,XX +XXX,XX @@ void alpha_translate_init(void)
681
682
for (i = 0; i < ARRAY_SIZE(vars); ++i) {
683
const GlobalVar *v = &vars[i];
684
- *v->var = tcg_global_mem_new_i64(cpu_env, v->ofs, v->name);
685
+ *v->var = tcg_global_mem_new_i64(tcg_env, v->ofs, v->name);
686
}
687
}
688
689
@@ -XXX,XX +XXX,XX @@ static int get_flag_ofs(unsigned shift)
690
691
static void ld_flag_byte(TCGv val, unsigned shift)
692
{
693
- tcg_gen_ld8u_i64(val, cpu_env, get_flag_ofs(shift));
694
+ tcg_gen_ld8u_i64(val, tcg_env, get_flag_ofs(shift));
695
}
696
697
static void st_flag_byte(TCGv val, unsigned shift)
698
{
699
- tcg_gen_st8_i64(val, cpu_env, get_flag_ofs(shift));
700
+ tcg_gen_st8_i64(val, tcg_env, get_flag_ofs(shift));
701
}
702
703
static void gen_excp_1(int exception, int error_code)
704
@@ -XXX,XX +XXX,XX @@ static void gen_excp_1(int exception, int error_code)
705
706
tmp1 = tcg_constant_i32(exception);
707
tmp2 = tcg_constant_i32(error_code);
708
- gen_helper_excp(cpu_env, tmp1, tmp2);
709
+ gen_helper_excp(tcg_env, tmp1, tmp2);
710
}
711
712
static DisasJumpType gen_excp(DisasContext *ctx, int exception, int error_code)
713
@@ -XXX,XX +XXX,XX @@ static void gen_qual_roundmode(DisasContext *ctx, int fn11)
714
tcg_gen_movi_i32(tmp, float_round_down);
715
break;
716
case QUAL_RM_D:
717
- tcg_gen_ld8u_i32(tmp, cpu_env,
718
+ tcg_gen_ld8u_i32(tmp, tcg_env,
719
offsetof(CPUAlphaState, fpcr_dyn_round));
720
break;
721
}
722
@@ -XXX,XX +XXX,XX @@ static void gen_qual_roundmode(DisasContext *ctx, int fn11)
723
/* ??? The "fpu/softfloat.h" interface is to call set_float_rounding_mode.
724
With CONFIG_SOFTFLOAT that expands to an out-of-line call that just
725
sets the one field. */
726
- tcg_gen_st8_i32(tmp, cpu_env,
727
+ tcg_gen_st8_i32(tmp, tcg_env,
728
offsetof(CPUAlphaState, fp_status.float_rounding_mode));
729
#else
730
gen_helper_setroundmode(tmp);
731
@@ -XXX,XX +XXX,XX @@ static void gen_qual_flushzero(DisasContext *ctx, int fn11)
732
tmp = tcg_temp_new_i32();
733
if (fn11) {
734
/* Underflow is enabled, use the FPCR setting. */
735
- tcg_gen_ld8u_i32(tmp, cpu_env,
736
+ tcg_gen_ld8u_i32(tmp, tcg_env,
737
offsetof(CPUAlphaState, fpcr_flush_to_zero));
738
} else {
739
/* Underflow is disabled, force flush-to-zero. */
740
@@ -XXX,XX +XXX,XX @@ static void gen_qual_flushzero(DisasContext *ctx, int fn11)
741
}
742
743
#if defined(CONFIG_SOFTFLOAT_INLINE)
744
- tcg_gen_st8_i32(tmp, cpu_env,
745
+ tcg_gen_st8_i32(tmp, tcg_env,
746
offsetof(CPUAlphaState, fp_status.flush_to_zero));
747
#else
748
gen_helper_setflushzero(tmp);
749
@@ -XXX,XX +XXX,XX @@ static TCGv gen_ieee_input(DisasContext *ctx, int reg, int fn11, int is_cmp)
750
val = cpu_fir[reg];
751
if ((fn11 & QUAL_S) == 0) {
752
if (is_cmp) {
753
- gen_helper_ieee_input_cmp(cpu_env, val);
754
+ gen_helper_ieee_input_cmp(tcg_env, val);
755
} else {
756
- gen_helper_ieee_input(cpu_env, val);
757
+ gen_helper_ieee_input(tcg_env, val);
758
}
759
} else {
760
#ifndef CONFIG_USER_ONLY
761
/* In system mode, raise exceptions for denormals like real
762
hardware. In user mode, proceed as if the OS completion
763
handler is handling the denormal as per spec. */
764
- gen_helper_ieee_input_s(cpu_env, val);
765
+ gen_helper_ieee_input_s(tcg_env, val);
766
#endif
767
}
768
}
769
@@ -XXX,XX +XXX,XX @@ static void gen_fp_exc_raise(int rc, int fn11)
770
or if we were to do something clever with imprecise exceptions. */
771
reg = tcg_constant_i32(rc + 32);
772
if (fn11 & QUAL_S) {
773
- gen_helper_fp_exc_raise_s(cpu_env, ign, reg);
774
+ gen_helper_fp_exc_raise_s(tcg_env, ign, reg);
775
} else {
776
- gen_helper_fp_exc_raise(cpu_env, ign, reg);
777
+ gen_helper_fp_exc_raise(tcg_env, ign, reg);
778
}
779
}
780
781
@@ -XXX,XX +XXX,XX @@ static void gen_ieee_arith2(DisasContext *ctx,
782
gen_qual_flushzero(ctx, fn11);
783
784
vb = gen_ieee_input(ctx, rb, fn11, 0);
785
- helper(dest_fpr(ctx, rc), cpu_env, vb);
786
+ helper(dest_fpr(ctx, rc), tcg_env, vb);
787
788
gen_fp_exc_raise(rc, fn11);
789
}
790
@@ -XXX,XX +XXX,XX @@ static void gen_cvttq(DisasContext *ctx, int rb, int rc, int fn11)
791
/* Almost all integer conversions use cropped rounding;
792
special case that. */
793
if ((fn11 & QUAL_RM_MASK) == QUAL_RM_C) {
794
- gen_helper_cvttq_c(vc, cpu_env, vb);
795
+ gen_helper_cvttq_c(vc, tcg_env, vb);
796
} else {
797
gen_qual_roundmode(ctx, fn11);
798
- gen_helper_cvttq(vc, cpu_env, vb);
799
+ gen_helper_cvttq(vc, tcg_env, vb);
800
}
801
gen_fp_exc_raise(rc, fn11);
802
}
803
@@ -XXX,XX +XXX,XX @@ static void gen_ieee_intcvt(DisasContext *ctx,
804
is inexact. Thus we only need to worry about exceptions when
805
inexact handling is requested. */
806
if (fn11 & QUAL_I) {
807
- helper(vc, cpu_env, vb);
808
+ helper(vc, tcg_env, vb);
809
gen_fp_exc_raise(rc, fn11);
810
} else {
811
- helper(vc, cpu_env, vb);
812
+ helper(vc, tcg_env, vb);
813
}
814
}
815
816
@@ -XXX,XX +XXX,XX @@ static void gen_ieee_arith3(DisasContext *ctx,
817
va = gen_ieee_input(ctx, ra, fn11, 0);
818
vb = gen_ieee_input(ctx, rb, fn11, 0);
819
vc = dest_fpr(ctx, rc);
820
- helper(vc, cpu_env, va, vb);
821
+ helper(vc, tcg_env, va, vb);
822
823
gen_fp_exc_raise(rc, fn11);
824
}
825
@@ -XXX,XX +XXX,XX @@ static void gen_ieee_compare(DisasContext *ctx,
826
va = gen_ieee_input(ctx, ra, fn11, 1);
827
vb = gen_ieee_input(ctx, rb, fn11, 1);
828
vc = dest_fpr(ctx, rc);
829
- helper(vc, cpu_env, va, vb);
830
+ helper(vc, tcg_env, va, vb);
831
832
gen_fp_exc_raise(rc, fn11);
833
}
834
@@ -XXX,XX +XXX,XX @@ static DisasJumpType gen_call_pal(DisasContext *ctx, int palcode)
835
break;
836
case 0x9E:
837
/* RDUNIQUE */
838
- tcg_gen_ld_i64(ctx->ir[IR_V0], cpu_env,
839
+ tcg_gen_ld_i64(ctx->ir[IR_V0], tcg_env,
840
offsetof(CPUAlphaState, unique));
841
break;
842
case 0x9F:
843
/* WRUNIQUE */
844
- tcg_gen_st_i64(ctx->ir[IR_A0], cpu_env,
845
+ tcg_gen_st_i64(ctx->ir[IR_A0], tcg_env,
846
offsetof(CPUAlphaState, unique));
847
break;
848
default:
849
@@ -XXX,XX +XXX,XX @@ static DisasJumpType gen_call_pal(DisasContext *ctx, int palcode)
850
break;
851
case 0x2D:
852
/* WRVPTPTR */
853
- tcg_gen_st_i64(ctx->ir[IR_A0], cpu_env,
854
+ tcg_gen_st_i64(ctx->ir[IR_A0], tcg_env,
855
offsetof(CPUAlphaState, vptptr));
856
break;
857
case 0x31:
858
/* WRVAL */
859
- tcg_gen_st_i64(ctx->ir[IR_A0], cpu_env,
860
+ tcg_gen_st_i64(ctx->ir[IR_A0], tcg_env,
861
offsetof(CPUAlphaState, sysval));
862
break;
863
case 0x32:
864
/* RDVAL */
865
- tcg_gen_ld_i64(ctx->ir[IR_V0], cpu_env,
866
+ tcg_gen_ld_i64(ctx->ir[IR_V0], tcg_env,
867
offsetof(CPUAlphaState, sysval));
868
break;
869
870
@@ -XXX,XX +XXX,XX @@ static DisasJumpType gen_call_pal(DisasContext *ctx, int palcode)
871
872
case 0x38:
873
/* WRUSP */
874
- tcg_gen_st_i64(ctx->ir[IR_A0], cpu_env,
875
+ tcg_gen_st_i64(ctx->ir[IR_A0], tcg_env,
876
offsetof(CPUAlphaState, usp));
877
break;
878
case 0x3A:
879
/* RDUSP */
880
- tcg_gen_ld_i64(ctx->ir[IR_V0], cpu_env,
881
+ tcg_gen_ld_i64(ctx->ir[IR_V0], tcg_env,
882
offsetof(CPUAlphaState, usp));
883
break;
884
case 0x3C:
885
/* WHAMI */
886
- tcg_gen_ld32s_i64(ctx->ir[IR_V0], cpu_env,
887
+ tcg_gen_ld32s_i64(ctx->ir[IR_V0], tcg_env,
888
-offsetof(AlphaCPU, env) + offsetof(CPUState, cpu_index));
889
break;
890
891
case 0x3E:
892
/* WTINT */
893
- tcg_gen_st_i32(tcg_constant_i32(1), cpu_env,
894
+ tcg_gen_st_i32(tcg_constant_i32(1), tcg_env,
895
-offsetof(AlphaCPU, env) +
896
offsetof(CPUState, halted));
897
tcg_gen_movi_i64(ctx->ir[IR_V0], 0);
898
@@ -XXX,XX +XXX,XX @@ static DisasJumpType gen_call_pal(DisasContext *ctx, int palcode)
899
}
900
901
tcg_gen_movi_i64(tmp, exc_addr);
902
- tcg_gen_st_i64(tmp, cpu_env, offsetof(CPUAlphaState, exc_addr));
903
+ tcg_gen_st_i64(tmp, tcg_env, offsetof(CPUAlphaState, exc_addr));
904
905
entry += (palcode & 0x80
906
? 0x2000 + (palcode - 0x80) * 64
907
@@ -XXX,XX +XXX,XX @@ static DisasJumpType gen_mfpr(DisasContext *ctx, TCGv va, int regno)
908
if (data == 0) {
909
tcg_gen_movi_i64(va, 0);
910
} else if (data & PR_LONG) {
911
- tcg_gen_ld32s_i64(va, cpu_env, data & ~PR_LONG);
912
+ tcg_gen_ld32s_i64(va, tcg_env, data & ~PR_LONG);
913
} else {
914
- tcg_gen_ld_i64(va, cpu_env, data);
915
+ tcg_gen_ld_i64(va, tcg_env, data);
916
}
917
break;
918
}
919
@@ -XXX,XX +XXX,XX @@ static DisasJumpType gen_mtpr(DisasContext *ctx, TCGv vb, int regno)
920
switch (regno) {
921
case 255:
922
/* TBIA */
923
- gen_helper_tbia(cpu_env);
924
+ gen_helper_tbia(tcg_env);
925
break;
926
927
case 254:
928
/* TBIS */
929
- gen_helper_tbis(cpu_env, vb);
930
+ gen_helper_tbis(tcg_env, vb);
931
break;
932
933
case 253:
934
/* WAIT */
935
- tcg_gen_st_i32(tcg_constant_i32(1), cpu_env,
936
+ tcg_gen_st_i32(tcg_constant_i32(1), tcg_env,
937
-offsetof(AlphaCPU, env) + offsetof(CPUState, halted));
938
return gen_excp(ctx, EXCP_HALTED, 0);
939
940
@@ -XXX,XX +XXX,XX @@ static DisasJumpType gen_mtpr(DisasContext *ctx, TCGv vb, int regno)
941
if (translator_io_start(&ctx->base)) {
942
ret = DISAS_PC_STALE;
943
}
944
- gen_helper_set_alarm(cpu_env, vb);
945
+ gen_helper_set_alarm(tcg_env, vb);
946
break;
947
948
case 7:
949
/* PALBR */
950
- tcg_gen_st_i64(vb, cpu_env, offsetof(CPUAlphaState, palbr));
951
+ tcg_gen_st_i64(vb, tcg_env, offsetof(CPUAlphaState, palbr));
952
/* Changing the PAL base register implies un-chaining all of the TBs
953
that ended with a CALL_PAL. Since the base register usually only
954
changes during boot, flushing everything works well. */
955
- gen_helper_tb_flush(cpu_env);
956
+ gen_helper_tb_flush(tcg_env);
957
return DISAS_PC_STALE;
958
959
case 32 ... 39:
960
@@ -XXX,XX +XXX,XX @@ static DisasJumpType gen_mtpr(DisasContext *ctx, TCGv vb, int regno)
961
data = cpu_pr_data(regno);
962
if (data != 0) {
963
if (data & PR_LONG) {
964
- tcg_gen_st32_i64(vb, cpu_env, data & ~PR_LONG);
965
+ tcg_gen_st32_i64(vb, tcg_env, data & ~PR_LONG);
966
} else {
967
- tcg_gen_st_i64(vb, cpu_env, data);
968
+ tcg_gen_st_i64(vb, tcg_env, data);
969
}
970
}
971
break;
972
@@ -XXX,XX +XXX,XX @@ static DisasJumpType translate_one(DisasContext *ctx, uint32_t insn)
973
tcg_gen_ext32s_i64(vc, vb);
974
tcg_gen_add_i64(tmp, tmp, vc);
975
tcg_gen_ext32s_i64(vc, tmp);
976
- gen_helper_check_overflow(cpu_env, vc, tmp);
977
+ gen_helper_check_overflow(tcg_env, vc, tmp);
978
break;
979
case 0x49:
980
/* SUBL/V */
981
@@ -XXX,XX +XXX,XX @@ static DisasJumpType translate_one(DisasContext *ctx, uint32_t insn)
982
tcg_gen_ext32s_i64(vc, vb);
983
tcg_gen_sub_i64(tmp, tmp, vc);
984
tcg_gen_ext32s_i64(vc, tmp);
985
- gen_helper_check_overflow(cpu_env, vc, tmp);
986
+ gen_helper_check_overflow(tcg_env, vc, tmp);
987
break;
988
case 0x4D:
989
/* CMPLT */
990
@@ -XXX,XX +XXX,XX @@ static DisasJumpType translate_one(DisasContext *ctx, uint32_t insn)
991
tcg_gen_and_i64(tmp, tmp, tmp2);
992
tcg_gen_shri_i64(tmp, tmp, 63);
993
tcg_gen_movi_i64(tmp2, 0);
994
- gen_helper_check_overflow(cpu_env, tmp, tmp2);
995
+ gen_helper_check_overflow(tcg_env, tmp, tmp2);
996
break;
997
case 0x69:
998
/* SUBQ/V */
999
@@ -XXX,XX +XXX,XX @@ static DisasJumpType translate_one(DisasContext *ctx, uint32_t insn)
1000
tcg_gen_and_i64(tmp, tmp, tmp2);
1001
tcg_gen_shri_i64(tmp, tmp, 63);
1002
tcg_gen_movi_i64(tmp2, 0);
1003
- gen_helper_check_overflow(cpu_env, tmp, tmp2);
1004
+ gen_helper_check_overflow(tcg_env, tmp, tmp2);
1005
break;
1006
case 0x6D:
1007
/* CMPLE */
1008
@@ -XXX,XX +XXX,XX @@ static DisasJumpType translate_one(DisasContext *ctx, uint32_t insn)
1009
tcg_gen_ext32s_i64(vc, vb);
1010
tcg_gen_mul_i64(tmp, tmp, vc);
1011
tcg_gen_ext32s_i64(vc, tmp);
1012
- gen_helper_check_overflow(cpu_env, vc, tmp);
1013
+ gen_helper_check_overflow(tcg_env, vc, tmp);
1014
break;
1015
case 0x60:
1016
/* MULQ/V */
1017
@@ -XXX,XX +XXX,XX @@ static DisasJumpType translate_one(DisasContext *ctx, uint32_t insn)
1018
tmp2 = tcg_temp_new();
1019
tcg_gen_muls2_i64(vc, tmp, va, vb);
1020
tcg_gen_sari_i64(tmp2, vc, 63);
1021
- gen_helper_check_overflow(cpu_env, tmp, tmp2);
1022
+ gen_helper_check_overflow(tcg_env, tmp, tmp2);
1023
break;
1024
default:
1025
goto invalid_opc;
1026
@@ -XXX,XX +XXX,XX @@ static DisasJumpType translate_one(DisasContext *ctx, uint32_t insn)
1027
REQUIRE_REG_31(ra);
1028
REQUIRE_FEN;
1029
vb = load_fpr(ctx, rb);
1030
- gen_helper_sqrtf(vc, cpu_env, vb);
1031
+ gen_helper_sqrtf(vc, tcg_env, vb);
1032
break;
1033
case 0x0B:
1034
/* SQRTS */
1035
@@ -XXX,XX +XXX,XX @@ static DisasJumpType translate_one(DisasContext *ctx, uint32_t insn)
1036
REQUIRE_REG_31(ra);
1037
REQUIRE_FEN;
1038
vb = load_fpr(ctx, rb);
1039
- gen_helper_sqrtg(vc, cpu_env, vb);
1040
+ gen_helper_sqrtg(vc, tcg_env, vb);
1041
break;
1042
case 0x02B:
1043
/* SQRTT */
1044
@@ -XXX,XX +XXX,XX @@ static DisasJumpType translate_one(DisasContext *ctx, uint32_t insn)
1045
case 0x00:
1046
/* ADDF */
1047
REQUIRE_FEN;
1048
- gen_helper_addf(vc, cpu_env, va, vb);
1049
+ gen_helper_addf(vc, tcg_env, va, vb);
1050
break;
1051
case 0x01:
1052
/* SUBF */
1053
REQUIRE_FEN;
1054
- gen_helper_subf(vc, cpu_env, va, vb);
1055
+ gen_helper_subf(vc, tcg_env, va, vb);
1056
break;
1057
case 0x02:
1058
/* MULF */
1059
REQUIRE_FEN;
1060
- gen_helper_mulf(vc, cpu_env, va, vb);
1061
+ gen_helper_mulf(vc, tcg_env, va, vb);
1062
break;
1063
case 0x03:
1064
/* DIVF */
1065
REQUIRE_FEN;
1066
- gen_helper_divf(vc, cpu_env, va, vb);
1067
+ gen_helper_divf(vc, tcg_env, va, vb);
1068
break;
1069
case 0x1E:
1070
/* CVTDG -- TODO */
1071
@@ -XXX,XX +XXX,XX @@ static DisasJumpType translate_one(DisasContext *ctx, uint32_t insn)
1072
case 0x20:
1073
/* ADDG */
1074
REQUIRE_FEN;
1075
- gen_helper_addg(vc, cpu_env, va, vb);
1076
+ gen_helper_addg(vc, tcg_env, va, vb);
1077
break;
1078
case 0x21:
1079
/* SUBG */
1080
REQUIRE_FEN;
1081
- gen_helper_subg(vc, cpu_env, va, vb);
1082
+ gen_helper_subg(vc, tcg_env, va, vb);
1083
break;
1084
case 0x22:
1085
/* MULG */
1086
REQUIRE_FEN;
1087
- gen_helper_mulg(vc, cpu_env, va, vb);
1088
+ gen_helper_mulg(vc, tcg_env, va, vb);
1089
break;
1090
case 0x23:
1091
/* DIVG */
1092
REQUIRE_FEN;
1093
- gen_helper_divg(vc, cpu_env, va, vb);
1094
+ gen_helper_divg(vc, tcg_env, va, vb);
1095
break;
1096
case 0x25:
1097
/* CMPGEQ */
1098
REQUIRE_FEN;
1099
- gen_helper_cmpgeq(vc, cpu_env, va, vb);
1100
+ gen_helper_cmpgeq(vc, tcg_env, va, vb);
1101
break;
1102
case 0x26:
1103
/* CMPGLT */
1104
REQUIRE_FEN;
1105
- gen_helper_cmpglt(vc, cpu_env, va, vb);
1106
+ gen_helper_cmpglt(vc, tcg_env, va, vb);
1107
break;
1108
case 0x27:
1109
/* CMPGLE */
1110
REQUIRE_FEN;
1111
- gen_helper_cmpgle(vc, cpu_env, va, vb);
1112
+ gen_helper_cmpgle(vc, tcg_env, va, vb);
1113
break;
1114
case 0x2C:
1115
/* CVTGF */
1116
REQUIRE_REG_31(ra);
1117
REQUIRE_FEN;
1118
- gen_helper_cvtgf(vc, cpu_env, vb);
1119
+ gen_helper_cvtgf(vc, tcg_env, vb);
1120
break;
1121
case 0x2D:
1122
/* CVTGD -- TODO */
1123
@@ -XXX,XX +XXX,XX @@ static DisasJumpType translate_one(DisasContext *ctx, uint32_t insn)
1124
/* CVTGQ */
1125
REQUIRE_REG_31(ra);
1126
REQUIRE_FEN;
1127
- gen_helper_cvtgq(vc, cpu_env, vb);
1128
+ gen_helper_cvtgq(vc, tcg_env, vb);
1129
break;
1130
case 0x3C:
1131
/* CVTQF */
1132
REQUIRE_REG_31(ra);
1133
REQUIRE_FEN;
1134
- gen_helper_cvtqf(vc, cpu_env, vb);
1135
+ gen_helper_cvtqf(vc, tcg_env, vb);
1136
break;
1137
case 0x3E:
1138
/* CVTQG */
1139
REQUIRE_REG_31(ra);
1140
REQUIRE_FEN;
1141
- gen_helper_cvtqg(vc, cpu_env, vb);
1142
+ gen_helper_cvtqg(vc, tcg_env, vb);
1143
break;
1144
default:
1145
goto invalid_opc;
1146
@@ -XXX,XX +XXX,XX @@ static DisasJumpType translate_one(DisasContext *ctx, uint32_t insn)
1147
/* MT_FPCR */
1148
REQUIRE_FEN;
1149
va = load_fpr(ctx, ra);
1150
- gen_helper_store_fpcr(cpu_env, va);
1151
+ gen_helper_store_fpcr(tcg_env, va);
1152
if (ctx->tb_rm == QUAL_RM_D) {
1153
/* Re-do the copy of the rounding mode to fp_status
1154
the next time we use dynamic rounding. */
1155
@@ -XXX,XX +XXX,XX @@ static DisasJumpType translate_one(DisasContext *ctx, uint32_t insn)
1156
/* MF_FPCR */
1157
REQUIRE_FEN;
1158
va = dest_fpr(ctx, ra);
1159
- gen_helper_load_fpcr(va, cpu_env);
1160
+ gen_helper_load_fpcr(va, tcg_env);
1161
break;
1162
case 0x02A:
1163
/* FCMOVEQ */
1164
@@ -XXX,XX +XXX,XX @@ static DisasJumpType translate_one(DisasContext *ctx, uint32_t insn)
1165
REQUIRE_FEN;
1166
vc = dest_fpr(ctx, rc);
1167
vb = load_fpr(ctx, rb);
1168
- gen_helper_cvtql(vc, cpu_env, vb);
1169
+ gen_helper_cvtql(vc, tcg_env, vb);
1170
gen_fp_exc_raise(rc, fn11);
1171
break;
1172
default:
1173
@@ -XXX,XX +XXX,XX @@ static DisasJumpType translate_one(DisasContext *ctx, uint32_t insn)
1174
if (translator_io_start(&ctx->base)) {
1175
ret = DISAS_PC_STALE;
1176
}
1177
- gen_helper_load_pcc(va, cpu_env);
1178
+ gen_helper_load_pcc(va, tcg_env);
1179
break;
1180
case 0xE000:
1181
/* RC */
1182
@@ -XXX,XX +XXX,XX @@ static DisasJumpType translate_one(DisasContext *ctx, uint32_t insn)
1183
address from EXC_ADDR. This turns out to be useful for our
1184
emulation PALcode, so continue to accept it. */
1185
vb = dest_sink(ctx);
1186
- tcg_gen_ld_i64(vb, cpu_env, offsetof(CPUAlphaState, exc_addr));
1187
+ tcg_gen_ld_i64(vb, tcg_env, offsetof(CPUAlphaState, exc_addr));
1188
} else {
1189
vb = load_gpr(ctx, rb);
1190
}
1191
diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c
1192
index XXXXXXX..XXXXXXX 100644
1193
--- a/target/arm/tcg/translate-a64.c
1194
+++ b/target/arm/tcg/translate-a64.c
1195
@@ -XXX,XX +XXX,XX @@ void a64_translate_init(void)
1196
{
1197
int i;
1198
1199
- cpu_pc = tcg_global_mem_new_i64(cpu_env,
1200
+ cpu_pc = tcg_global_mem_new_i64(tcg_env,
1201
offsetof(CPUARMState, pc),
1202
"pc");
1203
for (i = 0; i < 32; i++) {
1204
- cpu_X[i] = tcg_global_mem_new_i64(cpu_env,
1205
+ cpu_X[i] = tcg_global_mem_new_i64(tcg_env,
1206
offsetof(CPUARMState, xregs[i]),
1207
regnames[i]);
1208
}
1209
1210
- cpu_exclusive_high = tcg_global_mem_new_i64(cpu_env,
1211
+ cpu_exclusive_high = tcg_global_mem_new_i64(tcg_env,
1212
offsetof(CPUARMState, exclusive_high), "exclusive_high");
1213
}
1214
1215
@@ -XXX,XX +XXX,XX @@ static int get_a64_user_mem_index(DisasContext *s, bool unpriv)
1216
1217
static void set_btype_raw(int val)
1218
{
1219
- tcg_gen_st_i32(tcg_constant_i32(val), cpu_env,
1220
+ tcg_gen_st_i32(tcg_constant_i32(val), tcg_env,
1221
offsetof(CPUARMState, btype));
1222
}
1223
1224
@@ -XXX,XX +XXX,XX @@ static void gen_address_with_allocation_tag0(TCGv_i64 dst, TCGv_i64 src)
1225
static void gen_probe_access(DisasContext *s, TCGv_i64 ptr,
1226
MMUAccessType acc, int log2_size)
1227
{
1228
- gen_helper_probe_access(cpu_env, ptr,
1229
+ gen_helper_probe_access(tcg_env, ptr,
1230
tcg_constant_i32(acc),
1231
tcg_constant_i32(get_mem_index(s)),
1232
tcg_constant_i32(1 << log2_size));
1233
@@ -XXX,XX +XXX,XX @@ static TCGv_i64 gen_mte_check1_mmuidx(DisasContext *s, TCGv_i64 addr,
1234
desc = FIELD_DP32(desc, MTEDESC, SIZEM1, memop_size(memop) - 1);
1235
1236
ret = tcg_temp_new_i64();
1237
- gen_helper_mte_check(ret, cpu_env, tcg_constant_i32(desc), addr);
1238
+ gen_helper_mte_check(ret, tcg_env, tcg_constant_i32(desc), addr);
1239
1240
return ret;
1241
}
1242
@@ -XXX,XX +XXX,XX @@ TCGv_i64 gen_mte_checkN(DisasContext *s, TCGv_i64 addr, bool is_write,
1243
desc = FIELD_DP32(desc, MTEDESC, SIZEM1, total_size - 1);
1244
1245
ret = tcg_temp_new_i64();
1246
- gen_helper_mte_check(ret, cpu_env, tcg_constant_i32(desc), addr);
1247
+ gen_helper_mte_check(ret, tcg_env, tcg_constant_i32(desc), addr);
1248
1249
return ret;
1250
}
1251
@@ -XXX,XX +XXX,XX @@ static void check_lse2_align(DisasContext *s, int rn, int imm,
1252
1253
type = is_write ? MMU_DATA_STORE : MMU_DATA_LOAD,
1254
mmu_idx = get_mem_index(s);
1255
- gen_helper_unaligned_access(cpu_env, addr, tcg_constant_i32(type),
1256
+ gen_helper_unaligned_access(tcg_env, addr, tcg_constant_i32(type),
1257
tcg_constant_i32(mmu_idx));
1258
1259
gen_set_label(over_label);
1260
@@ -XXX,XX +XXX,XX @@ static void a64_test_cc(DisasCompare64 *c64, int cc)
1261
1262
static void gen_rebuild_hflags(DisasContext *s)
1263
{
1264
- gen_helper_rebuild_hflags_a64(cpu_env, tcg_constant_i32(s->current_el));
1265
+ gen_helper_rebuild_hflags_a64(tcg_env, tcg_constant_i32(s->current_el));
1266
}
1267
1268
static void gen_exception_internal(int excp)
1269
{
1270
assert(excp_is_internal(excp));
1271
- gen_helper_exception_internal(cpu_env, tcg_constant_i32(excp));
1272
+ gen_helper_exception_internal(tcg_env, tcg_constant_i32(excp));
1273
}
1274
1275
static void gen_exception_internal_insn(DisasContext *s, int excp)
1276
@@ -XXX,XX +XXX,XX @@ static void gen_exception_internal_insn(DisasContext *s, int excp)
1277
static void gen_exception_bkpt_insn(DisasContext *s, uint32_t syndrome)
1278
{
1279
gen_a64_update_pc(s, 0);
1280
- gen_helper_exception_bkpt_insn(cpu_env, tcg_constant_i32(syndrome));
1281
+ gen_helper_exception_bkpt_insn(tcg_env, tcg_constant_i32(syndrome));
1282
s->base.is_jmp = DISAS_NORETURN;
1283
}
1284
1285
@@ -XXX,XX +XXX,XX @@ static TCGv_i64 read_fp_dreg(DisasContext *s, int reg)
1286
{
1287
TCGv_i64 v = tcg_temp_new_i64();
1288
1289
- tcg_gen_ld_i64(v, cpu_env, fp_reg_offset(s, reg, MO_64));
1290
+ tcg_gen_ld_i64(v, tcg_env, fp_reg_offset(s, reg, MO_64));
1291
return v;
1292
}
1293
1294
@@ -XXX,XX +XXX,XX @@ static TCGv_i32 read_fp_sreg(DisasContext *s, int reg)
1295
{
1296
TCGv_i32 v = tcg_temp_new_i32();
1297
1298
- tcg_gen_ld_i32(v, cpu_env, fp_reg_offset(s, reg, MO_32));
1299
+ tcg_gen_ld_i32(v, tcg_env, fp_reg_offset(s, reg, MO_32));
1300
return v;
1301
}
1302
1303
@@ -XXX,XX +XXX,XX @@ static TCGv_i32 read_fp_hreg(DisasContext *s, int reg)
1304
{
1305
TCGv_i32 v = tcg_temp_new_i32();
1306
1307
- tcg_gen_ld16u_i32(v, cpu_env, fp_reg_offset(s, reg, MO_16));
1308
+ tcg_gen_ld16u_i32(v, tcg_env, fp_reg_offset(s, reg, MO_16));
1309
return v;
1310
}
1311
1312
@@ -XXX,XX +XXX,XX @@ void write_fp_dreg(DisasContext *s, int reg, TCGv_i64 v)
1313
{
1314
unsigned ofs = fp_reg_offset(s, reg, MO_64);
1315
1316
- tcg_gen_st_i64(v, cpu_env, ofs);
1317
+ tcg_gen_st_i64(v, tcg_env, ofs);
1318
clear_vec_high(s, false, reg);
1319
}
1320
1321
@@ -XXX,XX +XXX,XX @@ static void gen_gvec_op3_qc(DisasContext *s, bool is_q, int rd, int rn,
1322
{
1323
TCGv_ptr qc_ptr = tcg_temp_new_ptr();
1324
1325
- tcg_gen_addi_ptr(qc_ptr, cpu_env, offsetof(CPUARMState, vfp.qc));
1326
+ tcg_gen_addi_ptr(qc_ptr, tcg_env, offsetof(CPUARMState, vfp.qc));
1327
tcg_gen_gvec_3_ptr(vec_full_reg_offset(s, rd),
1328
vec_full_reg_offset(s, rn),
1329
vec_full_reg_offset(s, rm), qc_ptr,
1330
@@ -XXX,XX +XXX,XX @@ static void do_fp_st(DisasContext *s, int srcidx, TCGv_i64 tcg_addr, MemOp mop)
1331
/* This writes the bottom N bits of a 128 bit wide vector to memory */
1332
TCGv_i64 tmplo = tcg_temp_new_i64();
1333
1334
- tcg_gen_ld_i64(tmplo, cpu_env, fp_reg_offset(s, srcidx, MO_64));
1335
+ tcg_gen_ld_i64(tmplo, tcg_env, fp_reg_offset(s, srcidx, MO_64));
1336
1337
if ((mop & MO_SIZE) < MO_128) {
1338
tcg_gen_qemu_st_i64(tmplo, tcg_addr, get_mem_index(s), mop);
1339
@@ -XXX,XX +XXX,XX @@ static void do_fp_st(DisasContext *s, int srcidx, TCGv_i64 tcg_addr, MemOp mop)
1340
TCGv_i64 tmphi = tcg_temp_new_i64();
1341
TCGv_i128 t16 = tcg_temp_new_i128();
1342
1343
- tcg_gen_ld_i64(tmphi, cpu_env, fp_reg_hi_offset(s, srcidx));
1344
+ tcg_gen_ld_i64(tmphi, tcg_env, fp_reg_hi_offset(s, srcidx));
1345
tcg_gen_concat_i64_i128(t16, tmplo, tmphi);
1346
1347
tcg_gen_qemu_st_i128(t16, tcg_addr, get_mem_index(s), mop);
1348
@@ -XXX,XX +XXX,XX @@ static void do_fp_ld(DisasContext *s, int destidx, TCGv_i64 tcg_addr, MemOp mop)
1349
tcg_gen_extr_i128_i64(tmplo, tmphi, t16);
1350
}
1351
1352
- tcg_gen_st_i64(tmplo, cpu_env, fp_reg_offset(s, destidx, MO_64));
1353
+ tcg_gen_st_i64(tmplo, tcg_env, fp_reg_offset(s, destidx, MO_64));
1354
1355
if (tmphi) {
1356
- tcg_gen_st_i64(tmphi, cpu_env, fp_reg_hi_offset(s, destidx));
1357
+ tcg_gen_st_i64(tmphi, tcg_env, fp_reg_hi_offset(s, destidx));
1358
}
1359
clear_vec_high(s, tmphi != NULL, destidx);
1360
}
1361
@@ -XXX,XX +XXX,XX @@ static void read_vec_element(DisasContext *s, TCGv_i64 tcg_dest, int srcidx,
1362
int vect_off = vec_reg_offset(s, srcidx, element, memop & MO_SIZE);
1363
switch ((unsigned)memop) {
1364
case MO_8:
1365
- tcg_gen_ld8u_i64(tcg_dest, cpu_env, vect_off);
1366
+ tcg_gen_ld8u_i64(tcg_dest, tcg_env, vect_off);
1367
break;
1368
case MO_16:
1369
- tcg_gen_ld16u_i64(tcg_dest, cpu_env, vect_off);
1370
+ tcg_gen_ld16u_i64(tcg_dest, tcg_env, vect_off);
1371
break;
1372
case MO_32:
1373
- tcg_gen_ld32u_i64(tcg_dest, cpu_env, vect_off);
1374
+ tcg_gen_ld32u_i64(tcg_dest, tcg_env, vect_off);
1375
break;
1376
case MO_8|MO_SIGN:
1377
- tcg_gen_ld8s_i64(tcg_dest, cpu_env, vect_off);
1378
+ tcg_gen_ld8s_i64(tcg_dest, tcg_env, vect_off);
1379
break;
1380
case MO_16|MO_SIGN:
1381
- tcg_gen_ld16s_i64(tcg_dest, cpu_env, vect_off);
1382
+ tcg_gen_ld16s_i64(tcg_dest, tcg_env, vect_off);
1383
break;
1384
case MO_32|MO_SIGN:
1385
- tcg_gen_ld32s_i64(tcg_dest, cpu_env, vect_off);
1386
+ tcg_gen_ld32s_i64(tcg_dest, tcg_env, vect_off);
1387
break;
1388
case MO_64:
1389
case MO_64|MO_SIGN:
1390
- tcg_gen_ld_i64(tcg_dest, cpu_env, vect_off);
1391
+ tcg_gen_ld_i64(tcg_dest, tcg_env, vect_off);
1392
break;
1393
default:
1394
g_assert_not_reached();
1395
@@ -XXX,XX +XXX,XX @@ static void read_vec_element_i32(DisasContext *s, TCGv_i32 tcg_dest, int srcidx,
1396
int vect_off = vec_reg_offset(s, srcidx, element, memop & MO_SIZE);
1397
switch (memop) {
1398
case MO_8:
1399
- tcg_gen_ld8u_i32(tcg_dest, cpu_env, vect_off);
1400
+ tcg_gen_ld8u_i32(tcg_dest, tcg_env, vect_off);
1401
break;
1402
case MO_16:
1403
- tcg_gen_ld16u_i32(tcg_dest, cpu_env, vect_off);
1404
+ tcg_gen_ld16u_i32(tcg_dest, tcg_env, vect_off);
1405
break;
1406
case MO_8|MO_SIGN:
1407
- tcg_gen_ld8s_i32(tcg_dest, cpu_env, vect_off);
1408
+ tcg_gen_ld8s_i32(tcg_dest, tcg_env, vect_off);
1409
break;
1410
case MO_16|MO_SIGN:
1411
- tcg_gen_ld16s_i32(tcg_dest, cpu_env, vect_off);
1412
+ tcg_gen_ld16s_i32(tcg_dest, tcg_env, vect_off);
1413
break;
1414
case MO_32:
1415
case MO_32|MO_SIGN:
1416
- tcg_gen_ld_i32(tcg_dest, cpu_env, vect_off);
1417
+ tcg_gen_ld_i32(tcg_dest, tcg_env, vect_off);
1418
break;
1419
default:
1420
g_assert_not_reached();
1421
@@ -XXX,XX +XXX,XX @@ static void write_vec_element(DisasContext *s, TCGv_i64 tcg_src, int destidx,
1422
int vect_off = vec_reg_offset(s, destidx, element, memop & MO_SIZE);
1423
switch (memop) {
1424
case MO_8:
1425
- tcg_gen_st8_i64(tcg_src, cpu_env, vect_off);
1426
+ tcg_gen_st8_i64(tcg_src, tcg_env, vect_off);
1427
break;
1428
case MO_16:
1429
- tcg_gen_st16_i64(tcg_src, cpu_env, vect_off);
1430
+ tcg_gen_st16_i64(tcg_src, tcg_env, vect_off);
1431
break;
1432
case MO_32:
1433
- tcg_gen_st32_i64(tcg_src, cpu_env, vect_off);
1434
+ tcg_gen_st32_i64(tcg_src, tcg_env, vect_off);
1435
break;
1436
case MO_64:
1437
- tcg_gen_st_i64(tcg_src, cpu_env, vect_off);
1438
+ tcg_gen_st_i64(tcg_src, tcg_env, vect_off);
1439
break;
1440
default:
1441
g_assert_not_reached();
1442
@@ -XXX,XX +XXX,XX @@ static void write_vec_element_i32(DisasContext *s, TCGv_i32 tcg_src,
1443
int vect_off = vec_reg_offset(s, destidx, element, memop & MO_SIZE);
1444
switch (memop) {
1445
case MO_8:
1446
- tcg_gen_st8_i32(tcg_src, cpu_env, vect_off);
1447
+ tcg_gen_st8_i32(tcg_src, tcg_env, vect_off);
1448
break;
1449
case MO_16:
1450
- tcg_gen_st16_i32(tcg_src, cpu_env, vect_off);
1451
+ tcg_gen_st16_i32(tcg_src, tcg_env, vect_off);
1452
break;
1453
case MO_32:
1454
- tcg_gen_st_i32(tcg_src, cpu_env, vect_off);
1455
+ tcg_gen_st_i32(tcg_src, tcg_env, vect_off);
1456
break;
1457
default:
1458
g_assert_not_reached();
1459
@@ -XXX,XX +XXX,XX @@ static TCGv_i64 auth_branch_target(DisasContext *s, TCGv_i64 dst,
1460
1461
truedst = tcg_temp_new_i64();
1462
if (use_key_a) {
1463
- gen_helper_autia_combined(truedst, cpu_env, dst, modifier);
1464
+ gen_helper_autia_combined(truedst, tcg_env, dst, modifier);
1465
} else {
1466
- gen_helper_autib_combined(truedst, cpu_env, dst, modifier);
1467
+ gen_helper_autib_combined(truedst, tcg_env, dst, modifier);
1468
}
1469
return truedst;
1470
}
1471
@@ -XXX,XX +XXX,XX @@ static bool trans_ERET(DisasContext *s, arg_ERET *a)
1472
return true;
1473
}
1474
dst = tcg_temp_new_i64();
1475
- tcg_gen_ld_i64(dst, cpu_env,
1476
+ tcg_gen_ld_i64(dst, tcg_env,
1477
offsetof(CPUARMState, elr_el[s->current_el]));
1478
1479
translator_io_start(&s->base);
1480
1481
- gen_helper_exception_return(cpu_env, dst);
1482
+ gen_helper_exception_return(tcg_env, dst);
1483
/* Must exit loop to check un-masked IRQs */
1484
s->base.is_jmp = DISAS_EXIT;
1485
return true;
1486
@@ -XXX,XX +XXX,XX @@ static bool trans_ERETA(DisasContext *s, arg_reta *a)
1487
return true;
1488
}
1489
dst = tcg_temp_new_i64();
1490
- tcg_gen_ld_i64(dst, cpu_env,
1491
+ tcg_gen_ld_i64(dst, tcg_env,
1492
offsetof(CPUARMState, elr_el[s->current_el]));
1493
1494
dst = auth_branch_target(s, dst, cpu_X[31], !a->m);
1495
1496
translator_io_start(&s->base);
1497
1498
- gen_helper_exception_return(cpu_env, dst);
1499
+ gen_helper_exception_return(tcg_env, dst);
1500
/* Must exit loop to check un-masked IRQs */
1501
s->base.is_jmp = DISAS_EXIT;
1502
return true;
1503
@@ -XXX,XX +XXX,XX @@ static bool trans_WFE(DisasContext *s, arg_WFI *a)
1504
static bool trans_XPACLRI(DisasContext *s, arg_XPACLRI *a)
1505
{
1506
if (s->pauth_active) {
1507
- gen_helper_xpaci(cpu_X[30], cpu_env, cpu_X[30]);
1508
+ gen_helper_xpaci(cpu_X[30], tcg_env, cpu_X[30]);
1509
}
1510
return true;
1511
}
1512
@@ -XXX,XX +XXX,XX @@ static bool trans_XPACLRI(DisasContext *s, arg_XPACLRI *a)
1513
static bool trans_PACIA1716(DisasContext *s, arg_PACIA1716 *a)
1514
{
1515
if (s->pauth_active) {
1516
- gen_helper_pacia(cpu_X[17], cpu_env, cpu_X[17], cpu_X[16]);
1517
+ gen_helper_pacia(cpu_X[17], tcg_env, cpu_X[17], cpu_X[16]);
1518
}
1519
return true;
1520
}
1521
@@ -XXX,XX +XXX,XX @@ static bool trans_PACIA1716(DisasContext *s, arg_PACIA1716 *a)
1522
static bool trans_PACIB1716(DisasContext *s, arg_PACIB1716 *a)
1523
{
1524
if (s->pauth_active) {
1525
- gen_helper_pacib(cpu_X[17], cpu_env, cpu_X[17], cpu_X[16]);
1526
+ gen_helper_pacib(cpu_X[17], tcg_env, cpu_X[17], cpu_X[16]);
1527
}
1528
return true;
1529
}
1530
@@ -XXX,XX +XXX,XX @@ static bool trans_PACIB1716(DisasContext *s, arg_PACIB1716 *a)
1531
static bool trans_AUTIA1716(DisasContext *s, arg_AUTIA1716 *a)
1532
{
1533
if (s->pauth_active) {
1534
- gen_helper_autia(cpu_X[17], cpu_env, cpu_X[17], cpu_X[16]);
1535
+ gen_helper_autia(cpu_X[17], tcg_env, cpu_X[17], cpu_X[16]);
1536
}
1537
return true;
1538
}
1539
@@ -XXX,XX +XXX,XX @@ static bool trans_AUTIA1716(DisasContext *s, arg_AUTIA1716 *a)
1540
static bool trans_AUTIB1716(DisasContext *s, arg_AUTIB1716 *a)
1541
{
1542
if (s->pauth_active) {
1543
- gen_helper_autib(cpu_X[17], cpu_env, cpu_X[17], cpu_X[16]);
1544
+ gen_helper_autib(cpu_X[17], tcg_env, cpu_X[17], cpu_X[16]);
1545
}
1546
return true;
1547
}
1548
@@ -XXX,XX +XXX,XX @@ static bool trans_ESB(DisasContext *s, arg_ESB *a)
1549
* Test for EL2 present, and defer test for SEL2 to runtime.
1550
*/
1551
if (s->current_el <= 1 && arm_dc_feature(s, ARM_FEATURE_EL2)) {
1552
- gen_helper_vesb(cpu_env);
1553
+ gen_helper_vesb(tcg_env);
1554
}
1555
}
1556
return true;
1557
@@ -XXX,XX +XXX,XX @@ static bool trans_ESB(DisasContext *s, arg_ESB *a)
1558
static bool trans_PACIAZ(DisasContext *s, arg_PACIAZ *a)
1559
{
1560
if (s->pauth_active) {
1561
- gen_helper_pacia(cpu_X[30], cpu_env, cpu_X[30], tcg_constant_i64(0));
1562
+ gen_helper_pacia(cpu_X[30], tcg_env, cpu_X[30], tcg_constant_i64(0));
1563
}
1564
return true;
1565
}
1566
@@ -XXX,XX +XXX,XX @@ static bool trans_PACIAZ(DisasContext *s, arg_PACIAZ *a)
1567
static bool trans_PACIASP(DisasContext *s, arg_PACIASP *a)
1568
{
1569
if (s->pauth_active) {
1570
- gen_helper_pacia(cpu_X[30], cpu_env, cpu_X[30], cpu_X[31]);
1571
+ gen_helper_pacia(cpu_X[30], tcg_env, cpu_X[30], cpu_X[31]);
1572
}
1573
return true;
1574
}
1575
@@ -XXX,XX +XXX,XX @@ static bool trans_PACIASP(DisasContext *s, arg_PACIASP *a)
1576
static bool trans_PACIBZ(DisasContext *s, arg_PACIBZ *a)
1577
{
1578
if (s->pauth_active) {
1579
- gen_helper_pacib(cpu_X[30], cpu_env, cpu_X[30], tcg_constant_i64(0));
1580
+ gen_helper_pacib(cpu_X[30], tcg_env, cpu_X[30], tcg_constant_i64(0));
1581
}
1582
return true;
1583
}
1584
@@ -XXX,XX +XXX,XX @@ static bool trans_PACIBZ(DisasContext *s, arg_PACIBZ *a)
1585
static bool trans_PACIBSP(DisasContext *s, arg_PACIBSP *a)
1586
{
1587
if (s->pauth_active) {
1588
- gen_helper_pacib(cpu_X[30], cpu_env, cpu_X[30], cpu_X[31]);
1589
+ gen_helper_pacib(cpu_X[30], tcg_env, cpu_X[30], cpu_X[31]);
1590
}
1591
return true;
1592
}
1593
@@ -XXX,XX +XXX,XX @@ static bool trans_PACIBSP(DisasContext *s, arg_PACIBSP *a)
1594
static bool trans_AUTIAZ(DisasContext *s, arg_AUTIAZ *a)
1595
{
1596
if (s->pauth_active) {
1597
- gen_helper_autia(cpu_X[30], cpu_env, cpu_X[30], tcg_constant_i64(0));
1598
+ gen_helper_autia(cpu_X[30], tcg_env, cpu_X[30], tcg_constant_i64(0));
1599
}
1600
return true;
1601
}
1602
@@ -XXX,XX +XXX,XX @@ static bool trans_AUTIAZ(DisasContext *s, arg_AUTIAZ *a)
1603
static bool trans_AUTIASP(DisasContext *s, arg_AUTIASP *a)
1604
{
1605
if (s->pauth_active) {
1606
- gen_helper_autia(cpu_X[30], cpu_env, cpu_X[30], cpu_X[31]);
1607
+ gen_helper_autia(cpu_X[30], tcg_env, cpu_X[30], cpu_X[31]);
1608
}
1609
return true;
1610
}
1611
@@ -XXX,XX +XXX,XX @@ static bool trans_AUTIASP(DisasContext *s, arg_AUTIASP *a)
1612
static bool trans_AUTIBZ(DisasContext *s, arg_AUTIBZ *a)
1613
{
1614
if (s->pauth_active) {
1615
- gen_helper_autib(cpu_X[30], cpu_env, cpu_X[30], tcg_constant_i64(0));
1616
+ gen_helper_autib(cpu_X[30], tcg_env, cpu_X[30], tcg_constant_i64(0));
1617
}
1618
return true;
1619
}
1620
@@ -XXX,XX +XXX,XX @@ static bool trans_AUTIBZ(DisasContext *s, arg_AUTIBZ *a)
1621
static bool trans_AUTIBSP(DisasContext *s, arg_AUTIBSP *a)
1622
{
1623
if (s->pauth_active) {
1624
- gen_helper_autib(cpu_X[30], cpu_env, cpu_X[30], cpu_X[31]);
1625
+ gen_helper_autib(cpu_X[30], tcg_env, cpu_X[30], cpu_X[31]);
1626
}
1627
return true;
1628
}
1629
@@ -XXX,XX +XXX,XX @@ static bool trans_MSR_i_SPSEL(DisasContext *s, arg_i *a)
1630
if (s->current_el == 0) {
1631
return false;
1632
}
1633
- gen_helper_msr_i_spsel(cpu_env, tcg_constant_i32(a->imm & PSTATE_SP));
1634
+ gen_helper_msr_i_spsel(tcg_env, tcg_constant_i32(a->imm & PSTATE_SP));
1635
s->base.is_jmp = DISAS_TOO_MANY;
1636
return true;
1637
}
1638
@@ -XXX,XX +XXX,XX @@ static bool trans_MSR_i_TCO(DisasContext *s, arg_i *a)
1639
1640
static bool trans_MSR_i_DAIFSET(DisasContext *s, arg_i *a)
1641
{
1642
- gen_helper_msr_i_daifset(cpu_env, tcg_constant_i32(a->imm));
1643
+ gen_helper_msr_i_daifset(tcg_env, tcg_constant_i32(a->imm));
1644
s->base.is_jmp = DISAS_TOO_MANY;
1645
return true;
1646
}
1647
1648
static bool trans_MSR_i_DAIFCLEAR(DisasContext *s, arg_i *a)
1649
{
1650
- gen_helper_msr_i_daifclear(cpu_env, tcg_constant_i32(a->imm));
1651
+ gen_helper_msr_i_daifclear(tcg_env, tcg_constant_i32(a->imm));
1652
/* Exit the cpu loop to re-evaluate pending IRQs. */
1653
s->base.is_jmp = DISAS_UPDATE_EXIT;
1654
return true;
1655
@@ -XXX,XX +XXX,XX @@ static bool trans_MSR_i_SVCR(DisasContext *s, arg_MSR_i_SVCR *a)
1656
1657
if ((old ^ new) & a->mask) {
1658
/* At least one bit changes. */
1659
- gen_helper_set_svcr(cpu_env, tcg_constant_i32(new),
1660
+ gen_helper_set_svcr(tcg_env, tcg_constant_i32(new),
1661
tcg_constant_i32(a->mask));
1662
s->base.is_jmp = DISAS_TOO_MANY;
1663
}
1664
@@ -XXX,XX +XXX,XX @@ static void handle_sys(DisasContext *s, bool isread,
1665
switch (s->current_el) {
1666
case 0:
1667
if (dc_isar_feature(aa64_tidcp1, s)) {
1668
- gen_helper_tidcp_el0(cpu_env, tcg_constant_i32(syndrome));
1669
+ gen_helper_tidcp_el0(tcg_env, tcg_constant_i32(syndrome));
1670
}
1671
break;
1672
case 1:
1673
- gen_helper_tidcp_el1(cpu_env, tcg_constant_i32(syndrome));
1674
+ gen_helper_tidcp_el1(tcg_env, tcg_constant_i32(syndrome));
1675
break;
1676
}
1677
}
1678
@@ -XXX,XX +XXX,XX @@ static void handle_sys(DisasContext *s, bool isread,
1679
syndrome = syn_aa64_sysregtrap(op0, op1, op2, crn, crm, rt, isread);
1680
gen_a64_update_pc(s, 0);
1681
tcg_ri = tcg_temp_new_ptr();
1682
- gen_helper_access_check_cp_reg(tcg_ri, cpu_env,
1683
+ gen_helper_access_check_cp_reg(tcg_ri, tcg_env,
1684
tcg_constant_i32(key),
1685
tcg_constant_i32(syndrome),
1686
tcg_constant_i32(isread));
1687
@@ -XXX,XX +XXX,XX @@ static void handle_sys(DisasContext *s, bool isread,
1688
desc = FIELD_DP32(desc, MTEDESC, TCMA, s->tcma);
1689
1690
tcg_rt = tcg_temp_new_i64();
1691
- gen_helper_mte_check_zva(tcg_rt, cpu_env,
1692
+ gen_helper_mte_check_zva(tcg_rt, tcg_env,
1693
tcg_constant_i32(desc), cpu_reg(s, rt));
1694
} else {
1695
tcg_rt = clean_data_tbi(s, cpu_reg(s, rt));
1696
}
1697
- gen_helper_dc_zva(cpu_env, tcg_rt);
1698
+ gen_helper_dc_zva(tcg_env, tcg_rt);
1699
return;
1700
case ARM_CP_DC_GVA:
1701
{
1702
@@ -XXX,XX +XXX,XX @@ static void handle_sys(DisasContext *s, bool isread,
1703
/* Extract the tag from the register to match STZGM. */
1704
tag = tcg_temp_new_i64();
1705
tcg_gen_shri_i64(tag, tcg_rt, 56);
1706
- gen_helper_stzgm_tags(cpu_env, clean_addr, tag);
1707
+ gen_helper_stzgm_tags(tcg_env, clean_addr, tag);
1708
}
1709
}
1710
return;
1711
@@ -XXX,XX +XXX,XX @@ static void handle_sys(DisasContext *s, bool isread,
1712
/* For DC_GZVA, we can rely on DC_ZVA for the proper fault. */
1713
tcg_rt = cpu_reg(s, rt);
1714
clean_addr = clean_data_tbi(s, tcg_rt);
1715
- gen_helper_dc_zva(cpu_env, clean_addr);
1716
+ gen_helper_dc_zva(tcg_env, clean_addr);
1717
1718
if (s->ata[0]) {
1719
/* Extract the tag from the register to match STZGM. */
1720
tag = tcg_temp_new_i64();
1721
tcg_gen_shri_i64(tag, tcg_rt, 56);
1722
- gen_helper_stzgm_tags(cpu_env, clean_addr, tag);
1723
+ gen_helper_stzgm_tags(tcg_env, clean_addr, tag);
1724
}
1725
}
1726
return;
1727
@@ -XXX,XX +XXX,XX @@ static void handle_sys(DisasContext *s, bool isread,
1728
if (!tcg_ri) {
1729
tcg_ri = gen_lookup_cp_reg(key);
1730
}
1731
- gen_helper_get_cp_reg64(tcg_rt, cpu_env, tcg_ri);
1732
+ gen_helper_get_cp_reg64(tcg_rt, tcg_env, tcg_ri);
1733
} else {
1734
- tcg_gen_ld_i64(tcg_rt, cpu_env, ri->fieldoffset);
1735
+ tcg_gen_ld_i64(tcg_rt, tcg_env, ri->fieldoffset);
1736
}
1737
} else {
1738
if (ri->type & ARM_CP_CONST) {
1739
@@ -XXX,XX +XXX,XX @@ static void handle_sys(DisasContext *s, bool isread,
1740
if (!tcg_ri) {
1741
tcg_ri = gen_lookup_cp_reg(key);
1742
}
1743
- gen_helper_set_cp_reg64(cpu_env, tcg_ri, tcg_rt);
1744
+ gen_helper_set_cp_reg64(tcg_env, tcg_ri, tcg_rt);
1745
} else {
1746
- tcg_gen_st_i64(tcg_rt, cpu_env, ri->fieldoffset);
1747
+ tcg_gen_st_i64(tcg_rt, tcg_env, ri->fieldoffset);
1748
}
1749
}
1750
1751
@@ -XXX,XX +XXX,XX @@ static bool trans_HVC(DisasContext *s, arg_i *a)
1752
* as an undefined insn by runtime configuration.
1753
*/
1754
gen_a64_update_pc(s, 0);
1755
- gen_helper_pre_hvc(cpu_env);
1756
+ gen_helper_pre_hvc(tcg_env);
1757
/* Architecture requires ss advance before we do the actual work */
1758
gen_ss_advance(s);
1759
gen_exception_insn_el(s, 4, EXCP_HVC, syn_aa64_hvc(a->imm), 2);
1760
@@ -XXX,XX +XXX,XX @@ static bool trans_SMC(DisasContext *s, arg_i *a)
1761
return true;
1762
}
1763
gen_a64_update_pc(s, 0);
1764
- gen_helper_pre_smc(cpu_env, tcg_constant_i32(syn_aa64_smc(a->imm)));
1765
+ gen_helper_pre_smc(tcg_env, tcg_constant_i32(syn_aa64_smc(a->imm)));
1766
/* Architecture requires ss advance before we do the actual work */
1767
gen_ss_advance(s);
1768
gen_exception_insn_el(s, 4, EXCP_SMC, syn_aa64_smc(a->imm), 3);
1769
@@ -XXX,XX +XXX,XX @@ static bool trans_STGP(DisasContext *s, arg_ldstpair *a)
1770
/* Perform the tag store, if tag access enabled. */
1771
if (s->ata[0]) {
1772
if (tb_cflags(s->base.tb) & CF_PARALLEL) {
1773
- gen_helper_stg_parallel(cpu_env, dirty_addr, dirty_addr);
1774
+ gen_helper_stg_parallel(tcg_env, dirty_addr, dirty_addr);
1775
} else {
1776
- gen_helper_stg(cpu_env, dirty_addr, dirty_addr);
1777
+ gen_helper_stg(tcg_env, dirty_addr, dirty_addr);
1778
}
1779
}
1780
1781
@@ -XXX,XX +XXX,XX @@ static bool trans_LDRA(DisasContext *s, arg_LDRA *a)
1782
1783
if (s->pauth_active) {
1784
if (!a->m) {
1785
- gen_helper_autda_combined(dirty_addr, cpu_env, dirty_addr,
1786
+ gen_helper_autda_combined(dirty_addr, tcg_env, dirty_addr,
1787
tcg_constant_i64(0));
1788
} else {
1789
- gen_helper_autdb_combined(dirty_addr, cpu_env, dirty_addr,
1790
+ gen_helper_autdb_combined(dirty_addr, tcg_env, dirty_addr,
1791
tcg_constant_i64(0));
1792
}
1793
}
1794
@@ -XXX,XX +XXX,XX @@ static bool trans_STZGM(DisasContext *s, arg_ldst_tag *a)
1795
tcg_rt = cpu_reg(s, a->rt);
1796
1797
if (s->ata[0]) {
1798
- gen_helper_stzgm_tags(cpu_env, addr, tcg_rt);
1799
+ gen_helper_stzgm_tags(tcg_env, addr, tcg_rt);
1800
}
1801
/*
1802
* The non-tags portion of STZGM is mostly like DC_ZVA,
1803
@@ -XXX,XX +XXX,XX @@ static bool trans_STZGM(DisasContext *s, arg_ldst_tag *a)
1804
*/
1805
clean_addr = clean_data_tbi(s, addr);
1806
tcg_gen_andi_i64(clean_addr, clean_addr, -size);
1807
- gen_helper_dc_zva(cpu_env, clean_addr);
1808
+ gen_helper_dc_zva(tcg_env, clean_addr);
1809
return true;
1810
}
1811
1812
@@ -XXX,XX +XXX,XX @@ static bool trans_STGM(DisasContext *s, arg_ldst_tag *a)
1813
tcg_rt = cpu_reg(s, a->rt);
1814
1815
if (s->ata[0]) {
1816
- gen_helper_stgm(cpu_env, addr, tcg_rt);
1817
+ gen_helper_stgm(tcg_env, addr, tcg_rt);
1818
} else {
1819
MMUAccessType acc = MMU_DATA_STORE;
1820
int size = 4 << s->gm_blocksize;
1821
@@ -XXX,XX +XXX,XX @@ static bool trans_LDGM(DisasContext *s, arg_ldst_tag *a)
1822
tcg_rt = cpu_reg(s, a->rt);
1823
1824
if (s->ata[0]) {
1825
- gen_helper_ldgm(tcg_rt, cpu_env, addr);
1826
+ gen_helper_ldgm(tcg_rt, tcg_env, addr);
1827
} else {
1828
MMUAccessType acc = MMU_DATA_LOAD;
1829
int size = 4 << s->gm_blocksize;
1830
@@ -XXX,XX +XXX,XX @@ static bool trans_LDG(DisasContext *s, arg_ldst_tag *a)
1831
tcg_gen_andi_i64(addr, addr, -TAG_GRANULE);
1832
tcg_rt = cpu_reg(s, a->rt);
1833
if (s->ata[0]) {
1834
- gen_helper_ldg(tcg_rt, cpu_env, addr, tcg_rt);
1835
+ gen_helper_ldg(tcg_rt, tcg_env, addr, tcg_rt);
1836
} else {
1837
/*
1838
* Tag access disabled: we must check for aborts on the load
1839
@@ -XXX,XX +XXX,XX @@ static bool do_STG(DisasContext *s, arg_ldst_tag *a, bool is_zero, bool is_pair)
1840
* at least for system mode; user-only won't enforce alignment.
1841
*/
1842
if (is_pair) {
1843
- gen_helper_st2g_stub(cpu_env, addr);
1844
+ gen_helper_st2g_stub(tcg_env, addr);
1845
} else {
1846
- gen_helper_stg_stub(cpu_env, addr);
1847
+ gen_helper_stg_stub(tcg_env, addr);
1848
}
1849
} else if (tb_cflags(s->base.tb) & CF_PARALLEL) {
1850
if (is_pair) {
1851
- gen_helper_st2g_parallel(cpu_env, addr, tcg_rt);
1852
+ gen_helper_st2g_parallel(tcg_env, addr, tcg_rt);
1853
} else {
1854
- gen_helper_stg_parallel(cpu_env, addr, tcg_rt);
1855
+ gen_helper_stg_parallel(tcg_env, addr, tcg_rt);
1856
}
1857
} else {
1858
if (is_pair) {
1859
- gen_helper_st2g(cpu_env, addr, tcg_rt);
1860
+ gen_helper_st2g(tcg_env, addr, tcg_rt);
1861
} else {
1862
- gen_helper_stg(cpu_env, addr, tcg_rt);
1863
+ gen_helper_stg(tcg_env, addr, tcg_rt);
1864
}
1865
}
1866
1867
@@ -XXX,XX +XXX,XX @@ static bool do_SET(DisasContext *s, arg_set *a, bool is_epilogue,
1868
* the syndrome anyway, we let it extract them from there rather
1869
* than passing in an extra three integer arguments.
1870
*/
1871
- fn(cpu_env, tcg_constant_i32(syndrome), tcg_constant_i32(desc));
1872
+ fn(tcg_env, tcg_constant_i32(syndrome), tcg_constant_i32(desc));
1873
return true;
1874
}
1875
1876
@@ -XXX,XX +XXX,XX @@ static bool do_CPY(DisasContext *s, arg_cpy *a, bool is_epilogue, CpyFn fn)
1877
* the syndrome anyway, we let it extract them from there rather
1878
* than passing in an extra three integer arguments.
1879
*/
1880
- fn(cpu_env, tcg_constant_i32(syndrome), tcg_constant_i32(wdesc),
1881
+ fn(tcg_env, tcg_constant_i32(syndrome), tcg_constant_i32(wdesc),
1882
tcg_constant_i32(rdesc));
1883
return true;
1884
}
1885
@@ -XXX,XX +XXX,XX @@ static bool gen_add_sub_imm_with_tags(DisasContext *s, arg_rri_tag *a,
1886
tcg_rd = cpu_reg_sp(s, a->rd);
1887
1888
if (s->ata[0]) {
1889
- gen_helper_addsubg(tcg_rd, cpu_env, tcg_rn,
1890
+ gen_helper_addsubg(tcg_rd, tcg_env, tcg_rn,
1891
tcg_constant_i32(imm),
1892
tcg_constant_i32(a->uimm4));
1893
} else {
1894
@@ -XXX,XX +XXX,XX @@ static void disas_data_proc_1src(DisasContext *s, uint32_t insn)
1895
case MAP(1, 0x01, 0x00): /* PACIA */
1896
if (s->pauth_active) {
1897
tcg_rd = cpu_reg(s, rd);
1898
- gen_helper_pacia(tcg_rd, cpu_env, tcg_rd, cpu_reg_sp(s, rn));
1899
+ gen_helper_pacia(tcg_rd, tcg_env, tcg_rd, cpu_reg_sp(s, rn));
1900
} else if (!dc_isar_feature(aa64_pauth, s)) {
1901
goto do_unallocated;
1902
}
1903
@@ -XXX,XX +XXX,XX @@ static void disas_data_proc_1src(DisasContext *s, uint32_t insn)
1904
case MAP(1, 0x01, 0x01): /* PACIB */
1905
if (s->pauth_active) {
1906
tcg_rd = cpu_reg(s, rd);
1907
- gen_helper_pacib(tcg_rd, cpu_env, tcg_rd, cpu_reg_sp(s, rn));
1908
+ gen_helper_pacib(tcg_rd, tcg_env, tcg_rd, cpu_reg_sp(s, rn));
1909
} else if (!dc_isar_feature(aa64_pauth, s)) {
1910
goto do_unallocated;
1911
}
1912
@@ -XXX,XX +XXX,XX @@ static void disas_data_proc_1src(DisasContext *s, uint32_t insn)
1913
case MAP(1, 0x01, 0x02): /* PACDA */
1914
if (s->pauth_active) {
1915
tcg_rd = cpu_reg(s, rd);
1916
- gen_helper_pacda(tcg_rd, cpu_env, tcg_rd, cpu_reg_sp(s, rn));
1917
+ gen_helper_pacda(tcg_rd, tcg_env, tcg_rd, cpu_reg_sp(s, rn));
1918
} else if (!dc_isar_feature(aa64_pauth, s)) {
1919
goto do_unallocated;
1920
}
1921
@@ -XXX,XX +XXX,XX @@ static void disas_data_proc_1src(DisasContext *s, uint32_t insn)
1922
case MAP(1, 0x01, 0x03): /* PACDB */
1923
if (s->pauth_active) {
1924
tcg_rd = cpu_reg(s, rd);
1925
- gen_helper_pacdb(tcg_rd, cpu_env, tcg_rd, cpu_reg_sp(s, rn));
1926
+ gen_helper_pacdb(tcg_rd, tcg_env, tcg_rd, cpu_reg_sp(s, rn));
1927
} else if (!dc_isar_feature(aa64_pauth, s)) {
1928
goto do_unallocated;
1929
}
1930
@@ -XXX,XX +XXX,XX @@ static void disas_data_proc_1src(DisasContext *s, uint32_t insn)
1931
case MAP(1, 0x01, 0x04): /* AUTIA */
1932
if (s->pauth_active) {
1933
tcg_rd = cpu_reg(s, rd);
1934
- gen_helper_autia(tcg_rd, cpu_env, tcg_rd, cpu_reg_sp(s, rn));
1935
+ gen_helper_autia(tcg_rd, tcg_env, tcg_rd, cpu_reg_sp(s, rn));
1936
} else if (!dc_isar_feature(aa64_pauth, s)) {
1937
goto do_unallocated;
1938
}
1939
@@ -XXX,XX +XXX,XX @@ static void disas_data_proc_1src(DisasContext *s, uint32_t insn)
1940
case MAP(1, 0x01, 0x05): /* AUTIB */
1941
if (s->pauth_active) {
1942
tcg_rd = cpu_reg(s, rd);
1943
- gen_helper_autib(tcg_rd, cpu_env, tcg_rd, cpu_reg_sp(s, rn));
1944
+ gen_helper_autib(tcg_rd, tcg_env, tcg_rd, cpu_reg_sp(s, rn));
1945
} else if (!dc_isar_feature(aa64_pauth, s)) {
1946
goto do_unallocated;
1947
}
1948
@@ -XXX,XX +XXX,XX @@ static void disas_data_proc_1src(DisasContext *s, uint32_t insn)
1949
case MAP(1, 0x01, 0x06): /* AUTDA */
1950
if (s->pauth_active) {
1951
tcg_rd = cpu_reg(s, rd);
1952
- gen_helper_autda(tcg_rd, cpu_env, tcg_rd, cpu_reg_sp(s, rn));
1953
+ gen_helper_autda(tcg_rd, tcg_env, tcg_rd, cpu_reg_sp(s, rn));
1954
} else if (!dc_isar_feature(aa64_pauth, s)) {
1955
goto do_unallocated;
1956
}
1957
@@ -XXX,XX +XXX,XX @@ static void disas_data_proc_1src(DisasContext *s, uint32_t insn)
1958
case MAP(1, 0x01, 0x07): /* AUTDB */
1959
if (s->pauth_active) {
1960
tcg_rd = cpu_reg(s, rd);
1961
- gen_helper_autdb(tcg_rd, cpu_env, tcg_rd, cpu_reg_sp(s, rn));
1962
+ gen_helper_autdb(tcg_rd, tcg_env, tcg_rd, cpu_reg_sp(s, rn));
1963
} else if (!dc_isar_feature(aa64_pauth, s)) {
1964
goto do_unallocated;
1965
}
1966
@@ -XXX,XX +XXX,XX @@ static void disas_data_proc_1src(DisasContext *s, uint32_t insn)
1967
goto do_unallocated;
1968
} else if (s->pauth_active) {
1969
tcg_rd = cpu_reg(s, rd);
1970
- gen_helper_pacia(tcg_rd, cpu_env, tcg_rd, tcg_constant_i64(0));
1971
+ gen_helper_pacia(tcg_rd, tcg_env, tcg_rd, tcg_constant_i64(0));
1972
}
1973
break;
1974
case MAP(1, 0x01, 0x09): /* PACIZB */
1975
@@ -XXX,XX +XXX,XX @@ static void disas_data_proc_1src(DisasContext *s, uint32_t insn)
1976
goto do_unallocated;
1977
} else if (s->pauth_active) {
1978
tcg_rd = cpu_reg(s, rd);
1979
- gen_helper_pacib(tcg_rd, cpu_env, tcg_rd, tcg_constant_i64(0));
1980
+ gen_helper_pacib(tcg_rd, tcg_env, tcg_rd, tcg_constant_i64(0));
1981
}
1982
break;
1983
case MAP(1, 0x01, 0x0a): /* PACDZA */
1984
@@ -XXX,XX +XXX,XX @@ static void disas_data_proc_1src(DisasContext *s, uint32_t insn)
1985
goto do_unallocated;
1986
} else if (s->pauth_active) {
1987
tcg_rd = cpu_reg(s, rd);
1988
- gen_helper_pacda(tcg_rd, cpu_env, tcg_rd, tcg_constant_i64(0));
1989
+ gen_helper_pacda(tcg_rd, tcg_env, tcg_rd, tcg_constant_i64(0));
1990
}
1991
break;
1992
case MAP(1, 0x01, 0x0b): /* PACDZB */
1993
@@ -XXX,XX +XXX,XX @@ static void disas_data_proc_1src(DisasContext *s, uint32_t insn)
1994
goto do_unallocated;
1995
} else if (s->pauth_active) {
1996
tcg_rd = cpu_reg(s, rd);
1997
- gen_helper_pacdb(tcg_rd, cpu_env, tcg_rd, tcg_constant_i64(0));
1998
+ gen_helper_pacdb(tcg_rd, tcg_env, tcg_rd, tcg_constant_i64(0));
1999
}
2000
break;
2001
case MAP(1, 0x01, 0x0c): /* AUTIZA */
2002
@@ -XXX,XX +XXX,XX @@ static void disas_data_proc_1src(DisasContext *s, uint32_t insn)
2003
goto do_unallocated;
2004
} else if (s->pauth_active) {
2005
tcg_rd = cpu_reg(s, rd);
2006
- gen_helper_autia(tcg_rd, cpu_env, tcg_rd, tcg_constant_i64(0));
2007
+ gen_helper_autia(tcg_rd, tcg_env, tcg_rd, tcg_constant_i64(0));
2008
}
2009
break;
2010
case MAP(1, 0x01, 0x0d): /* AUTIZB */
2011
@@ -XXX,XX +XXX,XX @@ static void disas_data_proc_1src(DisasContext *s, uint32_t insn)
2012
goto do_unallocated;
2013
} else if (s->pauth_active) {
2014
tcg_rd = cpu_reg(s, rd);
2015
- gen_helper_autib(tcg_rd, cpu_env, tcg_rd, tcg_constant_i64(0));
2016
+ gen_helper_autib(tcg_rd, tcg_env, tcg_rd, tcg_constant_i64(0));
2017
}
2018
break;
2019
case MAP(1, 0x01, 0x0e): /* AUTDZA */
2020
@@ -XXX,XX +XXX,XX @@ static void disas_data_proc_1src(DisasContext *s, uint32_t insn)
2021
goto do_unallocated;
2022
} else if (s->pauth_active) {
2023
tcg_rd = cpu_reg(s, rd);
2024
- gen_helper_autda(tcg_rd, cpu_env, tcg_rd, tcg_constant_i64(0));
2025
+ gen_helper_autda(tcg_rd, tcg_env, tcg_rd, tcg_constant_i64(0));
2026
}
2027
break;
2028
case MAP(1, 0x01, 0x0f): /* AUTDZB */
2029
@@ -XXX,XX +XXX,XX @@ static void disas_data_proc_1src(DisasContext *s, uint32_t insn)
2030
goto do_unallocated;
2031
} else if (s->pauth_active) {
2032
tcg_rd = cpu_reg(s, rd);
2033
- gen_helper_autdb(tcg_rd, cpu_env, tcg_rd, tcg_constant_i64(0));
2034
+ gen_helper_autdb(tcg_rd, tcg_env, tcg_rd, tcg_constant_i64(0));
2035
}
2036
break;
2037
case MAP(1, 0x01, 0x10): /* XPACI */
2038
@@ -XXX,XX +XXX,XX @@ static void disas_data_proc_1src(DisasContext *s, uint32_t insn)
2039
goto do_unallocated;
2040
} else if (s->pauth_active) {
2041
tcg_rd = cpu_reg(s, rd);
2042
- gen_helper_xpaci(tcg_rd, cpu_env, tcg_rd);
2043
+ gen_helper_xpaci(tcg_rd, tcg_env, tcg_rd);
2044
}
2045
break;
2046
case MAP(1, 0x01, 0x11): /* XPACD */
2047
@@ -XXX,XX +XXX,XX @@ static void disas_data_proc_1src(DisasContext *s, uint32_t insn)
2048
goto do_unallocated;
2049
} else if (s->pauth_active) {
2050
tcg_rd = cpu_reg(s, rd);
2051
- gen_helper_xpacd(tcg_rd, cpu_env, tcg_rd);
2052
+ gen_helper_xpacd(tcg_rd, tcg_env, tcg_rd);
2053
}
2054
break;
2055
default:
2056
@@ -XXX,XX +XXX,XX @@ static void disas_data_proc_2src(DisasContext *s, uint32_t insn)
2057
goto do_unallocated;
2058
}
2059
if (s->ata[0]) {
2060
- gen_helper_irg(cpu_reg_sp(s, rd), cpu_env,
2061
+ gen_helper_irg(cpu_reg_sp(s, rd), tcg_env,
2062
cpu_reg_sp(s, rn), cpu_reg(s, rm));
2063
} else {
2064
gen_address_with_allocation_tag0(cpu_reg_sp(s, rd),
2065
@@ -XXX,XX +XXX,XX @@ static void disas_data_proc_2src(DisasContext *s, uint32_t insn)
2066
if (sf == 0 || !dc_isar_feature(aa64_pauth, s)) {
2067
goto do_unallocated;
2068
}
2069
- gen_helper_pacga(cpu_reg(s, rd), cpu_env,
2070
+ gen_helper_pacga(cpu_reg(s, rd), tcg_env,
2071
cpu_reg(s, rn), cpu_reg_sp(s, rm));
2072
break;
2073
case 16:
2074
@@ -XXX,XX +XXX,XX @@ static void handle_fp_1src_single(DisasContext *s, int opcode, int rd, int rn)
2075
gen_helper_vfp_negs(tcg_res, tcg_op);
2076
goto done;
2077
case 0x3: /* FSQRT */
2078
- gen_helper_vfp_sqrts(tcg_res, tcg_op, cpu_env);
2079
+ gen_helper_vfp_sqrts(tcg_res, tcg_op, tcg_env);
2080
goto done;
2081
case 0x6: /* BFCVT */
2082
gen_fpst = gen_helper_bfcvt;
2083
@@ -XXX,XX +XXX,XX @@ static void handle_fp_1src_double(DisasContext *s, int opcode, int rd, int rn)
2084
gen_helper_vfp_negd(tcg_res, tcg_op);
2085
goto done;
2086
case 0x3: /* FSQRT */
2087
- gen_helper_vfp_sqrtd(tcg_res, tcg_op, cpu_env);
2088
+ gen_helper_vfp_sqrtd(tcg_res, tcg_op, tcg_env);
2089
goto done;
2090
case 0x8: /* FRINTN */
2091
case 0x9: /* FRINTP */
2092
@@ -XXX,XX +XXX,XX @@ static void handle_fp_fcvt(DisasContext *s, int opcode,
2093
if (dtype == 1) {
2094
/* Single to double */
2095
TCGv_i64 tcg_rd = tcg_temp_new_i64();
2096
- gen_helper_vfp_fcvtds(tcg_rd, tcg_rn, cpu_env);
2097
+ gen_helper_vfp_fcvtds(tcg_rd, tcg_rn, tcg_env);
2098
write_fp_dreg(s, rd, tcg_rd);
2099
} else {
2100
/* Single to half */
2101
@@ -XXX,XX +XXX,XX @@ static void handle_fp_fcvt(DisasContext *s, int opcode,
2102
TCGv_i32 tcg_rd = tcg_temp_new_i32();
2103
if (dtype == 0) {
2104
/* Double to single */
2105
- gen_helper_vfp_fcvtsd(tcg_rd, tcg_rn, cpu_env);
2106
+ gen_helper_vfp_fcvtsd(tcg_rd, tcg_rn, tcg_env);
2107
} else {
2108
TCGv_ptr fpst = fpstatus_ptr(FPST_FPCR);
2109
TCGv_i32 ahp = get_ahp_flag();
2110
@@ -XXX,XX +XXX,XX @@ static void handle_fmov(DisasContext *s, int rd, int rn, int type, bool itof)
2111
break;
2112
case 2:
2113
/* 64 bit to top half. */
2114
- tcg_gen_st_i64(tcg_rn, cpu_env, fp_reg_hi_offset(s, rd));
2115
+ tcg_gen_st_i64(tcg_rn, tcg_env, fp_reg_hi_offset(s, rd));
2116
clear_vec_high(s, true, rd);
2117
break;
2118
case 3:
2119
@@ -XXX,XX +XXX,XX @@ static void handle_fmov(DisasContext *s, int rd, int rn, int type, bool itof)
2120
switch (type) {
2121
case 0:
2122
/* 32 bit */
2123
- tcg_gen_ld32u_i64(tcg_rd, cpu_env, fp_reg_offset(s, rn, MO_32));
2124
+ tcg_gen_ld32u_i64(tcg_rd, tcg_env, fp_reg_offset(s, rn, MO_32));
2125
break;
2126
case 1:
2127
/* 64 bit */
2128
- tcg_gen_ld_i64(tcg_rd, cpu_env, fp_reg_offset(s, rn, MO_64));
2129
+ tcg_gen_ld_i64(tcg_rd, tcg_env, fp_reg_offset(s, rn, MO_64));
2130
break;
2131
case 2:
2132
/* 64 bits from top half */
2133
- tcg_gen_ld_i64(tcg_rd, cpu_env, fp_reg_hi_offset(s, rn));
2134
+ tcg_gen_ld_i64(tcg_rd, tcg_env, fp_reg_hi_offset(s, rn));
2135
break;
2136
case 3:
2137
/* 16 bit */
2138
- tcg_gen_ld16u_i64(tcg_rd, cpu_env, fp_reg_offset(s, rn, MO_16));
2139
+ tcg_gen_ld16u_i64(tcg_rd, tcg_env, fp_reg_offset(s, rn, MO_16));
2140
break;
2141
default:
2142
g_assert_not_reached();
2143
@@ -XXX,XX +XXX,XX @@ static void disas_simd_tb(DisasContext *s, uint32_t insn)
2144
}
2145
2146
tcg_gen_gvec_2_ptr(vec_full_reg_offset(s, rd),
2147
- vec_full_reg_offset(s, rm), cpu_env,
2148
+ vec_full_reg_offset(s, rm), tcg_env,
2149
is_q ? 16 : 8, vec_full_reg_size(s),
2150
(len << 6) | (is_tbx << 5) | rn,
2151
gen_helper_simd_tblx);
2152
@@ -XXX,XX +XXX,XX @@ static void handle_vec_simd_sqshrn(DisasContext *s, bool is_scalar, bool is_q,
2153
read_vec_element(s, tcg_rn, rn, i, ldop);
2154
handle_shri_with_rndacc(tcg_rd, tcg_rn, tcg_round,
2155
false, is_u_shift, size+1, shift);
2156
- narrowfn(tcg_rd_narrowed, cpu_env, tcg_rd);
2157
+ narrowfn(tcg_rd_narrowed, tcg_env, tcg_rd);
2158
tcg_gen_extu_i32_i64(tcg_rd, tcg_rd_narrowed);
2159
if (i == 0) {
2160
tcg_gen_mov_i64(tcg_final, tcg_rd);
2161
@@ -XXX,XX +XXX,XX @@ static void handle_simd_qshl(DisasContext *s, bool scalar, bool is_q,
2162
TCGv_i64 tcg_op = tcg_temp_new_i64();
2163
2164
read_vec_element(s, tcg_op, rn, pass, MO_64);
2165
- genfn(tcg_op, cpu_env, tcg_op, tcg_shift);
2166
+ genfn(tcg_op, tcg_env, tcg_op, tcg_shift);
2167
write_vec_element(s, tcg_op, rd, pass, MO_64);
2168
}
2169
clear_vec_high(s, is_q, rd);
2170
@@ -XXX,XX +XXX,XX @@ static void handle_simd_qshl(DisasContext *s, bool scalar, bool is_q,
2171
TCGv_i32 tcg_op = tcg_temp_new_i32();
2172
2173
read_vec_element_i32(s, tcg_op, rn, pass, memop);
2174
- genfn(tcg_op, cpu_env, tcg_op, tcg_shift);
2175
+ genfn(tcg_op, tcg_env, tcg_op, tcg_shift);
2176
if (scalar) {
2177
switch (size) {
2178
case 0:
2179
@@ -XXX,XX +XXX,XX @@ static void disas_simd_scalar_three_reg_diff(DisasContext *s, uint32_t insn)
2180
read_vec_element(s, tcg_op2, rm, 0, MO_32 | MO_SIGN);
2181
2182
tcg_gen_mul_i64(tcg_res, tcg_op1, tcg_op2);
2183
- gen_helper_neon_addl_saturate_s64(tcg_res, cpu_env, tcg_res, tcg_res);
2184
+ gen_helper_neon_addl_saturate_s64(tcg_res, tcg_env, tcg_res, tcg_res);
2185
2186
switch (opcode) {
2187
case 0xd: /* SQDMULL, SQDMULL2 */
2188
@@ -XXX,XX +XXX,XX @@ static void disas_simd_scalar_three_reg_diff(DisasContext *s, uint32_t insn)
2189
/* fall through */
2190
case 0x9: /* SQDMLAL, SQDMLAL2 */
2191
read_vec_element(s, tcg_op1, rd, 0, MO_64);
2192
- gen_helper_neon_addl_saturate_s64(tcg_res, cpu_env,
2193
+ gen_helper_neon_addl_saturate_s64(tcg_res, tcg_env,
2194
tcg_res, tcg_op1);
2195
break;
2196
default:
2197
@@ -XXX,XX +XXX,XX @@ static void disas_simd_scalar_three_reg_diff(DisasContext *s, uint32_t insn)
2198
TCGv_i64 tcg_res = tcg_temp_new_i64();
2199
2200
gen_helper_neon_mull_s16(tcg_res, tcg_op1, tcg_op2);
2201
- gen_helper_neon_addl_saturate_s32(tcg_res, cpu_env, tcg_res, tcg_res);
2202
+ gen_helper_neon_addl_saturate_s32(tcg_res, tcg_env, tcg_res, tcg_res);
2203
2204
switch (opcode) {
2205
case 0xd: /* SQDMULL, SQDMULL2 */
2206
@@ -XXX,XX +XXX,XX @@ static void disas_simd_scalar_three_reg_diff(DisasContext *s, uint32_t insn)
2207
{
2208
TCGv_i64 tcg_op3 = tcg_temp_new_i64();
2209
read_vec_element(s, tcg_op3, rd, 0, MO_32);
2210
- gen_helper_neon_addl_saturate_s32(tcg_res, cpu_env,
2211
+ gen_helper_neon_addl_saturate_s32(tcg_res, tcg_env,
2212
tcg_res, tcg_op3);
2213
break;
2214
}
2215
@@ -XXX,XX +XXX,XX @@ static void handle_3same_64(DisasContext *s, int opcode, bool u,
2216
switch (opcode) {
2217
case 0x1: /* SQADD */
2218
if (u) {
2219
- gen_helper_neon_qadd_u64(tcg_rd, cpu_env, tcg_rn, tcg_rm);
2220
+ gen_helper_neon_qadd_u64(tcg_rd, tcg_env, tcg_rn, tcg_rm);
2221
} else {
2222
- gen_helper_neon_qadd_s64(tcg_rd, cpu_env, tcg_rn, tcg_rm);
2223
+ gen_helper_neon_qadd_s64(tcg_rd, tcg_env, tcg_rn, tcg_rm);
2224
}
2225
break;
2226
case 0x5: /* SQSUB */
2227
if (u) {
2228
- gen_helper_neon_qsub_u64(tcg_rd, cpu_env, tcg_rn, tcg_rm);
2229
+ gen_helper_neon_qsub_u64(tcg_rd, tcg_env, tcg_rn, tcg_rm);
2230
} else {
2231
- gen_helper_neon_qsub_s64(tcg_rd, cpu_env, tcg_rn, tcg_rm);
2232
+ gen_helper_neon_qsub_s64(tcg_rd, tcg_env, tcg_rn, tcg_rm);
2233
}
2234
break;
2235
case 0x6: /* CMGT, CMHI */
2236
@@ -XXX,XX +XXX,XX @@ static void handle_3same_64(DisasContext *s, int opcode, bool u,
2237
break;
2238
case 0x9: /* SQSHL, UQSHL */
2239
if (u) {
2240
- gen_helper_neon_qshl_u64(tcg_rd, cpu_env, tcg_rn, tcg_rm);
2241
+ gen_helper_neon_qshl_u64(tcg_rd, tcg_env, tcg_rn, tcg_rm);
2242
} else {
2243
- gen_helper_neon_qshl_s64(tcg_rd, cpu_env, tcg_rn, tcg_rm);
2244
+ gen_helper_neon_qshl_s64(tcg_rd, tcg_env, tcg_rn, tcg_rm);
2245
}
2246
break;
2247
case 0xa: /* SRSHL, URSHL */
2248
@@ -XXX,XX +XXX,XX @@ static void handle_3same_64(DisasContext *s, int opcode, bool u,
2249
break;
2250
case 0xb: /* SQRSHL, UQRSHL */
2251
if (u) {
2252
- gen_helper_neon_qrshl_u64(tcg_rd, cpu_env, tcg_rn, tcg_rm);
2253
+ gen_helper_neon_qrshl_u64(tcg_rd, tcg_env, tcg_rn, tcg_rm);
2254
} else {
2255
- gen_helper_neon_qrshl_s64(tcg_rd, cpu_env, tcg_rn, tcg_rm);
2256
+ gen_helper_neon_qrshl_s64(tcg_rd, tcg_env, tcg_rn, tcg_rm);
2257
}
2258
break;
2259
case 0x10: /* ADD, SUB */
2260
@@ -XXX,XX +XXX,XX @@ static void disas_simd_scalar_three_reg_same(DisasContext *s, uint32_t insn)
2261
g_assert_not_reached();
2262
}
2263
2264
- genenvfn(tcg_rd32, cpu_env, tcg_rn, tcg_rm);
2265
+ genenvfn(tcg_rd32, tcg_env, tcg_rn, tcg_rm);
2266
tcg_gen_extu_i32_i64(tcg_rd, tcg_rd32);
2267
}
2268
2269
@@ -XXX,XX +XXX,XX @@ static void disas_simd_scalar_three_reg_same_extra(DisasContext *s,
2270
switch (opcode) {
2271
case 0x0: /* SQRDMLAH */
2272
if (size == 1) {
2273
- gen_helper_neon_qrdmlah_s16(ele3, cpu_env, ele1, ele2, ele3);
2274
+ gen_helper_neon_qrdmlah_s16(ele3, tcg_env, ele1, ele2, ele3);
2275
} else {
2276
- gen_helper_neon_qrdmlah_s32(ele3, cpu_env, ele1, ele2, ele3);
2277
+ gen_helper_neon_qrdmlah_s32(ele3, tcg_env, ele1, ele2, ele3);
2278
}
2279
break;
2280
case 0x1: /* SQRDMLSH */
2281
if (size == 1) {
2282
- gen_helper_neon_qrdmlsh_s16(ele3, cpu_env, ele1, ele2, ele3);
2283
+ gen_helper_neon_qrdmlsh_s16(ele3, tcg_env, ele1, ele2, ele3);
2284
} else {
2285
- gen_helper_neon_qrdmlsh_s32(ele3, cpu_env, ele1, ele2, ele3);
2286
+ gen_helper_neon_qrdmlsh_s32(ele3, tcg_env, ele1, ele2, ele3);
2287
}
2288
break;
2289
default:
2290
@@ -XXX,XX +XXX,XX @@ static void handle_2misc_64(DisasContext *s, int opcode, bool u,
2291
break;
2292
case 0x7: /* SQABS, SQNEG */
2293
if (u) {
2294
- gen_helper_neon_qneg_s64(tcg_rd, cpu_env, tcg_rn);
2295
+ gen_helper_neon_qneg_s64(tcg_rd, tcg_env, tcg_rn);
2296
} else {
2297
- gen_helper_neon_qabs_s64(tcg_rd, cpu_env, tcg_rn);
2298
+ gen_helper_neon_qabs_s64(tcg_rd, tcg_env, tcg_rn);
2299
}
2300
break;
2301
case 0xa: /* CMLT */
2302
@@ -XXX,XX +XXX,XX @@ static void handle_2misc_64(DisasContext *s, int opcode, bool u,
2303
gen_helper_vfp_negd(tcg_rd, tcg_rn);
2304
break;
2305
case 0x7f: /* FSQRT */
2306
- gen_helper_vfp_sqrtd(tcg_rd, tcg_rn, cpu_env);
2307
+ gen_helper_vfp_sqrtd(tcg_rd, tcg_rn, tcg_env);
2308
break;
2309
case 0x1a: /* FCVTNS */
2310
case 0x1b: /* FCVTMS */
2311
@@ -XXX,XX +XXX,XX @@ static void handle_2misc_narrow(DisasContext *s, bool scalar,
2312
case 0x16: /* FCVTN, FCVTN2 */
2313
/* 32 bit to 16 bit or 64 bit to 32 bit float conversion */
2314
if (size == 2) {
2315
- gen_helper_vfp_fcvtsd(tcg_res[pass], tcg_op, cpu_env);
2316
+ gen_helper_vfp_fcvtsd(tcg_res[pass], tcg_op, tcg_env);
2317
} else {
2318
TCGv_i32 tcg_lo = tcg_temp_new_i32();
2319
TCGv_i32 tcg_hi = tcg_temp_new_i32();
2320
@@ -XXX,XX +XXX,XX @@ static void handle_2misc_narrow(DisasContext *s, bool scalar,
2321
* with von Neumann rounding (round to odd)
2322
*/
2323
assert(size == 2);
2324
- gen_helper_fcvtx_f64_to_f32(tcg_res[pass], tcg_op, cpu_env);
2325
+ gen_helper_fcvtx_f64_to_f32(tcg_res[pass], tcg_op, tcg_env);
2326
break;
2327
default:
2328
g_assert_not_reached();
2329
@@ -XXX,XX +XXX,XX @@ static void handle_2misc_narrow(DisasContext *s, bool scalar,
2330
if (genfn) {
2331
genfn(tcg_res[pass], tcg_op);
2332
} else if (genenvfn) {
2333
- genenvfn(tcg_res[pass], cpu_env, tcg_op);
2334
+ genenvfn(tcg_res[pass], tcg_env, tcg_op);
2335
}
2336
}
2337
2338
@@ -XXX,XX +XXX,XX @@ static void handle_2misc_satacc(DisasContext *s, bool is_scalar, bool is_u,
2339
read_vec_element(s, tcg_rd, rd, pass, MO_64);
2340
2341
if (is_u) { /* USQADD */
2342
- gen_helper_neon_uqadd_s64(tcg_rd, cpu_env, tcg_rn, tcg_rd);
2343
+ gen_helper_neon_uqadd_s64(tcg_rd, tcg_env, tcg_rn, tcg_rd);
2344
} else { /* SUQADD */
2345
- gen_helper_neon_sqadd_u64(tcg_rd, cpu_env, tcg_rn, tcg_rd);
2346
+ gen_helper_neon_sqadd_u64(tcg_rd, tcg_env, tcg_rn, tcg_rd);
2347
}
2348
write_vec_element(s, tcg_rd, rd, pass, MO_64);
2349
}
2350
@@ -XXX,XX +XXX,XX @@ static void handle_2misc_satacc(DisasContext *s, bool is_scalar, bool is_u,
2351
if (is_u) { /* USQADD */
2352
switch (size) {
2353
case 0:
2354
- gen_helper_neon_uqadd_s8(tcg_rd, cpu_env, tcg_rn, tcg_rd);
2355
+ gen_helper_neon_uqadd_s8(tcg_rd, tcg_env, tcg_rn, tcg_rd);
2356
break;
2357
case 1:
2358
- gen_helper_neon_uqadd_s16(tcg_rd, cpu_env, tcg_rn, tcg_rd);
2359
+ gen_helper_neon_uqadd_s16(tcg_rd, tcg_env, tcg_rn, tcg_rd);
2360
break;
2361
case 2:
2362
- gen_helper_neon_uqadd_s32(tcg_rd, cpu_env, tcg_rn, tcg_rd);
2363
+ gen_helper_neon_uqadd_s32(tcg_rd, tcg_env, tcg_rn, tcg_rd);
2364
break;
2365
default:
2366
g_assert_not_reached();
2367
@@ -XXX,XX +XXX,XX @@ static void handle_2misc_satacc(DisasContext *s, bool is_scalar, bool is_u,
2368
} else { /* SUQADD */
2369
switch (size) {
2370
case 0:
2371
- gen_helper_neon_sqadd_u8(tcg_rd, cpu_env, tcg_rn, tcg_rd);
2372
+ gen_helper_neon_sqadd_u8(tcg_rd, tcg_env, tcg_rn, tcg_rd);
2373
break;
2374
case 1:
2375
- gen_helper_neon_sqadd_u16(tcg_rd, cpu_env, tcg_rn, tcg_rd);
2376
+ gen_helper_neon_sqadd_u16(tcg_rd, tcg_env, tcg_rn, tcg_rd);
2377
break;
2378
case 2:
2379
- gen_helper_neon_sqadd_u32(tcg_rd, cpu_env, tcg_rn, tcg_rd);
2380
+ gen_helper_neon_sqadd_u32(tcg_rd, tcg_env, tcg_rn, tcg_rd);
2381
break;
2382
default:
2383
g_assert_not_reached();
2384
@@ -XXX,XX +XXX,XX @@ static void disas_simd_scalar_two_reg_misc(DisasContext *s, uint32_t insn)
2385
{ gen_helper_neon_qabs_s32, gen_helper_neon_qneg_s32 },
2386
};
2387
genfn = fns[size][u];
2388
- genfn(tcg_rd, cpu_env, tcg_rn);
2389
+ genfn(tcg_rd, tcg_env, tcg_rn);
2390
break;
2391
}
2392
case 0x1a: /* FCVTNS */
2393
@@ -XXX,XX +XXX,XX @@ static void handle_3rd_widening(DisasContext *s, int is_q, int is_u, int size,
2394
case 11: /* SQDMLSL, SQDMLSL2 */
2395
case 13: /* SQDMULL, SQDMULL2 */
2396
tcg_gen_mul_i64(tcg_passres, tcg_op1, tcg_op2);
2397
- gen_helper_neon_addl_saturate_s64(tcg_passres, cpu_env,
2398
+ gen_helper_neon_addl_saturate_s64(tcg_passres, tcg_env,
2399
tcg_passres, tcg_passres);
2400
break;
2401
default:
2402
@@ -XXX,XX +XXX,XX @@ static void handle_3rd_widening(DisasContext *s, int is_q, int is_u, int size,
2403
if (accop < 0) {
2404
tcg_gen_neg_i64(tcg_passres, tcg_passres);
2405
}
2406
- gen_helper_neon_addl_saturate_s64(tcg_res[pass], cpu_env,
2407
+ gen_helper_neon_addl_saturate_s64(tcg_res[pass], tcg_env,
2408
tcg_res[pass], tcg_passres);
2409
} else if (accop > 0) {
2410
tcg_gen_add_i64(tcg_res[pass], tcg_res[pass], tcg_passres);
2411
@@ -XXX,XX +XXX,XX @@ static void handle_3rd_widening(DisasContext *s, int is_q, int is_u, int size,
2412
case 13: /* SQDMULL, SQDMULL2 */
2413
assert(size == 1);
2414
gen_helper_neon_mull_s16(tcg_passres, tcg_op1, tcg_op2);
2415
- gen_helper_neon_addl_saturate_s32(tcg_passres, cpu_env,
2416
+ gen_helper_neon_addl_saturate_s32(tcg_passres, tcg_env,
2417
tcg_passres, tcg_passres);
2418
break;
2419
default:
2420
@@ -XXX,XX +XXX,XX @@ static void handle_3rd_widening(DisasContext *s, int is_q, int is_u, int size,
2421
if (accop < 0) {
2422
gen_helper_neon_negl_u32(tcg_passres, tcg_passres);
2423
}
2424
- gen_helper_neon_addl_saturate_s32(tcg_res[pass], cpu_env,
2425
+ gen_helper_neon_addl_saturate_s32(tcg_res[pass], tcg_env,
2426
tcg_res[pass],
2427
tcg_passres);
2428
} else {
2429
@@ -XXX,XX +XXX,XX @@ static void disas_simd_3same_float(DisasContext *s, uint32_t insn)
2430
int data = (is_2 << 1) | is_s;
2431
tcg_gen_gvec_3_ptr(vec_full_reg_offset(s, rd),
2432
vec_full_reg_offset(s, rn),
2433
- vec_full_reg_offset(s, rm), cpu_env,
2434
+ vec_full_reg_offset(s, rm), tcg_env,
2435
is_q ? 16 : 8, vec_full_reg_size(s),
2436
data, gen_helper_gvec_fmlal_a64);
2437
}
2438
@@ -XXX,XX +XXX,XX @@ static void disas_simd_3same_int(DisasContext *s, uint32_t insn)
2439
}
2440
2441
if (genenvfn) {
2442
- genenvfn(tcg_res, cpu_env, tcg_op1, tcg_op2);
2443
+ genenvfn(tcg_res, tcg_env, tcg_op1, tcg_op2);
2444
} else {
2445
genfn(tcg_res, tcg_op1, tcg_op2);
2446
}
2447
@@ -XXX,XX +XXX,XX @@ static void handle_2misc_widening(DisasContext *s, int opcode, bool is_q,
2448
tcg_res[pass] = tcg_temp_new_i64();
2449
2450
read_vec_element_i32(s, tcg_op, rn, srcelt + pass, MO_32);
2451
- gen_helper_vfp_fcvtds(tcg_res[pass], tcg_op, cpu_env);
2452
+ gen_helper_vfp_fcvtds(tcg_res[pass], tcg_op, tcg_env);
2453
}
2454
for (pass = 0; pass < 2; pass++) {
2455
write_vec_element(s, tcg_res[pass], rd, pass, MO_64);
2456
@@ -XXX,XX +XXX,XX @@ static void disas_simd_two_reg_misc(DisasContext *s, uint32_t insn)
2457
break;
2458
case 0x7: /* SQABS, SQNEG */
2459
if (u) {
2460
- gen_helper_neon_qneg_s32(tcg_res, cpu_env, tcg_op);
2461
+ gen_helper_neon_qneg_s32(tcg_res, tcg_env, tcg_op);
2462
} else {
2463
- gen_helper_neon_qabs_s32(tcg_res, cpu_env, tcg_op);
2464
+ gen_helper_neon_qabs_s32(tcg_res, tcg_env, tcg_op);
2465
}
2466
break;
2467
case 0x2f: /* FABS */
2468
@@ -XXX,XX +XXX,XX @@ static void disas_simd_two_reg_misc(DisasContext *s, uint32_t insn)
2469
gen_helper_vfp_negs(tcg_res, tcg_op);
2470
break;
2471
case 0x7f: /* FSQRT */
2472
- gen_helper_vfp_sqrts(tcg_res, tcg_op, cpu_env);
2473
+ gen_helper_vfp_sqrts(tcg_res, tcg_op, tcg_env);
2474
break;
2475
case 0x1a: /* FCVTNS */
2476
case 0x1b: /* FCVTMS */
2477
@@ -XXX,XX +XXX,XX @@ static void disas_simd_two_reg_misc(DisasContext *s, uint32_t insn)
2478
{ gen_helper_neon_qabs_s16, gen_helper_neon_qneg_s16 },
2479
};
2480
genfn = fns[size][u];
2481
- genfn(tcg_res, cpu_env, tcg_op);
2482
+ genfn(tcg_res, tcg_env, tcg_op);
2483
break;
2484
}
2485
case 0x4: /* CLS, CLZ */
2486
@@ -XXX,XX +XXX,XX @@ static void disas_simd_indexed(DisasContext *s, uint32_t insn)
2487
return;
2488
}
2489
size = MO_16;
2490
- /* is_fp, but we pass cpu_env not fp_status. */
2491
+ /* is_fp, but we pass tcg_env not fp_status. */
2492
break;
2493
default:
2494
unallocated_encoding(s);
2495
@@ -XXX,XX +XXX,XX @@ static void disas_simd_indexed(DisasContext *s, uint32_t insn)
2496
int data = (index << 2) | (is_2 << 1) | is_s;
2497
tcg_gen_gvec_3_ptr(vec_full_reg_offset(s, rd),
2498
vec_full_reg_offset(s, rn),
2499
- vec_full_reg_offset(s, rm), cpu_env,
2500
+ vec_full_reg_offset(s, rm), tcg_env,
2501
is_q ? 16 : 8, vec_full_reg_size(s),
2502
data, gen_helper_gvec_fmlal_idx_a64);
2503
}
2504
@@ -XXX,XX +XXX,XX @@ static void disas_simd_indexed(DisasContext *s, uint32_t insn)
2505
break;
2506
case 0x0c: /* SQDMULH */
2507
if (size == 1) {
2508
- gen_helper_neon_qdmulh_s16(tcg_res, cpu_env,
2509
+ gen_helper_neon_qdmulh_s16(tcg_res, tcg_env,
2510
tcg_op, tcg_idx);
2511
} else {
2512
- gen_helper_neon_qdmulh_s32(tcg_res, cpu_env,
2513
+ gen_helper_neon_qdmulh_s32(tcg_res, tcg_env,
2514
tcg_op, tcg_idx);
2515
}
2516
break;
2517
case 0x0d: /* SQRDMULH */
2518
if (size == 1) {
2519
- gen_helper_neon_qrdmulh_s16(tcg_res, cpu_env,
2520
+ gen_helper_neon_qrdmulh_s16(tcg_res, tcg_env,
2521
tcg_op, tcg_idx);
2522
} else {
2523
- gen_helper_neon_qrdmulh_s32(tcg_res, cpu_env,
2524
+ gen_helper_neon_qrdmulh_s32(tcg_res, tcg_env,
2525
tcg_op, tcg_idx);
2526
}
2527
break;
2528
@@ -XXX,XX +XXX,XX @@ static void disas_simd_indexed(DisasContext *s, uint32_t insn)
2529
read_vec_element_i32(s, tcg_res, rd, pass,
2530
is_scalar ? size : MO_32);
2531
if (size == 1) {
2532
- gen_helper_neon_qrdmlah_s16(tcg_res, cpu_env,
2533
+ gen_helper_neon_qrdmlah_s16(tcg_res, tcg_env,
2534
tcg_op, tcg_idx, tcg_res);
2535
} else {
2536
- gen_helper_neon_qrdmlah_s32(tcg_res, cpu_env,
2537
+ gen_helper_neon_qrdmlah_s32(tcg_res, tcg_env,
2538
tcg_op, tcg_idx, tcg_res);
2539
}
2540
break;
2541
@@ -XXX,XX +XXX,XX @@ static void disas_simd_indexed(DisasContext *s, uint32_t insn)
2542
read_vec_element_i32(s, tcg_res, rd, pass,
2543
is_scalar ? size : MO_32);
2544
if (size == 1) {
2545
- gen_helper_neon_qrdmlsh_s16(tcg_res, cpu_env,
2546
+ gen_helper_neon_qrdmlsh_s16(tcg_res, tcg_env,
2547
tcg_op, tcg_idx, tcg_res);
2548
} else {
2549
- gen_helper_neon_qrdmlsh_s32(tcg_res, cpu_env,
2550
+ gen_helper_neon_qrdmlsh_s32(tcg_res, tcg_env,
2551
tcg_op, tcg_idx, tcg_res);
2552
}
2553
break;
2554
@@ -XXX,XX +XXX,XX @@ static void disas_simd_indexed(DisasContext *s, uint32_t insn)
2555
2556
if (satop) {
2557
/* saturating, doubling */
2558
- gen_helper_neon_addl_saturate_s64(tcg_passres, cpu_env,
2559
+ gen_helper_neon_addl_saturate_s64(tcg_passres, tcg_env,
2560
tcg_passres, tcg_passres);
2561
}
2562
2563
@@ -XXX,XX +XXX,XX @@ static void disas_simd_indexed(DisasContext *s, uint32_t insn)
2564
tcg_gen_neg_i64(tcg_passres, tcg_passres);
2565
/* fall through */
2566
case 0x3: /* SQDMLAL, SQDMLAL2 */
2567
- gen_helper_neon_addl_saturate_s64(tcg_res[pass], cpu_env,
2568
+ gen_helper_neon_addl_saturate_s64(tcg_res[pass], tcg_env,
2569
tcg_res[pass],
2570
tcg_passres);
2571
break;
2572
@@ -XXX,XX +XXX,XX @@ static void disas_simd_indexed(DisasContext *s, uint32_t insn)
2573
gen_helper_neon_mull_u16(tcg_passres, tcg_op, tcg_idx);
2574
}
2575
if (satop) {
2576
- gen_helper_neon_addl_saturate_s32(tcg_passres, cpu_env,
2577
+ gen_helper_neon_addl_saturate_s32(tcg_passres, tcg_env,
2578
tcg_passres, tcg_passres);
2579
}
2580
2581
@@ -XXX,XX +XXX,XX @@ static void disas_simd_indexed(DisasContext *s, uint32_t insn)
2582
gen_helper_neon_negl_u32(tcg_passres, tcg_passres);
2583
/* fall through */
2584
case 0x3: /* SQDMLAL, SQDMLAL2 */
2585
- gen_helper_neon_addl_saturate_s32(tcg_res[pass], cpu_env,
2586
+ gen_helper_neon_addl_saturate_s32(tcg_res[pass], tcg_env,
2587
tcg_res[pass],
2588
tcg_passres);
2589
break;
2590
@@ -XXX,XX +XXX,XX @@ static void aarch64_tr_translate_insn(DisasContextBase *dcbase, CPUState *cpu)
2591
* start of the TB.
2592
*/
2593
assert(s->base.num_insns == 1);
2594
- gen_helper_exception_pc_alignment(cpu_env, tcg_constant_tl(pc));
2595
+ gen_helper_exception_pc_alignment(tcg_env, tcg_constant_tl(pc));
2596
s->base.is_jmp = DISAS_NORETURN;
2597
s->base.pc_next = QEMU_ALIGN_UP(pc, 4);
2598
return;
2599
@@ -XXX,XX +XXX,XX @@ static void aarch64_tr_tb_stop(DisasContextBase *dcbase, CPUState *cpu)
2600
break;
2601
case DISAS_WFE:
2602
gen_a64_update_pc(dc, 4);
2603
- gen_helper_wfe(cpu_env);
2604
+ gen_helper_wfe(tcg_env);
2605
break;
2606
case DISAS_YIELD:
2607
gen_a64_update_pc(dc, 4);
2608
- gen_helper_yield(cpu_env);
2609
+ gen_helper_yield(tcg_env);
2610
break;
2611
case DISAS_WFI:
2612
/*
2613
@@ -XXX,XX +XXX,XX @@ static void aarch64_tr_tb_stop(DisasContextBase *dcbase, CPUState *cpu)
2614
* the CPU if trying to debug across a WFI.
2615
*/
2616
gen_a64_update_pc(dc, 4);
2617
- gen_helper_wfi(cpu_env, tcg_constant_i32(4));
2618
+ gen_helper_wfi(tcg_env, tcg_constant_i32(4));
2619
/*
2620
* The helper doesn't necessarily throw an exception, but we
2621
* must go back to the main loop to check for interrupts anyway.
2622
diff --git a/target/arm/tcg/translate-m-nocp.c b/target/arm/tcg/translate-m-nocp.c
2623
index XXXXXXX..XXXXXXX 100644
2624
--- a/target/arm/tcg/translate-m-nocp.c
2625
+++ b/target/arm/tcg/translate-m-nocp.c
2626
@@ -XXX,XX +XXX,XX @@ static bool trans_VLLDM_VLSTM(DisasContext *s, arg_VLLDM_VLSTM *a)
2627
2628
fptr = load_reg(s, a->rn);
2629
if (a->l) {
2630
- gen_helper_v7m_vlldm(cpu_env, fptr);
2631
+ gen_helper_v7m_vlldm(tcg_env, fptr);
2632
} else {
2633
- gen_helper_v7m_vlstm(cpu_env, fptr);
2634
+ gen_helper_v7m_vlstm(tcg_env, fptr);
2635
}
2636
2637
clear_eci_state(s);
2638
@@ -XXX,XX +XXX,XX @@ static bool gen_M_fp_sysreg_write(DisasContext *s, int regno,
2639
switch (regno) {
2640
case ARM_VFP_FPSCR:
2641
tmp = loadfn(s, opaque, true);
2642
- gen_helper_vfp_set_fpscr(cpu_env, tmp);
2643
+ gen_helper_vfp_set_fpscr(tcg_env, tmp);
2644
gen_lookup_tb(s);
2645
break;
2646
case ARM_VFP_FPSCR_NZCVQC:
2647
@@ -XXX,XX +XXX,XX @@ static bool gen_M_fp_sysreg_write(DisasContext *s, int regno,
2648
R_V7M_CONTROL_SFPA_SHIFT, 1);
2649
store_cpu_field(control, v7m.control[M_REG_S]);
2650
tcg_gen_andi_i32(tmp, tmp, ~FPCR_NZCV_MASK);
2651
- gen_helper_vfp_set_fpscr(cpu_env, tmp);
2652
+ gen_helper_vfp_set_fpscr(tcg_env, tmp);
2653
s->base.is_jmp = DISAS_UPDATE_NOCHAIN;
2654
break;
2655
}
2656
@@ -XXX,XX +XXX,XX @@ static bool gen_M_fp_sysreg_read(DisasContext *s, int regno,
2657
switch (regno) {
2658
case ARM_VFP_FPSCR:
2659
tmp = tcg_temp_new_i32();
2660
- gen_helper_vfp_get_fpscr(tmp, cpu_env);
2661
+ gen_helper_vfp_get_fpscr(tmp, tcg_env);
2662
storefn(s, opaque, tmp, true);
2663
break;
2664
case ARM_VFP_FPSCR_NZCVQC:
2665
tmp = tcg_temp_new_i32();
2666
- gen_helper_vfp_get_fpscr(tmp, cpu_env);
2667
+ gen_helper_vfp_get_fpscr(tmp, tcg_env);
2668
tcg_gen_andi_i32(tmp, tmp, FPCR_NZCVQC_MASK);
2669
storefn(s, opaque, tmp, true);
2670
break;
2671
@@ -XXX,XX +XXX,XX @@ static bool gen_M_fp_sysreg_read(DisasContext *s, int regno,
2672
/* Bits [27:0] from FPSCR, bit [31] from CONTROL.SFPA */
2673
tmp = tcg_temp_new_i32();
2674
sfpa = tcg_temp_new_i32();
2675
- gen_helper_vfp_get_fpscr(tmp, cpu_env);
2676
+ gen_helper_vfp_get_fpscr(tmp, tcg_env);
2677
tcg_gen_andi_i32(tmp, tmp, ~FPCR_NZCV_MASK);
2678
control = load_cpu_field(v7m.control[M_REG_S]);
2679
tcg_gen_andi_i32(sfpa, control, R_V7M_CONTROL_SFPA_MASK);
2680
@@ -XXX,XX +XXX,XX @@ static bool gen_M_fp_sysreg_read(DisasContext *s, int regno,
2681
tcg_gen_andi_i32(control, control, ~R_V7M_CONTROL_SFPA_MASK);
2682
store_cpu_field(control, v7m.control[M_REG_S]);
2683
fpscr = load_cpu_field(v7m.fpdscr[M_REG_NS]);
2684
- gen_helper_vfp_set_fpscr(cpu_env, fpscr);
2685
+ gen_helper_vfp_set_fpscr(tcg_env, fpscr);
2686
lookup_tb = true;
2687
break;
2688
}
2689
@@ -XXX,XX +XXX,XX @@ static bool gen_M_fp_sysreg_read(DisasContext *s, int regno,
2690
tmp = tcg_temp_new_i32();
2691
sfpa = tcg_temp_new_i32();
2692
fpscr = tcg_temp_new_i32();
2693
- gen_helper_vfp_get_fpscr(fpscr, cpu_env);
2694
+ gen_helper_vfp_get_fpscr(fpscr, tcg_env);
2695
tcg_gen_andi_i32(tmp, fpscr, ~FPCR_NZCV_MASK);
2696
control = load_cpu_field(v7m.control[M_REG_S]);
2697
tcg_gen_andi_i32(sfpa, control, R_V7M_CONTROL_SFPA_MASK);
2698
@@ -XXX,XX +XXX,XX @@ static bool gen_M_fp_sysreg_read(DisasContext *s, int regno,
2699
fpdscr = load_cpu_field(v7m.fpdscr[M_REG_NS]);
2700
tcg_gen_movcond_i32(TCG_COND_EQ, fpscr, sfpa, tcg_constant_i32(0),
2701
fpdscr, fpscr);
2702
- gen_helper_vfp_set_fpscr(cpu_env, fpscr);
2703
+ gen_helper_vfp_set_fpscr(tcg_env, fpscr);
2704
break;
2705
}
2706
case ARM_VFP_VPR:
2707
@@ -XXX,XX +XXX,XX @@ static void fp_sysreg_to_memory(DisasContext *s, void *opaque, TCGv_i32 value,
2708
}
2709
2710
if (s->v8m_stackcheck && a->rn == 13 && a->w) {
2711
- gen_helper_v8m_stackcheck(cpu_env, addr);
2712
+ gen_helper_v8m_stackcheck(tcg_env, addr);
2713
}
2714
2715
if (do_access) {
2716
@@ -XXX,XX +XXX,XX @@ static TCGv_i32 memory_to_fp_sysreg(DisasContext *s, void *opaque,
2717
}
2718
2719
if (s->v8m_stackcheck && a->rn == 13 && a->w) {
2720
- gen_helper_v8m_stackcheck(cpu_env, addr);
2721
+ gen_helper_v8m_stackcheck(tcg_env, addr);
2722
}
2723
2724
if (do_access) {
2725
diff --git a/target/arm/tcg/translate-mve.c b/target/arm/tcg/translate-mve.c
2726
index XXXXXXX..XXXXXXX 100644
2727
--- a/target/arm/tcg/translate-mve.c
2728
+++ b/target/arm/tcg/translate-mve.c
2729
@@ -XXX,XX +XXX,XX @@ static inline long mve_qreg_offset(unsigned reg)
2730
static TCGv_ptr mve_qreg_ptr(unsigned reg)
2731
{
2732
TCGv_ptr ret = tcg_temp_new_ptr();
2733
- tcg_gen_addi_ptr(ret, cpu_env, mve_qreg_offset(reg));
2734
+ tcg_gen_addi_ptr(ret, tcg_env, mve_qreg_offset(reg));
2735
return ret;
2736
}
2737
2738
@@ -XXX,XX +XXX,XX @@ static bool do_ldst(DisasContext *s, arg_VLDR_VSTR *a, MVEGenLdStFn *fn,
2739
}
2740
2741
qreg = mve_qreg_ptr(a->qd);
2742
- fn(cpu_env, qreg, addr);
2743
+ fn(tcg_env, qreg, addr);
2744
2745
/*
2746
* Writeback always happens after the last beat of the insn,
2747
@@ -XXX,XX +XXX,XX @@ static bool do_ldst_sg(DisasContext *s, arg_vldst_sg *a, MVEGenLdStSGFn fn)
2748
2749
qd = mve_qreg_ptr(a->qd);
2750
qm = mve_qreg_ptr(a->qm);
2751
- fn(cpu_env, qd, qm, addr);
2752
+ fn(tcg_env, qd, qm, addr);
2753
mve_update_eci(s);
2754
return true;
2755
}
2756
@@ -XXX,XX +XXX,XX @@ static bool do_ldst_sg_imm(DisasContext *s, arg_vldst_sg_imm *a,
2757
2758
qd = mve_qreg_ptr(a->qd);
2759
qm = mve_qreg_ptr(a->qm);
2760
- fn(cpu_env, qd, qm, tcg_constant_i32(offset));
2761
+ fn(tcg_env, qd, qm, tcg_constant_i32(offset));
2762
mve_update_eci(s);
2763
return true;
2764
}
2765
@@ -XXX,XX +XXX,XX @@ static bool do_vldst_il(DisasContext *s, arg_vldst_il *a, MVEGenLdStIlFn *fn,
2766
* We pass the index of Qd, not a pointer, because the helper must
2767
* access multiple Q registers starting at Qd and working up.
2768
*/
2769
- fn(cpu_env, tcg_constant_i32(a->qd), rn);
2770
+ fn(tcg_env, tcg_constant_i32(a->qd), rn);
2771
2772
if (a->w) {
2773
tcg_gen_addi_i32(rn, rn, addrinc);
2774
@@ -XXX,XX +XXX,XX @@ static bool trans_VDUP(DisasContext *s, arg_VDUP *a)
2775
} else {
2776
qd = mve_qreg_ptr(a->qd);
2777
tcg_gen_dup_i32(a->size, rt, rt);
2778
- gen_helper_mve_vdup(cpu_env, qd, rt);
2779
+ gen_helper_mve_vdup(tcg_env, qd, rt);
2780
}
2781
mve_update_eci(s);
2782
return true;
2783
@@ -XXX,XX +XXX,XX @@ static bool do_1op_vec(DisasContext *s, arg_1op *a, MVEGenOneOpFn fn,
2784
} else {
2785
qd = mve_qreg_ptr(a->qd);
2786
qm = mve_qreg_ptr(a->qm);
2787
- fn(cpu_env, qd, qm);
2788
+ fn(tcg_env, qd, qm);
2789
}
2790
mve_update_eci(s);
2791
return true;
2792
@@ -XXX,XX +XXX,XX @@ static bool do_vcvt_rmode(DisasContext *s, arg_1op *a,
2793
2794
qd = mve_qreg_ptr(a->qd);
2795
qm = mve_qreg_ptr(a->qm);
2796
- fn(cpu_env, qd, qm, tcg_constant_i32(arm_rmode_to_sf(rmode)));
2797
+ fn(tcg_env, qd, qm, tcg_constant_i32(arm_rmode_to_sf(rmode)));
2798
mve_update_eci(s);
2799
return true;
2800
}
2801
@@ -XXX,XX +XXX,XX @@ static bool do_2op_vec(DisasContext *s, arg_2op *a, MVEGenTwoOpFn fn,
2802
qd = mve_qreg_ptr(a->qd);
2803
qn = mve_qreg_ptr(a->qn);
2804
qm = mve_qreg_ptr(a->qm);
2805
- fn(cpu_env, qd, qn, qm);
2806
+ fn(tcg_env, qd, qn, qm);
2807
}
2808
mve_update_eci(s);
2809
return true;
2810
@@ -XXX,XX +XXX,XX @@ static bool do_2op_scalar(DisasContext *s, arg_2scalar *a,
2811
qd = mve_qreg_ptr(a->qd);
2812
qn = mve_qreg_ptr(a->qn);
2813
rm = load_reg(s, a->rm);
2814
- fn(cpu_env, qd, qn, rm);
2815
+ fn(tcg_env, qd, qn, rm);
2816
mve_update_eci(s);
2817
return true;
2818
}
2819
@@ -XXX,XX +XXX,XX @@ static bool do_long_dual_acc(DisasContext *s, arg_vmlaldav *a,
2820
rda_i = tcg_constant_i64(0);
2821
}
2822
2823
- fn(rda_o, cpu_env, qn, qm, rda_i);
2824
+ fn(rda_o, tcg_env, qn, qm, rda_i);
2825
2826
rdalo = tcg_temp_new_i32();
2827
rdahi = tcg_temp_new_i32();
2828
@@ -XXX,XX +XXX,XX @@ static bool do_dual_acc(DisasContext *s, arg_vmladav *a, MVEGenDualAccOpFn *fn)
2829
rda_o = tcg_temp_new_i32();
2830
}
2831
2832
- fn(rda_o, cpu_env, qn, qm, rda_i);
2833
+ fn(rda_o, tcg_env, qn, qm, rda_i);
2834
store_reg(s, a->rda, rda_o);
2835
2836
mve_update_eci(s);
2837
@@ -XXX,XX +XXX,XX @@ static bool trans_VPNOT(DisasContext *s, arg_VPNOT *a)
2838
return true;
2839
}
2840
2841
- gen_helper_mve_vpnot(cpu_env);
2842
+ gen_helper_mve_vpnot(tcg_env);
2843
/* This insn updates predication bits */
2844
s->base.is_jmp = DISAS_UPDATE_NOCHAIN;
2845
mve_update_eci(s);
2846
@@ -XXX,XX +XXX,XX @@ static bool trans_VADDV(DisasContext *s, arg_VADDV *a)
2847
}
2848
2849
qm = mve_qreg_ptr(a->qm);
2850
- fns[a->size][a->u](rda_o, cpu_env, qm, rda_i);
2851
+ fns[a->size][a->u](rda_o, tcg_env, qm, rda_i);
2852
store_reg(s, a->rda, rda_o);
2853
2854
mve_update_eci(s);
2855
@@ -XXX,XX +XXX,XX @@ static bool trans_VADDLV(DisasContext *s, arg_VADDLV *a)
2856
2857
qm = mve_qreg_ptr(a->qm);
2858
if (a->u) {
2859
- gen_helper_mve_vaddlv_u(rda_o, cpu_env, qm, rda_i);
2860
+ gen_helper_mve_vaddlv_u(rda_o, tcg_env, qm, rda_i);
2861
} else {
2862
- gen_helper_mve_vaddlv_s(rda_o, cpu_env, qm, rda_i);
2863
+ gen_helper_mve_vaddlv_s(rda_o, tcg_env, qm, rda_i);
2864
}
2865
2866
rdalo = tcg_temp_new_i32();
2867
@@ -XXX,XX +XXX,XX @@ static bool do_1imm(DisasContext *s, arg_1imm *a, MVEGenOneOpImmFn *fn,
2868
imm, 16, 16);
2869
} else {
2870
qd = mve_qreg_ptr(a->qd);
2871
- fn(cpu_env, qd, tcg_constant_i64(imm));
2872
+ fn(tcg_env, qd, tcg_constant_i64(imm));
2873
}
2874
mve_update_eci(s);
2875
return true;
2876
@@ -XXX,XX +XXX,XX @@ static bool do_2shift_vec(DisasContext *s, arg_2shift *a, MVEGenTwoOpShiftFn fn,
2877
} else {
2878
qd = mve_qreg_ptr(a->qd);
2879
qm = mve_qreg_ptr(a->qm);
2880
- fn(cpu_env, qd, qm, tcg_constant_i32(shift));
2881
+ fn(tcg_env, qd, qm, tcg_constant_i32(shift));
2882
}
2883
mve_update_eci(s);
2884
return true;
2885
@@ -XXX,XX +XXX,XX @@ static bool do_2shift_scalar(DisasContext *s, arg_shl_scalar *a,
2886
2887
qda = mve_qreg_ptr(a->qda);
2888
rm = load_reg(s, a->rm);
2889
- fn(cpu_env, qda, qda, rm);
2890
+ fn(tcg_env, qda, qda, rm);
2891
mve_update_eci(s);
2892
return true;
2893
}
2894
@@ -XXX,XX +XXX,XX @@ static bool trans_VSHLC(DisasContext *s, arg_VSHLC *a)
2895
2896
qd = mve_qreg_ptr(a->qd);
2897
rdm = load_reg(s, a->rdm);
2898
- gen_helper_mve_vshlc(rdm, cpu_env, qd, rdm, tcg_constant_i32(a->imm));
2899
+ gen_helper_mve_vshlc(rdm, tcg_env, qd, rdm, tcg_constant_i32(a->imm));
2900
store_reg(s, a->rdm, rdm);
2901
mve_update_eci(s);
2902
return true;
2903
@@ -XXX,XX +XXX,XX @@ static bool do_vidup(DisasContext *s, arg_vidup *a, MVEGenVIDUPFn *fn)
2904
2905
qd = mve_qreg_ptr(a->qd);
2906
rn = load_reg(s, a->rn);
2907
- fn(rn, cpu_env, qd, rn, tcg_constant_i32(a->imm));
2908
+ fn(rn, tcg_env, qd, rn, tcg_constant_i32(a->imm));
2909
store_reg(s, a->rn, rn);
2910
mve_update_eci(s);
2911
return true;
2912
@@ -XXX,XX +XXX,XX @@ static bool do_viwdup(DisasContext *s, arg_viwdup *a, MVEGenVIWDUPFn *fn)
2913
qd = mve_qreg_ptr(a->qd);
2914
rn = load_reg(s, a->rn);
2915
rm = load_reg(s, a->rm);
2916
- fn(rn, cpu_env, qd, rn, rm, tcg_constant_i32(a->imm));
2917
+ fn(rn, tcg_env, qd, rn, rm, tcg_constant_i32(a->imm));
2918
store_reg(s, a->rn, rn);
2919
mve_update_eci(s);
2920
return true;
2921
@@ -XXX,XX +XXX,XX @@ static bool do_vcmp(DisasContext *s, arg_vcmp *a, MVEGenCmpFn *fn)
2922
2923
qn = mve_qreg_ptr(a->qn);
2924
qm = mve_qreg_ptr(a->qm);
2925
- fn(cpu_env, qn, qm);
2926
+ fn(tcg_env, qn, qm);
2927
if (a->mask) {
2928
/* VPT */
2929
gen_vpst(s, a->mask);
2930
@@ -XXX,XX +XXX,XX @@ static bool do_vcmp_scalar(DisasContext *s, arg_vcmp_scalar *a,
2931
} else {
2932
rm = load_reg(s, a->rm);
2933
}
2934
- fn(cpu_env, qn, rm);
2935
+ fn(tcg_env, qn, rm);
2936
if (a->mask) {
2937
/* VPT */
2938
gen_vpst(s, a->mask);
2939
@@ -XXX,XX +XXX,XX @@ static bool do_vmaxv(DisasContext *s, arg_vmaxv *a, MVEGenVADDVFn fn)
2940
2941
qm = mve_qreg_ptr(a->qm);
2942
rda = load_reg(s, a->rda);
2943
- fn(rda, cpu_env, qm, rda);
2944
+ fn(rda, tcg_env, qm, rda);
2945
store_reg(s, a->rda, rda);
2946
mve_update_eci(s);
2947
return true;
2948
@@ -XXX,XX +XXX,XX @@ static bool do_vabav(DisasContext *s, arg_vabav *a, MVEGenVABAVFn *fn)
2949
qm = mve_qreg_ptr(a->qm);
2950
qn = mve_qreg_ptr(a->qn);
2951
rda = load_reg(s, a->rda);
2952
- fn(rda, cpu_env, qn, qm, rda);
2953
+ fn(rda, tcg_env, qn, qm, rda);
2954
store_reg(s, a->rda, rda);
2955
mve_update_eci(s);
2956
return true;
2957
diff --git a/target/arm/tcg/translate-neon.c b/target/arm/tcg/translate-neon.c
2958
index XXXXXXX..XXXXXXX 100644
2959
--- a/target/arm/tcg/translate-neon.c
2960
+++ b/target/arm/tcg/translate-neon.c
2961
@@ -XXX,XX +XXX,XX @@
2962
static TCGv_ptr vfp_reg_ptr(bool dp, int reg)
2963
{
2964
TCGv_ptr ret = tcg_temp_new_ptr();
2965
- tcg_gen_addi_ptr(ret, cpu_env, vfp_reg_offset(dp, reg));
2966
+ tcg_gen_addi_ptr(ret, tcg_env, vfp_reg_offset(dp, reg));
2967
return ret;
2968
}
2969
2970
@@ -XXX,XX +XXX,XX @@ static void neon_load_element(TCGv_i32 var, int reg, int ele, MemOp mop)
2971
2972
switch (mop) {
2973
case MO_UB:
2974
- tcg_gen_ld8u_i32(var, cpu_env, offset);
2975
+ tcg_gen_ld8u_i32(var, tcg_env, offset);
2976
break;
2977
case MO_UW:
2978
- tcg_gen_ld16u_i32(var, cpu_env, offset);
2979
+ tcg_gen_ld16u_i32(var, tcg_env, offset);
2980
break;
2981
case MO_UL:
2982
- tcg_gen_ld_i32(var, cpu_env, offset);
2983
+ tcg_gen_ld_i32(var, tcg_env, offset);
2984
break;
2985
default:
2986
g_assert_not_reached();
2987
@@ -XXX,XX +XXX,XX @@ static void neon_load_element64(TCGv_i64 var, int reg, int ele, MemOp mop)
2988
2989
switch (mop) {
2990
case MO_UB:
2991
- tcg_gen_ld8u_i64(var, cpu_env, offset);
2992
+ tcg_gen_ld8u_i64(var, tcg_env, offset);
2993
break;
2994
case MO_UW:
2995
- tcg_gen_ld16u_i64(var, cpu_env, offset);
2996
+ tcg_gen_ld16u_i64(var, tcg_env, offset);
2997
break;
2998
case MO_UL:
2999
- tcg_gen_ld32u_i64(var, cpu_env, offset);
3000
+ tcg_gen_ld32u_i64(var, tcg_env, offset);
3001
break;
3002
case MO_UQ:
3003
- tcg_gen_ld_i64(var, cpu_env, offset);
3004
+ tcg_gen_ld_i64(var, tcg_env, offset);
3005
break;
3006
default:
3007
g_assert_not_reached();
3008
@@ -XXX,XX +XXX,XX @@ static void neon_store_element(int reg, int ele, MemOp size, TCGv_i32 var)
3009
3010
switch (size) {
3011
case MO_8:
3012
- tcg_gen_st8_i32(var, cpu_env, offset);
3013
+ tcg_gen_st8_i32(var, tcg_env, offset);
3014
break;
3015
case MO_16:
3016
- tcg_gen_st16_i32(var, cpu_env, offset);
3017
+ tcg_gen_st16_i32(var, tcg_env, offset);
3018
break;
3019
case MO_32:
3020
- tcg_gen_st_i32(var, cpu_env, offset);
3021
+ tcg_gen_st_i32(var, tcg_env, offset);
3022
break;
3023
default:
3024
g_assert_not_reached();
3025
@@ -XXX,XX +XXX,XX @@ static void neon_store_element64(int reg, int ele, MemOp size, TCGv_i64 var)
3026
3027
switch (size) {
3028
case MO_8:
3029
- tcg_gen_st8_i64(var, cpu_env, offset);
3030
+ tcg_gen_st8_i64(var, tcg_env, offset);
3031
break;
3032
case MO_16:
3033
- tcg_gen_st16_i64(var, cpu_env, offset);
3034
+ tcg_gen_st16_i64(var, tcg_env, offset);
3035
break;
3036
case MO_32:
3037
- tcg_gen_st32_i64(var, cpu_env, offset);
3038
+ tcg_gen_st32_i64(var, tcg_env, offset);
3039
break;
3040
case MO_64:
3041
- tcg_gen_st_i64(var, cpu_env, offset);
3042
+ tcg_gen_st_i64(var, tcg_env, offset);
3043
break;
3044
default:
3045
g_assert_not_reached();
3046
@@ -XXX,XX +XXX,XX @@ static bool trans_VFML(DisasContext *s, arg_VFML *a)
3047
tcg_gen_gvec_3_ptr(vfp_reg_offset(1, a->vd),
3048
vfp_reg_offset(a->q, a->vn),
3049
vfp_reg_offset(a->q, a->vm),
3050
- cpu_env, opr_sz, opr_sz, a->s, /* is_2 == 0 */
3051
+ tcg_env, opr_sz, opr_sz, a->s, /* is_2 == 0 */
3052
gen_helper_gvec_fmlal_a32);
3053
return true;
3054
}
3055
@@ -XXX,XX +XXX,XX @@ static bool trans_VFML_scalar(DisasContext *s, arg_VFML_scalar *a)
3056
tcg_gen_gvec_3_ptr(vfp_reg_offset(1, a->vd),
3057
vfp_reg_offset(a->q, a->vn),
3058
vfp_reg_offset(a->q, a->rm),
3059
- cpu_env, opr_sz, opr_sz,
3060
+ tcg_env, opr_sz, opr_sz,
3061
(a->index << 2) | a->s, /* is_2 == 0 */
3062
gen_helper_gvec_fmlal_idx_a32);
3063
return true;
3064
@@ -XXX,XX +XXX,XX @@ DO_SHA2(SHA256SU1, gen_helper_crypto_sha256su1)
3065
#define DO_3SAME_64_ENV(INSN, FUNC) \
3066
static void gen_##INSN##_elt(TCGv_i64 d, TCGv_i64 n, TCGv_i64 m) \
3067
{ \
3068
- FUNC(d, cpu_env, n, m); \
3069
+ FUNC(d, tcg_env, n, m); \
3070
} \
3071
DO_3SAME_64(INSN, gen_##INSN##_elt)
3072
3073
@@ -XXX,XX +XXX,XX @@ DO_3SAME_64_ENV(VQRSHL_U64, gen_helper_neon_qrshl_u64)
3074
}
3075
3076
/*
3077
- * Some helper functions need to be passed the cpu_env. In order
3078
+ * Some helper functions need to be passed the tcg_env. In order
3079
* to use those with the gvec APIs like tcg_gen_gvec_3() we need
3080
* to create wrapper functions whose prototype is a NeonGenTwoOpFn()
3081
* and which call a NeonGenTwoOpEnvFn().
3082
@@ -XXX,XX +XXX,XX @@ DO_3SAME_64_ENV(VQRSHL_U64, gen_helper_neon_qrshl_u64)
3083
#define WRAP_ENV_FN(WRAPNAME, FUNC) \
3084
static void WRAPNAME(TCGv_i32 d, TCGv_i32 n, TCGv_i32 m) \
3085
{ \
3086
- FUNC(d, cpu_env, n, m); \
3087
+ FUNC(d, tcg_env, n, m); \
3088
}
3089
3090
#define DO_3SAME_32_ENV(INSN, FUNC) \
3091
@@ -XXX,XX +XXX,XX @@ static bool do_2shift_env_64(DisasContext *s, arg_2reg_shift *a,
3092
{
3093
/*
3094
* 2-reg-and-shift operations, size == 3 case, where the
3095
- * function needs to be passed cpu_env.
3096
+ * function needs to be passed tcg_env.
3097
*/
3098
TCGv_i64 constimm;
3099
int pass;
3100
@@ -XXX,XX +XXX,XX @@ static bool do_2shift_env_64(DisasContext *s, arg_2reg_shift *a,
3101
TCGv_i64 tmp = tcg_temp_new_i64();
3102
3103
read_neon_element64(tmp, a->vm, pass, MO_64);
3104
- fn(tmp, cpu_env, tmp, constimm);
3105
+ fn(tmp, tcg_env, tmp, constimm);
3106
write_neon_element64(tmp, a->vd, pass, MO_64);
3107
}
3108
return true;
3109
@@ -XXX,XX +XXX,XX @@ static bool do_2shift_env_32(DisasContext *s, arg_2reg_shift *a,
3110
{
3111
/*
3112
* 2-reg-and-shift operations, size < 3 case, where the
3113
- * helper needs to be passed cpu_env.
3114
+ * helper needs to be passed tcg_env.
3115
*/
3116
TCGv_i32 constimm, tmp;
3117
int pass;
3118
@@ -XXX,XX +XXX,XX @@ static bool do_2shift_env_32(DisasContext *s, arg_2reg_shift *a,
3119
3120
for (pass = 0; pass < (a->q ? 4 : 2); pass++) {
3121
read_neon_element32(tmp, a->vm, pass, MO_32);
3122
- fn(tmp, cpu_env, tmp, constimm);
3123
+ fn(tmp, tcg_env, tmp, constimm);
3124
write_neon_element32(tmp, a->vd, pass, MO_32);
3125
}
3126
return true;
3127
@@ -XXX,XX +XXX,XX @@ static bool do_2shift_narrow_64(DisasContext *s, arg_2reg_shift *a,
3128
read_neon_element64(rm2, a->vm, 1, MO_64);
3129
3130
shiftfn(rm1, rm1, constimm);
3131
- narrowfn(rd, cpu_env, rm1);
3132
+ narrowfn(rd, tcg_env, rm1);
3133
write_neon_element32(rd, a->vd, 0, MO_32);
3134
3135
shiftfn(rm2, rm2, constimm);
3136
- narrowfn(rd, cpu_env, rm2);
3137
+ narrowfn(rd, tcg_env, rm2);
3138
write_neon_element32(rd, a->vd, 1, MO_32);
3139
3140
return true;
3141
@@ -XXX,XX +XXX,XX @@ static bool do_2shift_narrow_32(DisasContext *s, arg_2reg_shift *a,
3142
3143
tcg_gen_concat_i32_i64(rtmp, rm1, rm2);
3144
3145
- narrowfn(rm1, cpu_env, rtmp);
3146
+ narrowfn(rm1, tcg_env, rtmp);
3147
write_neon_element32(rm1, a->vd, 0, MO_32);
3148
3149
shiftfn(rm3, rm3, constimm);
3150
@@ -XXX,XX +XXX,XX @@ static bool do_2shift_narrow_32(DisasContext *s, arg_2reg_shift *a,
3151
3152
tcg_gen_concat_i32_i64(rtmp, rm3, rm4);
3153
3154
- narrowfn(rm3, cpu_env, rtmp);
3155
+ narrowfn(rm3, tcg_env, rtmp);
3156
write_neon_element32(rm3, a->vd, 1, MO_32);
3157
return true;
3158
}
3159
@@ -XXX,XX +XXX,XX @@ DO_VMLAL(VMLSL_U,mull_u,sub)
3160
static void gen_VQDMULL_16(TCGv_i64 rd, TCGv_i32 rn, TCGv_i32 rm)
3161
{
3162
gen_helper_neon_mull_s16(rd, rn, rm);
3163
- gen_helper_neon_addl_saturate_s32(rd, cpu_env, rd, rd);
3164
+ gen_helper_neon_addl_saturate_s32(rd, tcg_env, rd, rd);
3165
}
3166
3167
static void gen_VQDMULL_32(TCGv_i64 rd, TCGv_i32 rn, TCGv_i32 rm)
3168
{
3169
gen_mull_s32(rd, rn, rm);
3170
- gen_helper_neon_addl_saturate_s64(rd, cpu_env, rd, rd);
3171
+ gen_helper_neon_addl_saturate_s64(rd, tcg_env, rd, rd);
3172
}
3173
3174
static bool trans_VQDMULL_3d(DisasContext *s, arg_3diff *a)
3175
@@ -XXX,XX +XXX,XX @@ static bool trans_VQDMULL_3d(DisasContext *s, arg_3diff *a)
3176
3177
static void gen_VQDMLAL_acc_16(TCGv_i64 rd, TCGv_i64 rn, TCGv_i64 rm)
3178
{
3179
- gen_helper_neon_addl_saturate_s32(rd, cpu_env, rn, rm);
3180
+ gen_helper_neon_addl_saturate_s32(rd, tcg_env, rn, rm);
3181
}
3182
3183
static void gen_VQDMLAL_acc_32(TCGv_i64 rd, TCGv_i64 rn, TCGv_i64 rm)
3184
{
3185
- gen_helper_neon_addl_saturate_s64(rd, cpu_env, rn, rm);
3186
+ gen_helper_neon_addl_saturate_s64(rd, tcg_env, rn, rm);
3187
}
3188
3189
static bool trans_VQDMLAL_3d(DisasContext *s, arg_3diff *a)
3190
@@ -XXX,XX +XXX,XX @@ static bool trans_VQDMLAL_3d(DisasContext *s, arg_3diff *a)
3191
static void gen_VQDMLSL_acc_16(TCGv_i64 rd, TCGv_i64 rn, TCGv_i64 rm)
3192
{
3193
gen_helper_neon_negl_u32(rm, rm);
3194
- gen_helper_neon_addl_saturate_s32(rd, cpu_env, rn, rm);
3195
+ gen_helper_neon_addl_saturate_s32(rd, tcg_env, rn, rm);
3196
}
3197
3198
static void gen_VQDMLSL_acc_32(TCGv_i64 rd, TCGv_i64 rn, TCGv_i64 rm)
3199
{
3200
tcg_gen_neg_i64(rm, rm);
3201
- gen_helper_neon_addl_saturate_s64(rd, cpu_env, rn, rm);
3202
+ gen_helper_neon_addl_saturate_s64(rd, tcg_env, rn, rm);
3203
}
3204
3205
static bool trans_VQDMLSL_3d(DisasContext *s, arg_3diff *a)
3206
@@ -XXX,XX +XXX,XX @@ static bool do_vqrdmlah_2sc(DisasContext *s, arg_2scalar *a,
3207
for (pass = 0; pass < (a->q ? 4 : 2); pass++) {
3208
read_neon_element32(rn, a->vn, pass, MO_32);
3209
read_neon_element32(rd, a->vd, pass, MO_32);
3210
- opfn(rd, cpu_env, rn, scalar, rd);
3211
+ opfn(rd, tcg_env, rn, scalar, rd);
3212
write_neon_element32(rd, a->vd, pass, MO_32);
3213
}
3214
return true;
3215
@@ -XXX,XX +XXX,XX @@ static bool trans_VTBL(DisasContext *s, arg_VTBL *a)
3216
val = tcg_temp_new_i64();
3217
read_neon_element64(val, a->vm, 0, MO_64);
3218
3219
- gen_helper_neon_tbl(val, cpu_env, desc, val, def);
3220
+ gen_helper_neon_tbl(val, tcg_env, desc, val, def);
3221
write_neon_element64(val, a->vd, 0, MO_64);
3222
return true;
3223
}
3224
@@ -XXX,XX +XXX,XX @@ static bool do_vmovn(DisasContext *s, arg_2misc *a,
3225
rd1 = tcg_temp_new_i32();
3226
3227
read_neon_element64(rm, a->vm, 0, MO_64);
3228
- narrowfn(rd0, cpu_env, rm);
3229
+ narrowfn(rd0, tcg_env, rm);
3230
read_neon_element64(rm, a->vm, 1, MO_64);
3231
- narrowfn(rd1, cpu_env, rm);
3232
+ narrowfn(rd1, tcg_env, rm);
3233
write_neon_element32(rd0, a->vd, 0, MO_32);
3234
write_neon_element32(rd1, a->vd, 1, MO_32);
3235
return true;
3236
@@ -XXX,XX +XXX,XX @@ static bool trans_VRSQRTE(DisasContext *s, arg_2misc *a)
3237
#define WRAP_1OP_ENV_FN(WRAPNAME, FUNC) \
3238
static void WRAPNAME(TCGv_i32 d, TCGv_i32 m) \
3239
{ \
3240
- FUNC(d, cpu_env, m); \
3241
+ FUNC(d, tcg_env, m); \
3242
}
3243
3244
WRAP_1OP_ENV_FN(gen_VQABS_s8, gen_helper_neon_qabs_s8)
3245
diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c
3246
index XXXXXXX..XXXXXXX 100644
3247
--- a/target/arm/tcg/translate-sme.c
3248
+++ b/target/arm/tcg/translate-sme.c
3249
@@ -XXX,XX +XXX,XX @@ static TCGv_ptr get_tile_rowcol(DisasContext *s, int esz, int rs,
3250
/* Add the byte offset to env to produce the final pointer. */
3251
addr = tcg_temp_new_ptr();
3252
tcg_gen_ext_i32_ptr(addr, tmp);
3253
- tcg_gen_add_ptr(addr, addr, cpu_env);
3254
+ tcg_gen_add_ptr(addr, addr, tcg_env);
3255
3256
return addr;
3257
}
3258
@@ -XXX,XX +XXX,XX @@ static TCGv_ptr get_tile(DisasContext *s, int esz, int tile)
3259
3260
offset = tile * sizeof(ARMVectorReg) + offsetof(CPUARMState, zarray);
3261
3262
- tcg_gen_addi_ptr(addr, cpu_env, offset);
3263
+ tcg_gen_addi_ptr(addr, tcg_env, offset);
3264
return addr;
3265
}
3266
3267
@@ -XXX,XX +XXX,XX @@ static bool trans_ZERO(DisasContext *s, arg_ZERO *a)
3268
return false;
3269
}
3270
if (sme_za_enabled_check(s)) {
3271
- gen_helper_sme_zero(cpu_env, tcg_constant_i32(a->imm),
3272
+ gen_helper_sme_zero(tcg_env, tcg_constant_i32(a->imm),
3273
tcg_constant_i32(streaming_vec_reg_size(s)));
3274
}
3275
return true;
3276
@@ -XXX,XX +XXX,XX @@ static bool trans_LDST1(DisasContext *s, arg_LDST1 *a)
3277
svl = streaming_vec_reg_size(s);
3278
desc = simd_desc(svl, svl, desc);
3279
3280
- fns[a->esz][be][a->v][mte][a->st](cpu_env, t_za, t_pg, addr,
3281
+ fns[a->esz][be][a->v][mte][a->st](tcg_env, t_za, t_pg, addr,
3282
tcg_constant_i32(desc));
3283
return true;
3284
}
3285
diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c
3286
index XXXXXXX..XXXXXXX 100644
3287
--- a/target/arm/tcg/translate-sve.c
3288
+++ b/target/arm/tcg/translate-sve.c
3289
@@ -XXX,XX +XXX,XX @@ static void do_predtest(DisasContext *s, int dofs, int gofs, int words)
3290
TCGv_ptr gptr = tcg_temp_new_ptr();
3291
TCGv_i32 t = tcg_temp_new_i32();
3292
3293
- tcg_gen_addi_ptr(dptr, cpu_env, dofs);
3294
- tcg_gen_addi_ptr(gptr, cpu_env, gofs);
3295
+ tcg_gen_addi_ptr(dptr, tcg_env, dofs);
3296
+ tcg_gen_addi_ptr(gptr, tcg_env, gofs);
3297
3298
gen_helper_sve_predtest(t, dptr, gptr, tcg_constant_i32(words));
3299
3300
@@ -XXX,XX +XXX,XX @@ static bool do_vpz_ool(DisasContext *s, arg_rpr_esz *a,
3301
t_zn = tcg_temp_new_ptr();
3302
t_pg = tcg_temp_new_ptr();
3303
3304
- tcg_gen_addi_ptr(t_zn, cpu_env, vec_full_reg_offset(s, a->rn));
3305
- tcg_gen_addi_ptr(t_pg, cpu_env, pred_full_reg_offset(s, a->pg));
3306
+ tcg_gen_addi_ptr(t_zn, tcg_env, vec_full_reg_offset(s, a->rn));
3307
+ tcg_gen_addi_ptr(t_pg, tcg_env, pred_full_reg_offset(s, a->pg));
3308
fn(temp, t_zn, t_pg, desc);
3309
3310
write_fp_dreg(s, a->rd, temp);
3311
@@ -XXX,XX +XXX,XX @@ static bool do_index(DisasContext *s, int esz, int rd,
3312
desc = tcg_constant_i32(simd_desc(vsz, vsz, 0));
3313
t_zd = tcg_temp_new_ptr();
3314
3315
- tcg_gen_addi_ptr(t_zd, cpu_env, vec_full_reg_offset(s, rd));
3316
+ tcg_gen_addi_ptr(t_zd, tcg_env, vec_full_reg_offset(s, rd));
3317
if (esz == 3) {
3318
gen_helper_sve_index_d(t_zd, start, incr, desc);
3319
} else {
3320
@@ -XXX,XX +XXX,XX @@ static bool do_pppp_flags(DisasContext *s, arg_rprr_s *a,
3321
TCGv_i64 pm = tcg_temp_new_i64();
3322
TCGv_i64 pg = tcg_temp_new_i64();
3323
3324
- tcg_gen_ld_i64(pn, cpu_env, nofs);
3325
- tcg_gen_ld_i64(pm, cpu_env, mofs);
3326
- tcg_gen_ld_i64(pg, cpu_env, gofs);
3327
+ tcg_gen_ld_i64(pn, tcg_env, nofs);
3328
+ tcg_gen_ld_i64(pm, tcg_env, mofs);
3329
+ tcg_gen_ld_i64(pg, tcg_env, gofs);
3330
3331
gvec_op->fni8(pd, pn, pm, pg);
3332
- tcg_gen_st_i64(pd, cpu_env, dofs);
3333
+ tcg_gen_st_i64(pd, tcg_env, dofs);
3334
3335
do_predtest1(pd, pg);
3336
} else {
3337
@@ -XXX,XX +XXX,XX @@ static bool trans_PTEST(DisasContext *s, arg_PTEST *a)
3338
TCGv_i64 pn = tcg_temp_new_i64();
3339
TCGv_i64 pg = tcg_temp_new_i64();
3340
3341
- tcg_gen_ld_i64(pn, cpu_env, nofs);
3342
- tcg_gen_ld_i64(pg, cpu_env, gofs);
3343
+ tcg_gen_ld_i64(pn, tcg_env, nofs);
3344
+ tcg_gen_ld_i64(pg, tcg_env, gofs);
3345
do_predtest1(pn, pg);
3346
} else {
3347
do_predtest(s, nofs, gofs, words);
3348
@@ -XXX,XX +XXX,XX @@ static bool do_predset(DisasContext *s, int esz, int rd, int pat, bool setflag)
3349
t = tcg_temp_new_i64();
3350
if (fullsz <= 64) {
3351
tcg_gen_movi_i64(t, lastword);
3352
- tcg_gen_st_i64(t, cpu_env, ofs);
3353
+ tcg_gen_st_i64(t, tcg_env, ofs);
3354
goto done;
3355
}
3356
3357
@@ -XXX,XX +XXX,XX @@ static bool do_predset(DisasContext *s, int esz, int rd, int pat, bool setflag)
3358
3359
tcg_gen_movi_i64(t, word);
3360
for (i = 0; i < QEMU_ALIGN_DOWN(setsz, 8); i += 8) {
3361
- tcg_gen_st_i64(t, cpu_env, ofs + i);
3362
+ tcg_gen_st_i64(t, tcg_env, ofs + i);
3363
}
3364
if (lastword != word) {
3365
tcg_gen_movi_i64(t, lastword);
3366
- tcg_gen_st_i64(t, cpu_env, ofs + i);
3367
+ tcg_gen_st_i64(t, tcg_env, ofs + i);
3368
i += 8;
3369
}
3370
if (i < fullsz) {
3371
tcg_gen_movi_i64(t, 0);
3372
for (; i < fullsz; i += 8) {
3373
- tcg_gen_st_i64(t, cpu_env, ofs + i);
3374
+ tcg_gen_st_i64(t, tcg_env, ofs + i);
3375
}
3376
}
3377
3378
@@ -XXX,XX +XXX,XX @@ static bool do_pfirst_pnext(DisasContext *s, arg_rr_esz *a,
3379
desc = FIELD_DP32(desc, PREDDESC, OPRSZ, pred_full_reg_size(s));
3380
desc = FIELD_DP32(desc, PREDDESC, ESZ, a->esz);
3381
3382
- tcg_gen_addi_ptr(t_pd, cpu_env, pred_full_reg_offset(s, a->rd));
3383
- tcg_gen_addi_ptr(t_pg, cpu_env, pred_full_reg_offset(s, a->rn));
3384
+ tcg_gen_addi_ptr(t_pd, tcg_env, pred_full_reg_offset(s, a->rd));
3385
+ tcg_gen_addi_ptr(t_pg, tcg_env, pred_full_reg_offset(s, a->rn));
3386
t = tcg_temp_new_i32();
3387
3388
gen_fn(t, t_pd, t_pg, tcg_constant_i32(desc));
3389
@@ -XXX,XX +XXX,XX @@ static void do_sat_addsub_vec(DisasContext *s, int esz, int rd, int rn,
3390
3391
dptr = tcg_temp_new_ptr();
3392
nptr = tcg_temp_new_ptr();
3393
- tcg_gen_addi_ptr(dptr, cpu_env, vec_full_reg_offset(s, rd));
3394
- tcg_gen_addi_ptr(nptr, cpu_env, vec_full_reg_offset(s, rn));
3395
+ tcg_gen_addi_ptr(dptr, tcg_env, vec_full_reg_offset(s, rd));
3396
+ tcg_gen_addi_ptr(nptr, tcg_env, vec_full_reg_offset(s, rn));
3397
desc = tcg_constant_i32(simd_desc(vsz, vsz, 0));
3398
3399
switch (esz) {
3400
@@ -XXX,XX +XXX,XX @@ static void do_cpy_m(DisasContext *s, int esz, int rd, int rn, int pg,
3401
TCGv_ptr t_zn = tcg_temp_new_ptr();
3402
TCGv_ptr t_pg = tcg_temp_new_ptr();
3403
3404
- tcg_gen_addi_ptr(t_zd, cpu_env, vec_full_reg_offset(s, rd));
3405
- tcg_gen_addi_ptr(t_zn, cpu_env, vec_full_reg_offset(s, rn));
3406
- tcg_gen_addi_ptr(t_pg, cpu_env, pred_full_reg_offset(s, pg));
3407
+ tcg_gen_addi_ptr(t_zd, tcg_env, vec_full_reg_offset(s, rd));
3408
+ tcg_gen_addi_ptr(t_zn, tcg_env, vec_full_reg_offset(s, rn));
3409
+ tcg_gen_addi_ptr(t_pg, tcg_env, pred_full_reg_offset(s, pg));
3410
3411
fns[esz](t_zd, t_zn, t_pg, val, desc);
3412
}
3413
@@ -XXX,XX +XXX,XX @@ static void do_insr_i64(DisasContext *s, arg_rrr_esz *a, TCGv_i64 val)
3414
TCGv_ptr t_zd = tcg_temp_new_ptr();
3415
TCGv_ptr t_zn = tcg_temp_new_ptr();
3416
3417
- tcg_gen_addi_ptr(t_zd, cpu_env, vec_full_reg_offset(s, a->rd));
3418
- tcg_gen_addi_ptr(t_zn, cpu_env, vec_full_reg_offset(s, a->rn));
3419
+ tcg_gen_addi_ptr(t_zd, tcg_env, vec_full_reg_offset(s, a->rd));
3420
+ tcg_gen_addi_ptr(t_zn, tcg_env, vec_full_reg_offset(s, a->rn));
3421
3422
fns[a->esz](t_zd, t_zn, val, desc);
3423
}
3424
@@ -XXX,XX +XXX,XX @@ static bool trans_INSR_f(DisasContext *s, arg_rrr_esz *a)
3425
}
3426
if (sve_access_check(s)) {
3427
TCGv_i64 t = tcg_temp_new_i64();
3428
- tcg_gen_ld_i64(t, cpu_env, vec_reg_offset(s, a->rm, 0, MO_64));
3429
+ tcg_gen_ld_i64(t, tcg_env, vec_reg_offset(s, a->rm, 0, MO_64));
3430
do_insr_i64(s, a, t);
3431
}
3432
return true;
3433
@@ -XXX,XX +XXX,XX @@ static bool do_perm_pred3(DisasContext *s, arg_rrr_esz *a, bool high_odd,
3434
desc = FIELD_DP32(desc, PREDDESC, ESZ, a->esz);
3435
desc = FIELD_DP32(desc, PREDDESC, DATA, high_odd);
3436
3437
- tcg_gen_addi_ptr(t_d, cpu_env, pred_full_reg_offset(s, a->rd));
3438
- tcg_gen_addi_ptr(t_n, cpu_env, pred_full_reg_offset(s, a->rn));
3439
- tcg_gen_addi_ptr(t_m, cpu_env, pred_full_reg_offset(s, a->rm));
3440
+ tcg_gen_addi_ptr(t_d, tcg_env, pred_full_reg_offset(s, a->rd));
3441
+ tcg_gen_addi_ptr(t_n, tcg_env, pred_full_reg_offset(s, a->rn));
3442
+ tcg_gen_addi_ptr(t_m, tcg_env, pred_full_reg_offset(s, a->rm));
3443
3444
fn(t_d, t_n, t_m, tcg_constant_i32(desc));
3445
return true;
3446
@@ -XXX,XX +XXX,XX @@ static bool do_perm_pred2(DisasContext *s, arg_rr_esz *a, bool high_odd,
3447
TCGv_ptr t_n = tcg_temp_new_ptr();
3448
uint32_t desc = 0;
3449
3450
- tcg_gen_addi_ptr(t_d, cpu_env, pred_full_reg_offset(s, a->rd));
3451
- tcg_gen_addi_ptr(t_n, cpu_env, pred_full_reg_offset(s, a->rn));
3452
+ tcg_gen_addi_ptr(t_d, tcg_env, pred_full_reg_offset(s, a->rd));
3453
+ tcg_gen_addi_ptr(t_n, tcg_env, pred_full_reg_offset(s, a->rn));
3454
3455
desc = FIELD_DP32(desc, PREDDESC, OPRSZ, vsz);
3456
desc = FIELD_DP32(desc, PREDDESC, ESZ, a->esz);
3457
@@ -XXX,XX +XXX,XX @@ static void find_last_active(DisasContext *s, TCGv_i32 ret, int esz, int pg)
3458
desc = FIELD_DP32(desc, PREDDESC, OPRSZ, pred_full_reg_size(s));
3459
desc = FIELD_DP32(desc, PREDDESC, ESZ, esz);
3460
3461
- tcg_gen_addi_ptr(t_p, cpu_env, pred_full_reg_offset(s, pg));
3462
+ tcg_gen_addi_ptr(t_p, tcg_env, pred_full_reg_offset(s, pg));
3463
3464
gen_helper_sve_last_active_element(ret, t_p, tcg_constant_i32(desc));
3465
}
3466
@@ -XXX,XX +XXX,XX @@ static TCGv_i64 load_last_active(DisasContext *s, TCGv_i32 last,
3467
}
3468
#endif
3469
tcg_gen_ext_i32_ptr(p, last);
3470
- tcg_gen_add_ptr(p, p, cpu_env);
3471
+ tcg_gen_add_ptr(p, p, tcg_env);
3472
3473
return load_esz(p, vec_full_reg_offset(s, rm), esz);
3474
}
3475
@@ -XXX,XX +XXX,XX @@ static void do_clast_scalar(DisasContext *s, int esz, int pg, int rm,
3476
}
3477
3478
/* The conceit here is that while last < 0 indicates not found, after
3479
- * adjusting for cpu_env->vfp.zregs[rm], it is still a valid address
3480
+ * adjusting for tcg_env->vfp.zregs[rm], it is still a valid address
3481
* from which we can load garbage. We then discard the garbage with
3482
* a conditional move.
3483
*/
3484
@@ -XXX,XX +XXX,XX @@ static bool do_clast_fp(DisasContext *s, arg_rpr_esz *a, bool before)
3485
if (sve_access_check(s)) {
3486
int esz = a->esz;
3487
int ofs = vec_reg_offset(s, a->rd, 0, esz);
3488
- TCGv_i64 reg = load_esz(cpu_env, ofs, esz);
3489
+ TCGv_i64 reg = load_esz(tcg_env, ofs, esz);
3490
3491
do_clast_scalar(s, esz, a->pg, a->rn, before, reg);
3492
write_fp_dreg(s, a->rd, reg);
3493
@@ -XXX,XX +XXX,XX @@ static bool trans_CPY_m_v(DisasContext *s, arg_rpr_esz *a)
3494
}
3495
if (sve_access_check(s)) {
3496
int ofs = vec_reg_offset(s, a->rn, 0, a->esz);
3497
- TCGv_i64 t = load_esz(cpu_env, ofs, a->esz);
3498
+ TCGv_i64 t = load_esz(tcg_env, ofs, a->esz);
3499
do_cpy_m(s, a->esz, a->rd, a->rd, a->pg, t);
3500
}
3501
return true;
3502
@@ -XXX,XX +XXX,XX @@ static bool do_ppzz_flags(DisasContext *s, arg_rprr_esz *a,
3503
zm = tcg_temp_new_ptr();
3504
pg = tcg_temp_new_ptr();
3505
3506
- tcg_gen_addi_ptr(pd, cpu_env, pred_full_reg_offset(s, a->rd));
3507
- tcg_gen_addi_ptr(zn, cpu_env, vec_full_reg_offset(s, a->rn));
3508
- tcg_gen_addi_ptr(zm, cpu_env, vec_full_reg_offset(s, a->rm));
3509
- tcg_gen_addi_ptr(pg, cpu_env, pred_full_reg_offset(s, a->pg));
3510
+ tcg_gen_addi_ptr(pd, tcg_env, pred_full_reg_offset(s, a->rd));
3511
+ tcg_gen_addi_ptr(zn, tcg_env, vec_full_reg_offset(s, a->rn));
3512
+ tcg_gen_addi_ptr(zm, tcg_env, vec_full_reg_offset(s, a->rm));
3513
+ tcg_gen_addi_ptr(pg, tcg_env, pred_full_reg_offset(s, a->pg));
3514
3515
gen_fn(t, pd, zn, zm, pg, tcg_constant_i32(simd_desc(vsz, vsz, 0)));
3516
3517
@@ -XXX,XX +XXX,XX @@ static bool do_ppzi_flags(DisasContext *s, arg_rpri_esz *a,
3518
zn = tcg_temp_new_ptr();
3519
pg = tcg_temp_new_ptr();
3520
3521
- tcg_gen_addi_ptr(pd, cpu_env, pred_full_reg_offset(s, a->rd));
3522
- tcg_gen_addi_ptr(zn, cpu_env, vec_full_reg_offset(s, a->rn));
3523
- tcg_gen_addi_ptr(pg, cpu_env, pred_full_reg_offset(s, a->pg));
3524
+ tcg_gen_addi_ptr(pd, tcg_env, pred_full_reg_offset(s, a->rd));
3525
+ tcg_gen_addi_ptr(zn, tcg_env, vec_full_reg_offset(s, a->rn));
3526
+ tcg_gen_addi_ptr(pg, tcg_env, pred_full_reg_offset(s, a->pg));
3527
3528
gen_fn(t, pd, zn, pg, tcg_constant_i32(simd_desc(vsz, vsz, a->imm)));
3529
3530
@@ -XXX,XX +XXX,XX @@ static bool do_brk3(DisasContext *s, arg_rprr_s *a,
3531
TCGv_ptr g = tcg_temp_new_ptr();
3532
TCGv_i32 desc = tcg_constant_i32(FIELD_DP32(0, PREDDESC, OPRSZ, vsz));
3533
3534
- tcg_gen_addi_ptr(d, cpu_env, pred_full_reg_offset(s, a->rd));
3535
- tcg_gen_addi_ptr(n, cpu_env, pred_full_reg_offset(s, a->rn));
3536
- tcg_gen_addi_ptr(m, cpu_env, pred_full_reg_offset(s, a->rm));
3537
- tcg_gen_addi_ptr(g, cpu_env, pred_full_reg_offset(s, a->pg));
3538
+ tcg_gen_addi_ptr(d, tcg_env, pred_full_reg_offset(s, a->rd));
3539
+ tcg_gen_addi_ptr(n, tcg_env, pred_full_reg_offset(s, a->rn));
3540
+ tcg_gen_addi_ptr(m, tcg_env, pred_full_reg_offset(s, a->rm));
3541
+ tcg_gen_addi_ptr(g, tcg_env, pred_full_reg_offset(s, a->pg));
3542
3543
if (a->s) {
3544
TCGv_i32 t = tcg_temp_new_i32();
3545
@@ -XXX,XX +XXX,XX @@ static bool do_brk2(DisasContext *s, arg_rpr_s *a,
3546
TCGv_ptr g = tcg_temp_new_ptr();
3547
TCGv_i32 desc = tcg_constant_i32(FIELD_DP32(0, PREDDESC, OPRSZ, vsz));
3548
3549
- tcg_gen_addi_ptr(d, cpu_env, pred_full_reg_offset(s, a->rd));
3550
- tcg_gen_addi_ptr(n, cpu_env, pred_full_reg_offset(s, a->rn));
3551
- tcg_gen_addi_ptr(g, cpu_env, pred_full_reg_offset(s, a->pg));
3552
+ tcg_gen_addi_ptr(d, tcg_env, pred_full_reg_offset(s, a->rd));
3553
+ tcg_gen_addi_ptr(n, tcg_env, pred_full_reg_offset(s, a->rn));
3554
+ tcg_gen_addi_ptr(g, tcg_env, pred_full_reg_offset(s, a->pg));
3555
3556
if (a->s) {
3557
TCGv_i32 t = tcg_temp_new_i32();
3558
@@ -XXX,XX +XXX,XX @@ static void do_cntp(DisasContext *s, TCGv_i64 val, int esz, int pn, int pg)
3559
if (psz <= 8) {
3560
uint64_t psz_mask;
3561
3562
- tcg_gen_ld_i64(val, cpu_env, pred_full_reg_offset(s, pn));
3563
+ tcg_gen_ld_i64(val, tcg_env, pred_full_reg_offset(s, pn));
3564
if (pn != pg) {
3565
TCGv_i64 g = tcg_temp_new_i64();
3566
- tcg_gen_ld_i64(g, cpu_env, pred_full_reg_offset(s, pg));
3567
+ tcg_gen_ld_i64(g, tcg_env, pred_full_reg_offset(s, pg));
3568
tcg_gen_and_i64(val, val, g);
3569
}
3570
3571
@@ -XXX,XX +XXX,XX @@ static void do_cntp(DisasContext *s, TCGv_i64 val, int esz, int pn, int pg)
3572
desc = FIELD_DP32(desc, PREDDESC, OPRSZ, psz);
3573
desc = FIELD_DP32(desc, PREDDESC, ESZ, esz);
3574
3575
- tcg_gen_addi_ptr(t_pn, cpu_env, pred_full_reg_offset(s, pn));
3576
- tcg_gen_addi_ptr(t_pg, cpu_env, pred_full_reg_offset(s, pg));
3577
+ tcg_gen_addi_ptr(t_pn, tcg_env, pred_full_reg_offset(s, pn));
3578
+ tcg_gen_addi_ptr(t_pg, tcg_env, pred_full_reg_offset(s, pg));
3579
3580
gen_helper_sve_cntp(val, t_pn, t_pg, tcg_constant_i32(desc));
3581
}
3582
@@ -XXX,XX +XXX,XX @@ static bool trans_WHILE(DisasContext *s, arg_WHILE *a)
3583
desc = FIELD_DP32(desc, PREDDESC, ESZ, a->esz);
3584
3585
ptr = tcg_temp_new_ptr();
3586
- tcg_gen_addi_ptr(ptr, cpu_env, pred_full_reg_offset(s, a->rd));
3587
+ tcg_gen_addi_ptr(ptr, tcg_env, pred_full_reg_offset(s, a->rd));
3588
3589
if (a->lt) {
3590
gen_helper_sve_whilel(t2, ptr, t2, tcg_constant_i32(desc));
3591
@@ -XXX,XX +XXX,XX @@ static bool trans_WHILE_ptr(DisasContext *s, arg_WHILE_ptr *a)
3592
desc = FIELD_DP32(desc, PREDDESC, ESZ, a->esz);
3593
3594
ptr = tcg_temp_new_ptr();
3595
- tcg_gen_addi_ptr(ptr, cpu_env, pred_full_reg_offset(s, a->rd));
3596
+ tcg_gen_addi_ptr(ptr, tcg_env, pred_full_reg_offset(s, a->rd));
3597
3598
gen_helper_sve_whilel(t2, ptr, t2, tcg_constant_i32(desc));
3599
do_pred_flags(t2);
3600
@@ -XXX,XX +XXX,XX @@ static bool do_reduce(DisasContext *s, arg_rpr_esz *a,
3601
t_zn = tcg_temp_new_ptr();
3602
t_pg = tcg_temp_new_ptr();
3603
3604
- tcg_gen_addi_ptr(t_zn, cpu_env, vec_full_reg_offset(s, a->rn));
3605
- tcg_gen_addi_ptr(t_pg, cpu_env, pred_full_reg_offset(s, a->pg));
3606
+ tcg_gen_addi_ptr(t_zn, tcg_env, vec_full_reg_offset(s, a->rn));
3607
+ tcg_gen_addi_ptr(t_pg, tcg_env, pred_full_reg_offset(s, a->pg));
3608
status = fpstatus_ptr(a->esz == MO_16 ? FPST_FPCR_F16 : FPST_FPCR);
3609
3610
fn(temp, t_zn, t_pg, status, t_desc);
3611
@@ -XXX,XX +XXX,XX @@ static bool trans_FADDA(DisasContext *s, arg_rprr_esz *a)
3612
return true;
3613
}
3614
3615
- t_val = load_esz(cpu_env, vec_reg_offset(s, a->rn, 0, a->esz), a->esz);
3616
+ t_val = load_esz(tcg_env, vec_reg_offset(s, a->rn, 0, a->esz), a->esz);
3617
t_rm = tcg_temp_new_ptr();
3618
t_pg = tcg_temp_new_ptr();
3619
- tcg_gen_addi_ptr(t_rm, cpu_env, vec_full_reg_offset(s, a->rm));
3620
- tcg_gen_addi_ptr(t_pg, cpu_env, pred_full_reg_offset(s, a->pg));
3621
+ tcg_gen_addi_ptr(t_rm, tcg_env, vec_full_reg_offset(s, a->rm));
3622
+ tcg_gen_addi_ptr(t_pg, tcg_env, pred_full_reg_offset(s, a->pg));
3623
t_fpst = fpstatus_ptr(a->esz == MO_16 ? FPST_FPCR_F16 : FPST_FPCR);
3624
t_desc = tcg_constant_i32(simd_desc(vsz, vsz, 0));
3625
3626
@@ -XXX,XX +XXX,XX @@ static void do_fp_scalar(DisasContext *s, int zd, int zn, int pg, bool is_fp16,
3627
t_zd = tcg_temp_new_ptr();
3628
t_zn = tcg_temp_new_ptr();
3629
t_pg = tcg_temp_new_ptr();
3630
- tcg_gen_addi_ptr(t_zd, cpu_env, vec_full_reg_offset(s, zd));
3631
- tcg_gen_addi_ptr(t_zn, cpu_env, vec_full_reg_offset(s, zn));
3632
- tcg_gen_addi_ptr(t_pg, cpu_env, pred_full_reg_offset(s, pg));
3633
+ tcg_gen_addi_ptr(t_zd, tcg_env, vec_full_reg_offset(s, zd));
3634
+ tcg_gen_addi_ptr(t_zn, tcg_env, vec_full_reg_offset(s, zn));
3635
+ tcg_gen_addi_ptr(t_pg, tcg_env, pred_full_reg_offset(s, pg));
3636
3637
status = fpstatus_ptr(is_fp16 ? FPST_FPCR_F16 : FPST_FPCR);
3638
desc = tcg_constant_i32(simd_desc(vsz, vsz, 0));
3639
@@ -XXX,XX +XXX,XX @@ void gen_sve_ldr(DisasContext *s, TCGv_ptr base, int vofs,
3640
3641
/*
3642
* Predicate register loads can be any multiple of 2.
3643
- * Note that we still store the entire 64-bit unit into cpu_env.
3644
+ * Note that we still store the entire 64-bit unit into tcg_env.
3645
*/
3646
if (len_remain >= 8) {
3647
t0 = tcg_temp_new_i64();
3648
@@ -XXX,XX +XXX,XX @@ static bool trans_LDR_zri(DisasContext *s, arg_rri *a)
3649
if (sve_access_check(s)) {
3650
int size = vec_full_reg_size(s);
3651
int off = vec_full_reg_offset(s, a->rd);
3652
- gen_sve_ldr(s, cpu_env, off, size, a->rn, a->imm * size);
3653
+ gen_sve_ldr(s, tcg_env, off, size, a->rn, a->imm * size);
3654
}
3655
return true;
3656
}
3657
@@ -XXX,XX +XXX,XX @@ static bool trans_LDR_pri(DisasContext *s, arg_rri *a)
3658
if (sve_access_check(s)) {
3659
int size = pred_full_reg_size(s);
3660
int off = pred_full_reg_offset(s, a->rd);
3661
- gen_sve_ldr(s, cpu_env, off, size, a->rn, a->imm * size);
3662
+ gen_sve_ldr(s, tcg_env, off, size, a->rn, a->imm * size);
3663
}
3664
return true;
3665
}
3666
@@ -XXX,XX +XXX,XX @@ static bool trans_STR_zri(DisasContext *s, arg_rri *a)
3667
if (sve_access_check(s)) {
3668
int size = vec_full_reg_size(s);
3669
int off = vec_full_reg_offset(s, a->rd);
3670
- gen_sve_str(s, cpu_env, off, size, a->rn, a->imm * size);
3671
+ gen_sve_str(s, tcg_env, off, size, a->rn, a->imm * size);
3672
}
3673
return true;
3674
}
3675
@@ -XXX,XX +XXX,XX @@ static bool trans_STR_pri(DisasContext *s, arg_rri *a)
3676
if (sve_access_check(s)) {
3677
int size = pred_full_reg_size(s);
3678
int off = pred_full_reg_offset(s, a->rd);
3679
- gen_sve_str(s, cpu_env, off, size, a->rn, a->imm * size);
3680
+ gen_sve_str(s, tcg_env, off, size, a->rn, a->imm * size);
3681
}
3682
return true;
3683
}
3684
@@ -XXX,XX +XXX,XX @@ static void do_mem_zpa(DisasContext *s, int zt, int pg, TCGv_i64 addr,
3685
desc = simd_desc(vsz, vsz, zt | desc);
3686
t_pg = tcg_temp_new_ptr();
3687
3688
- tcg_gen_addi_ptr(t_pg, cpu_env, pred_full_reg_offset(s, pg));
3689
- fn(cpu_env, t_pg, addr, tcg_constant_i32(desc));
3690
+ tcg_gen_addi_ptr(t_pg, tcg_env, pred_full_reg_offset(s, pg));
3691
+ fn(tcg_env, t_pg, addr, tcg_constant_i32(desc));
3692
}
3693
3694
/* Indexed by [mte][be][dtype][nreg] */
3695
@@ -XXX,XX +XXX,XX @@ static void do_ldrq(DisasContext *s, int zt, int pg, TCGv_i64 addr, int dtype)
3696
#if HOST_BIG_ENDIAN
3697
poff += 6;
3698
#endif
3699
- tcg_gen_ld16u_i64(tmp, cpu_env, poff);
3700
+ tcg_gen_ld16u_i64(tmp, tcg_env, poff);
3701
3702
poff = offsetof(CPUARMState, vfp.preg_tmp);
3703
- tcg_gen_st_i64(tmp, cpu_env, poff);
3704
+ tcg_gen_st_i64(tmp, tcg_env, poff);
3705
}
3706
3707
t_pg = tcg_temp_new_ptr();
3708
- tcg_gen_addi_ptr(t_pg, cpu_env, poff);
3709
+ tcg_gen_addi_ptr(t_pg, tcg_env, poff);
3710
3711
gen_helper_gvec_mem *fn
3712
= ldr_fns[s->mte_active[0]][s->be_data == MO_BE][dtype][0];
3713
- fn(cpu_env, t_pg, addr, tcg_constant_i32(simd_desc(16, 16, zt)));
3714
+ fn(tcg_env, t_pg, addr, tcg_constant_i32(simd_desc(16, 16, zt)));
3715
3716
/* Replicate that first quadword. */
3717
if (vsz > 16) {
3718
@@ -XXX,XX +XXX,XX @@ static void do_ldro(DisasContext *s, int zt, int pg, TCGv_i64 addr, int dtype)
3719
#if HOST_BIG_ENDIAN
3720
poff += 4;
3721
#endif
3722
- tcg_gen_ld32u_i64(tmp, cpu_env, poff);
3723
+ tcg_gen_ld32u_i64(tmp, tcg_env, poff);
3724
3725
poff = offsetof(CPUARMState, vfp.preg_tmp);
3726
- tcg_gen_st_i64(tmp, cpu_env, poff);
3727
+ tcg_gen_st_i64(tmp, tcg_env, poff);
3728
}
3729
3730
t_pg = tcg_temp_new_ptr();
3731
- tcg_gen_addi_ptr(t_pg, cpu_env, poff);
3732
+ tcg_gen_addi_ptr(t_pg, tcg_env, poff);
3733
3734
gen_helper_gvec_mem *fn
3735
= ldr_fns[s->mte_active[0]][s->be_data == MO_BE][dtype][0];
3736
- fn(cpu_env, t_pg, addr, tcg_constant_i32(simd_desc(32, 32, zt)));
3737
+ fn(tcg_env, t_pg, addr, tcg_constant_i32(simd_desc(32, 32, zt)));
3738
3739
/*
3740
* Replicate that first octaword.
3741
@@ -XXX,XX +XXX,XX @@ static bool trans_LD1R_zpri(DisasContext *s, arg_rpri_load *a)
3742
*/
3743
uint64_t psz_mask = MAKE_64BIT_MASK(0, psz * 8);
3744
temp = tcg_temp_new_i64();
3745
- tcg_gen_ld_i64(temp, cpu_env, pred_full_reg_offset(s, a->pg));
3746
+ tcg_gen_ld_i64(temp, tcg_env, pred_full_reg_offset(s, a->pg));
3747
tcg_gen_andi_i64(temp, temp, pred_esz_masks[esz] & psz_mask);
3748
tcg_gen_brcondi_i64(TCG_COND_EQ, temp, 0, over);
3749
} else {
3750
@@ -XXX,XX +XXX,XX @@ static void do_mem_zpz(DisasContext *s, int zt, int pg, int zm,
3751
}
3752
desc = simd_desc(vsz, vsz, desc | scale);
3753
3754
- tcg_gen_addi_ptr(t_pg, cpu_env, pred_full_reg_offset(s, pg));
3755
- tcg_gen_addi_ptr(t_zm, cpu_env, vec_full_reg_offset(s, zm));
3756
- tcg_gen_addi_ptr(t_zt, cpu_env, vec_full_reg_offset(s, zt));
3757
- fn(cpu_env, t_zt, t_pg, t_zm, scalar, tcg_constant_i32(desc));
3758
+ tcg_gen_addi_ptr(t_pg, tcg_env, pred_full_reg_offset(s, pg));
3759
+ tcg_gen_addi_ptr(t_zm, tcg_env, vec_full_reg_offset(s, zm));
3760
+ tcg_gen_addi_ptr(t_zt, tcg_env, vec_full_reg_offset(s, zt));
3761
+ fn(tcg_env, t_zt, t_pg, t_zm, scalar, tcg_constant_i32(desc));
3762
}
3763
3764
/* Indexed by [mte][be][ff][xs][u][msz]. */
3765
@@ -XXX,XX +XXX,XX @@ static bool do_FMLAL_zzzw(DisasContext *s, arg_rrrr_esz *a, bool sub, bool sel)
3766
{
3767
return gen_gvec_ptr_zzzz(s, gen_helper_sve2_fmlal_zzzw_s,
3768
a->rd, a->rn, a->rm, a->ra,
3769
- (sel << 1) | sub, cpu_env);
3770
+ (sel << 1) | sub, tcg_env);
3771
}
3772
3773
TRANS_FEAT(FMLALB_zzzw, aa64_sve2, do_FMLAL_zzzw, a, false, false)
3774
@@ -XXX,XX +XXX,XX @@ static bool do_FMLAL_zzxw(DisasContext *s, arg_rrxr_esz *a, bool sub, bool sel)
3775
{
3776
return gen_gvec_ptr_zzzz(s, gen_helper_sve2_fmlal_zzxw_s,
3777
a->rd, a->rn, a->rm, a->ra,
3778
- (a->index << 2) | (sel << 1) | sub, cpu_env);
3779
+ (a->index << 2) | (sel << 1) | sub, tcg_env);
3780
}
3781
3782
TRANS_FEAT(FMLALB_zzxw, aa64_sve2, do_FMLAL_zzxw, a, false, false)
3783
@@ -XXX,XX +XXX,XX @@ static bool trans_PSEL(DisasContext *s, arg_psel *a)
3784
3785
/* Load the predicate word. */
3786
tcg_gen_trunc_i64_ptr(ptr, didx);
3787
- tcg_gen_add_ptr(ptr, ptr, cpu_env);
3788
+ tcg_gen_add_ptr(ptr, ptr, tcg_env);
3789
tcg_gen_ld8u_i64(tmp, ptr, pred_full_reg_offset(s, a->pm));
3790
3791
/* Extract the predicate bit and replicate to MO_64. */
3792
diff --git a/target/arm/tcg/translate-vfp.c b/target/arm/tcg/translate-vfp.c
3793
index XXXXXXX..XXXXXXX 100644
3794
--- a/target/arm/tcg/translate-vfp.c
3795
+++ b/target/arm/tcg/translate-vfp.c
3796
@@ -XXX,XX +XXX,XX @@
3797
3798
static inline void vfp_load_reg64(TCGv_i64 var, int reg)
3799
{
3800
- tcg_gen_ld_i64(var, cpu_env, vfp_reg_offset(true, reg));
3801
+ tcg_gen_ld_i64(var, tcg_env, vfp_reg_offset(true, reg));
3802
}
3803
3804
static inline void vfp_store_reg64(TCGv_i64 var, int reg)
3805
{
3806
- tcg_gen_st_i64(var, cpu_env, vfp_reg_offset(true, reg));
3807
+ tcg_gen_st_i64(var, tcg_env, vfp_reg_offset(true, reg));
3808
}
3809
3810
static inline void vfp_load_reg32(TCGv_i32 var, int reg)
3811
{
3812
- tcg_gen_ld_i32(var, cpu_env, vfp_reg_offset(false, reg));
3813
+ tcg_gen_ld_i32(var, tcg_env, vfp_reg_offset(false, reg));
3814
}
3815
3816
static inline void vfp_store_reg32(TCGv_i32 var, int reg)
3817
{
3818
- tcg_gen_st_i32(var, cpu_env, vfp_reg_offset(false, reg));
3819
+ tcg_gen_st_i32(var, tcg_env, vfp_reg_offset(false, reg));
3820
}
3821
3822
/*
3823
@@ -XXX,XX +XXX,XX @@ static void gen_preserve_fp_state(DisasContext *s, bool skip_context_update)
3824
if (translator_io_start(&s->base)) {
3825
s->base.is_jmp = DISAS_UPDATE_EXIT;
3826
}
3827
- gen_helper_v7m_preserve_fp_state(cpu_env);
3828
+ gen_helper_v7m_preserve_fp_state(tcg_env);
3829
/*
3830
* If the preserve_fp_state helper doesn't throw an exception
3831
* then it will clear LSPACT; we don't need to repeat this for
3832
@@ -XXX,XX +XXX,XX @@ static void gen_update_fp_context(DisasContext *s)
3833
uint32_t bits = R_V7M_CONTROL_FPCA_MASK;
3834
3835
fpscr = load_cpu_field(v7m.fpdscr[s->v8m_secure]);
3836
- gen_helper_vfp_set_fpscr(cpu_env, fpscr);
3837
+ gen_helper_vfp_set_fpscr(tcg_env, fpscr);
3838
if (dc_isar_feature(aa32_mve, s)) {
3839
store_cpu_field(tcg_constant_i32(0), v7m.vpr);
3840
}
3841
@@ -XXX,XX +XXX,XX @@ static bool trans_VMSR_VMRS(DisasContext *s, arg_VMSR_VMRS *a)
3842
if (s->current_el == 1) {
3843
gen_set_condexec(s);
3844
gen_update_pc(s, 0);
3845
- gen_helper_check_hcr_el2_trap(cpu_env,
3846
+ gen_helper_check_hcr_el2_trap(tcg_env,
3847
tcg_constant_i32(a->rt),
3848
tcg_constant_i32(a->reg));
3849
}
3850
@@ -XXX,XX +XXX,XX @@ static bool trans_VMSR_VMRS(DisasContext *s, arg_VMSR_VMRS *a)
3851
tcg_gen_andi_i32(tmp, tmp, FPCR_NZCV_MASK);
3852
} else {
3853
tmp = tcg_temp_new_i32();
3854
- gen_helper_vfp_get_fpscr(tmp, cpu_env);
3855
+ gen_helper_vfp_get_fpscr(tmp, tcg_env);
3856
}
3857
break;
3858
default:
3859
@@ -XXX,XX +XXX,XX @@ static bool trans_VMSR_VMRS(DisasContext *s, arg_VMSR_VMRS *a)
3860
break;
3861
case ARM_VFP_FPSCR:
3862
tmp = load_reg(s, a->rt);
3863
- gen_helper_vfp_set_fpscr(cpu_env, tmp);
3864
+ gen_helper_vfp_set_fpscr(tcg_env, tmp);
3865
gen_lookup_tb(s);
3866
break;
3867
case ARM_VFP_FPEXC:
3868
@@ -XXX,XX +XXX,XX @@ static bool trans_VLDM_VSTM_sp(DisasContext *s, arg_VLDM_VSTM_sp *a)
3869
* value is above, it is UNKNOWN whether the limit check
3870
* triggers; we choose to trigger.
3871
*/
3872
- gen_helper_v8m_stackcheck(cpu_env, addr);
3873
+ gen_helper_v8m_stackcheck(tcg_env, addr);
3874
}
3875
3876
offset = 4;
3877
@@ -XXX,XX +XXX,XX @@ static bool trans_VLDM_VSTM_dp(DisasContext *s, arg_VLDM_VSTM_dp *a)
3878
* value is above, it is UNKNOWN whether the limit check
3879
* triggers; we choose to trigger.
3880
*/
3881
- gen_helper_v8m_stackcheck(cpu_env, addr);
3882
+ gen_helper_v8m_stackcheck(tcg_env, addr);
3883
}
3884
3885
offset = 8;
3886
@@ -XXX,XX +XXX,XX @@ DO_VFP_2OP(VNEG, dp, gen_helper_vfp_negd, aa32_fpdp_v2)
3887
3888
static void gen_VSQRT_hp(TCGv_i32 vd, TCGv_i32 vm)
3889
{
3890
- gen_helper_vfp_sqrth(vd, vm, cpu_env);
3891
+ gen_helper_vfp_sqrth(vd, vm, tcg_env);
3892
}
3893
3894
static void gen_VSQRT_sp(TCGv_i32 vd, TCGv_i32 vm)
3895
{
3896
- gen_helper_vfp_sqrts(vd, vm, cpu_env);
3897
+ gen_helper_vfp_sqrts(vd, vm, tcg_env);
3898
}
3899
3900
static void gen_VSQRT_dp(TCGv_i64 vd, TCGv_i64 vm)
3901
{
3902
- gen_helper_vfp_sqrtd(vd, vm, cpu_env);
3903
+ gen_helper_vfp_sqrtd(vd, vm, tcg_env);
3904
}
3905
3906
DO_VFP_2OP(VSQRT, hp, gen_VSQRT_hp, aa32_fp16_arith)
3907
@@ -XXX,XX +XXX,XX @@ static bool trans_VCMP_hp(DisasContext *s, arg_VCMP_sp *a)
3908
}
3909
3910
if (a->e) {
3911
- gen_helper_vfp_cmpeh(vd, vm, cpu_env);
3912
+ gen_helper_vfp_cmpeh(vd, vm, tcg_env);
3913
} else {
3914
- gen_helper_vfp_cmph(vd, vm, cpu_env);
3915
+ gen_helper_vfp_cmph(vd, vm, tcg_env);
3916
}
3917
return true;
3918
}
3919
@@ -XXX,XX +XXX,XX @@ static bool trans_VCMP_sp(DisasContext *s, arg_VCMP_sp *a)
3920
}
3921
3922
if (a->e) {
3923
- gen_helper_vfp_cmpes(vd, vm, cpu_env);
3924
+ gen_helper_vfp_cmpes(vd, vm, tcg_env);
3925
} else {
3926
- gen_helper_vfp_cmps(vd, vm, cpu_env);
3927
+ gen_helper_vfp_cmps(vd, vm, tcg_env);
3928
}
3929
return true;
3930
}
3931
@@ -XXX,XX +XXX,XX @@ static bool trans_VCMP_dp(DisasContext *s, arg_VCMP_dp *a)
3932
}
3933
3934
if (a->e) {
3935
- gen_helper_vfp_cmped(vd, vm, cpu_env);
3936
+ gen_helper_vfp_cmped(vd, vm, tcg_env);
3937
} else {
3938
- gen_helper_vfp_cmpd(vd, vm, cpu_env);
3939
+ gen_helper_vfp_cmpd(vd, vm, tcg_env);
3940
}
3941
return true;
3942
}
3943
@@ -XXX,XX +XXX,XX @@ static bool trans_VCVT_f32_f16(DisasContext *s, arg_VCVT_f32_f16 *a)
3944
ahp_mode = get_ahp_flag();
3945
tmp = tcg_temp_new_i32();
3946
/* The T bit tells us if we want the low or high 16 bits of Vm */
3947
- tcg_gen_ld16u_i32(tmp, cpu_env, vfp_f16_offset(a->vm, a->t));
3948
+ tcg_gen_ld16u_i32(tmp, tcg_env, vfp_f16_offset(a->vm, a->t));
3949
gen_helper_vfp_fcvt_f16_to_f32(tmp, tmp, fpst, ahp_mode);
3950
vfp_store_reg32(tmp, a->vd);
3951
return true;
3952
@@ -XXX,XX +XXX,XX @@ static bool trans_VCVT_f64_f16(DisasContext *s, arg_VCVT_f64_f16 *a)
3953
ahp_mode = get_ahp_flag();
3954
tmp = tcg_temp_new_i32();
3955
/* The T bit tells us if we want the low or high 16 bits of Vm */
3956
- tcg_gen_ld16u_i32(tmp, cpu_env, vfp_f16_offset(a->vm, a->t));
3957
+ tcg_gen_ld16u_i32(tmp, tcg_env, vfp_f16_offset(a->vm, a->t));
3958
vd = tcg_temp_new_i64();
3959
gen_helper_vfp_fcvt_f16_to_f64(vd, tmp, fpst, ahp_mode);
3960
vfp_store_reg64(vd, a->vd);
3961
@@ -XXX,XX +XXX,XX @@ static bool trans_VCVT_b16_f32(DisasContext *s, arg_VCVT_b16_f32 *a)
3962
3963
vfp_load_reg32(tmp, a->vm);
3964
gen_helper_bfcvt(tmp, tmp, fpst);
3965
- tcg_gen_st16_i32(tmp, cpu_env, vfp_f16_offset(a->vd, a->t));
3966
+ tcg_gen_st16_i32(tmp, tcg_env, vfp_f16_offset(a->vd, a->t));
3967
return true;
3968
}
3969
3970
@@ -XXX,XX +XXX,XX @@ static bool trans_VCVT_f16_f32(DisasContext *s, arg_VCVT_f16_f32 *a)
3971
3972
vfp_load_reg32(tmp, a->vm);
3973
gen_helper_vfp_fcvt_f32_to_f16(tmp, tmp, fpst, ahp_mode);
3974
- tcg_gen_st16_i32(tmp, cpu_env, vfp_f16_offset(a->vd, a->t));
3975
+ tcg_gen_st16_i32(tmp, tcg_env, vfp_f16_offset(a->vd, a->t));
3976
return true;
3977
}
3978
3979
@@ -XXX,XX +XXX,XX @@ static bool trans_VCVT_f16_f64(DisasContext *s, arg_VCVT_f16_f64 *a)
3980
3981
vfp_load_reg64(vm, a->vm);
3982
gen_helper_vfp_fcvt_f64_to_f16(tmp, vm, fpst, ahp_mode);
3983
- tcg_gen_st16_i32(tmp, cpu_env, vfp_f16_offset(a->vd, a->t));
3984
+ tcg_gen_st16_i32(tmp, tcg_env, vfp_f16_offset(a->vd, a->t));
3985
return true;
3986
}
3987
3988
@@ -XXX,XX +XXX,XX @@ static bool trans_VCVT_sp(DisasContext *s, arg_VCVT_sp *a)
3989
vm = tcg_temp_new_i32();
3990
vd = tcg_temp_new_i64();
3991
vfp_load_reg32(vm, a->vm);
3992
- gen_helper_vfp_fcvtds(vd, vm, cpu_env);
3993
+ gen_helper_vfp_fcvtds(vd, vm, tcg_env);
3994
vfp_store_reg64(vd, a->vd);
3995
return true;
3996
}
3997
@@ -XXX,XX +XXX,XX @@ static bool trans_VCVT_dp(DisasContext *s, arg_VCVT_dp *a)
3998
vd = tcg_temp_new_i32();
3999
vm = tcg_temp_new_i64();
4000
vfp_load_reg64(vm, a->vm);
4001
- gen_helper_vfp_fcvtsd(vd, vm, cpu_env);
4002
+ gen_helper_vfp_fcvtsd(vd, vm, tcg_env);
4003
vfp_store_reg32(vd, a->vd);
4004
return true;
4005
}
4006
@@ -XXX,XX +XXX,XX @@ static bool trans_VJCVT(DisasContext *s, arg_VJCVT *a)
4007
vm = tcg_temp_new_i64();
4008
vd = tcg_temp_new_i32();
4009
vfp_load_reg64(vm, a->vm);
4010
- gen_helper_vjcvt(vd, vm, cpu_env);
4011
+ gen_helper_vjcvt(vd, vm, tcg_env);
4012
vfp_store_reg32(vd, a->vd);
4013
return true;
4014
}
4015
diff --git a/target/arm/tcg/translate.c b/target/arm/tcg/translate.c
4016
index XXXXXXX..XXXXXXX 100644
4017
--- a/target/arm/tcg/translate.c
4018
+++ b/target/arm/tcg/translate.c
4019
@@ -XXX,XX +XXX,XX @@ void arm_translate_init(void)
4020
int i;
4021
4022
for (i = 0; i < 16; i++) {
4023
- cpu_R[i] = tcg_global_mem_new_i32(cpu_env,
4024
+ cpu_R[i] = tcg_global_mem_new_i32(tcg_env,
4025
offsetof(CPUARMState, regs[i]),
4026
regnames[i]);
4027
}
4028
- cpu_CF = tcg_global_mem_new_i32(cpu_env, offsetof(CPUARMState, CF), "CF");
4029
- cpu_NF = tcg_global_mem_new_i32(cpu_env, offsetof(CPUARMState, NF), "NF");
4030
- cpu_VF = tcg_global_mem_new_i32(cpu_env, offsetof(CPUARMState, VF), "VF");
4031
- cpu_ZF = tcg_global_mem_new_i32(cpu_env, offsetof(CPUARMState, ZF), "ZF");
4032
+ cpu_CF = tcg_global_mem_new_i32(tcg_env, offsetof(CPUARMState, CF), "CF");
4033
+ cpu_NF = tcg_global_mem_new_i32(tcg_env, offsetof(CPUARMState, NF), "NF");
4034
+ cpu_VF = tcg_global_mem_new_i32(tcg_env, offsetof(CPUARMState, VF), "VF");
4035
+ cpu_ZF = tcg_global_mem_new_i32(tcg_env, offsetof(CPUARMState, ZF), "ZF");
4036
4037
- cpu_exclusive_addr = tcg_global_mem_new_i64(cpu_env,
4038
+ cpu_exclusive_addr = tcg_global_mem_new_i64(tcg_env,
4039
offsetof(CPUARMState, exclusive_addr), "exclusive_addr");
4040
- cpu_exclusive_val = tcg_global_mem_new_i64(cpu_env,
4041
+ cpu_exclusive_val = tcg_global_mem_new_i64(tcg_env,
4042
offsetof(CPUARMState, exclusive_val), "exclusive_val");
4043
4044
a64_translate_init();
4045
@@ -XXX,XX +XXX,XX @@ void store_cpu_offset(TCGv_i32 var, int offset, int size)
4046
{
4047
switch (size) {
4048
case 1:
4049
- tcg_gen_st8_i32(var, cpu_env, offset);
4050
+ tcg_gen_st8_i32(var, tcg_env, offset);
4051
break;
4052
case 4:
4053
- tcg_gen_st_i32(var, cpu_env, offset);
4054
+ tcg_gen_st_i32(var, tcg_env, offset);
4055
break;
4056
default:
4057
g_assert_not_reached();
4058
@@ -XXX,XX +XXX,XX @@ static void store_sp_checked(DisasContext *s, TCGv_i32 var)
4059
{
4060
#ifndef CONFIG_USER_ONLY
4061
if (s->v8m_stackcheck) {
4062
- gen_helper_v8m_stackcheck(cpu_env, var);
4063
+ gen_helper_v8m_stackcheck(tcg_env, var);
4064
}
4065
#endif
4066
store_reg(s, 13, var);
4067
@@ -XXX,XX +XXX,XX @@ static void store_sp_checked(DisasContext *s, TCGv_i32 var)
4068
4069
void gen_set_cpsr(TCGv_i32 var, uint32_t mask)
4070
{
4071
- gen_helper_cpsr_write(cpu_env, var, tcg_constant_i32(mask));
4072
+ gen_helper_cpsr_write(tcg_env, var, tcg_constant_i32(mask));
4073
}
4074
4075
static void gen_rebuild_hflags(DisasContext *s, bool new_el)
4076
@@ -XXX,XX +XXX,XX @@ static void gen_rebuild_hflags(DisasContext *s, bool new_el)
4077
4078
if (new_el) {
4079
if (m_profile) {
4080
- gen_helper_rebuild_hflags_m32_newel(cpu_env);
4081
+ gen_helper_rebuild_hflags_m32_newel(tcg_env);
4082
} else {
4083
- gen_helper_rebuild_hflags_a32_newel(cpu_env);
4084
+ gen_helper_rebuild_hflags_a32_newel(tcg_env);
4085
}
4086
} else {
4087
TCGv_i32 tcg_el = tcg_constant_i32(s->current_el);
4088
if (m_profile) {
4089
- gen_helper_rebuild_hflags_m32(cpu_env, tcg_el);
4090
+ gen_helper_rebuild_hflags_m32(tcg_env, tcg_el);
4091
} else {
4092
- gen_helper_rebuild_hflags_a32(cpu_env, tcg_el);
4093
+ gen_helper_rebuild_hflags_a32(tcg_env, tcg_el);
4094
}
4095
}
4096
}
4097
@@ -XXX,XX +XXX,XX @@ static void gen_rebuild_hflags(DisasContext *s, bool new_el)
4098
static void gen_exception_internal(int excp)
4099
{
4100
assert(excp_is_internal(excp));
4101
- gen_helper_exception_internal(cpu_env, tcg_constant_i32(excp));
4102
+ gen_helper_exception_internal(tcg_env, tcg_constant_i32(excp));
4103
}
4104
4105
static void gen_singlestep_exception(DisasContext *s)
4106
@@ -XXX,XX +XXX,XX @@ static inline void gen_arm_shift_reg(TCGv_i32 var, int shiftop,
4107
{
4108
if (flags) {
4109
switch (shiftop) {
4110
- case 0: gen_helper_shl_cc(var, cpu_env, var, shift); break;
4111
- case 1: gen_helper_shr_cc(var, cpu_env, var, shift); break;
4112
- case 2: gen_helper_sar_cc(var, cpu_env, var, shift); break;
4113
- case 3: gen_helper_ror_cc(var, cpu_env, var, shift); break;
4114
+ case 0: gen_helper_shl_cc(var, tcg_env, var, shift); break;
4115
+ case 1: gen_helper_shr_cc(var, tcg_env, var, shift); break;
4116
+ case 2: gen_helper_sar_cc(var, tcg_env, var, shift); break;
4117
+ case 3: gen_helper_ror_cc(var, tcg_env, var, shift); break;
4118
}
4119
} else {
4120
switch (shiftop) {
4121
@@ -XXX,XX +XXX,XX @@ static inline void gen_bxns(DisasContext *s, int rm)
4122
* is correct in the non-UNPREDICTABLE cases, and we can choose
4123
* "zeroes the IT bits" as our UNPREDICTABLE behaviour otherwise.
4124
*/
4125
- gen_helper_v7m_bxns(cpu_env, var);
4126
+ gen_helper_v7m_bxns(tcg_env, var);
4127
s->base.is_jmp = DISAS_EXIT;
4128
}
4129
4130
@@ -XXX,XX +XXX,XX @@ static inline void gen_blxns(DisasContext *s, int rm)
4131
* The blxns helper may throw an exception.
4132
*/
4133
gen_update_pc(s, curr_insn_len(s));
4134
- gen_helper_v7m_blxns(cpu_env, var);
4135
+ gen_helper_v7m_blxns(tcg_env, var);
4136
s->base.is_jmp = DISAS_EXIT;
4137
}
4138
4139
@@ -XXX,XX +XXX,XX @@ static inline void gen_hvc(DisasContext *s, int imm16)
4140
* the insn really executes).
4141
*/
4142
gen_update_pc(s, 0);
4143
- gen_helper_pre_hvc(cpu_env);
4144
+ gen_helper_pre_hvc(tcg_env);
4145
/* Otherwise we will treat this as a real exception which
4146
* happens after execution of the insn. (The distinction matters
4147
* for the PC value reported to the exception handler and also
4148
@@ -XXX,XX +XXX,XX @@ static inline void gen_smc(DisasContext *s)
4149
* the insn executes.
4150
*/
4151
gen_update_pc(s, 0);
4152
- gen_helper_pre_smc(cpu_env, tcg_constant_i32(syn_aa32_smc()));
4153
+ gen_helper_pre_smc(tcg_env, tcg_constant_i32(syn_aa32_smc()));
4154
gen_update_pc(s, curr_insn_len(s));
4155
s->base.is_jmp = DISAS_SMC;
4156
}
4157
@@ -XXX,XX +XXX,XX @@ static void gen_exception_internal_insn(DisasContext *s, int excp)
4158
4159
static void gen_exception_el_v(int excp, uint32_t syndrome, TCGv_i32 tcg_el)
4160
{
4161
- gen_helper_exception_with_syndrome_el(cpu_env, tcg_constant_i32(excp),
4162
+ gen_helper_exception_with_syndrome_el(tcg_env, tcg_constant_i32(excp),
4163
tcg_constant_i32(syndrome), tcg_el);
4164
}
4165
4166
@@ -XXX,XX +XXX,XX @@ static void gen_exception_el(int excp, uint32_t syndrome, uint32_t target_el)
4167
4168
static void gen_exception(int excp, uint32_t syndrome)
4169
{
4170
- gen_helper_exception_with_syndrome(cpu_env, tcg_constant_i32(excp),
4171
+ gen_helper_exception_with_syndrome(tcg_env, tcg_constant_i32(excp),
4172
tcg_constant_i32(syndrome));
4173
}
4174
4175
@@ -XXX,XX +XXX,XX @@ static void gen_exception_bkpt_insn(DisasContext *s, uint32_t syn)
4176
{
4177
gen_set_condexec(s);
4178
gen_update_pc(s, 0);
4179
- gen_helper_exception_bkpt_insn(cpu_env, tcg_constant_i32(syn));
4180
+ gen_helper_exception_bkpt_insn(tcg_env, tcg_constant_i32(syn));
4181
s->base.is_jmp = DISAS_NORETURN;
4182
}
4183
4184
@@ -XXX,XX +XXX,XX @@ void read_neon_element32(TCGv_i32 dest, int reg, int ele, MemOp memop)
4185
4186
switch (memop) {
4187
case MO_SB:
4188
- tcg_gen_ld8s_i32(dest, cpu_env, off);
4189
+ tcg_gen_ld8s_i32(dest, tcg_env, off);
4190
break;
4191
case MO_UB:
4192
- tcg_gen_ld8u_i32(dest, cpu_env, off);
4193
+ tcg_gen_ld8u_i32(dest, tcg_env, off);
4194
break;
4195
case MO_SW:
4196
- tcg_gen_ld16s_i32(dest, cpu_env, off);
4197
+ tcg_gen_ld16s_i32(dest, tcg_env, off);
4198
break;
4199
case MO_UW:
4200
- tcg_gen_ld16u_i32(dest, cpu_env, off);
4201
+ tcg_gen_ld16u_i32(dest, tcg_env, off);
4202
break;
4203
case MO_UL:
4204
case MO_SL:
4205
- tcg_gen_ld_i32(dest, cpu_env, off);
4206
+ tcg_gen_ld_i32(dest, tcg_env, off);
4207
break;
4208
default:
4209
g_assert_not_reached();
4210
@@ -XXX,XX +XXX,XX @@ void read_neon_element64(TCGv_i64 dest, int reg, int ele, MemOp memop)
4211
4212
switch (memop) {
4213
case MO_SL:
4214
- tcg_gen_ld32s_i64(dest, cpu_env, off);
4215
+ tcg_gen_ld32s_i64(dest, tcg_env, off);
4216
break;
4217
case MO_UL:
4218
- tcg_gen_ld32u_i64(dest, cpu_env, off);
4219
+ tcg_gen_ld32u_i64(dest, tcg_env, off);
4220
break;
4221
case MO_UQ:
4222
- tcg_gen_ld_i64(dest, cpu_env, off);
4223
+ tcg_gen_ld_i64(dest, tcg_env, off);
4224
break;
4225
default:
4226
g_assert_not_reached();
4227
@@ -XXX,XX +XXX,XX @@ void write_neon_element32(TCGv_i32 src, int reg, int ele, MemOp memop)
4228
4229
switch (memop) {
4230
case MO_8:
4231
- tcg_gen_st8_i32(src, cpu_env, off);
4232
+ tcg_gen_st8_i32(src, tcg_env, off);
4233
break;
4234
case MO_16:
4235
- tcg_gen_st16_i32(src, cpu_env, off);
4236
+ tcg_gen_st16_i32(src, tcg_env, off);
4237
break;
4238
case MO_32:
4239
- tcg_gen_st_i32(src, cpu_env, off);
4240
+ tcg_gen_st_i32(src, tcg_env, off);
4241
break;
4242
default:
4243
g_assert_not_reached();
4244
@@ -XXX,XX +XXX,XX @@ void write_neon_element64(TCGv_i64 src, int reg, int ele, MemOp memop)
4245
4246
switch (memop) {
4247
case MO_32:
4248
- tcg_gen_st32_i64(src, cpu_env, off);
4249
+ tcg_gen_st32_i64(src, tcg_env, off);
4250
break;
4251
case MO_64:
4252
- tcg_gen_st_i64(src, cpu_env, off);
4253
+ tcg_gen_st_i64(src, tcg_env, off);
4254
break;
4255
default:
4256
g_assert_not_reached();
4257
@@ -XXX,XX +XXX,XX @@ void write_neon_element64(TCGv_i64 src, int reg, int ele, MemOp memop)
4258
4259
static inline void iwmmxt_load_reg(TCGv_i64 var, int reg)
4260
{
4261
- tcg_gen_ld_i64(var, cpu_env, offsetof(CPUARMState, iwmmxt.regs[reg]));
4262
+ tcg_gen_ld_i64(var, tcg_env, offsetof(CPUARMState, iwmmxt.regs[reg]));
4263
}
4264
4265
static inline void iwmmxt_store_reg(TCGv_i64 var, int reg)
4266
{
4267
- tcg_gen_st_i64(var, cpu_env, offsetof(CPUARMState, iwmmxt.regs[reg]));
4268
+ tcg_gen_st_i64(var, tcg_env, offsetof(CPUARMState, iwmmxt.regs[reg]));
4269
}
4270
4271
static inline TCGv_i32 iwmmxt_load_creg(int reg)
4272
{
4273
TCGv_i32 var = tcg_temp_new_i32();
4274
- tcg_gen_ld_i32(var, cpu_env, offsetof(CPUARMState, iwmmxt.cregs[reg]));
4275
+ tcg_gen_ld_i32(var, tcg_env, offsetof(CPUARMState, iwmmxt.cregs[reg]));
4276
return var;
4277
}
4278
4279
static inline void iwmmxt_store_creg(int reg, TCGv_i32 var)
4280
{
4281
- tcg_gen_st_i32(var, cpu_env, offsetof(CPUARMState, iwmmxt.cregs[reg]));
4282
+ tcg_gen_st_i32(var, tcg_env, offsetof(CPUARMState, iwmmxt.cregs[reg]));
4283
}
4284
4285
static inline void gen_op_iwmmxt_movq_wRn_M0(int rn)
4286
@@ -XXX,XX +XXX,XX @@ static inline void gen_op_iwmmxt_##name##_M0_wRn(int rn) \
4287
static inline void gen_op_iwmmxt_##name##_M0_wRn(int rn) \
4288
{ \
4289
iwmmxt_load_reg(cpu_V1, rn); \
4290
- gen_helper_iwmmxt_##name(cpu_M0, cpu_env, cpu_M0, cpu_V1); \
4291
+ gen_helper_iwmmxt_##name(cpu_M0, tcg_env, cpu_M0, cpu_V1); \
4292
}
4293
4294
#define IWMMXT_OP_ENV_SIZE(name) \
4295
@@ -XXX,XX +XXX,XX @@ IWMMXT_OP_ENV(name##l)
4296
#define IWMMXT_OP_ENV1(name) \
4297
static inline void gen_op_iwmmxt_##name##_M0(void) \
4298
{ \
4299
- gen_helper_iwmmxt_##name(cpu_M0, cpu_env, cpu_M0); \
4300
+ gen_helper_iwmmxt_##name(cpu_M0, tcg_env, cpu_M0); \
4301
}
4302
4303
IWMMXT_OP(maddsq)
4304
@@ -XXX,XX +XXX,XX @@ static int disas_iwmmxt_insn(DisasContext *s, uint32_t insn)
4305
}
4306
switch ((insn >> 22) & 3) {
4307
case 1:
4308
- gen_helper_iwmmxt_srlw(cpu_M0, cpu_env, cpu_M0, tmp);
4309
+ gen_helper_iwmmxt_srlw(cpu_M0, tcg_env, cpu_M0, tmp);
4310
break;
4311
case 2:
4312
- gen_helper_iwmmxt_srll(cpu_M0, cpu_env, cpu_M0, tmp);
4313
+ gen_helper_iwmmxt_srll(cpu_M0, tcg_env, cpu_M0, tmp);
4314
break;
4315
case 3:
4316
- gen_helper_iwmmxt_srlq(cpu_M0, cpu_env, cpu_M0, tmp);
4317
+ gen_helper_iwmmxt_srlq(cpu_M0, tcg_env, cpu_M0, tmp);
4318
break;
4319
}
4320
gen_op_iwmmxt_movq_wRn_M0(wrd);
4321
@@ -XXX,XX +XXX,XX @@ static int disas_iwmmxt_insn(DisasContext *s, uint32_t insn)
4322
}
4323
switch ((insn >> 22) & 3) {
4324
case 1:
4325
- gen_helper_iwmmxt_sraw(cpu_M0, cpu_env, cpu_M0, tmp);
4326
+ gen_helper_iwmmxt_sraw(cpu_M0, tcg_env, cpu_M0, tmp);
4327
break;
4328
case 2:
4329
- gen_helper_iwmmxt_sral(cpu_M0, cpu_env, cpu_M0, tmp);
4330
+ gen_helper_iwmmxt_sral(cpu_M0, tcg_env, cpu_M0, tmp);
4331
break;
4332
case 3:
4333
- gen_helper_iwmmxt_sraq(cpu_M0, cpu_env, cpu_M0, tmp);
4334
+ gen_helper_iwmmxt_sraq(cpu_M0, tcg_env, cpu_M0, tmp);
4335
break;
4336
}
4337
gen_op_iwmmxt_movq_wRn_M0(wrd);
4338
@@ -XXX,XX +XXX,XX @@ static int disas_iwmmxt_insn(DisasContext *s, uint32_t insn)
4339
}
4340
switch ((insn >> 22) & 3) {
4341
case 1:
4342
- gen_helper_iwmmxt_sllw(cpu_M0, cpu_env, cpu_M0, tmp);
4343
+ gen_helper_iwmmxt_sllw(cpu_M0, tcg_env, cpu_M0, tmp);
4344
break;
4345
case 2:
4346
- gen_helper_iwmmxt_slll(cpu_M0, cpu_env, cpu_M0, tmp);
4347
+ gen_helper_iwmmxt_slll(cpu_M0, tcg_env, cpu_M0, tmp);
4348
break;
4349
case 3:
4350
- gen_helper_iwmmxt_sllq(cpu_M0, cpu_env, cpu_M0, tmp);
4351
+ gen_helper_iwmmxt_sllq(cpu_M0, tcg_env, cpu_M0, tmp);
4352
break;
4353
}
4354
gen_op_iwmmxt_movq_wRn_M0(wrd);
4355
@@ -XXX,XX +XXX,XX @@ static int disas_iwmmxt_insn(DisasContext *s, uint32_t insn)
4356
if (gen_iwmmxt_shift(insn, 0xf, tmp)) {
4357
return 1;
4358
}
4359
- gen_helper_iwmmxt_rorw(cpu_M0, cpu_env, cpu_M0, tmp);
4360
+ gen_helper_iwmmxt_rorw(cpu_M0, tcg_env, cpu_M0, tmp);
4361
break;
4362
case 2:
4363
if (gen_iwmmxt_shift(insn, 0x1f, tmp)) {
4364
return 1;
4365
}
4366
- gen_helper_iwmmxt_rorl(cpu_M0, cpu_env, cpu_M0, tmp);
4367
+ gen_helper_iwmmxt_rorl(cpu_M0, tcg_env, cpu_M0, tmp);
4368
break;
4369
case 3:
4370
if (gen_iwmmxt_shift(insn, 0x3f, tmp)) {
4371
return 1;
4372
}
4373
- gen_helper_iwmmxt_rorq(cpu_M0, cpu_env, cpu_M0, tmp);
4374
+ gen_helper_iwmmxt_rorq(cpu_M0, tcg_env, cpu_M0, tmp);
4375
break;
4376
}
4377
gen_op_iwmmxt_movq_wRn_M0(wrd);
4378
@@ -XXX,XX +XXX,XX @@ static int disas_iwmmxt_insn(DisasContext *s, uint32_t insn)
4379
rd0 = (insn >> 16) & 0xf;
4380
gen_op_iwmmxt_movq_M0_wRn(rd0);
4381
tmp = tcg_constant_i32(((insn >> 16) & 0xf0) | (insn & 0x0f));
4382
- gen_helper_iwmmxt_shufh(cpu_M0, cpu_env, cpu_M0, tmp);
4383
+ gen_helper_iwmmxt_shufh(cpu_M0, tcg_env, cpu_M0, tmp);
4384
gen_op_iwmmxt_movq_wRn_M0(wrd);
4385
gen_op_iwmmxt_set_mup();
4386
gen_op_iwmmxt_set_cup();
4387
@@ -XXX,XX +XXX,XX @@ static void gen_msr_banked(DisasContext *s, int r, int sysm, int rn)
4388
gen_set_condexec(s);
4389
gen_update_pc(s, 0);
4390
tcg_reg = load_reg(s, rn);
4391
- gen_helper_msr_banked(cpu_env, tcg_reg,
4392
+ gen_helper_msr_banked(tcg_env, tcg_reg,
4393
tcg_constant_i32(tgtmode),
4394
tcg_constant_i32(regno));
4395
s->base.is_jmp = DISAS_UPDATE_EXIT;
4396
@@ -XXX,XX +XXX,XX @@ static void gen_mrs_banked(DisasContext *s, int r, int sysm, int rn)
4397
gen_set_condexec(s);
4398
gen_update_pc(s, 0);
4399
tcg_reg = tcg_temp_new_i32();
4400
- gen_helper_mrs_banked(tcg_reg, cpu_env,
4401
+ gen_helper_mrs_banked(tcg_reg, tcg_env,
4402
tcg_constant_i32(tgtmode),
4403
tcg_constant_i32(regno));
4404
store_reg(s, rn, tcg_reg);
4405
@@ -XXX,XX +XXX,XX @@ static void gen_rfe(DisasContext *s, TCGv_i32 pc, TCGv_i32 cpsr)
4406
* be called after storing the new PC.
4407
*/
4408
translator_io_start(&s->base);
4409
- gen_helper_cpsr_write_eret(cpu_env, cpsr);
4410
+ gen_helper_cpsr_write_eret(tcg_env, cpsr);
4411
/* Must exit loop to check un-masked IRQs */
4412
s->base.is_jmp = DISAS_EXIT;
4413
}
4414
@@ -XXX,XX +XXX,XX @@ static void gen_gvec_fn3_qc(uint32_t rd_ofs, uint32_t rn_ofs, uint32_t rm_ofs,
4415
{
4416
TCGv_ptr qc_ptr = tcg_temp_new_ptr();
4417
4418
- tcg_gen_addi_ptr(qc_ptr, cpu_env, offsetof(CPUARMState, vfp.qc));
4419
+ tcg_gen_addi_ptr(qc_ptr, tcg_env, offsetof(CPUARMState, vfp.qc));
4420
tcg_gen_gvec_3_ptr(rd_ofs, rn_ofs, rm_ofs, qc_ptr,
4421
opr_sz, max_sz, 0, fn);
4422
}
4423
@@ -XXX,XX +XXX,XX @@ static void do_coproc_insn(DisasContext *s, int cpnum, int is64,
4424
case 0:
4425
if (arm_dc_feature(s, ARM_FEATURE_AARCH64)
4426
&& dc_isar_feature(aa64_tidcp1, s)) {
4427
- gen_helper_tidcp_el0(cpu_env, tcg_constant_i32(syndrome));
4428
+ gen_helper_tidcp_el0(tcg_env, tcg_constant_i32(syndrome));
4429
}
4430
break;
4431
case 1:
4432
- gen_helper_tidcp_el1(cpu_env, tcg_constant_i32(syndrome));
4433
+ gen_helper_tidcp_el1(tcg_env, tcg_constant_i32(syndrome));
4434
break;
4435
}
4436
}
4437
@@ -XXX,XX +XXX,XX @@ static void do_coproc_insn(DisasContext *s, int cpnum, int is64,
4438
gen_set_condexec(s);
4439
gen_update_pc(s, 0);
4440
tcg_ri = tcg_temp_new_ptr();
4441
- gen_helper_access_check_cp_reg(tcg_ri, cpu_env,
4442
+ gen_helper_access_check_cp_reg(tcg_ri, tcg_env,
4443
tcg_constant_i32(key),
4444
tcg_constant_i32(syndrome),
4445
tcg_constant_i32(isread));
4446
@@ -XXX,XX +XXX,XX @@ static void do_coproc_insn(DisasContext *s, int cpnum, int is64,
4447
tcg_ri = gen_lookup_cp_reg(key);
4448
}
4449
tmp64 = tcg_temp_new_i64();
4450
- gen_helper_get_cp_reg64(tmp64, cpu_env, tcg_ri);
4451
+ gen_helper_get_cp_reg64(tmp64, tcg_env, tcg_ri);
4452
} else {
4453
tmp64 = tcg_temp_new_i64();
4454
- tcg_gen_ld_i64(tmp64, cpu_env, ri->fieldoffset);
4455
+ tcg_gen_ld_i64(tmp64, tcg_env, ri->fieldoffset);
4456
}
4457
tmp = tcg_temp_new_i32();
4458
tcg_gen_extrl_i64_i32(tmp, tmp64);
4459
@@ -XXX,XX +XXX,XX @@ static void do_coproc_insn(DisasContext *s, int cpnum, int is64,
4460
tcg_ri = gen_lookup_cp_reg(key);
4461
}
4462
tmp = tcg_temp_new_i32();
4463
- gen_helper_get_cp_reg(tmp, cpu_env, tcg_ri);
4464
+ gen_helper_get_cp_reg(tmp, tcg_env, tcg_ri);
4465
} else {
4466
tmp = load_cpu_offset(ri->fieldoffset);
4467
}
4468
@@ -XXX,XX +XXX,XX @@ static void do_coproc_insn(DisasContext *s, int cpnum, int is64,
4469
if (!tcg_ri) {
4470
tcg_ri = gen_lookup_cp_reg(key);
4471
}
4472
- gen_helper_set_cp_reg64(cpu_env, tcg_ri, tmp64);
4473
+ gen_helper_set_cp_reg64(tcg_env, tcg_ri, tmp64);
4474
} else {
4475
- tcg_gen_st_i64(tmp64, cpu_env, ri->fieldoffset);
4476
+ tcg_gen_st_i64(tmp64, tcg_env, ri->fieldoffset);
4477
}
4478
} else {
4479
TCGv_i32 tmp = load_reg(s, rt);
4480
@@ -XXX,XX +XXX,XX @@ static void do_coproc_insn(DisasContext *s, int cpnum, int is64,
4481
if (!tcg_ri) {
4482
tcg_ri = gen_lookup_cp_reg(key);
4483
}
4484
- gen_helper_set_cp_reg(cpu_env, tcg_ri, tmp);
4485
+ gen_helper_set_cp_reg(tcg_env, tcg_ri, tmp);
4486
} else {
4487
store_cpu_offset(tmp, ri->fieldoffset, 4);
4488
}
4489
@@ -XXX,XX +XXX,XX @@ static void gen_srs(DisasContext *s,
4490
/* get_r13_banked() will raise an exception if called from System mode */
4491
gen_set_condexec(s);
4492
gen_update_pc(s, 0);
4493
- gen_helper_get_r13_banked(addr, cpu_env, tcg_constant_i32(mode));
4494
+ gen_helper_get_r13_banked(addr, tcg_env, tcg_constant_i32(mode));
4495
switch (amode) {
4496
case 0: /* DA */
4497
offset = -4;
4498
@@ -XXX,XX +XXX,XX @@ static void gen_srs(DisasContext *s,
4499
g_assert_not_reached();
4500
}
4501
tcg_gen_addi_i32(addr, addr, offset);
4502
- gen_helper_set_r13_banked(cpu_env, tcg_constant_i32(mode), addr);
4503
+ gen_helper_set_r13_banked(tcg_env, tcg_constant_i32(mode), addr);
4504
}
4505
s->base.is_jmp = DISAS_UPDATE_EXIT;
4506
}
4507
@@ -XXX,XX +XXX,XX @@ static bool trans_LSRL_ri(DisasContext *s, arg_mve_shl_ri *a)
4508
4509
static void gen_mve_sqshll(TCGv_i64 r, TCGv_i64 n, int64_t shift)
4510
{
4511
- gen_helper_mve_sqshll(r, cpu_env, n, tcg_constant_i32(shift));
4512
+ gen_helper_mve_sqshll(r, tcg_env, n, tcg_constant_i32(shift));
4513
}
4514
4515
static bool trans_SQSHLL_ri(DisasContext *s, arg_mve_shl_ri *a)
4516
@@ -XXX,XX +XXX,XX @@ static bool trans_SQSHLL_ri(DisasContext *s, arg_mve_shl_ri *a)
4517
4518
static void gen_mve_uqshll(TCGv_i64 r, TCGv_i64 n, int64_t shift)
4519
{
4520
- gen_helper_mve_uqshll(r, cpu_env, n, tcg_constant_i32(shift));
4521
+ gen_helper_mve_uqshll(r, tcg_env, n, tcg_constant_i32(shift));
4522
}
4523
4524
static bool trans_UQSHLL_ri(DisasContext *s, arg_mve_shl_ri *a)
4525
@@ -XXX,XX +XXX,XX @@ static bool do_mve_shl_rr(DisasContext *s, arg_mve_shl_rr *a, WideShiftFn *fn)
4526
tcg_gen_concat_i32_i64(rda, rdalo, rdahi);
4527
4528
/* The helper takes care of the sign-extension of the low 8 bits of Rm */
4529
- fn(rda, cpu_env, rda, cpu_R[a->rm]);
4530
+ fn(rda, tcg_env, rda, cpu_R[a->rm]);
4531
4532
tcg_gen_extrl_i64_i32(rdalo, rda);
4533
tcg_gen_extrh_i64_i32(rdahi, rda);
4534
@@ -XXX,XX +XXX,XX @@ static bool trans_SRSHR_ri(DisasContext *s, arg_mve_sh_ri *a)
4535
4536
static void gen_mve_sqshl(TCGv_i32 r, TCGv_i32 n, int32_t shift)
4537
{
4538
- gen_helper_mve_sqshl(r, cpu_env, n, tcg_constant_i32(shift));
4539
+ gen_helper_mve_sqshl(r, tcg_env, n, tcg_constant_i32(shift));
4540
}
4541
4542
static bool trans_SQSHL_ri(DisasContext *s, arg_mve_sh_ri *a)
4543
@@ -XXX,XX +XXX,XX @@ static bool trans_SQSHL_ri(DisasContext *s, arg_mve_sh_ri *a)
4544
4545
static void gen_mve_uqshl(TCGv_i32 r, TCGv_i32 n, int32_t shift)
4546
{
4547
- gen_helper_mve_uqshl(r, cpu_env, n, tcg_constant_i32(shift));
4548
+ gen_helper_mve_uqshl(r, tcg_env, n, tcg_constant_i32(shift));
4549
}
4550
4551
static bool trans_UQSHL_ri(DisasContext *s, arg_mve_sh_ri *a)
4552
@@ -XXX,XX +XXX,XX @@ static bool do_mve_sh_rr(DisasContext *s, arg_mve_sh_rr *a, ShiftFn *fn)
4553
}
4554
4555
/* The helper takes care of the sign-extension of the low 8 bits of Rm */
4556
- fn(cpu_R[a->rda], cpu_env, cpu_R[a->rda], cpu_R[a->rm]);
4557
+ fn(cpu_R[a->rda], tcg_env, cpu_R[a->rda], cpu_R[a->rm]);
4558
return true;
4559
}
4560
4561
@@ -XXX,XX +XXX,XX @@ static bool op_qaddsub(DisasContext *s, arg_rrr *a, bool add, bool doub)
4562
t0 = load_reg(s, a->rm);
4563
t1 = load_reg(s, a->rn);
4564
if (doub) {
4565
- gen_helper_add_saturate(t1, cpu_env, t1, t1);
4566
+ gen_helper_add_saturate(t1, tcg_env, t1, t1);
4567
}
4568
if (add) {
4569
- gen_helper_add_saturate(t0, cpu_env, t0, t1);
4570
+ gen_helper_add_saturate(t0, tcg_env, t0, t1);
4571
} else {
4572
- gen_helper_sub_saturate(t0, cpu_env, t0, t1);
4573
+ gen_helper_sub_saturate(t0, tcg_env, t0, t1);
4574
}
4575
store_reg(s, a->rd, t0);
4576
return true;
4577
@@ -XXX,XX +XXX,XX @@ static bool op_smlaxxx(DisasContext *s, arg_rrrr *a,
4578
break;
4579
case 1:
4580
t1 = load_reg(s, a->ra);
4581
- gen_helper_add_setq(t0, cpu_env, t0, t1);
4582
+ gen_helper_add_setq(t0, tcg_env, t0, t1);
4583
store_reg(s, a->rd, t0);
4584
break;
4585
case 2:
4586
@@ -XXX,XX +XXX,XX @@ static bool op_smlawx(DisasContext *s, arg_rrrr *a, bool add, bool mt)
4587
tcg_gen_muls2_i32(t0, t1, t0, t1);
4588
if (add) {
4589
t0 = load_reg(s, a->ra);
4590
- gen_helper_add_setq(t1, cpu_env, t1, t0);
4591
+ gen_helper_add_setq(t1, tcg_env, t1, t0);
4592
}
4593
store_reg(s, a->rd, t1);
4594
return true;
4595
@@ -XXX,XX +XXX,XX @@ static bool trans_ESB(DisasContext *s, arg_ESB *a)
4596
* Test for EL2 present, and defer test for SEL2 to runtime.
4597
*/
4598
if (s->current_el <= 1 && arm_dc_feature(s, ARM_FEATURE_EL2)) {
4599
- gen_helper_vesb(cpu_env);
4600
+ gen_helper_vesb(tcg_env);
4601
}
4602
}
4603
return true;
4604
@@ -XXX,XX +XXX,XX @@ static bool trans_MRS_reg(DisasContext *s, arg_MRS_reg *a)
4605
tmp = load_cpu_field(spsr);
4606
} else {
4607
tmp = tcg_temp_new_i32();
4608
- gen_helper_cpsr_read(tmp, cpu_env);
4609
+ gen_helper_cpsr_read(tmp, tcg_env);
4610
}
4611
store_reg(s, a->rd, tmp);
4612
return true;
4613
@@ -XXX,XX +XXX,XX @@ static bool trans_MRS_v7m(DisasContext *s, arg_MRS_v7m *a)
4614
return false;
4615
}
4616
tmp = tcg_temp_new_i32();
4617
- gen_helper_v7m_mrs(tmp, cpu_env, tcg_constant_i32(a->sysm));
4618
+ gen_helper_v7m_mrs(tmp, tcg_env, tcg_constant_i32(a->sysm));
4619
store_reg(s, a->rd, tmp);
4620
return true;
4621
}
4622
@@ -XXX,XX +XXX,XX @@ static bool trans_MSR_v7m(DisasContext *s, arg_MSR_v7m *a)
4623
}
4624
addr = tcg_constant_i32((a->mask << 10) | a->sysm);
4625
reg = load_reg(s, a->rn);
4626
- gen_helper_v7m_msr(cpu_env, addr, reg);
4627
+ gen_helper_v7m_msr(tcg_env, addr, reg);
4628
/* If we wrote to CONTROL, the EL might have changed */
4629
gen_rebuild_hflags(s, true);
4630
gen_lookup_tb(s);
4631
@@ -XXX,XX +XXX,XX @@ static bool trans_BXJ(DisasContext *s, arg_BXJ *a)
4632
if (!arm_dc_feature(s, ARM_FEATURE_V8) &&
4633
arm_dc_feature(s, ARM_FEATURE_EL2) &&
4634
s->current_el < 2 && s->ns) {
4635
- gen_helper_check_bxj_trap(cpu_env, tcg_constant_i32(a->rm));
4636
+ gen_helper_check_bxj_trap(tcg_env, tcg_constant_i32(a->rm));
4637
}
4638
/* Trivial implementation equivalent to bx. */
4639
gen_bx(s, load_reg(s, a->rm));
4640
@@ -XXX,XX +XXX,XX @@ static bool trans_TT(DisasContext *s, arg_TT *a)
4641
4642
addr = load_reg(s, a->rn);
4643
tmp = tcg_temp_new_i32();
4644
- gen_helper_v7m_tt(tmp, cpu_env, addr, tcg_constant_i32((a->A << 1) | a->T));
4645
+ gen_helper_v7m_tt(tmp, tcg_env, addr, tcg_constant_i32((a->A << 1) | a->T));
4646
store_reg(s, a->rd, tmp);
4647
return true;
4648
}
4649
@@ -XXX,XX +XXX,XX @@ static TCGv_i32 op_addr_rr_pre(DisasContext *s, arg_ldst_rr *a)
4650
TCGv_i32 addr = load_reg(s, a->rn);
4651
4652
if (s->v8m_stackcheck && a->rn == 13 && a->w) {
4653
- gen_helper_v8m_stackcheck(cpu_env, addr);
4654
+ gen_helper_v8m_stackcheck(tcg_env, addr);
4655
}
4656
4657
if (a->p) {
4658
@@ -XXX,XX +XXX,XX @@ static TCGv_i32 op_addr_ri_pre(DisasContext *s, arg_ldst_ri *a)
4659
if (!a->u) {
4660
TCGv_i32 newsp = tcg_temp_new_i32();
4661
tcg_gen_addi_i32(newsp, cpu_R[13], ofs);
4662
- gen_helper_v8m_stackcheck(cpu_env, newsp);
4663
+ gen_helper_v8m_stackcheck(tcg_env, newsp);
4664
} else {
4665
- gen_helper_v8m_stackcheck(cpu_env, cpu_R[13]);
4666
+ gen_helper_v8m_stackcheck(tcg_env, cpu_R[13]);
4667
}
4668
}
4669
4670
@@ -XXX,XX +XXX,XX @@ static bool op_par_addsub_ge(DisasContext *s, arg_rrr *a,
4671
t1 = load_reg(s, a->rm);
4672
4673
ge = tcg_temp_new_ptr();
4674
- tcg_gen_addi_ptr(ge, cpu_env, offsetof(CPUARMState, GE));
4675
+ tcg_gen_addi_ptr(ge, tcg_env, offsetof(CPUARMState, GE));
4676
gen(t0, t0, t1, ge);
4677
4678
store_reg(s, a->rd, t0);
4679
@@ -XXX,XX +XXX,XX @@ static bool op_sat(DisasContext *s, arg_sat *a,
4680
tcg_gen_shli_i32(tmp, tmp, shift);
4681
}
4682
4683
- gen(tmp, cpu_env, tmp, tcg_constant_i32(a->satimm));
4684
+ gen(tmp, tcg_env, tmp, tcg_constant_i32(a->satimm));
4685
4686
store_reg(s, a->rd, tmp);
4687
return true;
4688
@@ -XXX,XX +XXX,XX @@ static bool trans_SEL(DisasContext *s, arg_rrr *a)
4689
t1 = load_reg(s, a->rn);
4690
t2 = load_reg(s, a->rm);
4691
t3 = tcg_temp_new_i32();
4692
- tcg_gen_ld_i32(t3, cpu_env, offsetof(CPUARMState, GE));
4693
+ tcg_gen_ld_i32(t3, tcg_env, offsetof(CPUARMState, GE));
4694
gen_helper_sel_flags(t1, t3, t1, t2);
4695
store_reg(s, a->rd, t1);
4696
return true;
4697
@@ -XXX,XX +XXX,XX @@ static bool op_smlad(DisasContext *s, arg_rrrr *a, bool m_swap, bool sub)
4698
4699
if (a->ra != 15) {
4700
t2 = load_reg(s, a->ra);
4701
- gen_helper_add_setq(t1, cpu_env, t1, t2);
4702
+ gen_helper_add_setq(t1, tcg_env, t1, t2);
4703
}
4704
} else if (a->ra == 15) {
4705
/* Single saturation-checking addition */
4706
- gen_helper_add_setq(t1, cpu_env, t1, t2);
4707
+ gen_helper_add_setq(t1, tcg_env, t1, t2);
4708
} else {
4709
/*
4710
* We need to add the products and Ra together and then
4711
@@ -XXX,XX +XXX,XX @@ static bool op_div(DisasContext *s, arg_rrr *a, bool u)
4712
t1 = load_reg(s, a->rn);
4713
t2 = load_reg(s, a->rm);
4714
if (u) {
4715
- gen_helper_udiv(t1, cpu_env, t1, t2);
4716
+ gen_helper_udiv(t1, tcg_env, t1, t2);
4717
} else {
4718
- gen_helper_sdiv(t1, cpu_env, t1, t2);
4719
+ gen_helper_sdiv(t1, tcg_env, t1, t2);
4720
}
4721
store_reg(s, a->rd, t1);
4722
return true;
4723
@@ -XXX,XX +XXX,XX @@ static TCGv_i32 op_addr_block_pre(DisasContext *s, arg_ldst_block *a, int n)
4724
* either the original SP (if incrementing) or our
4725
* final SP (if decrementing), so that's what we check.
4726
*/
4727
- gen_helper_v8m_stackcheck(cpu_env, addr);
4728
+ gen_helper_v8m_stackcheck(tcg_env, addr);
4729
}
4730
4731
return addr;
4732
@@ -XXX,XX +XXX,XX @@ static bool op_stm(DisasContext *s, arg_ldst_block *a, int min_n)
4733
4734
if (user && i != 15) {
4735
tmp = tcg_temp_new_i32();
4736
- gen_helper_get_user_reg(tmp, cpu_env, tcg_constant_i32(i));
4737
+ gen_helper_get_user_reg(tmp, tcg_env, tcg_constant_i32(i));
4738
} else {
4739
tmp = load_reg(s, i);
4740
}
4741
@@ -XXX,XX +XXX,XX @@ static bool do_ldm(DisasContext *s, arg_ldst_block *a, int min_n)
4742
tmp = tcg_temp_new_i32();
4743
gen_aa32_ld_i32(s, tmp, addr, mem_idx, MO_UL | MO_ALIGN);
4744
if (user) {
4745
- gen_helper_set_user_reg(cpu_env, tcg_constant_i32(i), tmp);
4746
+ gen_helper_set_user_reg(tcg_env, tcg_constant_i32(i), tmp);
4747
} else if (i == a->rn) {
4748
loaded_var = tmp;
4749
loaded_base = true;
4750
@@ -XXX,XX +XXX,XX @@ static bool do_ldm(DisasContext *s, arg_ldst_block *a, int min_n)
4751
/* Restore CPSR from SPSR. */
4752
tmp = load_cpu_field(spsr);
4753
translator_io_start(&s->base);
4754
- gen_helper_cpsr_write_eret(cpu_env, tmp);
4755
+ gen_helper_cpsr_write_eret(tcg_env, tmp);
4756
/* Must exit loop to check un-masked IRQs */
4757
s->base.is_jmp = DISAS_EXIT;
4758
}
4759
@@ -XXX,XX +XXX,XX @@ static bool trans_CLRM(DisasContext *s, arg_CLRM *a)
4760
* Clear APSR (by calling the MSR helper with the same argument
4761
* as for "MSR APSR_nzcvqg, Rn": mask = 0b1100, SYSM=0)
4762
*/
4763
- gen_helper_v7m_msr(cpu_env, tcg_constant_i32(0xc00), zero);
4764
+ gen_helper_v7m_msr(tcg_env, tcg_constant_i32(0xc00), zero);
4765
}
4766
clear_eci_state(s);
4767
return true;
4768
@@ -XXX,XX +XXX,XX @@ static bool trans_VCTP(DisasContext *s, arg_VCTP *a)
4769
tcg_gen_movcond_i32(TCG_COND_LEU, masklen,
4770
masklen, tcg_constant_i32(1 << (4 - a->size)),
4771
rn_shifted, tcg_constant_i32(16));
4772
- gen_helper_mve_vctp(cpu_env, masklen);
4773
+ gen_helper_mve_vctp(tcg_env, masklen);
4774
/* This insn updates predication bits */
4775
s->base.is_jmp = DISAS_UPDATE_NOCHAIN;
4776
mve_update_eci(s);
4777
@@ -XXX,XX +XXX,XX @@ static bool trans_CPS_v7m(DisasContext *s, arg_CPS_v7m *a)
4778
/* FAULTMASK */
4779
if (a->F) {
4780
addr = tcg_constant_i32(19);
4781
- gen_helper_v7m_msr(cpu_env, addr, tmp);
4782
+ gen_helper_v7m_msr(tcg_env, addr, tmp);
4783
}
4784
/* PRIMASK */
4785
if (a->I) {
4786
addr = tcg_constant_i32(16);
4787
- gen_helper_v7m_msr(cpu_env, addr, tmp);
4788
+ gen_helper_v7m_msr(tcg_env, addr, tmp);
4789
}
4790
gen_rebuild_hflags(s, false);
4791
gen_lookup_tb(s);
4792
@@ -XXX,XX +XXX,XX @@ static bool trans_SETEND(DisasContext *s, arg_SETEND *a)
4793
return false;
4794
}
4795
if (a->E != (s->be_data == MO_BE)) {
4796
- gen_helper_setend(cpu_env);
4797
+ gen_helper_setend(tcg_env);
4798
s->base.is_jmp = DISAS_UPDATE_EXIT;
4799
}
4800
return true;
4801
@@ -XXX,XX +XXX,XX @@ static void arm_tr_translate_insn(DisasContextBase *dcbase, CPUState *cpu)
4802
* be possible after an indirect branch, at the start of the TB.
4803
*/
4804
assert(dc->base.num_insns == 1);
4805
- gen_helper_exception_pc_alignment(cpu_env, tcg_constant_tl(pc));
4806
+ gen_helper_exception_pc_alignment(tcg_env, tcg_constant_tl(pc));
4807
dc->base.is_jmp = DISAS_NORETURN;
4808
dc->base.pc_next = QEMU_ALIGN_UP(pc, 4);
4809
return;
4810
@@ -XXX,XX +XXX,XX @@ static void arm_tr_tb_stop(DisasContextBase *dcbase, CPUState *cpu)
4811
/* nothing more to generate */
4812
break;
4813
case DISAS_WFI:
4814
- gen_helper_wfi(cpu_env, tcg_constant_i32(curr_insn_len(dc)));
4815
+ gen_helper_wfi(tcg_env, tcg_constant_i32(curr_insn_len(dc)));
4816
/*
4817
* The helper doesn't necessarily throw an exception, but we
4818
* must go back to the main loop to check for interrupts anyway.
4819
@@ -XXX,XX +XXX,XX @@ static void arm_tr_tb_stop(DisasContextBase *dcbase, CPUState *cpu)
4820
tcg_gen_exit_tb(NULL, 0);
4821
break;
4822
case DISAS_WFE:
4823
- gen_helper_wfe(cpu_env);
4824
+ gen_helper_wfe(tcg_env);
4825
break;
4826
case DISAS_YIELD:
4827
- gen_helper_yield(cpu_env);
4828
+ gen_helper_yield(tcg_env);
4829
break;
4830
case DISAS_SWI:
4831
gen_exception(EXCP_SWI, syn_aa32_svc(dc->svc_imm, dc->thumb));
4832
diff --git a/target/avr/translate.c b/target/avr/translate.c
4833
index XXXXXXX..XXXXXXX 100644
4834
--- a/target/avr/translate.c
4835
+++ b/target/avr/translate.c
4836
@@ -XXX,XX +XXX,XX @@ void avr_cpu_tcg_init(void)
4837
int i;
4838
4839
#define AVR_REG_OFFS(x) offsetof(CPUAVRState, x)
4840
- cpu_pc = tcg_global_mem_new_i32(cpu_env, AVR_REG_OFFS(pc_w), "pc");
4841
- cpu_Cf = tcg_global_mem_new_i32(cpu_env, AVR_REG_OFFS(sregC), "Cf");
4842
- cpu_Zf = tcg_global_mem_new_i32(cpu_env, AVR_REG_OFFS(sregZ), "Zf");
4843
- cpu_Nf = tcg_global_mem_new_i32(cpu_env, AVR_REG_OFFS(sregN), "Nf");
4844
- cpu_Vf = tcg_global_mem_new_i32(cpu_env, AVR_REG_OFFS(sregV), "Vf");
4845
- cpu_Sf = tcg_global_mem_new_i32(cpu_env, AVR_REG_OFFS(sregS), "Sf");
4846
- cpu_Hf = tcg_global_mem_new_i32(cpu_env, AVR_REG_OFFS(sregH), "Hf");
4847
- cpu_Tf = tcg_global_mem_new_i32(cpu_env, AVR_REG_OFFS(sregT), "Tf");
4848
- cpu_If = tcg_global_mem_new_i32(cpu_env, AVR_REG_OFFS(sregI), "If");
4849
- cpu_rampD = tcg_global_mem_new_i32(cpu_env, AVR_REG_OFFS(rampD), "rampD");
4850
- cpu_rampX = tcg_global_mem_new_i32(cpu_env, AVR_REG_OFFS(rampX), "rampX");
4851
- cpu_rampY = tcg_global_mem_new_i32(cpu_env, AVR_REG_OFFS(rampY), "rampY");
4852
- cpu_rampZ = tcg_global_mem_new_i32(cpu_env, AVR_REG_OFFS(rampZ), "rampZ");
4853
- cpu_eind = tcg_global_mem_new_i32(cpu_env, AVR_REG_OFFS(eind), "eind");
4854
- cpu_sp = tcg_global_mem_new_i32(cpu_env, AVR_REG_OFFS(sp), "sp");
4855
- cpu_skip = tcg_global_mem_new_i32(cpu_env, AVR_REG_OFFS(skip), "skip");
4856
+ cpu_pc = tcg_global_mem_new_i32(tcg_env, AVR_REG_OFFS(pc_w), "pc");
4857
+ cpu_Cf = tcg_global_mem_new_i32(tcg_env, AVR_REG_OFFS(sregC), "Cf");
4858
+ cpu_Zf = tcg_global_mem_new_i32(tcg_env, AVR_REG_OFFS(sregZ), "Zf");
4859
+ cpu_Nf = tcg_global_mem_new_i32(tcg_env, AVR_REG_OFFS(sregN), "Nf");
4860
+ cpu_Vf = tcg_global_mem_new_i32(tcg_env, AVR_REG_OFFS(sregV), "Vf");
4861
+ cpu_Sf = tcg_global_mem_new_i32(tcg_env, AVR_REG_OFFS(sregS), "Sf");
4862
+ cpu_Hf = tcg_global_mem_new_i32(tcg_env, AVR_REG_OFFS(sregH), "Hf");
4863
+ cpu_Tf = tcg_global_mem_new_i32(tcg_env, AVR_REG_OFFS(sregT), "Tf");
4864
+ cpu_If = tcg_global_mem_new_i32(tcg_env, AVR_REG_OFFS(sregI), "If");
4865
+ cpu_rampD = tcg_global_mem_new_i32(tcg_env, AVR_REG_OFFS(rampD), "rampD");
4866
+ cpu_rampX = tcg_global_mem_new_i32(tcg_env, AVR_REG_OFFS(rampX), "rampX");
4867
+ cpu_rampY = tcg_global_mem_new_i32(tcg_env, AVR_REG_OFFS(rampY), "rampY");
4868
+ cpu_rampZ = tcg_global_mem_new_i32(tcg_env, AVR_REG_OFFS(rampZ), "rampZ");
4869
+ cpu_eind = tcg_global_mem_new_i32(tcg_env, AVR_REG_OFFS(eind), "eind");
4870
+ cpu_sp = tcg_global_mem_new_i32(tcg_env, AVR_REG_OFFS(sp), "sp");
4871
+ cpu_skip = tcg_global_mem_new_i32(tcg_env, AVR_REG_OFFS(skip), "skip");
4872
4873
for (i = 0; i < NUMBER_OF_CPU_REGISTERS; i++) {
4874
- cpu_r[i] = tcg_global_mem_new_i32(cpu_env, AVR_REG_OFFS(r[i]),
4875
+ cpu_r[i] = tcg_global_mem_new_i32(tcg_env, AVR_REG_OFFS(r[i]),
4876
reg_names[i]);
4877
}
4878
#undef AVR_REG_OFFS
4879
@@ -XXX,XX +XXX,XX @@ static int append_16(DisasContext *ctx, int x)
4880
static bool avr_have_feature(DisasContext *ctx, int feature)
4881
{
4882
if (!avr_feature(ctx->env, feature)) {
4883
- gen_helper_unsupported(cpu_env);
4884
+ gen_helper_unsupported(tcg_env);
4885
ctx->base.is_jmp = DISAS_NORETURN;
4886
return false;
4887
}
4888
@@ -XXX,XX +XXX,XX @@ static bool trans_SBIC(DisasContext *ctx, arg_SBIC *a)
4889
TCGv data = tcg_temp_new_i32();
4890
TCGv port = tcg_constant_i32(a->reg);
4891
4892
- gen_helper_inb(data, cpu_env, port);
4893
+ gen_helper_inb(data, tcg_env, port);
4894
tcg_gen_andi_tl(data, data, 1 << a->bit);
4895
ctx->skip_cond = TCG_COND_EQ;
4896
ctx->skip_var0 = data;
4897
@@ -XXX,XX +XXX,XX @@ static bool trans_SBIS(DisasContext *ctx, arg_SBIS *a)
4898
TCGv data = tcg_temp_new_i32();
4899
TCGv port = tcg_constant_i32(a->reg);
4900
4901
- gen_helper_inb(data, cpu_env, port);
4902
+ gen_helper_inb(data, tcg_env, port);
4903
tcg_gen_andi_tl(data, data, 1 << a->bit);
4904
ctx->skip_cond = TCG_COND_NE;
4905
ctx->skip_var0 = data;
4906
@@ -XXX,XX +XXX,XX @@ static TCGv gen_get_zaddr(void)
4907
static void gen_data_store(DisasContext *ctx, TCGv data, TCGv addr)
4908
{
4909
if (ctx->base.tb->flags & TB_FLAGS_FULL_ACCESS) {
4910
- gen_helper_fullwr(cpu_env, data, addr);
4911
+ gen_helper_fullwr(tcg_env, data, addr);
4912
} else {
4913
tcg_gen_qemu_st_tl(data, addr, MMU_DATA_IDX, MO_UB);
4914
}
4915
@@ -XXX,XX +XXX,XX @@ static void gen_data_store(DisasContext *ctx, TCGv data, TCGv addr)
4916
static void gen_data_load(DisasContext *ctx, TCGv data, TCGv addr)
4917
{
4918
if (ctx->base.tb->flags & TB_FLAGS_FULL_ACCESS) {
4919
- gen_helper_fullrd(data, cpu_env, addr);
4920
+ gen_helper_fullrd(data, tcg_env, addr);
4921
} else {
4922
tcg_gen_qemu_ld_tl(data, addr, MMU_DATA_IDX, MO_UB);
4923
}
4924
@@ -XXX,XX +XXX,XX @@ static bool trans_IN(DisasContext *ctx, arg_IN *a)
4925
TCGv Rd = cpu_r[a->rd];
4926
TCGv port = tcg_constant_i32(a->imm);
4927
4928
- gen_helper_inb(Rd, cpu_env, port);
4929
+ gen_helper_inb(Rd, tcg_env, port);
4930
return true;
4931
}
4932
4933
@@ -XXX,XX +XXX,XX @@ static bool trans_OUT(DisasContext *ctx, arg_OUT *a)
4934
TCGv Rd = cpu_r[a->rd];
4935
TCGv port = tcg_constant_i32(a->imm);
4936
4937
- gen_helper_outb(cpu_env, port, Rd);
4938
+ gen_helper_outb(tcg_env, port, Rd);
4939
return true;
4940
}
4941
4942
@@ -XXX,XX +XXX,XX @@ static bool trans_SBI(DisasContext *ctx, arg_SBI *a)
4943
TCGv data = tcg_temp_new_i32();
4944
TCGv port = tcg_constant_i32(a->reg);
4945
4946
- gen_helper_inb(data, cpu_env, port);
4947
+ gen_helper_inb(data, tcg_env, port);
4948
tcg_gen_ori_tl(data, data, 1 << a->bit);
4949
- gen_helper_outb(cpu_env, port, data);
4950
+ gen_helper_outb(tcg_env, port, data);
4951
return true;
4952
}
4953
4954
@@ -XXX,XX +XXX,XX @@ static bool trans_CBI(DisasContext *ctx, arg_CBI *a)
4955
TCGv data = tcg_temp_new_i32();
4956
TCGv port = tcg_constant_i32(a->reg);
4957
4958
- gen_helper_inb(data, cpu_env, port);
4959
+ gen_helper_inb(data, tcg_env, port);
4960
tcg_gen_andi_tl(data, data, ~(1 << a->bit));
4961
- gen_helper_outb(cpu_env, port, data);
4962
+ gen_helper_outb(tcg_env, port, data);
4963
return true;
4964
}
4965
4966
@@ -XXX,XX +XXX,XX @@ static bool trans_BREAK(DisasContext *ctx, arg_BREAK *a)
4967
4968
#ifdef BREAKPOINT_ON_BREAK
4969
tcg_gen_movi_tl(cpu_pc, ctx->npc - 1);
4970
- gen_helper_debug(cpu_env);
4971
+ gen_helper_debug(tcg_env);
4972
ctx->base.is_jmp = DISAS_EXIT;
4973
#else
4974
/* NOP */
4975
@@ -XXX,XX +XXX,XX @@ static bool trans_NOP(DisasContext *ctx, arg_NOP *a)
4976
*/
4977
static bool trans_SLEEP(DisasContext *ctx, arg_SLEEP *a)
4978
{
4979
- gen_helper_sleep(cpu_env);
4980
+ gen_helper_sleep(tcg_env);
4981
ctx->base.is_jmp = DISAS_NORETURN;
4982
return true;
4983
}
4984
@@ -XXX,XX +XXX,XX @@ static bool trans_SLEEP(DisasContext *ctx, arg_SLEEP *a)
4985
*/
4986
static bool trans_WDR(DisasContext *ctx, arg_WDR *a)
4987
{
4988
- gen_helper_wdr(cpu_env);
4989
+ gen_helper_wdr(tcg_env);
4990
4991
return true;
4992
}
4993
@@ -XXX,XX +XXX,XX @@ static void translate(DisasContext *ctx)
4994
uint32_t opcode = next_word(ctx);
4995
4996
if (!decode_insn(ctx, opcode)) {
4997
- gen_helper_unsupported(cpu_env);
4998
+ gen_helper_unsupported(tcg_env);
4999
ctx->base.is_jmp = DISAS_NORETURN;
5000
}
5001
}
5002
diff --git a/target/cris/translate.c b/target/cris/translate.c
5003
index XXXXXXX..XXXXXXX 100644
5004
--- a/target/cris/translate.c
5005
+++ b/target/cris/translate.c
5006
@@ -XXX,XX +XXX,XX @@ static const int preg_sizes[] = {
5007
};
5008
5009
#define t_gen_mov_TN_env(tn, member) \
5010
- tcg_gen_ld_tl(tn, cpu_env, offsetof(CPUCRISState, member))
5011
+ tcg_gen_ld_tl(tn, tcg_env, offsetof(CPUCRISState, member))
5012
#define t_gen_mov_env_TN(member, tn) \
5013
- tcg_gen_st_tl(tn, cpu_env, offsetof(CPUCRISState, member))
5014
+ tcg_gen_st_tl(tn, tcg_env, offsetof(CPUCRISState, member))
5015
#define t_gen_movi_env_TN(member, c) \
5016
t_gen_mov_env_TN(member, tcg_constant_tl(c))
5017
5018
@@ -XXX,XX +XXX,XX @@ static inline void t_gen_mov_preg_TN(DisasContext *dc, int r, TCGv tn)
5019
tcg_gen_andi_tl(cpu_PR[r], tn, 3);
5020
} else {
5021
if (r == PR_PID) {
5022
- gen_helper_tlb_flush_pid(cpu_env, tn);
5023
+ gen_helper_tlb_flush_pid(tcg_env, tn);
5024
}
5025
if (dc->tb_flags & S_FLAG && r == PR_SPC) {
5026
- gen_helper_spc_write(cpu_env, tn);
5027
+ gen_helper_spc_write(tcg_env, tn);
5028
} else if (r == PR_CCS) {
5029
dc->cpustate_changed = 1;
5030
}
5031
@@ -XXX,XX +XXX,XX @@ static void cris_lock_irq(DisasContext *dc)
5032
5033
static inline void t_gen_raise_exception(uint32_t index)
5034
{
5035
- gen_helper_raise_exception(cpu_env, tcg_constant_i32(index));
5036
+ gen_helper_raise_exception(tcg_env, tcg_constant_i32(index));
5037
}
5038
5039
static void t_gen_lsl(TCGv d, TCGv a, TCGv b)
5040
@@ -XXX,XX +XXX,XX @@ static void cris_evaluate_flags(DisasContext *dc)
5041
5042
switch (dc->cc_op) {
5043
case CC_OP_MCP:
5044
- gen_helper_evaluate_flags_mcp(cpu_PR[PR_CCS], cpu_env,
5045
+ gen_helper_evaluate_flags_mcp(cpu_PR[PR_CCS], tcg_env,
5046
cpu_PR[PR_CCS], cc_src,
5047
cc_dest, cc_result);
5048
break;
5049
case CC_OP_MULS:
5050
- gen_helper_evaluate_flags_muls(cpu_PR[PR_CCS], cpu_env,
5051
+ gen_helper_evaluate_flags_muls(cpu_PR[PR_CCS], tcg_env,
5052
cpu_PR[PR_CCS], cc_result,
5053
cpu_PR[PR_MOF]);
5054
break;
5055
case CC_OP_MULU:
5056
- gen_helper_evaluate_flags_mulu(cpu_PR[PR_CCS], cpu_env,
5057
+ gen_helper_evaluate_flags_mulu(cpu_PR[PR_CCS], tcg_env,
5058
cpu_PR[PR_CCS], cc_result,
5059
cpu_PR[PR_MOF]);
5060
break;
5061
@@ -XXX,XX +XXX,XX @@ static void cris_evaluate_flags(DisasContext *dc)
5062
switch (dc->cc_size) {
5063
case 4:
5064
gen_helper_evaluate_flags_move_4(cpu_PR[PR_CCS],
5065
- cpu_env, cpu_PR[PR_CCS], cc_result);
5066
+ tcg_env, cpu_PR[PR_CCS], cc_result);
5067
break;
5068
case 2:
5069
gen_helper_evaluate_flags_move_2(cpu_PR[PR_CCS],
5070
- cpu_env, cpu_PR[PR_CCS], cc_result);
5071
+ tcg_env, cpu_PR[PR_CCS], cc_result);
5072
break;
5073
default:
5074
- gen_helper_evaluate_flags(cpu_env);
5075
+ gen_helper_evaluate_flags(tcg_env);
5076
break;
5077
}
5078
break;
5079
@@ -XXX,XX +XXX,XX @@ static void cris_evaluate_flags(DisasContext *dc)
5080
case CC_OP_SUB:
5081
case CC_OP_CMP:
5082
if (dc->cc_size == 4) {
5083
- gen_helper_evaluate_flags_sub_4(cpu_PR[PR_CCS], cpu_env,
5084
+ gen_helper_evaluate_flags_sub_4(cpu_PR[PR_CCS], tcg_env,
5085
cpu_PR[PR_CCS], cc_src, cc_dest, cc_result);
5086
} else {
5087
- gen_helper_evaluate_flags(cpu_env);
5088
+ gen_helper_evaluate_flags(tcg_env);
5089
}
5090
5091
break;
5092
default:
5093
switch (dc->cc_size) {
5094
case 4:
5095
- gen_helper_evaluate_flags_alu_4(cpu_PR[PR_CCS], cpu_env,
5096
+ gen_helper_evaluate_flags_alu_4(cpu_PR[PR_CCS], tcg_env,
5097
cpu_PR[PR_CCS], cc_src, cc_dest, cc_result);
5098
break;
5099
default:
5100
- gen_helper_evaluate_flags(cpu_env);
5101
+ gen_helper_evaluate_flags(tcg_env);
5102
break;
5103
}
5104
break;
5105
@@ -XXX,XX +XXX,XX @@ static int dec_btstq(CPUCRISState *env, DisasContext *dc)
5106
cris_cc_mask(dc, CC_MASK_NZ);
5107
c = tcg_constant_tl(dc->op1);
5108
cris_evaluate_flags(dc);
5109
- gen_helper_btst(cpu_PR[PR_CCS], cpu_env, cpu_R[dc->op2],
5110
+ gen_helper_btst(cpu_PR[PR_CCS], tcg_env, cpu_R[dc->op2],
5111
c, cpu_PR[PR_CCS]);
5112
cris_alu(dc, CC_OP_MOVE,
5113
cpu_R[dc->op2], cpu_R[dc->op2], cpu_R[dc->op2], 4);
5114
@@ -XXX,XX +XXX,XX @@ static int dec_btst_r(CPUCRISState *env, DisasContext *dc)
5115
dc->op1, dc->op2);
5116
cris_cc_mask(dc, CC_MASK_NZ);
5117
cris_evaluate_flags(dc);
5118
- gen_helper_btst(cpu_PR[PR_CCS], cpu_env, cpu_R[dc->op2],
5119
+ gen_helper_btst(cpu_PR[PR_CCS], tcg_env, cpu_R[dc->op2],
5120
cpu_R[dc->op1], cpu_PR[PR_CCS]);
5121
cris_alu(dc, CC_OP_MOVE, cpu_R[dc->op2],
5122
cpu_R[dc->op2], cpu_R[dc->op2], 4);
5123
@@ -XXX,XX +XXX,XX @@ static int dec_move_rs(CPUCRISState *env, DisasContext *dc)
5124
c1 = tcg_constant_tl(dc->op1);
5125
c2 = tcg_constant_tl(dc->op2);
5126
cris_cc_mask(dc, 0);
5127
- gen_helper_movl_sreg_reg(cpu_env, c2, c1);
5128
+ gen_helper_movl_sreg_reg(tcg_env, c2, c1);
5129
return 2;
5130
}
5131
static int dec_move_sr(CPUCRISState *env, DisasContext *dc)
5132
@@ -XXX,XX +XXX,XX @@ static int dec_move_sr(CPUCRISState *env, DisasContext *dc)
5133
c1 = tcg_constant_tl(dc->op1);
5134
c2 = tcg_constant_tl(dc->op2);
5135
cris_cc_mask(dc, 0);
5136
- gen_helper_movl_reg_sreg(cpu_env, c1, c2);
5137
+ gen_helper_movl_reg_sreg(tcg_env, c1, c2);
5138
return 2;
5139
}
5140
5141
@@ -XXX,XX +XXX,XX @@ static int dec_rfe_etc(CPUCRISState *env, DisasContext *dc)
5142
cris_cc_mask(dc, 0);
5143
5144
if (dc->op2 == 15) {
5145
- tcg_gen_st_i32(tcg_constant_i32(1), cpu_env,
5146
+ tcg_gen_st_i32(tcg_constant_i32(1), tcg_env,
5147
-offsetof(CRISCPU, env) + offsetof(CPUState, halted));
5148
tcg_gen_movi_tl(env_pc, dc->pc + 2);
5149
t_gen_raise_exception(EXCP_HLT);
5150
@@ -XXX,XX +XXX,XX @@ static int dec_rfe_etc(CPUCRISState *env, DisasContext *dc)
5151
/* rfe. */
5152
LOG_DIS("rfe\n");
5153
cris_evaluate_flags(dc);
5154
- gen_helper_rfe(cpu_env);
5155
+ gen_helper_rfe(tcg_env);
5156
dc->base.is_jmp = DISAS_UPDATE;
5157
dc->cpustate_changed = true;
5158
break;
5159
@@ -XXX,XX +XXX,XX @@ static int dec_rfe_etc(CPUCRISState *env, DisasContext *dc)
5160
/* rfn. */
5161
LOG_DIS("rfn\n");
5162
cris_evaluate_flags(dc);
5163
- gen_helper_rfn(cpu_env);
5164
+ gen_helper_rfn(tcg_env);
5165
dc->base.is_jmp = DISAS_UPDATE;
5166
dc->cpustate_changed = true;
5167
break;
5168
@@ -XXX,XX +XXX,XX @@ void cris_initialize_tcg(void)
5169
{
5170
int i;
5171
5172
- cc_x = tcg_global_mem_new(cpu_env,
5173
+ cc_x = tcg_global_mem_new(tcg_env,
5174
offsetof(CPUCRISState, cc_x), "cc_x");
5175
- cc_src = tcg_global_mem_new(cpu_env,
5176
+ cc_src = tcg_global_mem_new(tcg_env,
5177
offsetof(CPUCRISState, cc_src), "cc_src");
5178
- cc_dest = tcg_global_mem_new(cpu_env,
5179
+ cc_dest = tcg_global_mem_new(tcg_env,
5180
offsetof(CPUCRISState, cc_dest),
5181
"cc_dest");
5182
- cc_result = tcg_global_mem_new(cpu_env,
5183
+ cc_result = tcg_global_mem_new(tcg_env,
5184
offsetof(CPUCRISState, cc_result),
5185
"cc_result");
5186
- cc_op = tcg_global_mem_new(cpu_env,
5187
+ cc_op = tcg_global_mem_new(tcg_env,
5188
offsetof(CPUCRISState, cc_op), "cc_op");
5189
- cc_size = tcg_global_mem_new(cpu_env,
5190
+ cc_size = tcg_global_mem_new(tcg_env,
5191
offsetof(CPUCRISState, cc_size),
5192
"cc_size");
5193
- cc_mask = tcg_global_mem_new(cpu_env,
5194
+ cc_mask = tcg_global_mem_new(tcg_env,
5195
offsetof(CPUCRISState, cc_mask),
5196
"cc_mask");
5197
5198
- env_pc = tcg_global_mem_new(cpu_env,
5199
+ env_pc = tcg_global_mem_new(tcg_env,
5200
offsetof(CPUCRISState, pc),
5201
"pc");
5202
- env_btarget = tcg_global_mem_new(cpu_env,
5203
+ env_btarget = tcg_global_mem_new(tcg_env,
5204
offsetof(CPUCRISState, btarget),
5205
"btarget");
5206
- env_btaken = tcg_global_mem_new(cpu_env,
5207
+ env_btaken = tcg_global_mem_new(tcg_env,
5208
offsetof(CPUCRISState, btaken),
5209
"btaken");
5210
for (i = 0; i < 16; i++) {
5211
- cpu_R[i] = tcg_global_mem_new(cpu_env,
5212
+ cpu_R[i] = tcg_global_mem_new(tcg_env,
5213
offsetof(CPUCRISState, regs[i]),
5214
regnames_v32[i]);
5215
}
5216
for (i = 0; i < 16; i++) {
5217
- cpu_PR[i] = tcg_global_mem_new(cpu_env,
5218
+ cpu_PR[i] = tcg_global_mem_new(tcg_env,
5219
offsetof(CPUCRISState, pregs[i]),
5220
pregnames_v32[i]);
5221
}
5222
diff --git a/target/hexagon/genptr.c b/target/hexagon/genptr.c
5223
index XXXXXXX..XXXXXXX 100644
5224
--- a/target/hexagon/genptr.c
5225
+++ b/target/hexagon/genptr.c
5226
@@ -XXX,XX +XXX,XX @@ void gen_store32(TCGv vaddr, TCGv src, int width, uint32_t slot)
5227
tcg_gen_mov_tl(hex_store_val32[slot], src);
5228
}
5229
5230
-void gen_store1(TCGv_env cpu_env, TCGv vaddr, TCGv src, uint32_t slot)
5231
+void gen_store1(TCGv_env tcg_env, TCGv vaddr, TCGv src, uint32_t slot)
5232
{
5233
gen_store32(vaddr, src, 1, slot);
5234
}
5235
5236
-void gen_store1i(TCGv_env cpu_env, TCGv vaddr, int32_t src, uint32_t slot)
5237
+void gen_store1i(TCGv_env tcg_env, TCGv vaddr, int32_t src, uint32_t slot)
5238
{
5239
TCGv tmp = tcg_constant_tl(src);
5240
- gen_store1(cpu_env, vaddr, tmp, slot);
5241
+ gen_store1(tcg_env, vaddr, tmp, slot);
5242
}
5243
5244
-void gen_store2(TCGv_env cpu_env, TCGv vaddr, TCGv src, uint32_t slot)
5245
+void gen_store2(TCGv_env tcg_env, TCGv vaddr, TCGv src, uint32_t slot)
5246
{
5247
gen_store32(vaddr, src, 2, slot);
5248
}
5249
5250
-void gen_store2i(TCGv_env cpu_env, TCGv vaddr, int32_t src, uint32_t slot)
5251
+void gen_store2i(TCGv_env tcg_env, TCGv vaddr, int32_t src, uint32_t slot)
5252
{
5253
TCGv tmp = tcg_constant_tl(src);
5254
- gen_store2(cpu_env, vaddr, tmp, slot);
5255
+ gen_store2(tcg_env, vaddr, tmp, slot);
5256
}
5257
5258
-void gen_store4(TCGv_env cpu_env, TCGv vaddr, TCGv src, uint32_t slot)
5259
+void gen_store4(TCGv_env tcg_env, TCGv vaddr, TCGv src, uint32_t slot)
5260
{
5261
gen_store32(vaddr, src, 4, slot);
5262
}
5263
5264
-void gen_store4i(TCGv_env cpu_env, TCGv vaddr, int32_t src, uint32_t slot)
5265
+void gen_store4i(TCGv_env tcg_env, TCGv vaddr, int32_t src, uint32_t slot)
5266
{
5267
TCGv tmp = tcg_constant_tl(src);
5268
- gen_store4(cpu_env, vaddr, tmp, slot);
5269
+ gen_store4(tcg_env, vaddr, tmp, slot);
5270
}
5271
5272
-void gen_store8(TCGv_env cpu_env, TCGv vaddr, TCGv_i64 src, uint32_t slot)
5273
+void gen_store8(TCGv_env tcg_env, TCGv vaddr, TCGv_i64 src, uint32_t slot)
5274
{
5275
tcg_gen_mov_tl(hex_store_addr[slot], vaddr);
5276
tcg_gen_movi_tl(hex_store_width[slot], 8);
5277
tcg_gen_mov_i64(hex_store_val64[slot], src);
5278
}
5279
5280
-void gen_store8i(TCGv_env cpu_env, TCGv vaddr, int64_t src, uint32_t slot)
5281
+void gen_store8i(TCGv_env tcg_env, TCGv vaddr, int64_t src, uint32_t slot)
5282
{
5283
TCGv_i64 tmp = tcg_constant_i64(src);
5284
- gen_store8(cpu_env, vaddr, tmp, slot);
5285
+ gen_store8(tcg_env, vaddr, tmp, slot);
5286
}
5287
5288
TCGv gen_8bitsof(TCGv result, TCGv value)
5289
@@ -XXX,XX +XXX,XX @@ static void gen_allocframe(DisasContext *ctx, TCGv r29, int framesize)
5290
TCGv_i64 frame;
5291
tcg_gen_addi_tl(r30, r29, -8);
5292
frame = gen_frame_scramble();
5293
- gen_store8(cpu_env, r30, frame, ctx->insn->slot);
5294
+ gen_store8(tcg_env, r30, frame, ctx->insn->slot);
5295
gen_log_reg_write(ctx, HEX_REG_FP, r30);
5296
gen_framecheck(r30, framesize);
5297
tcg_gen_subi_tl(r29, r30, framesize);
5298
@@ -XXX,XX +XXX,XX @@ static void gen_vreg_load(DisasContext *ctx, intptr_t dstoff, TCGv src,
5299
for (int i = 0; i < sizeof(MMVector) / 8; i++) {
5300
tcg_gen_qemu_ld_i64(tmp, src, ctx->mem_idx, MO_TEUQ);
5301
tcg_gen_addi_tl(src, src, 8);
5302
- tcg_gen_st_i64(tmp, cpu_env, dstoff + i * 8);
5303
+ tcg_gen_st_i64(tmp, tcg_env, dstoff + i * 8);
5304
}
5305
}
5306
5307
@@ -XXX,XX +XXX,XX @@ static void gen_vreg_store(DisasContext *ctx, TCGv EA, intptr_t srcoff,
5308
5309
if (is_gather_store_insn(ctx)) {
5310
TCGv sl = tcg_constant_tl(slot);
5311
- gen_helper_gather_store(cpu_env, EA, sl);
5312
+ gen_helper_gather_store(tcg_env, EA, sl);
5313
return;
5314
}
5315
5316
@@ -XXX,XX +XXX,XX @@ static void vec_to_qvec(size_t size, intptr_t dstoff, intptr_t srcoff)
5317
TCGv_i64 ones = tcg_constant_i64(~0);
5318
5319
for (int i = 0; i < sizeof(MMVector) / 8; i++) {
5320
- tcg_gen_ld_i64(tmp, cpu_env, srcoff + i * 8);
5321
+ tcg_gen_ld_i64(tmp, tcg_env, srcoff + i * 8);
5322
tcg_gen_movi_i64(mask, 0);
5323
5324
for (int j = 0; j < 8; j += size) {
5325
@@ -XXX,XX +XXX,XX @@ static void vec_to_qvec(size_t size, intptr_t dstoff, intptr_t srcoff)
5326
tcg_gen_deposit_i64(mask, mask, bits, j, size);
5327
}
5328
5329
- tcg_gen_st8_i64(mask, cpu_env, dstoff + i);
5330
+ tcg_gen_st8_i64(mask, tcg_env, dstoff + i);
5331
}
5332
}
5333
5334
@@ -XXX,XX +XXX,XX @@ void probe_noshuf_load(TCGv va, int s, int mi)
5335
{
5336
TCGv size = tcg_constant_tl(s);
5337
TCGv mem_idx = tcg_constant_tl(mi);
5338
- gen_helper_probe_noshuf_load(cpu_env, va, size, mem_idx);
5339
+ gen_helper_probe_noshuf_load(tcg_env, va, size, mem_idx);
5340
}
5341
5342
/*
5343
diff --git a/target/hexagon/idef-parser/parser-helpers.c b/target/hexagon/idef-parser/parser-helpers.c
5344
index XXXXXXX..XXXXXXX 100644
5345
--- a/target/hexagon/idef-parser/parser-helpers.c
5346
+++ b/target/hexagon/idef-parser/parser-helpers.c
5347
@@ -XXX,XX +XXX,XX @@ void gen_store(Context *c, YYLTYPE *locp, HexValue *width, HexValue *ea,
5348
/* Lookup the effective address EA */
5349
find_variable(c, locp, ea, ea);
5350
src_m = rvalue_materialize(c, locp, &src_m);
5351
- OUT(c, locp, "gen_store", &mem_width, "(cpu_env, ", ea, ", ", &src_m);
5352
+ OUT(c, locp, "gen_store", &mem_width, "(tcg_env, ", ea, ", ", &src_m);
5353
OUT(c, locp, ", insn->slot);\n");
5354
}
5355
5356
diff --git a/target/hexagon/translate.c b/target/hexagon/translate.c
5357
index XXXXXXX..XXXXXXX 100644
5358
--- a/target/hexagon/translate.c
5359
+++ b/target/hexagon/translate.c
5360
@@ -XXX,XX +XXX,XX @@ intptr_t ctx_tmp_vreg_off(DisasContext *ctx, int regnum,
5361
5362
static void gen_exception_raw(int excp)
5363
{
5364
- gen_helper_raise_exception(cpu_env, tcg_constant_i32(excp));
5365
+ gen_helper_raise_exception(tcg_env, tcg_constant_i32(excp));
5366
}
5367
5368
static void gen_exec_counters(DisasContext *ctx)
5369
@@ -XXX,XX +XXX,XX @@ static void gen_start_packet(DisasContext *ctx)
5370
5371
if (HEX_DEBUG) {
5372
/* Handy place to set a breakpoint before the packet executes */
5373
- gen_helper_debug_start_packet(cpu_env);
5374
+ gen_helper_debug_start_packet(tcg_env);
5375
}
5376
5377
/* Initialize the runtime state for packet semantics */
5378
@@ -XXX,XX +XXX,XX @@ static void gen_check_store_width(DisasContext *ctx, int slot_num)
5379
if (HEX_DEBUG) {
5380
TCGv slot = tcg_constant_tl(slot_num);
5381
TCGv check = tcg_constant_tl(ctx->store_width[slot_num]);
5382
- gen_helper_debug_check_store_width(cpu_env, slot, check);
5383
+ gen_helper_debug_check_store_width(tcg_env, slot, check);
5384
}
5385
}
5386
5387
@@ -XXX,XX +XXX,XX @@ void process_store(DisasContext *ctx, int slot_num)
5388
* avoid branching based on the width at runtime.
5389
*/
5390
TCGv slot = tcg_constant_tl(slot_num);
5391
- gen_helper_commit_store(cpu_env, slot);
5392
+ gen_helper_commit_store(tcg_env, slot);
5393
}
5394
}
5395
}
5396
@@ -XXX,XX +XXX,XX @@ static void gen_commit_hvx(DisasContext *ctx)
5397
}
5398
5399
if (pkt_has_hvx_store(ctx->pkt)) {
5400
- gen_helper_commit_hvx_stores(cpu_env);
5401
+ gen_helper_commit_hvx_stores(tcg_env);
5402
}
5403
}
5404
5405
@@ -XXX,XX +XXX,XX @@ static void gen_commit_packet(DisasContext *ctx)
5406
} else if (has_hvx_store) {
5407
if (!has_store_s0 && !has_store_s1) {
5408
TCGv mem_idx = tcg_constant_tl(ctx->mem_idx);
5409
- gen_helper_probe_hvx_stores(cpu_env, mem_idx);
5410
+ gen_helper_probe_hvx_stores(tcg_env, mem_idx);
5411
} else {
5412
int mask = 0;
5413
5414
@@ -XXX,XX +XXX,XX @@ static void gen_commit_packet(DisasContext *ctx)
5415
}
5416
mask = FIELD_DP32(mask, PROBE_PKT_SCALAR_HVX_STORES, MMU_IDX,
5417
ctx->mem_idx);
5418
- gen_helper_probe_pkt_scalar_hvx_stores(cpu_env,
5419
+ gen_helper_probe_pkt_scalar_hvx_stores(tcg_env,
5420
tcg_constant_tl(mask));
5421
}
5422
} else if (has_store_s0 && has_store_s1) {
5423
@@ -XXX,XX +XXX,XX @@ static void gen_commit_packet(DisasContext *ctx)
5424
FIELD_DP32(args, PROBE_PKT_SCALAR_STORE_S0, IS_PREDICATED, 1);
5425
}
5426
TCGv args_tcgv = tcg_constant_tl(args);
5427
- gen_helper_probe_pkt_scalar_store_s0(cpu_env, args_tcgv);
5428
+ gen_helper_probe_pkt_scalar_store_s0(tcg_env, args_tcgv);
5429
}
5430
5431
process_store_log(ctx);
5432
@@ -XXX,XX +XXX,XX @@ static void gen_commit_packet(DisasContext *ctx)
5433
tcg_constant_tl(pkt->pkt_has_store_s1 && !pkt->pkt_has_dczeroa);
5434
5435
/* Handy place to set a breakpoint at the end of execution */
5436
- gen_helper_debug_commit_end(cpu_env, tcg_constant_tl(ctx->pkt->pc),
5437
+ gen_helper_debug_commit_end(tcg_env, tcg_constant_tl(ctx->pkt->pc),
5438
ctx->pred_written, has_st0, has_st1);
5439
}
5440
5441
@@ -XXX,XX +XXX,XX @@ void hexagon_translate_init(void)
5442
opcode_init();
5443
5444
for (i = 0; i < TOTAL_PER_THREAD_REGS; i++) {
5445
- hex_gpr[i] = tcg_global_mem_new(cpu_env,
5446
+ hex_gpr[i] = tcg_global_mem_new(tcg_env,
5447
offsetof(CPUHexagonState, gpr[i]),
5448
hexagon_regnames[i]);
5449
5450
if (HEX_DEBUG) {
5451
snprintf(reg_written_names[i], NAME_LEN, "reg_written_%s",
5452
hexagon_regnames[i]);
5453
- hex_reg_written[i] = tcg_global_mem_new(cpu_env,
5454
+ hex_reg_written[i] = tcg_global_mem_new(tcg_env,
5455
offsetof(CPUHexagonState, reg_written[i]),
5456
reg_written_names[i]);
5457
}
5458
}
5459
- hex_new_value_usr = tcg_global_mem_new(cpu_env,
5460
+ hex_new_value_usr = tcg_global_mem_new(tcg_env,
5461
offsetof(CPUHexagonState, new_value_usr), "new_value_usr");
5462
5463
for (i = 0; i < NUM_PREGS; i++) {
5464
- hex_pred[i] = tcg_global_mem_new(cpu_env,
5465
+ hex_pred[i] = tcg_global_mem_new(tcg_env,
5466
offsetof(CPUHexagonState, pred[i]),
5467
hexagon_prednames[i]);
5468
}
5469
- hex_slot_cancelled = tcg_global_mem_new(cpu_env,
5470
+ hex_slot_cancelled = tcg_global_mem_new(tcg_env,
5471
offsetof(CPUHexagonState, slot_cancelled), "slot_cancelled");
5472
- hex_llsc_addr = tcg_global_mem_new(cpu_env,
5473
+ hex_llsc_addr = tcg_global_mem_new(tcg_env,
5474
offsetof(CPUHexagonState, llsc_addr), "llsc_addr");
5475
- hex_llsc_val = tcg_global_mem_new(cpu_env,
5476
+ hex_llsc_val = tcg_global_mem_new(tcg_env,
5477
offsetof(CPUHexagonState, llsc_val), "llsc_val");
5478
- hex_llsc_val_i64 = tcg_global_mem_new_i64(cpu_env,
5479
+ hex_llsc_val_i64 = tcg_global_mem_new_i64(tcg_env,
5480
offsetof(CPUHexagonState, llsc_val_i64), "llsc_val_i64");
5481
for (i = 0; i < STORES_MAX; i++) {
5482
snprintf(store_addr_names[i], NAME_LEN, "store_addr_%d", i);
5483
- hex_store_addr[i] = tcg_global_mem_new(cpu_env,
5484
+ hex_store_addr[i] = tcg_global_mem_new(tcg_env,
5485
offsetof(CPUHexagonState, mem_log_stores[i].va),
5486
store_addr_names[i]);
5487
5488
snprintf(store_width_names[i], NAME_LEN, "store_width_%d", i);
5489
- hex_store_width[i] = tcg_global_mem_new(cpu_env,
5490
+ hex_store_width[i] = tcg_global_mem_new(tcg_env,
5491
offsetof(CPUHexagonState, mem_log_stores[i].width),
5492
store_width_names[i]);
5493
5494
snprintf(store_val32_names[i], NAME_LEN, "store_val32_%d", i);
5495
- hex_store_val32[i] = tcg_global_mem_new(cpu_env,
5496
+ hex_store_val32[i] = tcg_global_mem_new(tcg_env,
5497
offsetof(CPUHexagonState, mem_log_stores[i].data32),
5498
store_val32_names[i]);
5499
5500
snprintf(store_val64_names[i], NAME_LEN, "store_val64_%d", i);
5501
- hex_store_val64[i] = tcg_global_mem_new_i64(cpu_env,
5502
+ hex_store_val64[i] = tcg_global_mem_new_i64(tcg_env,
5503
offsetof(CPUHexagonState, mem_log_stores[i].data64),
5504
store_val64_names[i]);
5505
}
5506
for (int i = 0; i < VSTORES_MAX; i++) {
5507
snprintf(vstore_addr_names[i], NAME_LEN, "vstore_addr_%d", i);
5508
- hex_vstore_addr[i] = tcg_global_mem_new(cpu_env,
5509
+ hex_vstore_addr[i] = tcg_global_mem_new(tcg_env,
5510
offsetof(CPUHexagonState, vstore[i].va),
5511
vstore_addr_names[i]);
5512
5513
snprintf(vstore_size_names[i], NAME_LEN, "vstore_size_%d", i);
5514
- hex_vstore_size[i] = tcg_global_mem_new(cpu_env,
5515
+ hex_vstore_size[i] = tcg_global_mem_new(tcg_env,
5516
offsetof(CPUHexagonState, vstore[i].size),
5517
vstore_size_names[i]);
5518
5519
snprintf(vstore_pending_names[i], NAME_LEN, "vstore_pending_%d", i);
5520
- hex_vstore_pending[i] = tcg_global_mem_new(cpu_env,
5521
+ hex_vstore_pending[i] = tcg_global_mem_new(tcg_env,
5522
offsetof(CPUHexagonState, vstore_pending[i]),
5523
vstore_pending_names[i]);
5524
}
5525
diff --git a/target/hppa/translate.c b/target/hppa/translate.c
5526
index XXXXXXX..XXXXXXX 100644
5527
--- a/target/hppa/translate.c
5528
+++ b/target/hppa/translate.c
5529
@@ -XXX,XX +XXX,XX @@ void hppa_translate_init(void)
5530
5531
cpu_gr[0] = NULL;
5532
for (i = 1; i < 32; i++) {
5533
- cpu_gr[i] = tcg_global_mem_new(cpu_env,
5534
+ cpu_gr[i] = tcg_global_mem_new(tcg_env,
5535
offsetof(CPUHPPAState, gr[i]),
5536
gr_names[i]);
5537
}
5538
for (i = 0; i < 4; i++) {
5539
- cpu_sr[i] = tcg_global_mem_new_i64(cpu_env,
5540
+ cpu_sr[i] = tcg_global_mem_new_i64(tcg_env,
5541
offsetof(CPUHPPAState, sr[i]),
5542
sr_names[i]);
5543
}
5544
- cpu_srH = tcg_global_mem_new_i64(cpu_env,
5545
+ cpu_srH = tcg_global_mem_new_i64(tcg_env,
5546
offsetof(CPUHPPAState, sr[4]),
5547
sr_names[4]);
5548
5549
for (i = 0; i < ARRAY_SIZE(vars); ++i) {
5550
const GlobalVar *v = &vars[i];
5551
- *v->var = tcg_global_mem_new(cpu_env, v->ofs, v->name);
5552
+ *v->var = tcg_global_mem_new(tcg_env, v->ofs, v->name);
5553
}
5554
5555
- cpu_iasq_f = tcg_global_mem_new_i64(cpu_env,
5556
+ cpu_iasq_f = tcg_global_mem_new_i64(tcg_env,
5557
offsetof(CPUHPPAState, iasq_f),
5558
"iasq_f");
5559
- cpu_iasq_b = tcg_global_mem_new_i64(cpu_env,
5560
+ cpu_iasq_b = tcg_global_mem_new_i64(tcg_env,
5561
offsetof(CPUHPPAState, iasq_b),
5562
"iasq_b");
5563
}
5564
@@ -XXX,XX +XXX,XX @@ static void save_gpr(DisasContext *ctx, unsigned reg, TCGv_reg t)
5565
static TCGv_i32 load_frw_i32(unsigned rt)
5566
{
5567
TCGv_i32 ret = tcg_temp_new_i32();
5568
- tcg_gen_ld_i32(ret, cpu_env,
5569
+ tcg_gen_ld_i32(ret, tcg_env,
5570
offsetof(CPUHPPAState, fr[rt & 31])
5571
+ (rt & 32 ? LO_OFS : HI_OFS));
5572
return ret;
5573
@@ -XXX,XX +XXX,XX @@ static TCGv_i64 load_frw0_i64(unsigned rt)
5574
if (rt == 0) {
5575
tcg_gen_movi_i64(ret, 0);
5576
} else {
5577
- tcg_gen_ld32u_i64(ret, cpu_env,
5578
+ tcg_gen_ld32u_i64(ret, tcg_env,
5579
offsetof(CPUHPPAState, fr[rt & 31])
5580
+ (rt & 32 ? LO_OFS : HI_OFS));
5581
}
5582
@@ -XXX,XX +XXX,XX @@ static TCGv_i64 load_frw0_i64(unsigned rt)
5583
5584
static void save_frw_i32(unsigned rt, TCGv_i32 val)
5585
{
5586
- tcg_gen_st_i32(val, cpu_env,
5587
+ tcg_gen_st_i32(val, tcg_env,
5588
offsetof(CPUHPPAState, fr[rt & 31])
5589
+ (rt & 32 ? LO_OFS : HI_OFS));
5590
}
5591
@@ -XXX,XX +XXX,XX @@ static void save_frw_i32(unsigned rt, TCGv_i32 val)
5592
static TCGv_i64 load_frd(unsigned rt)
5593
{
5594
TCGv_i64 ret = tcg_temp_new_i64();
5595
- tcg_gen_ld_i64(ret, cpu_env, offsetof(CPUHPPAState, fr[rt]));
5596
+ tcg_gen_ld_i64(ret, tcg_env, offsetof(CPUHPPAState, fr[rt]));
5597
return ret;
5598
}
5599
5600
@@ -XXX,XX +XXX,XX @@ static TCGv_i64 load_frd0(unsigned rt)
5601
5602
static void save_frd(unsigned rt, TCGv_i64 val)
5603
{
5604
- tcg_gen_st_i64(val, cpu_env, offsetof(CPUHPPAState, fr[rt]));
5605
+ tcg_gen_st_i64(val, tcg_env, offsetof(CPUHPPAState, fr[rt]));
5606
}
5607
5608
static void load_spr(DisasContext *ctx, TCGv_i64 dest, unsigned reg)
5609
@@ -XXX,XX +XXX,XX @@ static void load_spr(DisasContext *ctx, TCGv_i64 dest, unsigned reg)
5610
} else if (ctx->tb_flags & TB_FLAG_SR_SAME) {
5611
tcg_gen_mov_i64(dest, cpu_srH);
5612
} else {
5613
- tcg_gen_ld_i64(dest, cpu_env, offsetof(CPUHPPAState, sr[reg]));
5614
+ tcg_gen_ld_i64(dest, tcg_env, offsetof(CPUHPPAState, sr[reg]));
5615
}
5616
#endif
5617
}
5618
@@ -XXX,XX +XXX,XX @@ static inline target_ureg iaoq_dest(DisasContext *ctx, target_sreg disp)
5619
5620
static void gen_excp_1(int exception)
5621
{
5622
- gen_helper_excp(cpu_env, tcg_constant_i32(exception));
5623
+ gen_helper_excp(tcg_env, tcg_constant_i32(exception));
5624
}
5625
5626
static void gen_excp(DisasContext *ctx, int exception)
5627
@@ -XXX,XX +XXX,XX @@ static bool gen_excp_iir(DisasContext *ctx, int exc)
5628
{
5629
nullify_over(ctx);
5630
tcg_gen_st_reg(tcg_constant_reg(ctx->insn),
5631
- cpu_env, offsetof(CPUHPPAState, cr[CR_IIR]));
5632
+ tcg_env, offsetof(CPUHPPAState, cr[CR_IIR]));
5633
gen_excp(ctx, exc);
5634
return nullify_end(ctx);
5635
}
5636
@@ -XXX,XX +XXX,XX @@ static void do_add(DisasContext *ctx, unsigned rt, TCGv_reg in1,
5637
sv = do_add_sv(ctx, dest, in1, in2);
5638
if (is_tsv) {
5639
/* ??? Need to include overflow from shift. */
5640
- gen_helper_tsv(cpu_env, sv);
5641
+ gen_helper_tsv(tcg_env, sv);
5642
}
5643
}
5644
5645
@@ -XXX,XX +XXX,XX @@ static void do_add(DisasContext *ctx, unsigned rt, TCGv_reg in1,
5646
if (is_tc) {
5647
tmp = tcg_temp_new();
5648
tcg_gen_setcond_reg(cond.c, tmp, cond.a0, cond.a1);
5649
- gen_helper_tcond(cpu_env, tmp);
5650
+ gen_helper_tcond(tcg_env, tmp);
5651
}
5652
5653
/* Write back the result. */
5654
@@ -XXX,XX +XXX,XX @@ static void do_sub(DisasContext *ctx, unsigned rt, TCGv_reg in1,
5655
if (is_tsv || cond_need_sv(c)) {
5656
sv = do_sub_sv(ctx, dest, in1, in2);
5657
if (is_tsv) {
5658
- gen_helper_tsv(cpu_env, sv);
5659
+ gen_helper_tsv(tcg_env, sv);
5660
}
5661
}
5662
5663
@@ -XXX,XX +XXX,XX @@ static void do_sub(DisasContext *ctx, unsigned rt, TCGv_reg in1,
5664
if (is_tc) {
5665
tmp = tcg_temp_new();
5666
tcg_gen_setcond_reg(cond.c, tmp, cond.a0, cond.a1);
5667
- gen_helper_tcond(cpu_env, tmp);
5668
+ gen_helper_tcond(tcg_env, tmp);
5669
}
5670
5671
/* Write back the result. */
5672
@@ -XXX,XX +XXX,XX @@ static void do_unit(DisasContext *ctx, unsigned rt, TCGv_reg in1,
5673
if (is_tc) {
5674
TCGv_reg tmp = tcg_temp_new();
5675
tcg_gen_setcond_reg(cond.c, tmp, cond.a0, cond.a1);
5676
- gen_helper_tcond(cpu_env, tmp);
5677
+ gen_helper_tcond(tcg_env, tmp);
5678
}
5679
save_gpr(ctx, rt, dest);
5680
5681
@@ -XXX,XX +XXX,XX @@ static TCGv_i64 space_select(DisasContext *ctx, int sp, TCGv_reg base)
5682
tcg_gen_andi_reg(tmp, tmp, 030);
5683
tcg_gen_trunc_reg_ptr(ptr, tmp);
5684
5685
- tcg_gen_add_ptr(ptr, ptr, cpu_env);
5686
+ tcg_gen_add_ptr(ptr, ptr, tcg_env);
5687
tcg_gen_ld_i64(spc, ptr, offsetof(CPUHPPAState, sr[4]));
5688
5689
return spc;
5690
@@ -XXX,XX +XXX,XX @@ static bool do_floadw(DisasContext *ctx, unsigned rt, unsigned rb,
5691
save_frw_i32(rt, tmp);
5692
5693
if (rt == 0) {
5694
- gen_helper_loaded_fr0(cpu_env);
5695
+ gen_helper_loaded_fr0(tcg_env);
5696
}
5697
5698
return nullify_end(ctx);
5699
@@ -XXX,XX +XXX,XX @@ static bool do_floadd(DisasContext *ctx, unsigned rt, unsigned rb,
5700
save_frd(rt, tmp);
5701
5702
if (rt == 0) {
5703
- gen_helper_loaded_fr0(cpu_env);
5704
+ gen_helper_loaded_fr0(tcg_env);
5705
}
5706
5707
return nullify_end(ctx);
5708
@@ -XXX,XX +XXX,XX @@ static bool do_fop_wew(DisasContext *ctx, unsigned rt, unsigned ra,
5709
nullify_over(ctx);
5710
tmp = load_frw0_i32(ra);
5711
5712
- func(tmp, cpu_env, tmp);
5713
+ func(tmp, tcg_env, tmp);
5714
5715
save_frw_i32(rt, tmp);
5716
return nullify_end(ctx);
5717
@@ -XXX,XX +XXX,XX @@ static bool do_fop_wed(DisasContext *ctx, unsigned rt, unsigned ra,
5718
src = load_frd(ra);
5719
dst = tcg_temp_new_i32();
5720
5721
- func(dst, cpu_env, src);
5722
+ func(dst, tcg_env, src);
5723
5724
save_frw_i32(rt, dst);
5725
return nullify_end(ctx);
5726
@@ -XXX,XX +XXX,XX @@ static bool do_fop_ded(DisasContext *ctx, unsigned rt, unsigned ra,
5727
nullify_over(ctx);
5728
tmp = load_frd0(ra);
5729
5730
- func(tmp, cpu_env, tmp);
5731
+ func(tmp, tcg_env, tmp);
5732
5733
save_frd(rt, tmp);
5734
return nullify_end(ctx);
5735
@@ -XXX,XX +XXX,XX @@ static bool do_fop_dew(DisasContext *ctx, unsigned rt, unsigned ra,
5736
src = load_frw0_i32(ra);
5737
dst = tcg_temp_new_i64();
5738
5739
- func(dst, cpu_env, src);
5740
+ func(dst, tcg_env, src);
5741
5742
save_frd(rt, dst);
5743
return nullify_end(ctx);
5744
@@ -XXX,XX +XXX,XX @@ static bool do_fop_weww(DisasContext *ctx, unsigned rt,
5745
a = load_frw0_i32(ra);
5746
b = load_frw0_i32(rb);
5747
5748
- func(a, cpu_env, a, b);
5749
+ func(a, tcg_env, a, b);
5750
5751
save_frw_i32(rt, a);
5752
return nullify_end(ctx);
5753
@@ -XXX,XX +XXX,XX @@ static bool do_fop_dedd(DisasContext *ctx, unsigned rt,
5754
a = load_frd0(ra);
5755
b = load_frd0(rb);
5756
5757
- func(a, cpu_env, a, b);
5758
+ func(a, tcg_env, a, b);
5759
5760
save_frd(rt, a);
5761
return nullify_end(ctx);
5762
@@ -XXX,XX +XXX,XX @@ static void do_page_zero(DisasContext *ctx)
5763
break;
5764
5765
case 0xe0: /* SET_THREAD_POINTER */
5766
- tcg_gen_st_reg(cpu_gr[26], cpu_env, offsetof(CPUHPPAState, cr[27]));
5767
+ tcg_gen_st_reg(cpu_gr[26], tcg_env, offsetof(CPUHPPAState, cr[27]));
5768
tcg_gen_ori_reg(cpu_iaoq_f, cpu_gr[31], 3);
5769
tcg_gen_addi_reg(cpu_iaoq_b, cpu_iaoq_f, 4);
5770
ctx->base.is_jmp = DISAS_IAQ_N_UPDATED;
5771
@@ -XXX,XX +XXX,XX @@ static bool trans_mfctl(DisasContext *ctx, arg_mfctl *a)
5772
}
5773
5774
tmp = get_temp(ctx);
5775
- tcg_gen_ld_reg(tmp, cpu_env, offsetof(CPUHPPAState, cr[ctl]));
5776
+ tcg_gen_ld_reg(tmp, tcg_env, offsetof(CPUHPPAState, cr[ctl]));
5777
save_gpr(ctx, rt, tmp);
5778
5779
done:
5780
@@ -XXX,XX +XXX,XX @@ static bool trans_mtsp(DisasContext *ctx, arg_mtsp *a)
5781
tcg_gen_shli_i64(t64, t64, 32);
5782
5783
if (rs >= 4) {
5784
- tcg_gen_st_i64(t64, cpu_env, offsetof(CPUHPPAState, sr[rs]));
5785
+ tcg_gen_st_i64(t64, tcg_env, offsetof(CPUHPPAState, sr[rs]));
5786
ctx->tb_flags &= ~TB_FLAG_SR_SAME;
5787
} else {
5788
tcg_gen_mov_i64(cpu_sr[rs], t64);
5789
@@ -XXX,XX +XXX,XX @@ static bool trans_mtctl(DisasContext *ctx, arg_mtctl *a)
5790
5791
switch (ctl) {
5792
case CR_IT:
5793
- gen_helper_write_interval_timer(cpu_env, reg);
5794
+ gen_helper_write_interval_timer(tcg_env, reg);
5795
break;
5796
case CR_EIRR:
5797
- gen_helper_write_eirr(cpu_env, reg);
5798
+ gen_helper_write_eirr(tcg_env, reg);
5799
break;
5800
case CR_EIEM:
5801
- gen_helper_write_eiem(cpu_env, reg);
5802
+ gen_helper_write_eiem(tcg_env, reg);
5803
ctx->base.is_jmp = DISAS_IAQ_N_STALE_EXIT;
5804
break;
5805
5806
@@ -XXX,XX +XXX,XX @@ static bool trans_mtctl(DisasContext *ctx, arg_mtctl *a)
5807
/* FIXME: Respect PSW_Q bit */
5808
/* The write advances the queue and stores to the back element. */
5809
tmp = get_temp(ctx);
5810
- tcg_gen_ld_reg(tmp, cpu_env,
5811
+ tcg_gen_ld_reg(tmp, tcg_env,
5812
offsetof(CPUHPPAState, cr_back[ctl - CR_IIASQ]));
5813
- tcg_gen_st_reg(tmp, cpu_env, offsetof(CPUHPPAState, cr[ctl]));
5814
- tcg_gen_st_reg(reg, cpu_env,
5815
+ tcg_gen_st_reg(tmp, tcg_env, offsetof(CPUHPPAState, cr[ctl]));
5816
+ tcg_gen_st_reg(reg, tcg_env,
5817
offsetof(CPUHPPAState, cr_back[ctl - CR_IIASQ]));
5818
break;
5819
5820
@@ -XXX,XX +XXX,XX @@ static bool trans_mtctl(DisasContext *ctx, arg_mtctl *a)
5821
case CR_PID2:
5822
case CR_PID3:
5823
case CR_PID4:
5824
- tcg_gen_st_reg(reg, cpu_env, offsetof(CPUHPPAState, cr[ctl]));
5825
+ tcg_gen_st_reg(reg, tcg_env, offsetof(CPUHPPAState, cr[ctl]));
5826
#ifndef CONFIG_USER_ONLY
5827
- gen_helper_change_prot_id(cpu_env);
5828
+ gen_helper_change_prot_id(tcg_env);
5829
#endif
5830
break;
5831
5832
default:
5833
- tcg_gen_st_reg(reg, cpu_env, offsetof(CPUHPPAState, cr[ctl]));
5834
+ tcg_gen_st_reg(reg, tcg_env, offsetof(CPUHPPAState, cr[ctl]));
5835
break;
5836
}
5837
return nullify_end(ctx);
5838
@@ -XXX,XX +XXX,XX @@ static bool trans_rsm(DisasContext *ctx, arg_rsm *a)
5839
nullify_over(ctx);
5840
5841
tmp = get_temp(ctx);
5842
- tcg_gen_ld_reg(tmp, cpu_env, offsetof(CPUHPPAState, psw));
5843
+ tcg_gen_ld_reg(tmp, tcg_env, offsetof(CPUHPPAState, psw));
5844
tcg_gen_andi_reg(tmp, tmp, ~a->i);
5845
- gen_helper_swap_system_mask(tmp, cpu_env, tmp);
5846
+ gen_helper_swap_system_mask(tmp, tcg_env, tmp);
5847
save_gpr(ctx, a->t, tmp);
5848
5849
/* Exit the TB to recognize new interrupts, e.g. PSW_M. */
5850
@@ -XXX,XX +XXX,XX @@ static bool trans_ssm(DisasContext *ctx, arg_ssm *a)
5851
nullify_over(ctx);
5852
5853
tmp = get_temp(ctx);
5854
- tcg_gen_ld_reg(tmp, cpu_env, offsetof(CPUHPPAState, psw));
5855
+ tcg_gen_ld_reg(tmp, tcg_env, offsetof(CPUHPPAState, psw));
5856
tcg_gen_ori_reg(tmp, tmp, a->i);
5857
- gen_helper_swap_system_mask(tmp, cpu_env, tmp);
5858
+ gen_helper_swap_system_mask(tmp, tcg_env, tmp);
5859
save_gpr(ctx, a->t, tmp);
5860
5861
/* Exit the TB to recognize new interrupts, e.g. PSW_I. */
5862
@@ -XXX,XX +XXX,XX @@ static bool trans_mtsm(DisasContext *ctx, arg_mtsm *a)
5863
5864
reg = load_gpr(ctx, a->r);
5865
tmp = get_temp(ctx);
5866
- gen_helper_swap_system_mask(tmp, cpu_env, reg);
5867
+ gen_helper_swap_system_mask(tmp, tcg_env, reg);
5868
5869
/* Exit the TB to recognize new interrupts. */
5870
ctx->base.is_jmp = DISAS_IAQ_N_STALE_EXIT;
5871
@@ -XXX,XX +XXX,XX @@ static bool do_rfi(DisasContext *ctx, bool rfi_r)
5872
nullify_over(ctx);
5873
5874
if (rfi_r) {
5875
- gen_helper_rfi_r(cpu_env);
5876
+ gen_helper_rfi_r(tcg_env);
5877
} else {
5878
- gen_helper_rfi(cpu_env);
5879
+ gen_helper_rfi(tcg_env);
5880
}
5881
/* Exit the TB to recognize new interrupts. */
5882
tcg_gen_exit_tb(NULL, 0);
5883
@@ -XXX,XX +XXX,XX @@ static bool trans_halt(DisasContext *ctx, arg_halt *a)
5884
CHECK_MOST_PRIVILEGED(EXCP_PRIV_OPR);
5885
#ifndef CONFIG_USER_ONLY
5886
nullify_over(ctx);
5887
- gen_helper_halt(cpu_env);
5888
+ gen_helper_halt(tcg_env);
5889
ctx->base.is_jmp = DISAS_NORETURN;
5890
return nullify_end(ctx);
5891
#endif
5892
@@ -XXX,XX +XXX,XX @@ static bool trans_reset(DisasContext *ctx, arg_reset *a)
5893
CHECK_MOST_PRIVILEGED(EXCP_PRIV_OPR);
5894
#ifndef CONFIG_USER_ONLY
5895
nullify_over(ctx);
5896
- gen_helper_reset(cpu_env);
5897
+ gen_helper_reset(tcg_env);
5898
ctx->base.is_jmp = DISAS_NORETURN;
5899
return nullify_end(ctx);
5900
#endif
5901
@@ -XXX,XX +XXX,XX @@ static bool trans_getshadowregs(DisasContext *ctx, arg_getshadowregs *a)
5902
CHECK_MOST_PRIVILEGED(EXCP_PRIV_OPR);
5903
#ifndef CONFIG_USER_ONLY
5904
nullify_over(ctx);
5905
- gen_helper_getshadowregs(cpu_env);
5906
+ gen_helper_getshadowregs(tcg_env);
5907
return nullify_end(ctx);
5908
#endif
5909
}
5910
@@ -XXX,XX +XXX,XX @@ static bool trans_probe(DisasContext *ctx, arg_probe *a)
5911
}
5912
want = tcg_constant_i32(a->write ? PAGE_WRITE : PAGE_READ);
5913
5914
- gen_helper_probe(dest, cpu_env, addr, level, want);
5915
+ gen_helper_probe(dest, tcg_env, addr, level, want);
5916
5917
save_gpr(ctx, a->t, dest);
5918
return nullify_end(ctx);
5919
@@ -XXX,XX +XXX,XX @@ static bool trans_ixtlbx(DisasContext *ctx, arg_ixtlbx *a)
5920
form_gva(ctx, &addr, &ofs, a->b, 0, 0, 0, a->sp, 0, false);
5921
reg = load_gpr(ctx, a->r);
5922
if (a->addr) {
5923
- gen_helper_itlba(cpu_env, addr, reg);
5924
+ gen_helper_itlba(tcg_env, addr, reg);
5925
} else {
5926
- gen_helper_itlbp(cpu_env, addr, reg);
5927
+ gen_helper_itlbp(tcg_env, addr, reg);
5928
}
5929
5930
/* Exit TB for TLB change if mmu is enabled. */
5931
@@ -XXX,XX +XXX,XX @@ static bool trans_pxtlbx(DisasContext *ctx, arg_pxtlbx *a)
5932
save_gpr(ctx, a->b, ofs);
5933
}
5934
if (a->local) {
5935
- gen_helper_ptlbe(cpu_env);
5936
+ gen_helper_ptlbe(tcg_env);
5937
} else {
5938
- gen_helper_ptlb(cpu_env, addr);
5939
+ gen_helper_ptlb(tcg_env, addr);
5940
}
5941
5942
/* Exit TB for TLB change if mmu is enabled. */
5943
@@ -XXX,XX +XXX,XX @@ static bool trans_ixtlbxf(DisasContext *ctx, arg_ixtlbxf *a)
5944
stl = tcg_temp_new_tl();
5945
addr = tcg_temp_new_tl();
5946
5947
- tcg_gen_ld32u_i64(stl, cpu_env,
5948
+ tcg_gen_ld32u_i64(stl, tcg_env,
5949
a->data ? offsetof(CPUHPPAState, cr[CR_ISR])
5950
: offsetof(CPUHPPAState, cr[CR_IIASQ]));
5951
- tcg_gen_ld32u_i64(atl, cpu_env,
5952
+ tcg_gen_ld32u_i64(atl, tcg_env,
5953
a->data ? offsetof(CPUHPPAState, cr[CR_IOR])
5954
: offsetof(CPUHPPAState, cr[CR_IIAOQ]));
5955
tcg_gen_shli_i64(stl, stl, 32);
5956
@@ -XXX,XX +XXX,XX @@ static bool trans_ixtlbxf(DisasContext *ctx, arg_ixtlbxf *a)
5957
5958
reg = load_gpr(ctx, a->r);
5959
if (a->addr) {
5960
- gen_helper_itlba(cpu_env, addr, reg);
5961
+ gen_helper_itlba(tcg_env, addr, reg);
5962
} else {
5963
- gen_helper_itlbp(cpu_env, addr, reg);
5964
+ gen_helper_itlbp(tcg_env, addr, reg);
5965
}
5966
5967
/* Exit TB for TLB change if mmu is enabled. */
5968
@@ -XXX,XX +XXX,XX @@ static bool trans_lpa(DisasContext *ctx, arg_ldst *a)
5969
form_gva(ctx, &vaddr, &ofs, a->b, a->x, 0, 0, a->sp, a->m, false);
5970
5971
paddr = tcg_temp_new();
5972
- gen_helper_lpa(paddr, cpu_env, vaddr);
5973
+ gen_helper_lpa(paddr, tcg_env, vaddr);
5974
5975
/* Note that physical address result overrides base modification. */
5976
if (a->m) {
5977
@@ -XXX,XX +XXX,XX @@ static bool trans_or(DisasContext *ctx, arg_rrr_cf *a)
5978
nullify_set(ctx, 0);
5979
5980
/* Tell the qemu main loop to halt until this cpu has work. */
5981
- tcg_gen_st_i32(tcg_constant_i32(1), cpu_env,
5982
+ tcg_gen_st_i32(tcg_constant_i32(1), tcg_env,
5983
offsetof(CPUState, halted) - offsetof(HPPACPU, env));
5984
gen_excp_1(EXCP_HALTED);
5985
ctx->base.is_jmp = DISAS_NORETURN;
5986
@@ -XXX,XX +XXX,XX @@ static bool trans_stby(DisasContext *ctx, arg_stby *a)
5987
val = load_gpr(ctx, a->r);
5988
if (a->a) {
5989
if (tb_cflags(ctx->base.tb) & CF_PARALLEL) {
5990
- gen_helper_stby_e_parallel(cpu_env, addr, val);
5991
+ gen_helper_stby_e_parallel(tcg_env, addr, val);
5992
} else {
5993
- gen_helper_stby_e(cpu_env, addr, val);
5994
+ gen_helper_stby_e(tcg_env, addr, val);
5995
}
5996
} else {
5997
if (tb_cflags(ctx->base.tb) & CF_PARALLEL) {
5998
- gen_helper_stby_b_parallel(cpu_env, addr, val);
5999
+ gen_helper_stby_b_parallel(tcg_env, addr, val);
6000
} else {
6001
- gen_helper_stby_b(cpu_env, addr, val);
6002
+ gen_helper_stby_b(tcg_env, addr, val);
6003
}
6004
}
6005
if (a->m) {
6006
@@ -XXX,XX +XXX,XX @@ static bool trans_fcmp_f(DisasContext *ctx, arg_fclass2 *a)
6007
ty = tcg_constant_i32(a->y);
6008
tc = tcg_constant_i32(a->c);
6009
6010
- gen_helper_fcmp_s(cpu_env, ta, tb, ty, tc);
6011
+ gen_helper_fcmp_s(tcg_env, ta, tb, ty, tc);
6012
6013
return nullify_end(ctx);
6014
}
6015
@@ -XXX,XX +XXX,XX @@ static bool trans_fcmp_d(DisasContext *ctx, arg_fclass2 *a)
6016
ty = tcg_constant_i32(a->y);
6017
tc = tcg_constant_i32(a->c);
6018
6019
- gen_helper_fcmp_d(cpu_env, ta, tb, ty, tc);
6020
+ gen_helper_fcmp_d(tcg_env, ta, tb, ty, tc);
6021
6022
return nullify_end(ctx);
6023
}
6024
@@ -XXX,XX +XXX,XX @@ static bool trans_ftest(DisasContext *ctx, arg_ftest *a)
6025
nullify_over(ctx);
6026
6027
t = get_temp(ctx);
6028
- tcg_gen_ld32u_reg(t, cpu_env, offsetof(CPUHPPAState, fr0_shadow));
6029
+ tcg_gen_ld32u_reg(t, tcg_env, offsetof(CPUHPPAState, fr0_shadow));
6030
6031
if (a->y == 1) {
6032
int mask;
6033
@@ -XXX,XX +XXX,XX @@ static bool trans_fmpyfadd_f(DisasContext *ctx, arg_fmpyfadd_f *a)
6034
z = load_frw0_i32(a->ra3);
6035
6036
if (a->neg) {
6037
- gen_helper_fmpynfadd_s(x, cpu_env, x, y, z);
6038
+ gen_helper_fmpynfadd_s(x, tcg_env, x, y, z);
6039
} else {
6040
- gen_helper_fmpyfadd_s(x, cpu_env, x, y, z);
6041
+ gen_helper_fmpyfadd_s(x, tcg_env, x, y, z);
6042
}
6043
6044
save_frw_i32(a->t, x);
6045
@@ -XXX,XX +XXX,XX @@ static bool trans_fmpyfadd_d(DisasContext *ctx, arg_fmpyfadd_d *a)
6046
z = load_frd0(a->ra3);
6047
6048
if (a->neg) {
6049
- gen_helper_fmpynfadd_d(x, cpu_env, x, y, z);
6050
+ gen_helper_fmpynfadd_d(x, tcg_env, x, y, z);
6051
} else {
6052
- gen_helper_fmpyfadd_d(x, cpu_env, x, y, z);
6053
+ gen_helper_fmpyfadd_d(x, tcg_env, x, y, z);
6054
}
6055
6056
save_frd(a->t, x);
6057
@@ -XXX,XX +XXX,XX @@ static bool trans_fmpyfadd_d(DisasContext *ctx, arg_fmpyfadd_d *a)
6058
6059
static bool trans_diag(DisasContext *ctx, arg_diag *a)
6060
{
6061
- nullify_over(ctx);
6062
CHECK_MOST_PRIVILEGED(EXCP_PRIV_OPR);
6063
#ifndef CONFIG_USER_ONLY
6064
if (a->i == 0x100) {
6065
/* emulate PDC BTLB, called by SeaBIOS-hppa */
6066
- gen_helper_diag_btlb(cpu_env);
6067
- } else
6068
-#endif
6069
- {
6070
- qemu_log_mask(LOG_UNIMP, "DIAG opcode 0x%04x ignored\n", a->i);
6071
+ nullify_over(ctx);
6072
+ gen_helper_diag_btlb(tcg_env);
6073
+ return nullify_end(ctx);
6074
}
6075
- return nullify_end(ctx);
6076
+#endif
6077
+ qemu_log_mask(LOG_UNIMP, "DIAG opcode 0x%04x ignored\n", a->i);
6078
+ return true;
6079
}
6080
6081
static void hppa_tr_init_disas_context(DisasContextBase *dcbase, CPUState *cs)
6082
diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c
6083
index XXXXXXX..XXXXXXX 100644
6084
--- a/target/i386/tcg/translate.c
6085
+++ b/target/i386/tcg/translate.c
6086
@@ -XXX,XX +XXX,XX @@ static inline void gen_string_movl_A0_EDI(DisasContext *s)
6087
6088
static inline void gen_op_movl_T0_Dshift(DisasContext *s, MemOp ot)
6089
{
6090
- tcg_gen_ld32s_tl(s->T0, cpu_env, offsetof(CPUX86State, df));
6091
+ tcg_gen_ld32s_tl(s->T0, tcg_env, offsetof(CPUX86State, df));
6092
tcg_gen_shli_tl(s->T0, s->T0, ot);
6093
};
6094
6095
@@ -XXX,XX +XXX,XX @@ static void gen_helper_in_func(MemOp ot, TCGv v, TCGv_i32 n)
6096
{
6097
switch (ot) {
6098
case MO_8:
6099
- gen_helper_inb(v, cpu_env, n);
6100
+ gen_helper_inb(v, tcg_env, n);
6101
break;
6102
case MO_16:
6103
- gen_helper_inw(v, cpu_env, n);
6104
+ gen_helper_inw(v, tcg_env, n);
6105
break;
6106
case MO_32:
6107
- gen_helper_inl(v, cpu_env, n);
6108
+ gen_helper_inl(v, tcg_env, n);
6109
break;
6110
default:
6111
g_assert_not_reached();
6112
@@ -XXX,XX +XXX,XX @@ static void gen_helper_out_func(MemOp ot, TCGv_i32 v, TCGv_i32 n)
6113
{
6114
switch (ot) {
6115
case MO_8:
6116
- gen_helper_outb(cpu_env, v, n);
6117
+ gen_helper_outb(tcg_env, v, n);
6118
break;
6119
case MO_16:
6120
- gen_helper_outw(cpu_env, v, n);
6121
+ gen_helper_outw(tcg_env, v, n);
6122
break;
6123
case MO_32:
6124
- gen_helper_outl(cpu_env, v, n);
6125
+ gen_helper_outl(tcg_env, v, n);
6126
break;
6127
default:
6128
g_assert_not_reached();
6129
@@ -XXX,XX +XXX,XX @@ static bool gen_check_io(DisasContext *s, MemOp ot, TCGv_i32 port,
6130
return false;
6131
#else
6132
if (PE(s) && (CPL(s) > IOPL(s) || VM86(s))) {
6133
- gen_helper_check_io(cpu_env, port, tcg_constant_i32(1 << ot));
6134
+ gen_helper_check_io(tcg_env, port, tcg_constant_i32(1 << ot));
6135
}
6136
if (GUEST(s)) {
6137
gen_update_cc_op(s);
6138
@@ -XXX,XX +XXX,XX @@ static bool gen_check_io(DisasContext *s, MemOp ot, TCGv_i32 port,
6139
svm_flags |= SVM_IOIO_REP_MASK;
6140
}
6141
svm_flags |= 1 << (SVM_IOIO_SIZE_SHIFT + ot);
6142
- gen_helper_svm_check_io(cpu_env, port,
6143
+ gen_helper_svm_check_io(tcg_env, port,
6144
tcg_constant_i32(svm_flags),
6145
cur_insn_len_i32(s));
6146
}
6147
@@ -XXX,XX +XXX,XX @@ static void gen_bpt_io(DisasContext *s, TCGv_i32 t_port, int ot)
6148
#else
6149
TCGv_i32 t_size = tcg_constant_i32(1 << ot);
6150
TCGv t_next = eip_next_tl(s);
6151
- gen_helper_bpt_io(cpu_env, t_port, t_size, t_next);
6152
+ gen_helper_bpt_io(tcg_env, t_port, t_size, t_next);
6153
#endif /* CONFIG_USER_ONLY */
6154
}
6155
}
6156
@@ -XXX,XX +XXX,XX @@ static void gen_helper_fp_arith_ST0_FT0(int op)
6157
{
6158
switch (op) {
6159
case 0:
6160
- gen_helper_fadd_ST0_FT0(cpu_env);
6161
+ gen_helper_fadd_ST0_FT0(tcg_env);
6162
break;
6163
case 1:
6164
- gen_helper_fmul_ST0_FT0(cpu_env);
6165
+ gen_helper_fmul_ST0_FT0(tcg_env);
6166
break;
6167
case 2:
6168
- gen_helper_fcom_ST0_FT0(cpu_env);
6169
+ gen_helper_fcom_ST0_FT0(tcg_env);
6170
break;
6171
case 3:
6172
- gen_helper_fcom_ST0_FT0(cpu_env);
6173
+ gen_helper_fcom_ST0_FT0(tcg_env);
6174
break;
6175
case 4:
6176
- gen_helper_fsub_ST0_FT0(cpu_env);
6177
+ gen_helper_fsub_ST0_FT0(tcg_env);
6178
break;
6179
case 5:
6180
- gen_helper_fsubr_ST0_FT0(cpu_env);
6181
+ gen_helper_fsubr_ST0_FT0(tcg_env);
6182
break;
6183
case 6:
6184
- gen_helper_fdiv_ST0_FT0(cpu_env);
6185
+ gen_helper_fdiv_ST0_FT0(tcg_env);
6186
break;
6187
case 7:
6188
- gen_helper_fdivr_ST0_FT0(cpu_env);
6189
+ gen_helper_fdivr_ST0_FT0(tcg_env);
6190
break;
6191
}
6192
}
6193
@@ -XXX,XX +XXX,XX @@ static void gen_helper_fp_arith_STN_ST0(int op, int opreg)
6194
TCGv_i32 tmp = tcg_constant_i32(opreg);
6195
switch (op) {
6196
case 0:
6197
- gen_helper_fadd_STN_ST0(cpu_env, tmp);
6198
+ gen_helper_fadd_STN_ST0(tcg_env, tmp);
6199
break;
6200
case 1:
6201
- gen_helper_fmul_STN_ST0(cpu_env, tmp);
6202
+ gen_helper_fmul_STN_ST0(tcg_env, tmp);
6203
break;
6204
case 4:
6205
- gen_helper_fsubr_STN_ST0(cpu_env, tmp);
6206
+ gen_helper_fsubr_STN_ST0(tcg_env, tmp);
6207
break;
6208
case 5:
6209
- gen_helper_fsub_STN_ST0(cpu_env, tmp);
6210
+ gen_helper_fsub_STN_ST0(tcg_env, tmp);
6211
break;
6212
case 6:
6213
- gen_helper_fdivr_STN_ST0(cpu_env, tmp);
6214
+ gen_helper_fdivr_STN_ST0(tcg_env, tmp);
6215
break;
6216
case 7:
6217
- gen_helper_fdiv_STN_ST0(cpu_env, tmp);
6218
+ gen_helper_fdiv_STN_ST0(tcg_env, tmp);
6219
break;
6220
}
6221
}
6222
@@ -XXX,XX +XXX,XX @@ static void gen_exception(DisasContext *s, int trapno)
6223
{
6224
gen_update_cc_op(s);
6225
gen_update_eip_cur(s);
6226
- gen_helper_raise_exception(cpu_env, tcg_constant_i32(trapno));
6227
+ gen_helper_raise_exception(tcg_env, tcg_constant_i32(trapno));
6228
s->base.is_jmp = DISAS_NORETURN;
6229
}
6230
6231
@@ -XXX,XX +XXX,XX @@ static void gen_rotc_rm_T1(DisasContext *s, MemOp ot, int op1,
6232
if (is_right) {
6233
switch (ot) {
6234
case MO_8:
6235
- gen_helper_rcrb(s->T0, cpu_env, s->T0, s->T1);
6236
+ gen_helper_rcrb(s->T0, tcg_env, s->T0, s->T1);
6237
break;
6238
case MO_16:
6239
- gen_helper_rcrw(s->T0, cpu_env, s->T0, s->T1);
6240
+ gen_helper_rcrw(s->T0, tcg_env, s->T0, s->T1);
6241
break;
6242
case MO_32:
6243
- gen_helper_rcrl(s->T0, cpu_env, s->T0, s->T1);
6244
+ gen_helper_rcrl(s->T0, tcg_env, s->T0, s->T1);
6245
break;
6246
#ifdef TARGET_X86_64
6247
case MO_64:
6248
- gen_helper_rcrq(s->T0, cpu_env, s->T0, s->T1);
6249
+ gen_helper_rcrq(s->T0, tcg_env, s->T0, s->T1);
6250
break;
6251
#endif
6252
default:
6253
@@ -XXX,XX +XXX,XX @@ static void gen_rotc_rm_T1(DisasContext *s, MemOp ot, int op1,
6254
} else {
6255
switch (ot) {
6256
case MO_8:
6257
- gen_helper_rclb(s->T0, cpu_env, s->T0, s->T1);
6258
+ gen_helper_rclb(s->T0, tcg_env, s->T0, s->T1);
6259
break;
6260
case MO_16:
6261
- gen_helper_rclw(s->T0, cpu_env, s->T0, s->T1);
6262
+ gen_helper_rclw(s->T0, tcg_env, s->T0, s->T1);
6263
break;
6264
case MO_32:
6265
- gen_helper_rcll(s->T0, cpu_env, s->T0, s->T1);
6266
+ gen_helper_rcll(s->T0, tcg_env, s->T0, s->T1);
6267
break;
6268
#ifdef TARGET_X86_64
6269
case MO_64:
6270
- gen_helper_rclq(s->T0, cpu_env, s->T0, s->T1);
6271
+ gen_helper_rclq(s->T0, tcg_env, s->T0, s->T1);
6272
break;
6273
#endif
6274
default:
6275
@@ -XXX,XX +XXX,XX @@ static void gen_bndck(CPUX86State *env, DisasContext *s, int modrm,
6276
}
6277
tcg_gen_setcond_i64(cond, s->tmp1_i64, s->tmp1_i64, bndv);
6278
tcg_gen_extrl_i64_i32(s->tmp2_i32, s->tmp1_i64);
6279
- gen_helper_bndck(cpu_env, s->tmp2_i32);
6280
+ gen_helper_bndck(tcg_env, s->tmp2_i32);
6281
}
6282
6283
/* used for LEA and MOV AX, mem */
6284
@@ -XXX,XX +XXX,XX @@ static void gen_cmovcc1(CPUX86State *env, DisasContext *s, MemOp ot, int b,
6285
6286
static inline void gen_op_movl_T0_seg(DisasContext *s, X86Seg seg_reg)
6287
{
6288
- tcg_gen_ld32u_tl(s->T0, cpu_env,
6289
+ tcg_gen_ld32u_tl(s->T0, tcg_env,
6290
offsetof(CPUX86State,segs[seg_reg].selector));
6291
}
6292
6293
static inline void gen_op_movl_seg_T0_vm(DisasContext *s, X86Seg seg_reg)
6294
{
6295
tcg_gen_ext16u_tl(s->T0, s->T0);
6296
- tcg_gen_st32_tl(s->T0, cpu_env,
6297
+ tcg_gen_st32_tl(s->T0, tcg_env,
6298
offsetof(CPUX86State,segs[seg_reg].selector));
6299
tcg_gen_shli_tl(cpu_seg_base[seg_reg], s->T0, 4);
6300
}
6301
@@ -XXX,XX +XXX,XX @@ static void gen_movl_seg_T0(DisasContext *s, X86Seg seg_reg)
6302
{
6303
if (PE(s) && !VM86(s)) {
6304
tcg_gen_trunc_tl_i32(s->tmp2_i32, s->T0);
6305
- gen_helper_load_seg(cpu_env, tcg_constant_i32(seg_reg), s->tmp2_i32);
6306
+ gen_helper_load_seg(tcg_env, tcg_constant_i32(seg_reg), s->tmp2_i32);
6307
/* abort translation because the addseg value may change or
6308
because ss32 may change. For R_SS, translation must always
6309
stop as a special handling must be done to disable hardware
6310
@@ -XXX,XX +XXX,XX @@ static void gen_svm_check_intercept(DisasContext *s, uint32_t type)
6311
if (likely(!GUEST(s))) {
6312
return;
6313
}
6314
- gen_helper_svm_check_intercept(cpu_env, tcg_constant_i32(type));
6315
+ gen_helper_svm_check_intercept(tcg_env, tcg_constant_i32(type));
6316
}
6317
6318
static inline void gen_stack_update(DisasContext *s, int addend)
6319
@@ -XXX,XX +XXX,XX @@ static void gen_interrupt(DisasContext *s, int intno)
6320
{
6321
gen_update_cc_op(s);
6322
gen_update_eip_cur(s);
6323
- gen_helper_raise_interrupt(cpu_env, tcg_constant_i32(intno),
6324
+ gen_helper_raise_interrupt(tcg_env, tcg_constant_i32(intno),
6325
cur_insn_len_i32(s));
6326
s->base.is_jmp = DISAS_NORETURN;
6327
}
6328
@@ -XXX,XX +XXX,XX @@ static void gen_set_hflag(DisasContext *s, uint32_t mask)
6329
{
6330
if ((s->flags & mask) == 0) {
6331
TCGv_i32 t = tcg_temp_new_i32();
6332
- tcg_gen_ld_i32(t, cpu_env, offsetof(CPUX86State, hflags));
6333
+ tcg_gen_ld_i32(t, tcg_env, offsetof(CPUX86State, hflags));
6334
tcg_gen_ori_i32(t, t, mask);
6335
- tcg_gen_st_i32(t, cpu_env, offsetof(CPUX86State, hflags));
6336
+ tcg_gen_st_i32(t, tcg_env, offsetof(CPUX86State, hflags));
6337
s->flags |= mask;
6338
}
6339
}
6340
@@ -XXX,XX +XXX,XX @@ static void gen_reset_hflag(DisasContext *s, uint32_t mask)
6341
{
6342
if (s->flags & mask) {
6343
TCGv_i32 t = tcg_temp_new_i32();
6344
- tcg_gen_ld_i32(t, cpu_env, offsetof(CPUX86State, hflags));
6345
+ tcg_gen_ld_i32(t, tcg_env, offsetof(CPUX86State, hflags));
6346
tcg_gen_andi_i32(t, t, ~mask);
6347
- tcg_gen_st_i32(t, cpu_env, offsetof(CPUX86State, hflags));
6348
+ tcg_gen_st_i32(t, tcg_env, offsetof(CPUX86State, hflags));
6349
s->flags &= ~mask;
6350
}
6351
}
6352
@@ -XXX,XX +XXX,XX @@ static void gen_set_eflags(DisasContext *s, target_ulong mask)
6353
{
6354
TCGv t = tcg_temp_new();
6355
6356
- tcg_gen_ld_tl(t, cpu_env, offsetof(CPUX86State, eflags));
6357
+ tcg_gen_ld_tl(t, tcg_env, offsetof(CPUX86State, eflags));
6358
tcg_gen_ori_tl(t, t, mask);
6359
- tcg_gen_st_tl(t, cpu_env, offsetof(CPUX86State, eflags));
6360
+ tcg_gen_st_tl(t, tcg_env, offsetof(CPUX86State, eflags));
6361
}
6362
6363
static void gen_reset_eflags(DisasContext *s, target_ulong mask)
6364
{
6365
TCGv t = tcg_temp_new();
6366
6367
- tcg_gen_ld_tl(t, cpu_env, offsetof(CPUX86State, eflags));
6368
+ tcg_gen_ld_tl(t, tcg_env, offsetof(CPUX86State, eflags));
6369
tcg_gen_andi_tl(t, t, ~mask);
6370
- tcg_gen_st_tl(t, cpu_env, offsetof(CPUX86State, eflags));
6371
+ tcg_gen_st_tl(t, tcg_env, offsetof(CPUX86State, eflags));
6372
}
6373
6374
/* Clear BND registers during legacy branches. */
6375
@@ -XXX,XX +XXX,XX @@ static void gen_bnd_jmp(DisasContext *s)
6376
if ((s->prefix & PREFIX_REPNZ) == 0
6377
&& (s->flags & HF_MPX_EN_MASK) != 0
6378
&& (s->flags & HF_MPX_IU_MASK) != 0) {
6379
- gen_helper_bnd_jmp(cpu_env);
6380
+ gen_helper_bnd_jmp(tcg_env);
6381
}
6382
}
6383
6384
@@ -XXX,XX +XXX,XX @@ do_gen_eob_worker(DisasContext *s, bool inhibit, bool recheck_tf, bool jr)
6385
gen_reset_eflags(s, RF_MASK);
6386
}
6387
if (recheck_tf) {
6388
- gen_helper_rechecking_single_step(cpu_env);
6389
+ gen_helper_rechecking_single_step(tcg_env);
6390
tcg_gen_exit_tb(NULL, 0);
6391
} else if (s->flags & HF_TF_MASK) {
6392
- gen_helper_single_step(cpu_env);
6393
+ gen_helper_single_step(tcg_env);
6394
} else if (jr) {
6395
tcg_gen_lookup_and_goto_ptr();
6396
} else {
6397
@@ -XXX,XX +XXX,XX @@ static void gen_jmp_rel_csize(DisasContext *s, int diff, int tb_num)
6398
static inline void gen_ldq_env_A0(DisasContext *s, int offset)
6399
{
6400
tcg_gen_qemu_ld_i64(s->tmp1_i64, s->A0, s->mem_index, MO_LEUQ);
6401
- tcg_gen_st_i64(s->tmp1_i64, cpu_env, offset);
6402
+ tcg_gen_st_i64(s->tmp1_i64, tcg_env, offset);
6403
}
6404
6405
static inline void gen_stq_env_A0(DisasContext *s, int offset)
6406
{
6407
- tcg_gen_ld_i64(s->tmp1_i64, cpu_env, offset);
6408
+ tcg_gen_ld_i64(s->tmp1_i64, tcg_env, offset);
6409
tcg_gen_qemu_st_i64(s->tmp1_i64, s->A0, s->mem_index, MO_LEUQ);
6410
}
6411
6412
@@ -XXX,XX +XXX,XX @@ static inline void gen_ldo_env_A0(DisasContext *s, int offset, bool align)
6413
int mem_index = s->mem_index;
6414
tcg_gen_qemu_ld_i64(s->tmp1_i64, s->A0, mem_index,
6415
MO_LEUQ | (align ? MO_ALIGN_16 : 0));
6416
- tcg_gen_st_i64(s->tmp1_i64, cpu_env, offset + offsetof(XMMReg, XMM_Q(0)));
6417
+ tcg_gen_st_i64(s->tmp1_i64, tcg_env, offset + offsetof(XMMReg, XMM_Q(0)));
6418
tcg_gen_addi_tl(s->tmp0, s->A0, 8);
6419
tcg_gen_qemu_ld_i64(s->tmp1_i64, s->tmp0, mem_index, MO_LEUQ);
6420
- tcg_gen_st_i64(s->tmp1_i64, cpu_env, offset + offsetof(XMMReg, XMM_Q(1)));
6421
+ tcg_gen_st_i64(s->tmp1_i64, tcg_env, offset + offsetof(XMMReg, XMM_Q(1)));
6422
}
6423
6424
static inline void gen_sto_env_A0(DisasContext *s, int offset, bool align)
6425
{
6426
int mem_index = s->mem_index;
6427
- tcg_gen_ld_i64(s->tmp1_i64, cpu_env, offset + offsetof(XMMReg, XMM_Q(0)));
6428
+ tcg_gen_ld_i64(s->tmp1_i64, tcg_env, offset + offsetof(XMMReg, XMM_Q(0)));
6429
tcg_gen_qemu_st_i64(s->tmp1_i64, s->A0, mem_index,
6430
MO_LEUQ | (align ? MO_ALIGN_16 : 0));
6431
tcg_gen_addi_tl(s->tmp0, s->A0, 8);
6432
- tcg_gen_ld_i64(s->tmp1_i64, cpu_env, offset + offsetof(XMMReg, XMM_Q(1)));
6433
+ tcg_gen_ld_i64(s->tmp1_i64, tcg_env, offset + offsetof(XMMReg, XMM_Q(1)));
6434
tcg_gen_qemu_st_i64(s->tmp1_i64, s->tmp0, mem_index, MO_LEUQ);
6435
}
6436
6437
@@ -XXX,XX +XXX,XX @@ static void gen_ldy_env_A0(DisasContext *s, int offset, bool align)
6438
int mem_index = s->mem_index;
6439
tcg_gen_qemu_ld_i64(s->tmp1_i64, s->A0, mem_index,
6440
MO_LEUQ | (align ? MO_ALIGN_32 : 0));
6441
- tcg_gen_st_i64(s->tmp1_i64, cpu_env, offset + offsetof(YMMReg, YMM_Q(0)));
6442
+ tcg_gen_st_i64(s->tmp1_i64, tcg_env, offset + offsetof(YMMReg, YMM_Q(0)));
6443
tcg_gen_addi_tl(s->tmp0, s->A0, 8);
6444
tcg_gen_qemu_ld_i64(s->tmp1_i64, s->tmp0, mem_index, MO_LEUQ);
6445
- tcg_gen_st_i64(s->tmp1_i64, cpu_env, offset + offsetof(YMMReg, YMM_Q(1)));
6446
+ tcg_gen_st_i64(s->tmp1_i64, tcg_env, offset + offsetof(YMMReg, YMM_Q(1)));
6447
6448
tcg_gen_addi_tl(s->tmp0, s->A0, 16);
6449
tcg_gen_qemu_ld_i64(s->tmp1_i64, s->tmp0, mem_index, MO_LEUQ);
6450
- tcg_gen_st_i64(s->tmp1_i64, cpu_env, offset + offsetof(YMMReg, YMM_Q(2)));
6451
+ tcg_gen_st_i64(s->tmp1_i64, tcg_env, offset + offsetof(YMMReg, YMM_Q(2)));
6452
tcg_gen_addi_tl(s->tmp0, s->A0, 24);
6453
tcg_gen_qemu_ld_i64(s->tmp1_i64, s->tmp0, mem_index, MO_LEUQ);
6454
- tcg_gen_st_i64(s->tmp1_i64, cpu_env, offset + offsetof(YMMReg, YMM_Q(3)));
6455
+ tcg_gen_st_i64(s->tmp1_i64, tcg_env, offset + offsetof(YMMReg, YMM_Q(3)));
6456
}
6457
6458
static void gen_sty_env_A0(DisasContext *s, int offset, bool align)
6459
{
6460
int mem_index = s->mem_index;
6461
- tcg_gen_ld_i64(s->tmp1_i64, cpu_env, offset + offsetof(YMMReg, YMM_Q(0)));
6462
+ tcg_gen_ld_i64(s->tmp1_i64, tcg_env, offset + offsetof(YMMReg, YMM_Q(0)));
6463
tcg_gen_qemu_st_i64(s->tmp1_i64, s->A0, mem_index,
6464
MO_LEUQ | (align ? MO_ALIGN_32 : 0));
6465
tcg_gen_addi_tl(s->tmp0, s->A0, 8);
6466
- tcg_gen_ld_i64(s->tmp1_i64, cpu_env, offset + offsetof(YMMReg, YMM_Q(1)));
6467
+ tcg_gen_ld_i64(s->tmp1_i64, tcg_env, offset + offsetof(YMMReg, YMM_Q(1)));
6468
tcg_gen_qemu_st_i64(s->tmp1_i64, s->tmp0, mem_index, MO_LEUQ);
6469
tcg_gen_addi_tl(s->tmp0, s->A0, 16);
6470
- tcg_gen_ld_i64(s->tmp1_i64, cpu_env, offset + offsetof(YMMReg, YMM_Q(2)));
6471
+ tcg_gen_ld_i64(s->tmp1_i64, tcg_env, offset + offsetof(YMMReg, YMM_Q(2)));
6472
tcg_gen_qemu_st_i64(s->tmp1_i64, s->tmp0, mem_index, MO_LEUQ);
6473
tcg_gen_addi_tl(s->tmp0, s->A0, 24);
6474
- tcg_gen_ld_i64(s->tmp1_i64, cpu_env, offset + offsetof(YMMReg, YMM_Q(3)));
6475
+ tcg_gen_ld_i64(s->tmp1_i64, tcg_env, offset + offsetof(YMMReg, YMM_Q(3)));
6476
tcg_gen_qemu_st_i64(s->tmp1_i64, s->tmp0, mem_index, MO_LEUQ);
6477
}
6478
6479
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
6480
case 6: /* div */
6481
switch(ot) {
6482
case MO_8:
6483
- gen_helper_divb_AL(cpu_env, s->T0);
6484
+ gen_helper_divb_AL(tcg_env, s->T0);
6485
break;
6486
case MO_16:
6487
- gen_helper_divw_AX(cpu_env, s->T0);
6488
+ gen_helper_divw_AX(tcg_env, s->T0);
6489
break;
6490
default:
6491
case MO_32:
6492
- gen_helper_divl_EAX(cpu_env, s->T0);
6493
+ gen_helper_divl_EAX(tcg_env, s->T0);
6494
break;
6495
#ifdef TARGET_X86_64
6496
case MO_64:
6497
- gen_helper_divq_EAX(cpu_env, s->T0);
6498
+ gen_helper_divq_EAX(tcg_env, s->T0);
6499
break;
6500
#endif
6501
}
6502
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
6503
case 7: /* idiv */
6504
switch(ot) {
6505
case MO_8:
6506
- gen_helper_idivb_AL(cpu_env, s->T0);
6507
+ gen_helper_idivb_AL(tcg_env, s->T0);
6508
break;
6509
case MO_16:
6510
- gen_helper_idivw_AX(cpu_env, s->T0);
6511
+ gen_helper_idivw_AX(tcg_env, s->T0);
6512
break;
6513
default:
6514
case MO_32:
6515
- gen_helper_idivl_EAX(cpu_env, s->T0);
6516
+ gen_helper_idivl_EAX(tcg_env, s->T0);
6517
break;
6518
#ifdef TARGET_X86_64
6519
case MO_64:
6520
- gen_helper_idivq_EAX(cpu_env, s->T0);
6521
+ gen_helper_idivq_EAX(tcg_env, s->T0);
6522
break;
6523
#endif
6524
}
6525
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
6526
do_lcall:
6527
if (PE(s) && !VM86(s)) {
6528
tcg_gen_trunc_tl_i32(s->tmp2_i32, s->T0);
6529
- gen_helper_lcall_protected(cpu_env, s->tmp2_i32, s->T1,
6530
+ gen_helper_lcall_protected(tcg_env, s->tmp2_i32, s->T1,
6531
tcg_constant_i32(dflag - 1),
6532
eip_next_tl(s));
6533
} else {
6534
tcg_gen_trunc_tl_i32(s->tmp2_i32, s->T0);
6535
tcg_gen_trunc_tl_i32(s->tmp3_i32, s->T1);
6536
- gen_helper_lcall_real(cpu_env, s->tmp2_i32, s->tmp3_i32,
6537
+ gen_helper_lcall_real(tcg_env, s->tmp2_i32, s->tmp3_i32,
6538
tcg_constant_i32(dflag - 1),
6539
eip_next_i32(s));
6540
}
6541
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
6542
do_ljmp:
6543
if (PE(s) && !VM86(s)) {
6544
tcg_gen_trunc_tl_i32(s->tmp2_i32, s->T0);
6545
- gen_helper_ljmp_protected(cpu_env, s->tmp2_i32, s->T1,
6546
+ gen_helper_ljmp_protected(tcg_env, s->tmp2_i32, s->T1,
6547
eip_next_tl(s));
6548
} else {
6549
gen_op_movl_seg_T0_vm(s, R_CS);
6550
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
6551
if (!(s->cpuid_ext_features & CPUID_7_0_ECX_RDPID)) {
6552
goto illegal_op;
6553
}
6554
- gen_helper_rdpid(s->T0, cpu_env);
6555
+ gen_helper_rdpid(s->T0, tcg_env);
6556
rm = (modrm & 7) | REX_B(s);
6557
gen_op_mov_reg_v(s, dflag, rm, s->T0);
6558
break;
6559
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
6560
}
6561
do_rdrand:
6562
translator_io_start(&s->base);
6563
- gen_helper_rdrand(s->T0, cpu_env);
6564
+ gen_helper_rdrand(s->T0, tcg_env);
6565
rm = (modrm & 7) | REX_B(s);
6566
gen_op_mov_reg_v(s, dflag, rm, s->T0);
6567
set_cc_op(s, CC_OP_EFLAGS);
6568
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
6569
case 0:
6570
tcg_gen_qemu_ld_i32(s->tmp2_i32, s->A0,
6571
s->mem_index, MO_LEUL);
6572
- gen_helper_flds_FT0(cpu_env, s->tmp2_i32);
6573
+ gen_helper_flds_FT0(tcg_env, s->tmp2_i32);
6574
break;
6575
case 1:
6576
tcg_gen_qemu_ld_i32(s->tmp2_i32, s->A0,
6577
s->mem_index, MO_LEUL);
6578
- gen_helper_fildl_FT0(cpu_env, s->tmp2_i32);
6579
+ gen_helper_fildl_FT0(tcg_env, s->tmp2_i32);
6580
break;
6581
case 2:
6582
tcg_gen_qemu_ld_i64(s->tmp1_i64, s->A0,
6583
s->mem_index, MO_LEUQ);
6584
- gen_helper_fldl_FT0(cpu_env, s->tmp1_i64);
6585
+ gen_helper_fldl_FT0(tcg_env, s->tmp1_i64);
6586
break;
6587
case 3:
6588
default:
6589
tcg_gen_qemu_ld_i32(s->tmp2_i32, s->A0,
6590
s->mem_index, MO_LESW);
6591
- gen_helper_fildl_FT0(cpu_env, s->tmp2_i32);
6592
+ gen_helper_fildl_FT0(tcg_env, s->tmp2_i32);
6593
break;
6594
}
6595
6596
gen_helper_fp_arith_ST0_FT0(op1);
6597
if (op1 == 3) {
6598
/* fcomp needs pop */
6599
- gen_helper_fpop(cpu_env);
6600
+ gen_helper_fpop(tcg_env);
6601
}
6602
}
6603
break;
6604
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
6605
case 0:
6606
tcg_gen_qemu_ld_i32(s->tmp2_i32, s->A0,
6607
s->mem_index, MO_LEUL);
6608
- gen_helper_flds_ST0(cpu_env, s->tmp2_i32);
6609
+ gen_helper_flds_ST0(tcg_env, s->tmp2_i32);
6610
break;
6611
case 1:
6612
tcg_gen_qemu_ld_i32(s->tmp2_i32, s->A0,
6613
s->mem_index, MO_LEUL);
6614
- gen_helper_fildl_ST0(cpu_env, s->tmp2_i32);
6615
+ gen_helper_fildl_ST0(tcg_env, s->tmp2_i32);
6616
break;
6617
case 2:
6618
tcg_gen_qemu_ld_i64(s->tmp1_i64, s->A0,
6619
s->mem_index, MO_LEUQ);
6620
- gen_helper_fldl_ST0(cpu_env, s->tmp1_i64);
6621
+ gen_helper_fldl_ST0(tcg_env, s->tmp1_i64);
6622
break;
6623
case 3:
6624
default:
6625
tcg_gen_qemu_ld_i32(s->tmp2_i32, s->A0,
6626
s->mem_index, MO_LESW);
6627
- gen_helper_fildl_ST0(cpu_env, s->tmp2_i32);
6628
+ gen_helper_fildl_ST0(tcg_env, s->tmp2_i32);
6629
break;
6630
}
6631
break;
6632
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
6633
/* XXX: the corresponding CPUID bit must be tested ! */
6634
switch (op >> 4) {
6635
case 1:
6636
- gen_helper_fisttl_ST0(s->tmp2_i32, cpu_env);
6637
+ gen_helper_fisttl_ST0(s->tmp2_i32, tcg_env);
6638
tcg_gen_qemu_st_i32(s->tmp2_i32, s->A0,
6639
s->mem_index, MO_LEUL);
6640
break;
6641
case 2:
6642
- gen_helper_fisttll_ST0(s->tmp1_i64, cpu_env);
6643
+ gen_helper_fisttll_ST0(s->tmp1_i64, tcg_env);
6644
tcg_gen_qemu_st_i64(s->tmp1_i64, s->A0,
6645
s->mem_index, MO_LEUQ);
6646
break;
6647
case 3:
6648
default:
6649
- gen_helper_fistt_ST0(s->tmp2_i32, cpu_env);
6650
+ gen_helper_fistt_ST0(s->tmp2_i32, tcg_env);
6651
tcg_gen_qemu_st_i32(s->tmp2_i32, s->A0,
6652
s->mem_index, MO_LEUW);
6653
break;
6654
}
6655
- gen_helper_fpop(cpu_env);
6656
+ gen_helper_fpop(tcg_env);
6657
break;
6658
default:
6659
switch (op >> 4) {
6660
case 0:
6661
- gen_helper_fsts_ST0(s->tmp2_i32, cpu_env);
6662
+ gen_helper_fsts_ST0(s->tmp2_i32, tcg_env);
6663
tcg_gen_qemu_st_i32(s->tmp2_i32, s->A0,
6664
s->mem_index, MO_LEUL);
6665
break;
6666
case 1:
6667
- gen_helper_fistl_ST0(s->tmp2_i32, cpu_env);
6668
+ gen_helper_fistl_ST0(s->tmp2_i32, tcg_env);
6669
tcg_gen_qemu_st_i32(s->tmp2_i32, s->A0,
6670
s->mem_index, MO_LEUL);
6671
break;
6672
case 2:
6673
- gen_helper_fstl_ST0(s->tmp1_i64, cpu_env);
6674
+ gen_helper_fstl_ST0(s->tmp1_i64, tcg_env);
6675
tcg_gen_qemu_st_i64(s->tmp1_i64, s->A0,
6676
s->mem_index, MO_LEUQ);
6677
break;
6678
case 3:
6679
default:
6680
- gen_helper_fist_ST0(s->tmp2_i32, cpu_env);
6681
+ gen_helper_fist_ST0(s->tmp2_i32, tcg_env);
6682
tcg_gen_qemu_st_i32(s->tmp2_i32, s->A0,
6683
s->mem_index, MO_LEUW);
6684
break;
6685
}
6686
if ((op & 7) == 3) {
6687
- gen_helper_fpop(cpu_env);
6688
+ gen_helper_fpop(tcg_env);
6689
}
6690
break;
6691
}
6692
break;
6693
case 0x0c: /* fldenv mem */
6694
- gen_helper_fldenv(cpu_env, s->A0,
6695
+ gen_helper_fldenv(tcg_env, s->A0,
6696
tcg_constant_i32(dflag - 1));
6697
update_fip = update_fdp = false;
6698
break;
6699
case 0x0d: /* fldcw mem */
6700
tcg_gen_qemu_ld_i32(s->tmp2_i32, s->A0,
6701
s->mem_index, MO_LEUW);
6702
- gen_helper_fldcw(cpu_env, s->tmp2_i32);
6703
+ gen_helper_fldcw(tcg_env, s->tmp2_i32);
6704
update_fip = update_fdp = false;
6705
break;
6706
case 0x0e: /* fnstenv mem */
6707
- gen_helper_fstenv(cpu_env, s->A0,
6708
+ gen_helper_fstenv(tcg_env, s->A0,
6709
tcg_constant_i32(dflag - 1));
6710
update_fip = update_fdp = false;
6711
break;
6712
case 0x0f: /* fnstcw mem */
6713
- gen_helper_fnstcw(s->tmp2_i32, cpu_env);
6714
+ gen_helper_fnstcw(s->tmp2_i32, tcg_env);
6715
tcg_gen_qemu_st_i32(s->tmp2_i32, s->A0,
6716
s->mem_index, MO_LEUW);
6717
update_fip = update_fdp = false;
6718
break;
6719
case 0x1d: /* fldt mem */
6720
- gen_helper_fldt_ST0(cpu_env, s->A0);
6721
+ gen_helper_fldt_ST0(tcg_env, s->A0);
6722
break;
6723
case 0x1f: /* fstpt mem */
6724
- gen_helper_fstt_ST0(cpu_env, s->A0);
6725
- gen_helper_fpop(cpu_env);
6726
+ gen_helper_fstt_ST0(tcg_env, s->A0);
6727
+ gen_helper_fpop(tcg_env);
6728
break;
6729
case 0x2c: /* frstor mem */
6730
- gen_helper_frstor(cpu_env, s->A0,
6731
+ gen_helper_frstor(tcg_env, s->A0,
6732
tcg_constant_i32(dflag - 1));
6733
update_fip = update_fdp = false;
6734
break;
6735
case 0x2e: /* fnsave mem */
6736
- gen_helper_fsave(cpu_env, s->A0,
6737
+ gen_helper_fsave(tcg_env, s->A0,
6738
tcg_constant_i32(dflag - 1));
6739
update_fip = update_fdp = false;
6740
break;
6741
case 0x2f: /* fnstsw mem */
6742
- gen_helper_fnstsw(s->tmp2_i32, cpu_env);
6743
+ gen_helper_fnstsw(s->tmp2_i32, tcg_env);
6744
tcg_gen_qemu_st_i32(s->tmp2_i32, s->A0,
6745
s->mem_index, MO_LEUW);
6746
update_fip = update_fdp = false;
6747
break;
6748
case 0x3c: /* fbld */
6749
- gen_helper_fbld_ST0(cpu_env, s->A0);
6750
+ gen_helper_fbld_ST0(tcg_env, s->A0);
6751
break;
6752
case 0x3e: /* fbstp */
6753
- gen_helper_fbst_ST0(cpu_env, s->A0);
6754
- gen_helper_fpop(cpu_env);
6755
+ gen_helper_fbst_ST0(tcg_env, s->A0);
6756
+ gen_helper_fpop(tcg_env);
6757
break;
6758
case 0x3d: /* fildll */
6759
tcg_gen_qemu_ld_i64(s->tmp1_i64, s->A0,
6760
s->mem_index, MO_LEUQ);
6761
- gen_helper_fildll_ST0(cpu_env, s->tmp1_i64);
6762
+ gen_helper_fildll_ST0(tcg_env, s->tmp1_i64);
6763
break;
6764
case 0x3f: /* fistpll */
6765
- gen_helper_fistll_ST0(s->tmp1_i64, cpu_env);
6766
+ gen_helper_fistll_ST0(s->tmp1_i64, tcg_env);
6767
tcg_gen_qemu_st_i64(s->tmp1_i64, s->A0,
6768
s->mem_index, MO_LEUQ);
6769
- gen_helper_fpop(cpu_env);
6770
+ gen_helper_fpop(tcg_env);
6771
break;
6772
default:
6773
goto unknown_op;
6774
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
6775
if (update_fdp) {
6776
int last_seg = s->override >= 0 ? s->override : a.def_seg;
6777
6778
- tcg_gen_ld_i32(s->tmp2_i32, cpu_env,
6779
+ tcg_gen_ld_i32(s->tmp2_i32, tcg_env,
6780
offsetof(CPUX86State,
6781
segs[last_seg].selector));
6782
- tcg_gen_st16_i32(s->tmp2_i32, cpu_env,
6783
+ tcg_gen_st16_i32(s->tmp2_i32, tcg_env,
6784
offsetof(CPUX86State, fpds));
6785
- tcg_gen_st_tl(last_addr, cpu_env,
6786
+ tcg_gen_st_tl(last_addr, tcg_env,
6787
offsetof(CPUX86State, fpdp));
6788
}
6789
} else {
6790
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
6791
6792
switch (op) {
6793
case 0x08: /* fld sti */
6794
- gen_helper_fpush(cpu_env);
6795
- gen_helper_fmov_ST0_STN(cpu_env,
6796
+ gen_helper_fpush(tcg_env);
6797
+ gen_helper_fmov_ST0_STN(tcg_env,
6798
tcg_constant_i32((opreg + 1) & 7));
6799
break;
6800
case 0x09: /* fxchg sti */
6801
case 0x29: /* fxchg4 sti, undocumented op */
6802
case 0x39: /* fxchg7 sti, undocumented op */
6803
- gen_helper_fxchg_ST0_STN(cpu_env, tcg_constant_i32(opreg));
6804
+ gen_helper_fxchg_ST0_STN(tcg_env, tcg_constant_i32(opreg));
6805
break;
6806
case 0x0a: /* grp d9/2 */
6807
switch (rm) {
6808
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
6809
* needs to be treated as I/O because of ferr_irq
6810
*/
6811
translator_io_start(&s->base);
6812
- gen_helper_fwait(cpu_env);
6813
+ gen_helper_fwait(tcg_env);
6814
update_fip = false;
6815
break;
6816
default:
6817
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
6818
case 0x0c: /* grp d9/4 */
6819
switch (rm) {
6820
case 0: /* fchs */
6821
- gen_helper_fchs_ST0(cpu_env);
6822
+ gen_helper_fchs_ST0(tcg_env);
6823
break;
6824
case 1: /* fabs */
6825
- gen_helper_fabs_ST0(cpu_env);
6826
+ gen_helper_fabs_ST0(tcg_env);
6827
break;
6828
case 4: /* ftst */
6829
- gen_helper_fldz_FT0(cpu_env);
6830
- gen_helper_fcom_ST0_FT0(cpu_env);
6831
+ gen_helper_fldz_FT0(tcg_env);
6832
+ gen_helper_fcom_ST0_FT0(tcg_env);
6833
break;
6834
case 5: /* fxam */
6835
- gen_helper_fxam_ST0(cpu_env);
6836
+ gen_helper_fxam_ST0(tcg_env);
6837
break;
6838
default:
6839
goto unknown_op;
6840
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
6841
{
6842
switch (rm) {
6843
case 0:
6844
- gen_helper_fpush(cpu_env);
6845
- gen_helper_fld1_ST0(cpu_env);
6846
+ gen_helper_fpush(tcg_env);
6847
+ gen_helper_fld1_ST0(tcg_env);
6848
break;
6849
case 1:
6850
- gen_helper_fpush(cpu_env);
6851
- gen_helper_fldl2t_ST0(cpu_env);
6852
+ gen_helper_fpush(tcg_env);
6853
+ gen_helper_fldl2t_ST0(tcg_env);
6854
break;
6855
case 2:
6856
- gen_helper_fpush(cpu_env);
6857
- gen_helper_fldl2e_ST0(cpu_env);
6858
+ gen_helper_fpush(tcg_env);
6859
+ gen_helper_fldl2e_ST0(tcg_env);
6860
break;
6861
case 3:
6862
- gen_helper_fpush(cpu_env);
6863
- gen_helper_fldpi_ST0(cpu_env);
6864
+ gen_helper_fpush(tcg_env);
6865
+ gen_helper_fldpi_ST0(tcg_env);
6866
break;
6867
case 4:
6868
- gen_helper_fpush(cpu_env);
6869
- gen_helper_fldlg2_ST0(cpu_env);
6870
+ gen_helper_fpush(tcg_env);
6871
+ gen_helper_fldlg2_ST0(tcg_env);
6872
break;
6873
case 5:
6874
- gen_helper_fpush(cpu_env);
6875
- gen_helper_fldln2_ST0(cpu_env);
6876
+ gen_helper_fpush(tcg_env);
6877
+ gen_helper_fldln2_ST0(tcg_env);
6878
break;
6879
case 6:
6880
- gen_helper_fpush(cpu_env);
6881
- gen_helper_fldz_ST0(cpu_env);
6882
+ gen_helper_fpush(tcg_env);
6883
+ gen_helper_fldz_ST0(tcg_env);
6884
break;
6885
default:
6886
goto unknown_op;
6887
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
6888
case 0x0e: /* grp d9/6 */
6889
switch (rm) {
6890
case 0: /* f2xm1 */
6891
- gen_helper_f2xm1(cpu_env);
6892
+ gen_helper_f2xm1(tcg_env);
6893
break;
6894
case 1: /* fyl2x */
6895
- gen_helper_fyl2x(cpu_env);
6896
+ gen_helper_fyl2x(tcg_env);
6897
break;
6898
case 2: /* fptan */
6899
- gen_helper_fptan(cpu_env);
6900
+ gen_helper_fptan(tcg_env);
6901
break;
6902
case 3: /* fpatan */
6903
- gen_helper_fpatan(cpu_env);
6904
+ gen_helper_fpatan(tcg_env);
6905
break;
6906
case 4: /* fxtract */
6907
- gen_helper_fxtract(cpu_env);
6908
+ gen_helper_fxtract(tcg_env);
6909
break;
6910
case 5: /* fprem1 */
6911
- gen_helper_fprem1(cpu_env);
6912
+ gen_helper_fprem1(tcg_env);
6913
break;
6914
case 6: /* fdecstp */
6915
- gen_helper_fdecstp(cpu_env);
6916
+ gen_helper_fdecstp(tcg_env);
6917
break;
6918
default:
6919
case 7: /* fincstp */
6920
- gen_helper_fincstp(cpu_env);
6921
+ gen_helper_fincstp(tcg_env);
6922
break;
6923
}
6924
break;
6925
case 0x0f: /* grp d9/7 */
6926
switch (rm) {
6927
case 0: /* fprem */
6928
- gen_helper_fprem(cpu_env);
6929
+ gen_helper_fprem(tcg_env);
6930
break;
6931
case 1: /* fyl2xp1 */
6932
- gen_helper_fyl2xp1(cpu_env);
6933
+ gen_helper_fyl2xp1(tcg_env);
6934
break;
6935
case 2: /* fsqrt */
6936
- gen_helper_fsqrt(cpu_env);
6937
+ gen_helper_fsqrt(tcg_env);
6938
break;
6939
case 3: /* fsincos */
6940
- gen_helper_fsincos(cpu_env);
6941
+ gen_helper_fsincos(tcg_env);
6942
break;
6943
case 5: /* fscale */
6944
- gen_helper_fscale(cpu_env);
6945
+ gen_helper_fscale(tcg_env);
6946
break;
6947
case 4: /* frndint */
6948
- gen_helper_frndint(cpu_env);
6949
+ gen_helper_frndint(tcg_env);
6950
break;
6951
case 6: /* fsin */
6952
- gen_helper_fsin(cpu_env);
6953
+ gen_helper_fsin(tcg_env);
6954
break;
6955
default:
6956
case 7: /* fcos */
6957
- gen_helper_fcos(cpu_env);
6958
+ gen_helper_fcos(tcg_env);
6959
break;
6960
}
6961
break;
6962
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
6963
if (op >= 0x20) {
6964
gen_helper_fp_arith_STN_ST0(op1, opreg);
6965
if (op >= 0x30) {
6966
- gen_helper_fpop(cpu_env);
6967
+ gen_helper_fpop(tcg_env);
6968
}
6969
} else {
6970
- gen_helper_fmov_FT0_STN(cpu_env,
6971
+ gen_helper_fmov_FT0_STN(tcg_env,
6972
tcg_constant_i32(opreg));
6973
gen_helper_fp_arith_ST0_FT0(op1);
6974
}
6975
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
6976
break;
6977
case 0x02: /* fcom */
6978
case 0x22: /* fcom2, undocumented op */
6979
- gen_helper_fmov_FT0_STN(cpu_env, tcg_constant_i32(opreg));
6980
- gen_helper_fcom_ST0_FT0(cpu_env);
6981
+ gen_helper_fmov_FT0_STN(tcg_env, tcg_constant_i32(opreg));
6982
+ gen_helper_fcom_ST0_FT0(tcg_env);
6983
break;
6984
case 0x03: /* fcomp */
6985
case 0x23: /* fcomp3, undocumented op */
6986
case 0x32: /* fcomp5, undocumented op */
6987
- gen_helper_fmov_FT0_STN(cpu_env, tcg_constant_i32(opreg));
6988
- gen_helper_fcom_ST0_FT0(cpu_env);
6989
- gen_helper_fpop(cpu_env);
6990
+ gen_helper_fmov_FT0_STN(tcg_env, tcg_constant_i32(opreg));
6991
+ gen_helper_fcom_ST0_FT0(tcg_env);
6992
+ gen_helper_fpop(tcg_env);
6993
break;
6994
case 0x15: /* da/5 */
6995
switch (rm) {
6996
case 1: /* fucompp */
6997
- gen_helper_fmov_FT0_STN(cpu_env, tcg_constant_i32(1));
6998
- gen_helper_fucom_ST0_FT0(cpu_env);
6999
- gen_helper_fpop(cpu_env);
7000
- gen_helper_fpop(cpu_env);
7001
+ gen_helper_fmov_FT0_STN(tcg_env, tcg_constant_i32(1));
7002
+ gen_helper_fucom_ST0_FT0(tcg_env);
7003
+ gen_helper_fpop(tcg_env);
7004
+ gen_helper_fpop(tcg_env);
7005
break;
7006
default:
7007
goto unknown_op;
7008
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
7009
case 1: /* fdisi (287 only, just do nop here) */
7010
break;
7011
case 2: /* fclex */
7012
- gen_helper_fclex(cpu_env);
7013
+ gen_helper_fclex(tcg_env);
7014
update_fip = false;
7015
break;
7016
case 3: /* fninit */
7017
- gen_helper_fninit(cpu_env);
7018
+ gen_helper_fninit(tcg_env);
7019
update_fip = false;
7020
break;
7021
case 4: /* fsetpm (287 only, just do nop here) */
7022
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
7023
goto illegal_op;
7024
}
7025
gen_update_cc_op(s);
7026
- gen_helper_fmov_FT0_STN(cpu_env, tcg_constant_i32(opreg));
7027
- gen_helper_fucomi_ST0_FT0(cpu_env);
7028
+ gen_helper_fmov_FT0_STN(tcg_env, tcg_constant_i32(opreg));
7029
+ gen_helper_fucomi_ST0_FT0(tcg_env);
7030
set_cc_op(s, CC_OP_EFLAGS);
7031
break;
7032
case 0x1e: /* fcomi */
7033
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
7034
goto illegal_op;
7035
}
7036
gen_update_cc_op(s);
7037
- gen_helper_fmov_FT0_STN(cpu_env, tcg_constant_i32(opreg));
7038
- gen_helper_fcomi_ST0_FT0(cpu_env);
7039
+ gen_helper_fmov_FT0_STN(tcg_env, tcg_constant_i32(opreg));
7040
+ gen_helper_fcomi_ST0_FT0(tcg_env);
7041
set_cc_op(s, CC_OP_EFLAGS);
7042
break;
7043
case 0x28: /* ffree sti */
7044
- gen_helper_ffree_STN(cpu_env, tcg_constant_i32(opreg));
7045
+ gen_helper_ffree_STN(tcg_env, tcg_constant_i32(opreg));
7046
break;
7047
case 0x2a: /* fst sti */
7048
- gen_helper_fmov_STN_ST0(cpu_env, tcg_constant_i32(opreg));
7049
+ gen_helper_fmov_STN_ST0(tcg_env, tcg_constant_i32(opreg));
7050
break;
7051
case 0x2b: /* fstp sti */
7052
case 0x0b: /* fstp1 sti, undocumented op */
7053
case 0x3a: /* fstp8 sti, undocumented op */
7054
case 0x3b: /* fstp9 sti, undocumented op */
7055
- gen_helper_fmov_STN_ST0(cpu_env, tcg_constant_i32(opreg));
7056
- gen_helper_fpop(cpu_env);
7057
+ gen_helper_fmov_STN_ST0(tcg_env, tcg_constant_i32(opreg));
7058
+ gen_helper_fpop(tcg_env);
7059
break;
7060
case 0x2c: /* fucom st(i) */
7061
- gen_helper_fmov_FT0_STN(cpu_env, tcg_constant_i32(opreg));
7062
- gen_helper_fucom_ST0_FT0(cpu_env);
7063
+ gen_helper_fmov_FT0_STN(tcg_env, tcg_constant_i32(opreg));
7064
+ gen_helper_fucom_ST0_FT0(tcg_env);
7065
break;
7066
case 0x2d: /* fucomp st(i) */
7067
- gen_helper_fmov_FT0_STN(cpu_env, tcg_constant_i32(opreg));
7068
- gen_helper_fucom_ST0_FT0(cpu_env);
7069
- gen_helper_fpop(cpu_env);
7070
+ gen_helper_fmov_FT0_STN(tcg_env, tcg_constant_i32(opreg));
7071
+ gen_helper_fucom_ST0_FT0(tcg_env);
7072
+ gen_helper_fpop(tcg_env);
7073
break;
7074
case 0x33: /* de/3 */
7075
switch (rm) {
7076
case 1: /* fcompp */
7077
- gen_helper_fmov_FT0_STN(cpu_env, tcg_constant_i32(1));
7078
- gen_helper_fcom_ST0_FT0(cpu_env);
7079
- gen_helper_fpop(cpu_env);
7080
- gen_helper_fpop(cpu_env);
7081
+ gen_helper_fmov_FT0_STN(tcg_env, tcg_constant_i32(1));
7082
+ gen_helper_fcom_ST0_FT0(tcg_env);
7083
+ gen_helper_fpop(tcg_env);
7084
+ gen_helper_fpop(tcg_env);
7085
break;
7086
default:
7087
goto unknown_op;
7088
}
7089
break;
7090
case 0x38: /* ffreep sti, undocumented op */
7091
- gen_helper_ffree_STN(cpu_env, tcg_constant_i32(opreg));
7092
- gen_helper_fpop(cpu_env);
7093
+ gen_helper_ffree_STN(tcg_env, tcg_constant_i32(opreg));
7094
+ gen_helper_fpop(tcg_env);
7095
break;
7096
case 0x3c: /* df/4 */
7097
switch (rm) {
7098
case 0:
7099
- gen_helper_fnstsw(s->tmp2_i32, cpu_env);
7100
+ gen_helper_fnstsw(s->tmp2_i32, tcg_env);
7101
tcg_gen_extu_i32_tl(s->T0, s->tmp2_i32);
7102
gen_op_mov_reg_v(s, MO_16, R_EAX, s->T0);
7103
break;
7104
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
7105
goto illegal_op;
7106
}
7107
gen_update_cc_op(s);
7108
- gen_helper_fmov_FT0_STN(cpu_env, tcg_constant_i32(opreg));
7109
- gen_helper_fucomi_ST0_FT0(cpu_env);
7110
- gen_helper_fpop(cpu_env);
7111
+ gen_helper_fmov_FT0_STN(tcg_env, tcg_constant_i32(opreg));
7112
+ gen_helper_fucomi_ST0_FT0(tcg_env);
7113
+ gen_helper_fpop(tcg_env);
7114
set_cc_op(s, CC_OP_EFLAGS);
7115
break;
7116
case 0x3e: /* fcomip */
7117
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
7118
goto illegal_op;
7119
}
7120
gen_update_cc_op(s);
7121
- gen_helper_fmov_FT0_STN(cpu_env, tcg_constant_i32(opreg));
7122
- gen_helper_fcomi_ST0_FT0(cpu_env);
7123
- gen_helper_fpop(cpu_env);
7124
+ gen_helper_fmov_FT0_STN(tcg_env, tcg_constant_i32(opreg));
7125
+ gen_helper_fcomi_ST0_FT0(tcg_env);
7126
+ gen_helper_fpop(tcg_env);
7127
set_cc_op(s, CC_OP_EFLAGS);
7128
break;
7129
case 0x10 ... 0x13: /* fcmovxx */
7130
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
7131
op1 = fcmov_cc[op & 3] | (((op >> 3) & 1) ^ 1);
7132
l1 = gen_new_label();
7133
gen_jcc1_noeob(s, op1, l1);
7134
- gen_helper_fmov_ST0_STN(cpu_env,
7135
+ gen_helper_fmov_ST0_STN(tcg_env,
7136
tcg_constant_i32(opreg));
7137
gen_set_label(l1);
7138
}
7139
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
7140
}
7141
7142
if (update_fip) {
7143
- tcg_gen_ld_i32(s->tmp2_i32, cpu_env,
7144
+ tcg_gen_ld_i32(s->tmp2_i32, tcg_env,
7145
offsetof(CPUX86State, segs[R_CS].selector));
7146
- tcg_gen_st16_i32(s->tmp2_i32, cpu_env,
7147
+ tcg_gen_st16_i32(s->tmp2_i32, tcg_env,
7148
offsetof(CPUX86State, fpcs));
7149
tcg_gen_st_tl(eip_cur_tl(s),
7150
- cpu_env, offsetof(CPUX86State, fpip));
7151
+ tcg_env, offsetof(CPUX86State, fpip));
7152
}
7153
}
7154
break;
7155
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
7156
if (PE(s) && !VM86(s)) {
7157
gen_update_cc_op(s);
7158
gen_update_eip_cur(s);
7159
- gen_helper_lret_protected(cpu_env, tcg_constant_i32(dflag - 1),
7160
+ gen_helper_lret_protected(tcg_env, tcg_constant_i32(dflag - 1),
7161
tcg_constant_i32(val));
7162
} else {
7163
gen_stack_A0(s);
7164
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
7165
if (!check_vm86_iopl(s)) {
7166
break;
7167
}
7168
- gen_helper_iret_real(cpu_env, tcg_constant_i32(dflag - 1));
7169
+ gen_helper_iret_real(tcg_env, tcg_constant_i32(dflag - 1));
7170
} else {
7171
- gen_helper_iret_protected(cpu_env, tcg_constant_i32(dflag - 1),
7172
+ gen_helper_iret_protected(tcg_env, tcg_constant_i32(dflag - 1),
7173
eip_next_i32(s));
7174
}
7175
set_cc_op(s, CC_OP_EFLAGS);
7176
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
7177
gen_svm_check_intercept(s, SVM_EXIT_PUSHF);
7178
if (check_vm86_iopl(s)) {
7179
gen_update_cc_op(s);
7180
- gen_helper_read_eflags(s->T0, cpu_env);
7181
+ gen_helper_read_eflags(s->T0, tcg_env);
7182
gen_push_v(s, s->T0);
7183
}
7184
break;
7185
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
7186
}
7187
7188
ot = gen_pop_T0(s);
7189
- gen_helper_write_eflags(cpu_env, s->T0, tcg_constant_i32(mask));
7190
+ gen_helper_write_eflags(tcg_env, s->T0, tcg_constant_i32(mask));
7191
gen_pop_update(s, ot);
7192
set_cc_op(s, CC_OP_EFLAGS);
7193
/* abort translation because TF/AC flag may change */
7194
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
7195
break;
7196
case 0xfc: /* cld */
7197
tcg_gen_movi_i32(s->tmp2_i32, 1);
7198
- tcg_gen_st_i32(s->tmp2_i32, cpu_env, offsetof(CPUX86State, df));
7199
+ tcg_gen_st_i32(s->tmp2_i32, tcg_env, offsetof(CPUX86State, df));
7200
break;
7201
case 0xfd: /* std */
7202
tcg_gen_movi_i32(s->tmp2_i32, -1);
7203
- tcg_gen_st_i32(s->tmp2_i32, cpu_env, offsetof(CPUX86State, df));
7204
+ tcg_gen_st_i32(s->tmp2_i32, tcg_env, offsetof(CPUX86State, df));
7205
break;
7206
7207
/************************/
7208
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
7209
if (CODE64(s))
7210
goto illegal_op;
7211
gen_update_cc_op(s);
7212
- gen_helper_daa(cpu_env);
7213
+ gen_helper_daa(tcg_env);
7214
set_cc_op(s, CC_OP_EFLAGS);
7215
break;
7216
case 0x2f: /* das */
7217
if (CODE64(s))
7218
goto illegal_op;
7219
gen_update_cc_op(s);
7220
- gen_helper_das(cpu_env);
7221
+ gen_helper_das(tcg_env);
7222
set_cc_op(s, CC_OP_EFLAGS);
7223
break;
7224
case 0x37: /* aaa */
7225
if (CODE64(s))
7226
goto illegal_op;
7227
gen_update_cc_op(s);
7228
- gen_helper_aaa(cpu_env);
7229
+ gen_helper_aaa(tcg_env);
7230
set_cc_op(s, CC_OP_EFLAGS);
7231
break;
7232
case 0x3f: /* aas */
7233
if (CODE64(s))
7234
goto illegal_op;
7235
gen_update_cc_op(s);
7236
- gen_helper_aas(cpu_env);
7237
+ gen_helper_aas(tcg_env);
7238
set_cc_op(s, CC_OP_EFLAGS);
7239
break;
7240
case 0xd4: /* aam */
7241
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
7242
if (val == 0) {
7243
gen_exception(s, EXCP00_DIVZ);
7244
} else {
7245
- gen_helper_aam(cpu_env, tcg_constant_i32(val));
7246
+ gen_helper_aam(tcg_env, tcg_constant_i32(val));
7247
set_cc_op(s, CC_OP_LOGICB);
7248
}
7249
break;
7250
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
7251
if (CODE64(s))
7252
goto illegal_op;
7253
val = x86_ldub_code(env, s);
7254
- gen_helper_aad(cpu_env, tcg_constant_i32(val));
7255
+ gen_helper_aad(tcg_env, tcg_constant_i32(val));
7256
set_cc_op(s, CC_OP_LOGICB);
7257
break;
7258
/************************/
7259
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
7260
if (prefixes & PREFIX_REPZ) {
7261
gen_update_cc_op(s);
7262
gen_update_eip_cur(s);
7263
- gen_helper_pause(cpu_env, cur_insn_len_i32(s));
7264
+ gen_helper_pause(tcg_env, cur_insn_len_i32(s));
7265
s->base.is_jmp = DISAS_NORETURN;
7266
}
7267
break;
7268
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
7269
} else {
7270
/* needs to be treated as I/O because of ferr_irq */
7271
translator_io_start(&s->base);
7272
- gen_helper_fwait(cpu_env);
7273
+ gen_helper_fwait(tcg_env);
7274
}
7275
break;
7276
case 0xcc: /* int3 */
7277
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
7278
goto illegal_op;
7279
gen_update_cc_op(s);
7280
gen_update_eip_cur(s);
7281
- gen_helper_into(cpu_env, cur_insn_len_i32(s));
7282
+ gen_helper_into(tcg_env, cur_insn_len_i32(s));
7283
break;
7284
#ifdef WANT_ICEBP
7285
case 0xf1: /* icebp (undocumented, exits to external debugger) */
7286
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
7287
gen_lea_modrm(env, s, modrm);
7288
tcg_gen_trunc_tl_i32(s->tmp2_i32, s->T0);
7289
if (ot == MO_16) {
7290
- gen_helper_boundw(cpu_env, s->A0, s->tmp2_i32);
7291
+ gen_helper_boundw(tcg_env, s->A0, s->tmp2_i32);
7292
} else {
7293
- gen_helper_boundl(cpu_env, s->A0, s->tmp2_i32);
7294
+ gen_helper_boundl(tcg_env, s->A0, s->tmp2_i32);
7295
}
7296
break;
7297
case 0x1c8 ... 0x1cf: /* bswap reg */
7298
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
7299
gen_update_cc_op(s);
7300
gen_update_eip_cur(s);
7301
if (b & 2) {
7302
- gen_helper_rdmsr(cpu_env);
7303
+ gen_helper_rdmsr(tcg_env);
7304
} else {
7305
- gen_helper_wrmsr(cpu_env);
7306
+ gen_helper_wrmsr(tcg_env);
7307
s->base.is_jmp = DISAS_EOB_NEXT;
7308
}
7309
}
7310
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
7311
gen_update_cc_op(s);
7312
gen_update_eip_cur(s);
7313
translator_io_start(&s->base);
7314
- gen_helper_rdtsc(cpu_env);
7315
+ gen_helper_rdtsc(tcg_env);
7316
break;
7317
case 0x133: /* rdpmc */
7318
gen_update_cc_op(s);
7319
gen_update_eip_cur(s);
7320
- gen_helper_rdpmc(cpu_env);
7321
+ gen_helper_rdpmc(tcg_env);
7322
s->base.is_jmp = DISAS_NORETURN;
7323
break;
7324
case 0x134: /* sysenter */
7325
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
7326
if (!PE(s)) {
7327
gen_exception_gpf(s);
7328
} else {
7329
- gen_helper_sysenter(cpu_env);
7330
+ gen_helper_sysenter(tcg_env);
7331
s->base.is_jmp = DISAS_EOB_ONLY;
7332
}
7333
break;
7334
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
7335
if (!PE(s) || CPL(s) != 0) {
7336
gen_exception_gpf(s);
7337
} else {
7338
- gen_helper_sysexit(cpu_env, tcg_constant_i32(dflag - 1));
7339
+ gen_helper_sysexit(tcg_env, tcg_constant_i32(dflag - 1));
7340
s->base.is_jmp = DISAS_EOB_ONLY;
7341
}
7342
break;
7343
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
7344
}
7345
gen_update_cc_op(s);
7346
gen_update_eip_cur(s);
7347
- gen_helper_syscall(cpu_env, cur_insn_len_i32(s));
7348
+ gen_helper_syscall(tcg_env, cur_insn_len_i32(s));
7349
/* TF handling for the syscall insn is different. The TF bit is checked
7350
after the syscall insn completes. This allows #DB to not be
7351
generated after one has entered CPL0 if TF is set in FMASK. */
7352
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
7353
if (!PE(s) || CPL(s) != 0) {
7354
gen_exception_gpf(s);
7355
} else {
7356
- gen_helper_sysret(cpu_env, tcg_constant_i32(dflag - 1));
7357
+ gen_helper_sysret(tcg_env, tcg_constant_i32(dflag - 1));
7358
/* condition codes are modified only in long mode */
7359
if (LMA(s)) {
7360
set_cc_op(s, CC_OP_EFLAGS);
7361
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
7362
case 0x1a2: /* cpuid */
7363
gen_update_cc_op(s);
7364
gen_update_eip_cur(s);
7365
- gen_helper_cpuid(cpu_env);
7366
+ gen_helper_cpuid(tcg_env);
7367
break;
7368
case 0xf4: /* hlt */
7369
if (check_cpl0(s)) {
7370
gen_update_cc_op(s);
7371
gen_update_eip_cur(s);
7372
- gen_helper_hlt(cpu_env, cur_insn_len_i32(s));
7373
+ gen_helper_hlt(tcg_env, cur_insn_len_i32(s));
7374
s->base.is_jmp = DISAS_NORETURN;
7375
}
7376
break;
7377
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
7378
break;
7379
}
7380
gen_svm_check_intercept(s, SVM_EXIT_LDTR_READ);
7381
- tcg_gen_ld32u_tl(s->T0, cpu_env,
7382
+ tcg_gen_ld32u_tl(s->T0, tcg_env,
7383
offsetof(CPUX86State, ldt.selector));
7384
ot = mod == 3 ? dflag : MO_16;
7385
gen_ldst_modrm(env, s, modrm, ot, OR_TMP0, 1);
7386
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
7387
gen_svm_check_intercept(s, SVM_EXIT_LDTR_WRITE);
7388
gen_ldst_modrm(env, s, modrm, MO_16, OR_TMP0, 0);
7389
tcg_gen_trunc_tl_i32(s->tmp2_i32, s->T0);
7390
- gen_helper_lldt(cpu_env, s->tmp2_i32);
7391
+ gen_helper_lldt(tcg_env, s->tmp2_i32);
7392
}
7393
break;
7394
case 1: /* str */
7395
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
7396
break;
7397
}
7398
gen_svm_check_intercept(s, SVM_EXIT_TR_READ);
7399
- tcg_gen_ld32u_tl(s->T0, cpu_env,
7400
+ tcg_gen_ld32u_tl(s->T0, tcg_env,
7401
offsetof(CPUX86State, tr.selector));
7402
ot = mod == 3 ? dflag : MO_16;
7403
gen_ldst_modrm(env, s, modrm, ot, OR_TMP0, 1);
7404
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
7405
gen_svm_check_intercept(s, SVM_EXIT_TR_WRITE);
7406
gen_ldst_modrm(env, s, modrm, MO_16, OR_TMP0, 0);
7407
tcg_gen_trunc_tl_i32(s->tmp2_i32, s->T0);
7408
- gen_helper_ltr(cpu_env, s->tmp2_i32);
7409
+ gen_helper_ltr(tcg_env, s->tmp2_i32);
7410
}
7411
break;
7412
case 4: /* verr */
7413
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
7414
gen_ldst_modrm(env, s, modrm, MO_16, OR_TMP0, 0);
7415
gen_update_cc_op(s);
7416
if (op == 4) {
7417
- gen_helper_verr(cpu_env, s->T0);
7418
+ gen_helper_verr(tcg_env, s->T0);
7419
} else {
7420
- gen_helper_verw(cpu_env, s->T0);
7421
+ gen_helper_verw(tcg_env, s->T0);
7422
}
7423
set_cc_op(s, CC_OP_EFLAGS);
7424
break;
7425
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
7426
gen_svm_check_intercept(s, SVM_EXIT_GDTR_READ);
7427
gen_lea_modrm(env, s, modrm);
7428
tcg_gen_ld32u_tl(s->T0,
7429
- cpu_env, offsetof(CPUX86State, gdt.limit));
7430
+ tcg_env, offsetof(CPUX86State, gdt.limit));
7431
gen_op_st_v(s, MO_16, s->T0, s->A0);
7432
gen_add_A0_im(s, 2);
7433
- tcg_gen_ld_tl(s->T0, cpu_env, offsetof(CPUX86State, gdt.base));
7434
+ tcg_gen_ld_tl(s->T0, tcg_env, offsetof(CPUX86State, gdt.base));
7435
if (dflag == MO_16) {
7436
tcg_gen_andi_tl(s->T0, s->T0, 0xffffff);
7437
}
7438
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
7439
tcg_gen_mov_tl(s->A0, cpu_regs[R_EAX]);
7440
gen_extu(s->aflag, s->A0);
7441
gen_add_A0_ds_seg(s);
7442
- gen_helper_monitor(cpu_env, s->A0);
7443
+ gen_helper_monitor(tcg_env, s->A0);
7444
break;
7445
7446
case 0xc9: /* mwait */
7447
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
7448
}
7449
gen_update_cc_op(s);
7450
gen_update_eip_cur(s);
7451
- gen_helper_mwait(cpu_env, cur_insn_len_i32(s));
7452
+ gen_helper_mwait(tcg_env, cur_insn_len_i32(s));
7453
s->base.is_jmp = DISAS_NORETURN;
7454
break;
7455
7456
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
7457
}
7458
gen_svm_check_intercept(s, SVM_EXIT_IDTR_READ);
7459
gen_lea_modrm(env, s, modrm);
7460
- tcg_gen_ld32u_tl(s->T0, cpu_env, offsetof(CPUX86State, idt.limit));
7461
+ tcg_gen_ld32u_tl(s->T0, tcg_env, offsetof(CPUX86State, idt.limit));
7462
gen_op_st_v(s, MO_16, s->T0, s->A0);
7463
gen_add_A0_im(s, 2);
7464
- tcg_gen_ld_tl(s->T0, cpu_env, offsetof(CPUX86State, idt.base));
7465
+ tcg_gen_ld_tl(s->T0, tcg_env, offsetof(CPUX86State, idt.base));
7466
if (dflag == MO_16) {
7467
tcg_gen_andi_tl(s->T0, s->T0, 0xffffff);
7468
}
7469
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
7470
goto illegal_op;
7471
}
7472
tcg_gen_trunc_tl_i32(s->tmp2_i32, cpu_regs[R_ECX]);
7473
- gen_helper_xgetbv(s->tmp1_i64, cpu_env, s->tmp2_i32);
7474
+ gen_helper_xgetbv(s->tmp1_i64, tcg_env, s->tmp2_i32);
7475
tcg_gen_extr_i64_tl(cpu_regs[R_EAX], cpu_regs[R_EDX], s->tmp1_i64);
7476
break;
7477
7478
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
7479
tcg_gen_concat_tl_i64(s->tmp1_i64, cpu_regs[R_EAX],
7480
cpu_regs[R_EDX]);
7481
tcg_gen_trunc_tl_i32(s->tmp2_i32, cpu_regs[R_ECX]);
7482
- gen_helper_xsetbv(cpu_env, s->tmp2_i32, s->tmp1_i64);
7483
+ gen_helper_xsetbv(tcg_env, s->tmp2_i32, s->tmp1_i64);
7484
/* End TB because translation flags may change. */
7485
s->base.is_jmp = DISAS_EOB_NEXT;
7486
break;
7487
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
7488
}
7489
gen_update_cc_op(s);
7490
gen_update_eip_cur(s);
7491
- gen_helper_vmrun(cpu_env, tcg_constant_i32(s->aflag - 1),
7492
+ gen_helper_vmrun(tcg_env, tcg_constant_i32(s->aflag - 1),
7493
cur_insn_len_i32(s));
7494
tcg_gen_exit_tb(NULL, 0);
7495
s->base.is_jmp = DISAS_NORETURN;
7496
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
7497
}
7498
gen_update_cc_op(s);
7499
gen_update_eip_cur(s);
7500
- gen_helper_vmmcall(cpu_env);
7501
+ gen_helper_vmmcall(tcg_env);
7502
break;
7503
7504
case 0xda: /* VMLOAD */
7505
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
7506
}
7507
gen_update_cc_op(s);
7508
gen_update_eip_cur(s);
7509
- gen_helper_vmload(cpu_env, tcg_constant_i32(s->aflag - 1));
7510
+ gen_helper_vmload(tcg_env, tcg_constant_i32(s->aflag - 1));
7511
break;
7512
7513
case 0xdb: /* VMSAVE */
7514
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
7515
}
7516
gen_update_cc_op(s);
7517
gen_update_eip_cur(s);
7518
- gen_helper_vmsave(cpu_env, tcg_constant_i32(s->aflag - 1));
7519
+ gen_helper_vmsave(tcg_env, tcg_constant_i32(s->aflag - 1));
7520
break;
7521
7522
case 0xdc: /* STGI */
7523
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
7524
break;
7525
}
7526
gen_update_cc_op(s);
7527
- gen_helper_stgi(cpu_env);
7528
+ gen_helper_stgi(tcg_env);
7529
s->base.is_jmp = DISAS_EOB_NEXT;
7530
break;
7531
7532
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
7533
}
7534
gen_update_cc_op(s);
7535
gen_update_eip_cur(s);
7536
- gen_helper_clgi(cpu_env);
7537
+ gen_helper_clgi(tcg_env);
7538
break;
7539
7540
case 0xde: /* SKINIT */
7541
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
7542
} else {
7543
tcg_gen_ext32u_tl(s->A0, cpu_regs[R_EAX]);
7544
}
7545
- gen_helper_flush_page(cpu_env, s->A0);
7546
+ gen_helper_flush_page(tcg_env, s->A0);
7547
s->base.is_jmp = DISAS_EOB_NEXT;
7548
break;
7549
7550
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
7551
if (dflag == MO_16) {
7552
tcg_gen_andi_tl(s->T0, s->T0, 0xffffff);
7553
}
7554
- tcg_gen_st_tl(s->T0, cpu_env, offsetof(CPUX86State, gdt.base));
7555
- tcg_gen_st32_tl(s->T1, cpu_env, offsetof(CPUX86State, gdt.limit));
7556
+ tcg_gen_st_tl(s->T0, tcg_env, offsetof(CPUX86State, gdt.base));
7557
+ tcg_gen_st32_tl(s->T1, tcg_env, offsetof(CPUX86State, gdt.limit));
7558
break;
7559
7560
CASE_MODRM_MEM_OP(3): /* lidt */
7561
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
7562
if (dflag == MO_16) {
7563
tcg_gen_andi_tl(s->T0, s->T0, 0xffffff);
7564
}
7565
- tcg_gen_st_tl(s->T0, cpu_env, offsetof(CPUX86State, idt.base));
7566
- tcg_gen_st32_tl(s->T1, cpu_env, offsetof(CPUX86State, idt.limit));
7567
+ tcg_gen_st_tl(s->T0, tcg_env, offsetof(CPUX86State, idt.base));
7568
+ tcg_gen_st32_tl(s->T1, tcg_env, offsetof(CPUX86State, idt.limit));
7569
break;
7570
7571
CASE_MODRM_OP(4): /* smsw */
7572
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
7573
break;
7574
}
7575
gen_svm_check_intercept(s, SVM_EXIT_READ_CR0);
7576
- tcg_gen_ld_tl(s->T0, cpu_env, offsetof(CPUX86State, cr[0]));
7577
+ tcg_gen_ld_tl(s->T0, tcg_env, offsetof(CPUX86State, cr[0]));
7578
/*
7579
* In 32-bit mode, the higher 16 bits of the destination
7580
* register are undefined. In practice CR0[31:0] is stored
7581
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
7582
goto illegal_op;
7583
}
7584
tcg_gen_trunc_tl_i32(s->tmp2_i32, cpu_regs[R_ECX]);
7585
- gen_helper_rdpkru(s->tmp1_i64, cpu_env, s->tmp2_i32);
7586
+ gen_helper_rdpkru(s->tmp1_i64, tcg_env, s->tmp2_i32);
7587
tcg_gen_extr_i64_tl(cpu_regs[R_EAX], cpu_regs[R_EDX], s->tmp1_i64);
7588
break;
7589
case 0xef: /* wrpkru */
7590
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
7591
tcg_gen_concat_tl_i64(s->tmp1_i64, cpu_regs[R_EAX],
7592
cpu_regs[R_EDX]);
7593
tcg_gen_trunc_tl_i32(s->tmp2_i32, cpu_regs[R_ECX]);
7594
- gen_helper_wrpkru(cpu_env, s->tmp2_i32, s->tmp1_i64);
7595
+ gen_helper_wrpkru(tcg_env, s->tmp2_i32, s->tmp1_i64);
7596
break;
7597
7598
CASE_MODRM_OP(6): /* lmsw */
7599
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
7600
* Only the 4 lower bits of CR0 are modified.
7601
* PE cannot be set to zero if already set to one.
7602
*/
7603
- tcg_gen_ld_tl(s->T1, cpu_env, offsetof(CPUX86State, cr[0]));
7604
+ tcg_gen_ld_tl(s->T1, tcg_env, offsetof(CPUX86State, cr[0]));
7605
tcg_gen_andi_tl(s->T0, s->T0, 0xf);
7606
tcg_gen_andi_tl(s->T1, s->T1, ~0xe);
7607
tcg_gen_or_tl(s->T0, s->T0, s->T1);
7608
- gen_helper_write_crN(cpu_env, tcg_constant_i32(0), s->T0);
7609
+ gen_helper_write_crN(tcg_env, tcg_constant_i32(0), s->T0);
7610
s->base.is_jmp = DISAS_EOB_NEXT;
7611
break;
7612
7613
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
7614
}
7615
gen_svm_check_intercept(s, SVM_EXIT_INVLPG);
7616
gen_lea_modrm(env, s, modrm);
7617
- gen_helper_flush_page(cpu_env, s->A0);
7618
+ gen_helper_flush_page(tcg_env, s->A0);
7619
s->base.is_jmp = DISAS_EOB_NEXT;
7620
break;
7621
7622
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
7623
if (CODE64(s)) {
7624
if (check_cpl0(s)) {
7625
tcg_gen_mov_tl(s->T0, cpu_seg_base[R_GS]);
7626
- tcg_gen_ld_tl(cpu_seg_base[R_GS], cpu_env,
7627
+ tcg_gen_ld_tl(cpu_seg_base[R_GS], tcg_env,
7628
offsetof(CPUX86State, kernelgsbase));
7629
- tcg_gen_st_tl(s->T0, cpu_env,
7630
+ tcg_gen_st_tl(s->T0, tcg_env,
7631
offsetof(CPUX86State, kernelgsbase));
7632
}
7633
break;
7634
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
7635
gen_update_cc_op(s);
7636
gen_update_eip_cur(s);
7637
translator_io_start(&s->base);
7638
- gen_helper_rdtsc(cpu_env);
7639
- gen_helper_rdpid(s->T0, cpu_env);
7640
+ gen_helper_rdtsc(tcg_env);
7641
+ gen_helper_rdpid(s->T0, tcg_env);
7642
gen_op_mov_reg_v(s, dflag, R_ECX, s->T0);
7643
break;
7644
7645
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
7646
t0 = tcg_temp_new();
7647
gen_update_cc_op(s);
7648
if (b == 0x102) {
7649
- gen_helper_lar(t0, cpu_env, s->T0);
7650
+ gen_helper_lar(t0, tcg_env, s->T0);
7651
} else {
7652
- gen_helper_lsl(t0, cpu_env, s->T0);
7653
+ gen_helper_lsl(t0, tcg_env, s->T0);
7654
}
7655
tcg_gen_andi_tl(s->tmp0, cpu_cc_src, CC_Z);
7656
label1 = gen_new_label();
7657
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
7658
tcg_gen_movi_tl(s->T0, 0);
7659
}
7660
if (CODE64(s)) {
7661
- gen_helper_bndldx64(cpu_bndl[reg], cpu_env, s->A0, s->T0);
7662
- tcg_gen_ld_i64(cpu_bndu[reg], cpu_env,
7663
+ gen_helper_bndldx64(cpu_bndl[reg], tcg_env, s->A0, s->T0);
7664
+ tcg_gen_ld_i64(cpu_bndu[reg], tcg_env,
7665
offsetof(CPUX86State, mmx_t0.MMX_Q(0)));
7666
} else {
7667
- gen_helper_bndldx32(cpu_bndu[reg], cpu_env, s->A0, s->T0);
7668
+ gen_helper_bndldx32(cpu_bndu[reg], tcg_env, s->A0, s->T0);
7669
tcg_gen_ext32u_i64(cpu_bndl[reg], cpu_bndu[reg]);
7670
tcg_gen_shri_i64(cpu_bndu[reg], cpu_bndu[reg], 32);
7671
}
7672
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
7673
tcg_gen_movi_tl(s->T0, 0);
7674
}
7675
if (CODE64(s)) {
7676
- gen_helper_bndstx64(cpu_env, s->A0, s->T0,
7677
+ gen_helper_bndstx64(tcg_env, s->A0, s->T0,
7678
cpu_bndl[reg], cpu_bndu[reg]);
7679
} else {
7680
- gen_helper_bndstx32(cpu_env, s->A0, s->T0,
7681
+ gen_helper_bndstx32(tcg_env, s->A0, s->T0,
7682
cpu_bndl[reg], cpu_bndu[reg]);
7683
}
7684
}
7685
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
7686
if (b & 2) {
7687
gen_svm_check_intercept(s, SVM_EXIT_WRITE_CR0 + reg);
7688
gen_op_mov_v_reg(s, ot, s->T0, rm);
7689
- gen_helper_write_crN(cpu_env, tcg_constant_i32(reg), s->T0);
7690
+ gen_helper_write_crN(tcg_env, tcg_constant_i32(reg), s->T0);
7691
s->base.is_jmp = DISAS_EOB_NEXT;
7692
} else {
7693
gen_svm_check_intercept(s, SVM_EXIT_READ_CR0 + reg);
7694
- gen_helper_read_crN(s->T0, cpu_env, tcg_constant_i32(reg));
7695
+ gen_helper_read_crN(s->T0, tcg_env, tcg_constant_i32(reg));
7696
gen_op_mov_reg_v(s, ot, rm, s->T0);
7697
}
7698
break;
7699
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
7700
gen_svm_check_intercept(s, SVM_EXIT_WRITE_DR0 + reg);
7701
gen_op_mov_v_reg(s, ot, s->T0, rm);
7702
tcg_gen_movi_i32(s->tmp2_i32, reg);
7703
- gen_helper_set_dr(cpu_env, s->tmp2_i32, s->T0);
7704
+ gen_helper_set_dr(tcg_env, s->tmp2_i32, s->T0);
7705
s->base.is_jmp = DISAS_EOB_NEXT;
7706
} else {
7707
gen_svm_check_intercept(s, SVM_EXIT_READ_DR0 + reg);
7708
tcg_gen_movi_i32(s->tmp2_i32, reg);
7709
- gen_helper_get_dr(s->T0, cpu_env, s->tmp2_i32);
7710
+ gen_helper_get_dr(s->T0, tcg_env, s->tmp2_i32);
7711
gen_op_mov_reg_v(s, ot, rm, s->T0);
7712
}
7713
}
7714
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
7715
case 0x106: /* clts */
7716
if (check_cpl0(s)) {
7717
gen_svm_check_intercept(s, SVM_EXIT_WRITE_CR0);
7718
- gen_helper_clts(cpu_env);
7719
+ gen_helper_clts(tcg_env);
7720
/* abort block because static cpu state changed */
7721
s->base.is_jmp = DISAS_EOB_NEXT;
7722
}
7723
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
7724
break;
7725
}
7726
gen_lea_modrm(env, s, modrm);
7727
- gen_helper_fxsave(cpu_env, s->A0);
7728
+ gen_helper_fxsave(tcg_env, s->A0);
7729
break;
7730
7731
CASE_MODRM_MEM_OP(1): /* fxrstor */
7732
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
7733
break;
7734
}
7735
gen_lea_modrm(env, s, modrm);
7736
- gen_helper_fxrstor(cpu_env, s->A0);
7737
+ gen_helper_fxrstor(tcg_env, s->A0);
7738
break;
7739
7740
CASE_MODRM_MEM_OP(2): /* ldmxcsr */
7741
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
7742
}
7743
gen_lea_modrm(env, s, modrm);
7744
tcg_gen_qemu_ld_i32(s->tmp2_i32, s->A0, s->mem_index, MO_LEUL);
7745
- gen_helper_ldmxcsr(cpu_env, s->tmp2_i32);
7746
+ gen_helper_ldmxcsr(tcg_env, s->tmp2_i32);
7747
break;
7748
7749
CASE_MODRM_MEM_OP(3): /* stmxcsr */
7750
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
7751
gen_exception(s, EXCP07_PREX);
7752
break;
7753
}
7754
- gen_helper_update_mxcsr(cpu_env);
7755
+ gen_helper_update_mxcsr(tcg_env);
7756
gen_lea_modrm(env, s, modrm);
7757
- tcg_gen_ld32u_tl(s->T0, cpu_env, offsetof(CPUX86State, mxcsr));
7758
+ tcg_gen_ld32u_tl(s->T0, tcg_env, offsetof(CPUX86State, mxcsr));
7759
gen_op_st_v(s, MO_32, s->T0, s->A0);
7760
break;
7761
7762
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
7763
gen_lea_modrm(env, s, modrm);
7764
tcg_gen_concat_tl_i64(s->tmp1_i64, cpu_regs[R_EAX],
7765
cpu_regs[R_EDX]);
7766
- gen_helper_xsave(cpu_env, s->A0, s->tmp1_i64);
7767
+ gen_helper_xsave(tcg_env, s->A0, s->tmp1_i64);
7768
break;
7769
7770
CASE_MODRM_MEM_OP(5): /* xrstor */
7771
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
7772
gen_lea_modrm(env, s, modrm);
7773
tcg_gen_concat_tl_i64(s->tmp1_i64, cpu_regs[R_EAX],
7774
cpu_regs[R_EDX]);
7775
- gen_helper_xrstor(cpu_env, s->A0, s->tmp1_i64);
7776
+ gen_helper_xrstor(tcg_env, s->A0, s->tmp1_i64);
7777
/* XRSTOR is how MPX is enabled, which changes how
7778
we translate. Thus we need to end the TB. */
7779
s->base.is_jmp = DISAS_EOB_NEXT;
7780
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
7781
gen_lea_modrm(env, s, modrm);
7782
tcg_gen_concat_tl_i64(s->tmp1_i64, cpu_regs[R_EAX],
7783
cpu_regs[R_EDX]);
7784
- gen_helper_xsaveopt(cpu_env, s->A0, s->tmp1_i64);
7785
+ gen_helper_xsaveopt(tcg_env, s->A0, s->tmp1_i64);
7786
}
7787
break;
7788
7789
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
7790
7791
/* Preserve hflags bits by testing CR4 at runtime. */
7792
tcg_gen_movi_i32(s->tmp2_i32, CR4_FSGSBASE_MASK);
7793
- gen_helper_cr4_testbit(cpu_env, s->tmp2_i32);
7794
+ gen_helper_cr4_testbit(tcg_env, s->tmp2_i32);
7795
7796
base = cpu_seg_base[modrm & 8 ? R_GS : R_FS];
7797
treg = cpu_regs[(modrm & 7) | REX_B(s)];
7798
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
7799
#else
7800
gen_update_cc_op(s);
7801
gen_update_eip_next(s);
7802
- gen_helper_rsm(cpu_env);
7803
+ gen_helper_rsm(tcg_env);
7804
#endif /* CONFIG_USER_ONLY */
7805
s->base.is_jmp = DISAS_EOB_ONLY;
7806
break;
7807
@@ -XXX,XX +XXX,XX @@ void tcg_x86_init(void)
7808
};
7809
int i;
7810
7811
- cpu_cc_op = tcg_global_mem_new_i32(cpu_env,
7812
+ cpu_cc_op = tcg_global_mem_new_i32(tcg_env,
7813
offsetof(CPUX86State, cc_op), "cc_op");
7814
- cpu_cc_dst = tcg_global_mem_new(cpu_env, offsetof(CPUX86State, cc_dst),
7815
+ cpu_cc_dst = tcg_global_mem_new(tcg_env, offsetof(CPUX86State, cc_dst),
7816
"cc_dst");
7817
- cpu_cc_src = tcg_global_mem_new(cpu_env, offsetof(CPUX86State, cc_src),
7818
+ cpu_cc_src = tcg_global_mem_new(tcg_env, offsetof(CPUX86State, cc_src),
7819
"cc_src");
7820
- cpu_cc_src2 = tcg_global_mem_new(cpu_env, offsetof(CPUX86State, cc_src2),
7821
+ cpu_cc_src2 = tcg_global_mem_new(tcg_env, offsetof(CPUX86State, cc_src2),
7822
"cc_src2");
7823
- cpu_eip = tcg_global_mem_new(cpu_env, offsetof(CPUX86State, eip), eip_name);
7824
+ cpu_eip = tcg_global_mem_new(tcg_env, offsetof(CPUX86State, eip), eip_name);
7825
7826
for (i = 0; i < CPU_NB_REGS; ++i) {
7827
- cpu_regs[i] = tcg_global_mem_new(cpu_env,
7828
+ cpu_regs[i] = tcg_global_mem_new(tcg_env,
7829
offsetof(CPUX86State, regs[i]),
7830
reg_names[i]);
7831
}
7832
7833
for (i = 0; i < 6; ++i) {
7834
cpu_seg_base[i]
7835
- = tcg_global_mem_new(cpu_env,
7836
+ = tcg_global_mem_new(tcg_env,
7837
offsetof(CPUX86State, segs[i].base),
7838
seg_base_names[i]);
7839
}
7840
7841
for (i = 0; i < 4; ++i) {
7842
cpu_bndl[i]
7843
- = tcg_global_mem_new_i64(cpu_env,
7844
+ = tcg_global_mem_new_i64(tcg_env,
7845
offsetof(CPUX86State, bnd_regs[i].lb),
7846
bnd_regl_names[i]);
7847
cpu_bndu[i]
7848
- = tcg_global_mem_new_i64(cpu_env,
7849
+ = tcg_global_mem_new_i64(tcg_env,
7850
offsetof(CPUX86State, bnd_regs[i].ub),
7851
bnd_regu_names[i]);
7852
}
7853
diff --git a/target/loongarch/translate.c b/target/loongarch/translate.c
7854
index XXXXXXX..XXXXXXX 100644
7855
--- a/target/loongarch/translate.c
7856
+++ b/target/loongarch/translate.c
7857
@@ -XXX,XX +XXX,XX @@ static inline int vec_reg_offset(int regno, int index, MemOp mop)
7858
7859
static inline void get_vreg64(TCGv_i64 dest, int regno, int index)
7860
{
7861
- tcg_gen_ld_i64(dest, cpu_env,
7862
+ tcg_gen_ld_i64(dest, tcg_env,
7863
offsetof(CPULoongArchState, fpr[regno].vreg.D(index)));
7864
}
7865
7866
static inline void set_vreg64(TCGv_i64 src, int regno, int index)
7867
{
7868
- tcg_gen_st_i64(src, cpu_env,
7869
+ tcg_gen_st_i64(src, tcg_env,
7870
offsetof(CPULoongArchState, fpr[regno].vreg.D(index)));
7871
}
7872
7873
@@ -XXX,XX +XXX,XX @@ static void gen_nanbox_s(TCGv_i64 out, TCGv_i64 in)
7874
void generate_exception(DisasContext *ctx, int excp)
7875
{
7876
tcg_gen_movi_tl(cpu_pc, ctx->base.pc_next);
7877
- gen_helper_raise_exception(cpu_env, tcg_constant_i32(excp));
7878
+ gen_helper_raise_exception(tcg_env, tcg_constant_i32(excp));
7879
ctx->base.is_jmp = DISAS_NORETURN;
7880
}
7881
7882
@@ -XXX,XX +XXX,XX @@ static void gen_set_gpr(int reg_num, TCGv t, DisasExtend dst_ext)
7883
static TCGv get_fpr(DisasContext *ctx, int reg_num)
7884
{
7885
TCGv t = tcg_temp_new();
7886
- tcg_gen_ld_i64(t, cpu_env,
7887
+ tcg_gen_ld_i64(t, tcg_env,
7888
offsetof(CPULoongArchState, fpr[reg_num].vreg.D(0)));
7889
return t;
7890
}
7891
7892
static void set_fpr(int reg_num, TCGv val)
7893
{
7894
- tcg_gen_st_i64(val, cpu_env,
7895
+ tcg_gen_st_i64(val, tcg_env,
7896
offsetof(CPULoongArchState, fpr[reg_num].vreg.D(0)));
7897
}
7898
7899
@@ -XXX,XX +XXX,XX @@ void loongarch_translate_init(void)
7900
7901
cpu_gpr[0] = NULL;
7902
for (i = 1; i < 32; i++) {
7903
- cpu_gpr[i] = tcg_global_mem_new(cpu_env,
7904
+ cpu_gpr[i] = tcg_global_mem_new(tcg_env,
7905
offsetof(CPULoongArchState, gpr[i]),
7906
regnames[i]);
7907
}
7908
7909
- cpu_pc = tcg_global_mem_new(cpu_env, offsetof(CPULoongArchState, pc), "pc");
7910
- cpu_lladdr = tcg_global_mem_new(cpu_env,
7911
+ cpu_pc = tcg_global_mem_new(tcg_env, offsetof(CPULoongArchState, pc), "pc");
7912
+ cpu_lladdr = tcg_global_mem_new(tcg_env,
7913
offsetof(CPULoongArchState, lladdr), "lladdr");
7914
- cpu_llval = tcg_global_mem_new(cpu_env,
7915
+ cpu_llval = tcg_global_mem_new(tcg_env,
7916
offsetof(CPULoongArchState, llval), "llval");
7917
}
7918
diff --git a/target/m68k/translate.c b/target/m68k/translate.c
7919
index XXXXXXX..XXXXXXX 100644
7920
--- a/target/m68k/translate.c
7921
+++ b/target/m68k/translate.c
7922
@@ -XXX,XX +XXX,XX @@ void m68k_tcg_init(void)
7923
int i;
7924
7925
#define DEFO32(name, offset) \
7926
- QREG_##name = tcg_global_mem_new_i32(cpu_env, \
7927
+ QREG_##name = tcg_global_mem_new_i32(tcg_env, \
7928
offsetof(CPUM68KState, offset), #name);
7929
#define DEFO64(name, offset) \
7930
- QREG_##name = tcg_global_mem_new_i64(cpu_env, \
7931
+ QREG_##name = tcg_global_mem_new_i64(tcg_env, \
7932
offsetof(CPUM68KState, offset), #name);
7933
#include "qregs.h.inc"
7934
#undef DEFO32
7935
#undef DEFO64
7936
7937
- cpu_halted = tcg_global_mem_new_i32(cpu_env,
7938
+ cpu_halted = tcg_global_mem_new_i32(tcg_env,
7939
-offsetof(M68kCPU, env) +
7940
offsetof(CPUState, halted), "HALTED");
7941
- cpu_exception_index = tcg_global_mem_new_i32(cpu_env,
7942
+ cpu_exception_index = tcg_global_mem_new_i32(tcg_env,
7943
-offsetof(M68kCPU, env) +
7944
offsetof(CPUState, exception_index),
7945
"EXCEPTION");
7946
@@ -XXX,XX +XXX,XX @@ void m68k_tcg_init(void)
7947
p = cpu_reg_names;
7948
for (i = 0; i < 8; i++) {
7949
sprintf(p, "D%d", i);
7950
- cpu_dregs[i] = tcg_global_mem_new(cpu_env,
7951
+ cpu_dregs[i] = tcg_global_mem_new(tcg_env,
7952
offsetof(CPUM68KState, dregs[i]), p);
7953
p += 3;
7954
sprintf(p, "A%d", i);
7955
- cpu_aregs[i] = tcg_global_mem_new(cpu_env,
7956
+ cpu_aregs[i] = tcg_global_mem_new(tcg_env,
7957
offsetof(CPUM68KState, aregs[i]), p);
7958
p += 3;
7959
}
7960
for (i = 0; i < 4; i++) {
7961
sprintf(p, "ACC%d", i);
7962
- cpu_macc[i] = tcg_global_mem_new_i64(cpu_env,
7963
+ cpu_macc[i] = tcg_global_mem_new_i64(tcg_env,
7964
offsetof(CPUM68KState, macc[i]), p);
7965
p += 5;
7966
}
7967
7968
- NULL_QREG = tcg_global_mem_new(cpu_env, -4, "NULL");
7969
- store_dummy = tcg_global_mem_new(cpu_env, -8, "NULL");
7970
+ NULL_QREG = tcg_global_mem_new(tcg_env, -4, "NULL");
7971
+ store_dummy = tcg_global_mem_new(tcg_env, -8, "NULL");
7972
}
7973
7974
/* internal defines */
7975
@@ -XXX,XX +XXX,XX @@ static void gen_jmp(DisasContext *s, TCGv dest)
7976
7977
static void gen_raise_exception(int nr)
7978
{
7979
- gen_helper_raise_exception(cpu_env, tcg_constant_i32(nr));
7980
+ gen_helper_raise_exception(tcg_env, tcg_constant_i32(nr));
7981
}
7982
7983
static void gen_raise_exception_format2(DisasContext *s, int nr,
7984
@@ -XXX,XX +XXX,XX @@ static void gen_raise_exception_format2(DisasContext *s, int nr,
7985
* Re-use mmu.ar for the purpose, since that's only valid
7986
* after tlb_fill.
7987
*/
7988
- tcg_gen_st_i32(tcg_constant_i32(this_pc), cpu_env,
7989
+ tcg_gen_st_i32(tcg_constant_i32(this_pc), tcg_env,
7990
offsetof(CPUM68KState, mmu.ar));
7991
gen_raise_exception(nr);
7992
s->base.is_jmp = DISAS_NORETURN;
7993
@@ -XXX,XX +XXX,XX @@ static void gen_flush_flags(DisasContext *s)
7994
break;
7995
7996
case CC_OP_DYNAMIC:
7997
- gen_helper_flush_flags(cpu_env, QREG_CC_OP);
7998
+ gen_helper_flush_flags(tcg_env, QREG_CC_OP);
7999
s->cc_op_synced = 1;
8000
break;
8001
8002
default:
8003
- gen_helper_flush_flags(cpu_env, tcg_constant_i32(s->cc_op));
8004
+ gen_helper_flush_flags(tcg_env, tcg_constant_i32(s->cc_op));
8005
s->cc_op_synced = 1;
8006
break;
8007
}
8008
@@ -XXX,XX +XXX,XX @@ static TCGv gen_ea(CPUM68KState *env, DisasContext *s, uint16_t insn,
8009
static TCGv_ptr gen_fp_ptr(int freg)
8010
{
8011
TCGv_ptr fp = tcg_temp_new_ptr();
8012
- tcg_gen_addi_ptr(fp, cpu_env, offsetof(CPUM68KState, fregs[freg]));
8013
+ tcg_gen_addi_ptr(fp, tcg_env, offsetof(CPUM68KState, fregs[freg]));
8014
return fp;
8015
}
8016
8017
static TCGv_ptr gen_fp_result_ptr(void)
8018
{
8019
TCGv_ptr fp = tcg_temp_new_ptr();
8020
- tcg_gen_addi_ptr(fp, cpu_env, offsetof(CPUM68KState, fp_result));
8021
+ tcg_gen_addi_ptr(fp, tcg_env, offsetof(CPUM68KState, fp_result));
8022
return fp;
8023
}
8024
8025
@@ -XXX,XX +XXX,XX @@ static void gen_load_fp(DisasContext *s, int opsize, TCGv addr, TCGv_ptr fp,
8026
case OS_WORD:
8027
case OS_LONG:
8028
tcg_gen_qemu_ld_tl(tmp, addr, index, opsize | MO_SIGN | MO_TE);
8029
- gen_helper_exts32(cpu_env, fp, tmp);
8030
+ gen_helper_exts32(tcg_env, fp, tmp);
8031
break;
8032
case OS_SINGLE:
8033
tcg_gen_qemu_ld_tl(tmp, addr, index, MO_TEUL);
8034
- gen_helper_extf32(cpu_env, fp, tmp);
8035
+ gen_helper_extf32(tcg_env, fp, tmp);
8036
break;
8037
case OS_DOUBLE:
8038
tcg_gen_qemu_ld_i64(t64, addr, index, MO_TEUQ);
8039
- gen_helper_extf64(cpu_env, fp, t64);
8040
+ gen_helper_extf64(tcg_env, fp, t64);
8041
break;
8042
case OS_EXTENDED:
8043
if (m68k_feature(s->env, M68K_FEATURE_CF_FPU)) {
8044
@@ -XXX,XX +XXX,XX @@ static void gen_store_fp(DisasContext *s, int opsize, TCGv addr, TCGv_ptr fp,
8045
case OS_BYTE:
8046
case OS_WORD:
8047
case OS_LONG:
8048
- gen_helper_reds32(tmp, cpu_env, fp);
8049
+ gen_helper_reds32(tmp, tcg_env, fp);
8050
tcg_gen_qemu_st_tl(tmp, addr, index, opsize | MO_TE);
8051
break;
8052
case OS_SINGLE:
8053
- gen_helper_redf32(tmp, cpu_env, fp);
8054
+ gen_helper_redf32(tmp, tcg_env, fp);
8055
tcg_gen_qemu_st_tl(tmp, addr, index, MO_TEUL);
8056
break;
8057
case OS_DOUBLE:
8058
- gen_helper_redf64(t64, cpu_env, fp);
8059
+ gen_helper_redf64(t64, tcg_env, fp);
8060
tcg_gen_qemu_st_i64(t64, addr, index, MO_TEUQ);
8061
break;
8062
case OS_EXTENDED:
8063
@@ -XXX,XX +XXX,XX @@ static int gen_ea_mode_fp(CPUM68KState *env, DisasContext *s, int mode,
8064
case OS_BYTE:
8065
case OS_WORD:
8066
case OS_LONG:
8067
- gen_helper_reds32(reg, cpu_env, fp);
8068
+ gen_helper_reds32(reg, tcg_env, fp);
8069
break;
8070
case OS_SINGLE:
8071
- gen_helper_redf32(reg, cpu_env, fp);
8072
+ gen_helper_redf32(reg, tcg_env, fp);
8073
break;
8074
default:
8075
g_assert_not_reached();
8076
@@ -XXX,XX +XXX,XX @@ static int gen_ea_mode_fp(CPUM68KState *env, DisasContext *s, int mode,
8077
switch (opsize) {
8078
case OS_BYTE:
8079
tcg_gen_ext8s_i32(tmp, reg);
8080
- gen_helper_exts32(cpu_env, fp, tmp);
8081
+ gen_helper_exts32(tcg_env, fp, tmp);
8082
break;
8083
case OS_WORD:
8084
tcg_gen_ext16s_i32(tmp, reg);
8085
- gen_helper_exts32(cpu_env, fp, tmp);
8086
+ gen_helper_exts32(tcg_env, fp, tmp);
8087
break;
8088
case OS_LONG:
8089
- gen_helper_exts32(cpu_env, fp, reg);
8090
+ gen_helper_exts32(tcg_env, fp, reg);
8091
break;
8092
case OS_SINGLE:
8093
- gen_helper_extf32(cpu_env, fp, reg);
8094
+ gen_helper_extf32(tcg_env, fp, reg);
8095
break;
8096
default:
8097
g_assert_not_reached();
8098
@@ -XXX,XX +XXX,XX @@ static int gen_ea_mode_fp(CPUM68KState *env, DisasContext *s, int mode,
8099
switch (opsize) {
8100
case OS_BYTE:
8101
tmp = tcg_constant_i32((int8_t)read_im8(env, s));
8102
- gen_helper_exts32(cpu_env, fp, tmp);
8103
+ gen_helper_exts32(tcg_env, fp, tmp);
8104
break;
8105
case OS_WORD:
8106
tmp = tcg_constant_i32((int16_t)read_im16(env, s));
8107
- gen_helper_exts32(cpu_env, fp, tmp);
8108
+ gen_helper_exts32(tcg_env, fp, tmp);
8109
break;
8110
case OS_LONG:
8111
tmp = tcg_constant_i32(read_im32(env, s));
8112
- gen_helper_exts32(cpu_env, fp, tmp);
8113
+ gen_helper_exts32(tcg_env, fp, tmp);
8114
break;
8115
case OS_SINGLE:
8116
tmp = tcg_constant_i32(read_im32(env, s));
8117
- gen_helper_extf32(cpu_env, fp, tmp);
8118
+ gen_helper_extf32(tcg_env, fp, tmp);
8119
break;
8120
case OS_DOUBLE:
8121
t64 = tcg_constant_i64(read_im64(env, s));
8122
- gen_helper_extf64(cpu_env, fp, t64);
8123
+ gen_helper_extf64(tcg_env, fp, t64);
8124
break;
8125
case OS_EXTENDED:
8126
if (m68k_feature(s->env, M68K_FEATURE_CF_FPU)) {
8127
@@ -XXX,XX +XXX,XX @@ DISAS_INSN(divw)
8128
destr = tcg_constant_i32(REG(insn, 9));
8129
ilen = tcg_constant_i32(s->pc - s->base.pc_next);
8130
if (sign) {
8131
- gen_helper_divsw(cpu_env, destr, src, ilen);
8132
+ gen_helper_divsw(tcg_env, destr, src, ilen);
8133
} else {
8134
- gen_helper_divuw(cpu_env, destr, src, ilen);
8135
+ gen_helper_divuw(tcg_env, destr, src, ilen);
8136
}
8137
8138
set_cc_op(s, CC_OP_FLAGS);
8139
@@ -XXX,XX +XXX,XX @@ DISAS_INSN(divl)
8140
reg = tcg_constant_i32(REG(ext, 0));
8141
ilen = tcg_constant_i32(s->pc - s->base.pc_next);
8142
if (sign) {
8143
- gen_helper_divsll(cpu_env, num, reg, den, ilen);
8144
+ gen_helper_divsll(tcg_env, num, reg, den, ilen);
8145
} else {
8146
- gen_helper_divull(cpu_env, num, reg, den, ilen);
8147
+ gen_helper_divull(tcg_env, num, reg, den, ilen);
8148
}
8149
set_cc_op(s, CC_OP_FLAGS);
8150
return;
8151
@@ -XXX,XX +XXX,XX @@ DISAS_INSN(divl)
8152
reg = tcg_constant_i32(REG(ext, 0));
8153
ilen = tcg_constant_i32(s->pc - s->base.pc_next);
8154
if (sign) {
8155
- gen_helper_divsl(cpu_env, num, reg, den, ilen);
8156
+ gen_helper_divsl(tcg_env, num, reg, den, ilen);
8157
} else {
8158
- gen_helper_divul(cpu_env, num, reg, den, ilen);
8159
+ gen_helper_divul(tcg_env, num, reg, den, ilen);
8160
}
8161
8162
set_cc_op(s, CC_OP_FLAGS);
8163
@@ -XXX,XX +XXX,XX @@ static TCGv gen_get_ccr(DisasContext *s)
8164
8165
update_cc_op(s);
8166
dest = tcg_temp_new();
8167
- gen_helper_get_ccr(dest, cpu_env);
8168
+ gen_helper_get_ccr(dest, tcg_env);
8169
return dest;
8170
}
8171
8172
@@ -XXX,XX +XXX,XX @@ static void gen_set_sr_im(DisasContext *s, uint16_t val, int ccr_only)
8173
} else {
8174
/* Must writeback before changing security state. */
8175
do_writebacks(s);
8176
- gen_helper_set_sr(cpu_env, tcg_constant_i32(val));
8177
+ gen_helper_set_sr(tcg_env, tcg_constant_i32(val));
8178
}
8179
set_cc_op(s, CC_OP_FLAGS);
8180
}
8181
@@ -XXX,XX +XXX,XX @@ static void gen_set_sr_im(DisasContext *s, uint16_t val, int ccr_only)
8182
static void gen_set_sr(DisasContext *s, TCGv val, int ccr_only)
8183
{
8184
if (ccr_only) {
8185
- gen_helper_set_ccr(cpu_env, val);
8186
+ gen_helper_set_ccr(tcg_env, val);
8187
} else {
8188
/* Must writeback before changing security state. */
8189
do_writebacks(s);
8190
- gen_helper_set_sr(cpu_env, val);
8191
+ gen_helper_set_sr(tcg_env, val);
8192
}
8193
set_cc_op(s, CC_OP_FLAGS);
8194
}
8195
@@ -XXX,XX +XXX,XX @@ DISAS_INSN(cas2w)
8196
*/
8197
8198
if (tb_cflags(s->base.tb) & CF_PARALLEL) {
8199
- gen_helper_exit_atomic(cpu_env);
8200
+ gen_helper_exit_atomic(tcg_env);
8201
} else {
8202
TCGv regs = tcg_constant_i32(REG(ext2, 6) |
8203
(REG(ext1, 6) << 3) |
8204
(REG(ext2, 0) << 6) |
8205
(REG(ext1, 0) << 9));
8206
- gen_helper_cas2w(cpu_env, regs, addr1, addr2);
8207
+ gen_helper_cas2w(tcg_env, regs, addr1, addr2);
8208
}
8209
8210
/* Note that cas2w also assigned to env->cc_op. */
8211
@@ -XXX,XX +XXX,XX @@ DISAS_INSN(cas2l)
8212
(REG(ext2, 0) << 6) |
8213
(REG(ext1, 0) << 9));
8214
if (tb_cflags(s->base.tb) & CF_PARALLEL) {
8215
- gen_helper_cas2l_parallel(cpu_env, regs, addr1, addr2);
8216
+ gen_helper_cas2l_parallel(tcg_env, regs, addr1, addr2);
8217
} else {
8218
- gen_helper_cas2l(cpu_env, regs, addr1, addr2);
8219
+ gen_helper_cas2l(tcg_env, regs, addr1, addr2);
8220
}
8221
8222
/* Note that cas2l also assigned to env->cc_op. */
8223
@@ -XXX,XX +XXX,XX @@ DISAS_INSN(reset)
8224
return;
8225
}
8226
8227
- gen_helper_reset(cpu_env);
8228
+ gen_helper_reset(tcg_env);
8229
}
8230
#endif
8231
8232
@@ -XXX,XX +XXX,XX @@ DISAS_INSN(bfext_mem)
8233
}
8234
8235
if (is_sign) {
8236
- gen_helper_bfexts_mem(dest, cpu_env, addr, ofs, len);
8237
+ gen_helper_bfexts_mem(dest, tcg_env, addr, ofs, len);
8238
tcg_gen_mov_i32(QREG_CC_N, dest);
8239
} else {
8240
TCGv_i64 tmp = tcg_temp_new_i64();
8241
- gen_helper_bfextu_mem(tmp, cpu_env, addr, ofs, len);
8242
+ gen_helper_bfextu_mem(tmp, tcg_env, addr, ofs, len);
8243
tcg_gen_extr_i64_i32(dest, QREG_CC_N, tmp);
8244
}
8245
set_cc_op(s, CC_OP_LOGIC);
8246
@@ -XXX,XX +XXX,XX @@ DISAS_INSN(bfop_mem)
8247
8248
switch (insn & 0x0f00) {
8249
case 0x0a00: /* bfchg */
8250
- gen_helper_bfchg_mem(QREG_CC_N, cpu_env, addr, ofs, len);
8251
+ gen_helper_bfchg_mem(QREG_CC_N, tcg_env, addr, ofs, len);
8252
break;
8253
case 0x0c00: /* bfclr */
8254
- gen_helper_bfclr_mem(QREG_CC_N, cpu_env, addr, ofs, len);
8255
+ gen_helper_bfclr_mem(QREG_CC_N, tcg_env, addr, ofs, len);
8256
break;
8257
case 0x0d00: /* bfffo */
8258
t64 = tcg_temp_new_i64();
8259
- gen_helper_bfffo_mem(t64, cpu_env, addr, ofs, len);
8260
+ gen_helper_bfffo_mem(t64, tcg_env, addr, ofs, len);
8261
tcg_gen_extr_i64_i32(DREG(ext, 12), QREG_CC_N, t64);
8262
break;
8263
case 0x0e00: /* bfset */
8264
- gen_helper_bfset_mem(QREG_CC_N, cpu_env, addr, ofs, len);
8265
+ gen_helper_bfset_mem(QREG_CC_N, tcg_env, addr, ofs, len);
8266
break;
8267
case 0x0800: /* bftst */
8268
- gen_helper_bfexts_mem(QREG_CC_N, cpu_env, addr, ofs, len);
8269
+ gen_helper_bfexts_mem(QREG_CC_N, tcg_env, addr, ofs, len);
8270
break;
8271
default:
8272
g_assert_not_reached();
8273
@@ -XXX,XX +XXX,XX @@ DISAS_INSN(bfins_mem)
8274
ofs = tcg_constant_i32(extract32(ext, 6, 5));
8275
}
8276
8277
- gen_helper_bfins_mem(QREG_CC_N, cpu_env, addr, src, ofs, len);
8278
+ gen_helper_bfins_mem(QREG_CC_N, tcg_env, addr, src, ofs, len);
8279
set_cc_op(s, CC_OP_LOGIC);
8280
}
8281
8282
@@ -XXX,XX +XXX,XX @@ DISAS_INSN(chk)
8283
reg = gen_extend(s, DREG(insn, 9), opsize, 1);
8284
8285
gen_flush_flags(s);
8286
- gen_helper_chk(cpu_env, reg, src);
8287
+ gen_helper_chk(tcg_env, reg, src);
8288
}
8289
8290
DISAS_INSN(chk2)
8291
@@ -XXX,XX +XXX,XX @@ DISAS_INSN(chk2)
8292
}
8293
8294
gen_flush_flags(s);
8295
- gen_helper_chk2(cpu_env, reg, bound1, bound2);
8296
+ gen_helper_chk2(tcg_env, reg, bound1, bound2);
8297
}
8298
8299
static void m68k_copy_line(TCGv dst, TCGv src, int index)
8300
@@ -XXX,XX +XXX,XX @@ DISAS_INSN(move_from_usp)
8301
gen_exception(s, s->base.pc_next, EXCP_PRIVILEGE);
8302
return;
8303
}
8304
- tcg_gen_ld_i32(AREG(insn, 0), cpu_env,
8305
+ tcg_gen_ld_i32(AREG(insn, 0), tcg_env,
8306
offsetof(CPUM68KState, sp[M68K_USP]));
8307
}
8308
8309
@@ -XXX,XX +XXX,XX @@ DISAS_INSN(move_to_usp)
8310
gen_exception(s, s->base.pc_next, EXCP_PRIVILEGE);
8311
return;
8312
}
8313
- tcg_gen_st_i32(AREG(insn, 0), cpu_env,
8314
+ tcg_gen_st_i32(AREG(insn, 0), tcg_env,
8315
offsetof(CPUM68KState, sp[M68K_USP]));
8316
}
8317
8318
@@ -XXX,XX +XXX,XX @@ DISAS_INSN(cf_movec)
8319
} else {
8320
reg = DREG(ext, 12);
8321
}
8322
- gen_helper_cf_movec_to(cpu_env, tcg_constant_i32(ext & 0xfff), reg);
8323
+ gen_helper_cf_movec_to(tcg_env, tcg_constant_i32(ext & 0xfff), reg);
8324
gen_exit_tb(s);
8325
}
8326
8327
@@ -XXX,XX +XXX,XX @@ DISAS_INSN(m68k_movec)
8328
}
8329
creg = tcg_constant_i32(ext & 0xfff);
8330
if (insn & 1) {
8331
- gen_helper_m68k_movec_to(cpu_env, creg, reg);
8332
+ gen_helper_m68k_movec_to(tcg_env, creg, reg);
8333
} else {
8334
- gen_helper_m68k_movec_from(reg, cpu_env, creg);
8335
+ gen_helper_m68k_movec_from(reg, tcg_env, creg);
8336
}
8337
gen_exit_tb(s);
8338
}
8339
@@ -XXX,XX +XXX,XX @@ DISAS_INSN(pflush)
8340
}
8341
8342
opmode = tcg_constant_i32((insn >> 3) & 3);
8343
- gen_helper_pflush(cpu_env, AREG(insn, 0), opmode);
8344
+ gen_helper_pflush(tcg_env, AREG(insn, 0), opmode);
8345
}
8346
8347
DISAS_INSN(ptest)
8348
@@ -XXX,XX +XXX,XX @@ DISAS_INSN(ptest)
8349
return;
8350
}
8351
is_read = tcg_constant_i32((insn >> 5) & 1);
8352
- gen_helper_ptest(cpu_env, AREG(insn, 0), is_read);
8353
+ gen_helper_ptest(tcg_env, AREG(insn, 0), is_read);
8354
}
8355
#endif
8356
8357
@@ -XXX,XX +XXX,XX @@ static void gen_load_fcr(DisasContext *s, TCGv res, int reg)
8358
tcg_gen_movi_i32(res, 0);
8359
break;
8360
case M68K_FPSR:
8361
- tcg_gen_ld_i32(res, cpu_env, offsetof(CPUM68KState, fpsr));
8362
+ tcg_gen_ld_i32(res, tcg_env, offsetof(CPUM68KState, fpsr));
8363
break;
8364
case M68K_FPCR:
8365
- tcg_gen_ld_i32(res, cpu_env, offsetof(CPUM68KState, fpcr));
8366
+ tcg_gen_ld_i32(res, tcg_env, offsetof(CPUM68KState, fpcr));
8367
break;
8368
}
8369
}
8370
@@ -XXX,XX +XXX,XX @@ static void gen_store_fcr(DisasContext *s, TCGv val, int reg)
8371
case M68K_FPIAR:
8372
break;
8373
case M68K_FPSR:
8374
- tcg_gen_st_i32(val, cpu_env, offsetof(CPUM68KState, fpsr));
8375
+ tcg_gen_st_i32(val, tcg_env, offsetof(CPUM68KState, fpsr));
8376
break;
8377
case M68K_FPCR:
8378
- gen_helper_set_fpcr(cpu_env, val);
8379
+ gen_helper_set_fpcr(tcg_env, val);
8380
break;
8381
}
8382
}
8383
@@ -XXX,XX +XXX,XX @@ static void gen_op_fmovem(CPUM68KState *env, DisasContext *s,
8384
* only available to store register to memory
8385
*/
8386
if (opsize == OS_EXTENDED) {
8387
- gen_helper_fmovemx_st_predec(tmp, cpu_env, addr, tmp);
8388
+ gen_helper_fmovemx_st_predec(tmp, tcg_env, addr, tmp);
8389
} else {
8390
- gen_helper_fmovemd_st_predec(tmp, cpu_env, addr, tmp);
8391
+ gen_helper_fmovemd_st_predec(tmp, tcg_env, addr, tmp);
8392
}
8393
} else {
8394
/* postincrement addressing mode */
8395
if (opsize == OS_EXTENDED) {
8396
if (is_load) {
8397
- gen_helper_fmovemx_ld_postinc(tmp, cpu_env, addr, tmp);
8398
+ gen_helper_fmovemx_ld_postinc(tmp, tcg_env, addr, tmp);
8399
} else {
8400
- gen_helper_fmovemx_st_postinc(tmp, cpu_env, addr, tmp);
8401
+ gen_helper_fmovemx_st_postinc(tmp, tcg_env, addr, tmp);
8402
}
8403
} else {
8404
if (is_load) {
8405
- gen_helper_fmovemd_ld_postinc(tmp, cpu_env, addr, tmp);
8406
+ gen_helper_fmovemd_ld_postinc(tmp, tcg_env, addr, tmp);
8407
} else {
8408
- gen_helper_fmovemd_st_postinc(tmp, cpu_env, addr, tmp);
8409
+ gen_helper_fmovemd_st_postinc(tmp, tcg_env, addr, tmp);
8410
}
8411
}
8412
}
8413
@@ -XXX,XX +XXX,XX @@ DISAS_INSN(fpu)
8414
/* fmovecr */
8415
TCGv rom_offset = tcg_constant_i32(opmode);
8416
cpu_dest = gen_fp_ptr(REG(ext, 7));
8417
- gen_helper_fconst(cpu_env, cpu_dest, rom_offset);
8418
+ gen_helper_fconst(tcg_env, cpu_dest, rom_offset);
8419
return;
8420
}
8421
break;
8422
@@ -XXX,XX +XXX,XX @@ DISAS_INSN(fpu)
8423
EA_STORE, IS_USER(s)) == -1) {
8424
gen_addr_fault(s);
8425
}
8426
- gen_helper_ftst(cpu_env, cpu_src);
8427
+ gen_helper_ftst(tcg_env, cpu_src);
8428
return;
8429
case 4: /* fmove to control register. */
8430
case 5: /* fmove from control register. */
8431
@@ -XXX,XX +XXX,XX @@ DISAS_INSN(fpu)
8432
gen_fp_move(cpu_dest, cpu_src);
8433
break;
8434
case 0x40: /* fsmove */
8435
- gen_helper_fsround(cpu_env, cpu_dest, cpu_src);
8436
+ gen_helper_fsround(tcg_env, cpu_dest, cpu_src);
8437
break;
8438
case 0x44: /* fdmove */
8439
- gen_helper_fdround(cpu_env, cpu_dest, cpu_src);
8440
+ gen_helper_fdround(tcg_env, cpu_dest, cpu_src);
8441
break;
8442
case 1: /* fint */
8443
- gen_helper_firound(cpu_env, cpu_dest, cpu_src);
8444
+ gen_helper_firound(tcg_env, cpu_dest, cpu_src);
8445
break;
8446
case 2: /* fsinh */
8447
- gen_helper_fsinh(cpu_env, cpu_dest, cpu_src);
8448
+ gen_helper_fsinh(tcg_env, cpu_dest, cpu_src);
8449
break;
8450
case 3: /* fintrz */
8451
- gen_helper_fitrunc(cpu_env, cpu_dest, cpu_src);
8452
+ gen_helper_fitrunc(tcg_env, cpu_dest, cpu_src);
8453
break;
8454
case 4: /* fsqrt */
8455
- gen_helper_fsqrt(cpu_env, cpu_dest, cpu_src);
8456
+ gen_helper_fsqrt(tcg_env, cpu_dest, cpu_src);
8457
break;
8458
case 0x41: /* fssqrt */
8459
- gen_helper_fssqrt(cpu_env, cpu_dest, cpu_src);
8460
+ gen_helper_fssqrt(tcg_env, cpu_dest, cpu_src);
8461
break;
8462
case 0x45: /* fdsqrt */
8463
- gen_helper_fdsqrt(cpu_env, cpu_dest, cpu_src);
8464
+ gen_helper_fdsqrt(tcg_env, cpu_dest, cpu_src);
8465
break;
8466
case 0x06: /* flognp1 */
8467
- gen_helper_flognp1(cpu_env, cpu_dest, cpu_src);
8468
+ gen_helper_flognp1(tcg_env, cpu_dest, cpu_src);
8469
break;
8470
case 0x08: /* fetoxm1 */
8471
- gen_helper_fetoxm1(cpu_env, cpu_dest, cpu_src);
8472
+ gen_helper_fetoxm1(tcg_env, cpu_dest, cpu_src);
8473
break;
8474
case 0x09: /* ftanh */
8475
- gen_helper_ftanh(cpu_env, cpu_dest, cpu_src);
8476
+ gen_helper_ftanh(tcg_env, cpu_dest, cpu_src);
8477
break;
8478
case 0x0a: /* fatan */
8479
- gen_helper_fatan(cpu_env, cpu_dest, cpu_src);
8480
+ gen_helper_fatan(tcg_env, cpu_dest, cpu_src);
8481
break;
8482
case 0x0c: /* fasin */
8483
- gen_helper_fasin(cpu_env, cpu_dest, cpu_src);
8484
+ gen_helper_fasin(tcg_env, cpu_dest, cpu_src);
8485
break;
8486
case 0x0d: /* fatanh */
8487
- gen_helper_fatanh(cpu_env, cpu_dest, cpu_src);
8488
+ gen_helper_fatanh(tcg_env, cpu_dest, cpu_src);
8489
break;
8490
case 0x0e: /* fsin */
8491
- gen_helper_fsin(cpu_env, cpu_dest, cpu_src);
8492
+ gen_helper_fsin(tcg_env, cpu_dest, cpu_src);
8493
break;
8494
case 0x0f: /* ftan */
8495
- gen_helper_ftan(cpu_env, cpu_dest, cpu_src);
8496
+ gen_helper_ftan(tcg_env, cpu_dest, cpu_src);
8497
break;
8498
case 0x10: /* fetox */
8499
- gen_helper_fetox(cpu_env, cpu_dest, cpu_src);
8500
+ gen_helper_fetox(tcg_env, cpu_dest, cpu_src);
8501
break;
8502
case 0x11: /* ftwotox */
8503
- gen_helper_ftwotox(cpu_env, cpu_dest, cpu_src);
8504
+ gen_helper_ftwotox(tcg_env, cpu_dest, cpu_src);
8505
break;
8506
case 0x12: /* ftentox */
8507
- gen_helper_ftentox(cpu_env, cpu_dest, cpu_src);
8508
+ gen_helper_ftentox(tcg_env, cpu_dest, cpu_src);
8509
break;
8510
case 0x14: /* flogn */
8511
- gen_helper_flogn(cpu_env, cpu_dest, cpu_src);
8512
+ gen_helper_flogn(tcg_env, cpu_dest, cpu_src);
8513
break;
8514
case 0x15: /* flog10 */
8515
- gen_helper_flog10(cpu_env, cpu_dest, cpu_src);
8516
+ gen_helper_flog10(tcg_env, cpu_dest, cpu_src);
8517
break;
8518
case 0x16: /* flog2 */
8519
- gen_helper_flog2(cpu_env, cpu_dest, cpu_src);
8520
+ gen_helper_flog2(tcg_env, cpu_dest, cpu_src);
8521
break;
8522
case 0x18: /* fabs */
8523
- gen_helper_fabs(cpu_env, cpu_dest, cpu_src);
8524
+ gen_helper_fabs(tcg_env, cpu_dest, cpu_src);
8525
break;
8526
case 0x58: /* fsabs */
8527
- gen_helper_fsabs(cpu_env, cpu_dest, cpu_src);
8528
+ gen_helper_fsabs(tcg_env, cpu_dest, cpu_src);
8529
break;
8530
case 0x5c: /* fdabs */
8531
- gen_helper_fdabs(cpu_env, cpu_dest, cpu_src);
8532
+ gen_helper_fdabs(tcg_env, cpu_dest, cpu_src);
8533
break;
8534
case 0x19: /* fcosh */
8535
- gen_helper_fcosh(cpu_env, cpu_dest, cpu_src);
8536
+ gen_helper_fcosh(tcg_env, cpu_dest, cpu_src);
8537
break;
8538
case 0x1a: /* fneg */
8539
- gen_helper_fneg(cpu_env, cpu_dest, cpu_src);
8540
+ gen_helper_fneg(tcg_env, cpu_dest, cpu_src);
8541
break;
8542
case 0x5a: /* fsneg */
8543
- gen_helper_fsneg(cpu_env, cpu_dest, cpu_src);
8544
+ gen_helper_fsneg(tcg_env, cpu_dest, cpu_src);
8545
break;
8546
case 0x5e: /* fdneg */
8547
- gen_helper_fdneg(cpu_env, cpu_dest, cpu_src);
8548
+ gen_helper_fdneg(tcg_env, cpu_dest, cpu_src);
8549
break;
8550
case 0x1c: /* facos */
8551
- gen_helper_facos(cpu_env, cpu_dest, cpu_src);
8552
+ gen_helper_facos(tcg_env, cpu_dest, cpu_src);
8553
break;
8554
case 0x1d: /* fcos */
8555
- gen_helper_fcos(cpu_env, cpu_dest, cpu_src);
8556
+ gen_helper_fcos(tcg_env, cpu_dest, cpu_src);
8557
break;
8558
case 0x1e: /* fgetexp */
8559
- gen_helper_fgetexp(cpu_env, cpu_dest, cpu_src);
8560
+ gen_helper_fgetexp(tcg_env, cpu_dest, cpu_src);
8561
break;
8562
case 0x1f: /* fgetman */
8563
- gen_helper_fgetman(cpu_env, cpu_dest, cpu_src);
8564
+ gen_helper_fgetman(tcg_env, cpu_dest, cpu_src);
8565
break;
8566
case 0x20: /* fdiv */
8567
- gen_helper_fdiv(cpu_env, cpu_dest, cpu_src, cpu_dest);
8568
+ gen_helper_fdiv(tcg_env, cpu_dest, cpu_src, cpu_dest);
8569
break;
8570
case 0x60: /* fsdiv */
8571
- gen_helper_fsdiv(cpu_env, cpu_dest, cpu_src, cpu_dest);
8572
+ gen_helper_fsdiv(tcg_env, cpu_dest, cpu_src, cpu_dest);
8573
break;
8574
case 0x64: /* fddiv */
8575
- gen_helper_fddiv(cpu_env, cpu_dest, cpu_src, cpu_dest);
8576
+ gen_helper_fddiv(tcg_env, cpu_dest, cpu_src, cpu_dest);
8577
break;
8578
case 0x21: /* fmod */
8579
- gen_helper_fmod(cpu_env, cpu_dest, cpu_src, cpu_dest);
8580
+ gen_helper_fmod(tcg_env, cpu_dest, cpu_src, cpu_dest);
8581
break;
8582
case 0x22: /* fadd */
8583
- gen_helper_fadd(cpu_env, cpu_dest, cpu_src, cpu_dest);
8584
+ gen_helper_fadd(tcg_env, cpu_dest, cpu_src, cpu_dest);
8585
break;
8586
case 0x62: /* fsadd */
8587
- gen_helper_fsadd(cpu_env, cpu_dest, cpu_src, cpu_dest);
8588
+ gen_helper_fsadd(tcg_env, cpu_dest, cpu_src, cpu_dest);
8589
break;
8590
case 0x66: /* fdadd */
8591
- gen_helper_fdadd(cpu_env, cpu_dest, cpu_src, cpu_dest);
8592
+ gen_helper_fdadd(tcg_env, cpu_dest, cpu_src, cpu_dest);
8593
break;
8594
case 0x23: /* fmul */
8595
- gen_helper_fmul(cpu_env, cpu_dest, cpu_src, cpu_dest);
8596
+ gen_helper_fmul(tcg_env, cpu_dest, cpu_src, cpu_dest);
8597
break;
8598
case 0x63: /* fsmul */
8599
- gen_helper_fsmul(cpu_env, cpu_dest, cpu_src, cpu_dest);
8600
+ gen_helper_fsmul(tcg_env, cpu_dest, cpu_src, cpu_dest);
8601
break;
8602
case 0x67: /* fdmul */
8603
- gen_helper_fdmul(cpu_env, cpu_dest, cpu_src, cpu_dest);
8604
+ gen_helper_fdmul(tcg_env, cpu_dest, cpu_src, cpu_dest);
8605
break;
8606
case 0x24: /* fsgldiv */
8607
- gen_helper_fsgldiv(cpu_env, cpu_dest, cpu_src, cpu_dest);
8608
+ gen_helper_fsgldiv(tcg_env, cpu_dest, cpu_src, cpu_dest);
8609
break;
8610
case 0x25: /* frem */
8611
- gen_helper_frem(cpu_env, cpu_dest, cpu_src, cpu_dest);
8612
+ gen_helper_frem(tcg_env, cpu_dest, cpu_src, cpu_dest);
8613
break;
8614
case 0x26: /* fscale */
8615
- gen_helper_fscale(cpu_env, cpu_dest, cpu_src, cpu_dest);
8616
+ gen_helper_fscale(tcg_env, cpu_dest, cpu_src, cpu_dest);
8617
break;
8618
case 0x27: /* fsglmul */
8619
- gen_helper_fsglmul(cpu_env, cpu_dest, cpu_src, cpu_dest);
8620
+ gen_helper_fsglmul(tcg_env, cpu_dest, cpu_src, cpu_dest);
8621
break;
8622
case 0x28: /* fsub */
8623
- gen_helper_fsub(cpu_env, cpu_dest, cpu_src, cpu_dest);
8624
+ gen_helper_fsub(tcg_env, cpu_dest, cpu_src, cpu_dest);
8625
break;
8626
case 0x68: /* fssub */
8627
- gen_helper_fssub(cpu_env, cpu_dest, cpu_src, cpu_dest);
8628
+ gen_helper_fssub(tcg_env, cpu_dest, cpu_src, cpu_dest);
8629
break;
8630
case 0x6c: /* fdsub */
8631
- gen_helper_fdsub(cpu_env, cpu_dest, cpu_src, cpu_dest);
8632
+ gen_helper_fdsub(tcg_env, cpu_dest, cpu_src, cpu_dest);
8633
break;
8634
case 0x30: case 0x31: case 0x32:
8635
case 0x33: case 0x34: case 0x35:
8636
case 0x36: case 0x37: {
8637
TCGv_ptr cpu_dest2 = gen_fp_ptr(REG(ext, 0));
8638
- gen_helper_fsincos(cpu_env, cpu_dest, cpu_dest2, cpu_src);
8639
+ gen_helper_fsincos(tcg_env, cpu_dest, cpu_dest2, cpu_src);
8640
}
8641
break;
8642
case 0x38: /* fcmp */
8643
- gen_helper_fcmp(cpu_env, cpu_src, cpu_dest);
8644
+ gen_helper_fcmp(tcg_env, cpu_src, cpu_dest);
8645
return;
8646
case 0x3a: /* ftst */
8647
- gen_helper_ftst(cpu_env, cpu_src);
8648
+ gen_helper_ftst(tcg_env, cpu_src);
8649
return;
8650
default:
8651
goto undef;
8652
}
8653
- gen_helper_ftst(cpu_env, cpu_dest);
8654
+ gen_helper_ftst(tcg_env, cpu_dest);
8655
return;
8656
undef:
8657
/* FIXME: Is this right for offset addressing modes? */
8658
@@ -XXX,XX +XXX,XX @@ DISAS_INSN(mac)
8659
ry = gen_mac_extract_word(s, ry, (ext & 0x40) != 0);
8660
}
8661
if (s->env->macsr & MACSR_FI) {
8662
- gen_helper_macmulf(s->mactmp, cpu_env, rx, ry);
8663
+ gen_helper_macmulf(s->mactmp, tcg_env, rx, ry);
8664
} else {
8665
if (s->env->macsr & MACSR_SU)
8666
- gen_helper_macmuls(s->mactmp, cpu_env, rx, ry);
8667
+ gen_helper_macmuls(s->mactmp, tcg_env, rx, ry);
8668
else
8669
- gen_helper_macmulu(s->mactmp, cpu_env, rx, ry);
8670
+ gen_helper_macmulu(s->mactmp, tcg_env, rx, ry);
8671
switch ((ext >> 9) & 3) {
8672
case 1:
8673
tcg_gen_shli_i64(s->mactmp, s->mactmp, 1);
8674
@@ -XXX,XX +XXX,XX @@ DISAS_INSN(mac)
8675
tcg_gen_add_i64(MACREG(acc), MACREG(acc), s->mactmp);
8676
8677
if (s->env->macsr & MACSR_FI)
8678
- gen_helper_macsatf(cpu_env, tcg_constant_i32(acc));
8679
+ gen_helper_macsatf(tcg_env, tcg_constant_i32(acc));
8680
else if (s->env->macsr & MACSR_SU)
8681
- gen_helper_macsats(cpu_env, tcg_constant_i32(acc));
8682
+ gen_helper_macsats(tcg_env, tcg_constant_i32(acc));
8683
else
8684
- gen_helper_macsatu(cpu_env, tcg_constant_i32(acc));
8685
+ gen_helper_macsatu(tcg_env, tcg_constant_i32(acc));
8686
8687
#if 0
8688
/* Disabled because conditional branches clobber temporary vars. */
8689
@@ -XXX,XX +XXX,XX @@ DISAS_INSN(mac)
8690
else
8691
tcg_gen_add_i64(MACREG(acc), MACREG(acc), s->mactmp);
8692
if (s->env->macsr & MACSR_FI)
8693
- gen_helper_macsatf(cpu_env, tcg_constant_i32(acc));
8694
+ gen_helper_macsatf(tcg_env, tcg_constant_i32(acc));
8695
else if (s->env->macsr & MACSR_SU)
8696
- gen_helper_macsats(cpu_env, tcg_constant_i32(acc));
8697
+ gen_helper_macsats(tcg_env, tcg_constant_i32(acc));
8698
else
8699
- gen_helper_macsatu(cpu_env, tcg_constant_i32(acc));
8700
+ gen_helper_macsatu(tcg_env, tcg_constant_i32(acc));
8701
#if 0
8702
/* Disabled because conditional branches clobber temporary vars. */
8703
if (l1 != -1)
8704
gen_set_label(l1);
8705
#endif
8706
}
8707
- gen_helper_mac_set_flags(cpu_env, tcg_constant_i32(acc));
8708
+ gen_helper_mac_set_flags(tcg_env, tcg_constant_i32(acc));
8709
8710
if (insn & 0x30) {
8711
TCGv rw;
8712
@@ -XXX,XX +XXX,XX @@ DISAS_INSN(from_mac)
8713
accnum = (insn >> 9) & 3;
8714
acc = MACREG(accnum);
8715
if (s->env->macsr & MACSR_FI) {
8716
- gen_helper_get_macf(rx, cpu_env, acc);
8717
+ gen_helper_get_macf(rx, tcg_env, acc);
8718
} else if ((s->env->macsr & MACSR_OMC) == 0) {
8719
tcg_gen_extrl_i64_i32(rx, acc);
8720
} else if (s->env->macsr & MACSR_SU) {
8721
@@ -XXX,XX +XXX,XX @@ DISAS_INSN(move_mac)
8722
TCGv dest;
8723
src = insn & 3;
8724
dest = tcg_constant_i32((insn >> 9) & 3);
8725
- gen_helper_mac_move(cpu_env, dest, tcg_constant_i32(src));
8726
+ gen_helper_mac_move(tcg_env, dest, tcg_constant_i32(src));
8727
gen_mac_clear_flags();
8728
- gen_helper_mac_set_flags(cpu_env, dest);
8729
+ gen_helper_mac_set_flags(tcg_env, dest);
8730
}
8731
8732
DISAS_INSN(from_macsr)
8733
@@ -XXX,XX +XXX,XX @@ DISAS_INSN(from_mext)
8734
reg = (insn & 8) ? AREG(insn, 0) : DREG(insn, 0);
8735
acc = tcg_constant_i32((insn & 0x400) ? 2 : 0);
8736
if (s->env->macsr & MACSR_FI)
8737
- gen_helper_get_mac_extf(reg, cpu_env, acc);
8738
+ gen_helper_get_mac_extf(reg, tcg_env, acc);
8739
else
8740
- gen_helper_get_mac_exti(reg, cpu_env, acc);
8741
+ gen_helper_get_mac_exti(reg, tcg_env, acc);
8742
}
8743
8744
DISAS_INSN(macsr_to_ccr)
8745
@@ -XXX,XX +XXX,XX @@ DISAS_INSN(macsr_to_ccr)
8746
8747
/* Note that X and C are always cleared. */
8748
tcg_gen_andi_i32(tmp, QREG_MACSR, CCF_N | CCF_Z | CCF_V);
8749
- gen_helper_set_ccr(cpu_env, tmp);
8750
+ gen_helper_set_ccr(tcg_env, tmp);
8751
set_cc_op(s, CC_OP_FLAGS);
8752
}
8753
8754
@@ -XXX,XX +XXX,XX @@ DISAS_INSN(to_mac)
8755
}
8756
tcg_gen_andi_i32(QREG_MACSR, QREG_MACSR, ~(MACSR_PAV0 << accnum));
8757
gen_mac_clear_flags();
8758
- gen_helper_mac_set_flags(cpu_env, tcg_constant_i32(accnum));
8759
+ gen_helper_mac_set_flags(tcg_env, tcg_constant_i32(accnum));
8760
}
8761
8762
DISAS_INSN(to_macsr)
8763
{
8764
TCGv val;
8765
SRC_EA(env, val, OS_LONG, 0, NULL);
8766
- gen_helper_set_macsr(cpu_env, val);
8767
+ gen_helper_set_macsr(tcg_env, val);
8768
gen_exit_tb(s);
8769
}
8770
8771
@@ -XXX,XX +XXX,XX @@ DISAS_INSN(to_mext)
8772
SRC_EA(env, val, OS_LONG, 0, NULL);
8773
acc = tcg_constant_i32((insn & 0x400) ? 2 : 0);
8774
if (s->env->macsr & MACSR_FI)
8775
- gen_helper_set_mac_extf(cpu_env, val, acc);
8776
+ gen_helper_set_mac_extf(tcg_env, val, acc);
8777
else if (s->env->macsr & MACSR_SU)
8778
- gen_helper_set_mac_exts(cpu_env, val, acc);
8779
+ gen_helper_set_mac_exts(tcg_env, val, acc);
8780
else
8781
- gen_helper_set_mac_extu(cpu_env, val, acc);
8782
+ gen_helper_set_mac_extu(tcg_env, val, acc);
8783
}
8784
8785
static disas_proc opcode_table[65536];
8786
diff --git a/target/microblaze/translate.c b/target/microblaze/translate.c
8787
index XXXXXXX..XXXXXXX 100644
8788
--- a/target/microblaze/translate.c
8789
+++ b/target/microblaze/translate.c
8790
@@ -XXX,XX +XXX,XX @@ static void t_sync_flags(DisasContext *dc)
8791
8792
static void gen_raise_exception(DisasContext *dc, uint32_t index)
8793
{
8794
- gen_helper_raise_exception(cpu_env, tcg_constant_i32(index));
8795
+ gen_helper_raise_exception(tcg_env, tcg_constant_i32(index));
8796
dc->base.is_jmp = DISAS_NORETURN;
8797
}
8798
8799
@@ -XXX,XX +XXX,XX @@ static void gen_raise_exception_sync(DisasContext *dc, uint32_t index)
8800
static void gen_raise_hw_excp(DisasContext *dc, uint32_t esr_ec)
8801
{
8802
TCGv_i32 tmp = tcg_constant_i32(esr_ec);
8803
- tcg_gen_st_i32(tmp, cpu_env, offsetof(CPUMBState, esr));
8804
+ tcg_gen_st_i32(tmp, tcg_env, offsetof(CPUMBState, esr));
8805
8806
gen_raise_exception_sync(dc, EXCP_HW_EXCP);
8807
}
8808
@@ -XXX,XX +XXX,XX @@ static bool do_typeb_val(DisasContext *dc, arg_typeb *arg, bool side_effects,
8809
8810
#define ENV_WRAPPER2(NAME, HELPER) \
8811
static void NAME(TCGv_i32 out, TCGv_i32 ina) \
8812
- { HELPER(out, cpu_env, ina); }
8813
+ { HELPER(out, tcg_env, ina); }
8814
8815
#define ENV_WRAPPER3(NAME, HELPER) \
8816
static void NAME(TCGv_i32 out, TCGv_i32 ina, TCGv_i32 inb) \
8817
- { HELPER(out, cpu_env, ina, inb); }
8818
+ { HELPER(out, tcg_env, ina, inb); }
8819
8820
/* No input carry, but output carry. */
8821
static void gen_add(TCGv_i32 out, TCGv_i32 ina, TCGv_i32 inb)
8822
@@ -XXX,XX +XXX,XX @@ DO_TYPEA0_CFG(fsqrt, use_fpu >= 2, true, gen_fsqrt)
8823
/* Does not use ENV_WRAPPER3, because arguments are swapped as well. */
8824
static void gen_idiv(TCGv_i32 out, TCGv_i32 ina, TCGv_i32 inb)
8825
{
8826
- gen_helper_divs(out, cpu_env, inb, ina);
8827
+ gen_helper_divs(out, tcg_env, inb, ina);
8828
}
8829
8830
static void gen_idivu(TCGv_i32 out, TCGv_i32 ina, TCGv_i32 inb)
8831
{
8832
- gen_helper_divu(out, cpu_env, inb, ina);
8833
+ gen_helper_divu(out, tcg_env, inb, ina);
8834
}
8835
8836
DO_TYPEA_CFG(idiv, use_div, true, gen_idiv)
8837
@@ -XXX,XX +XXX,XX @@ static TCGv compute_ldst_addr_typea(DisasContext *dc, int ra, int rb)
8838
}
8839
8840
if ((ra == 1 || rb == 1) && dc->cfg->stackprot) {
8841
- gen_helper_stackprot(cpu_env, ret);
8842
+ gen_helper_stackprot(tcg_env, ret);
8843
}
8844
return ret;
8845
}
8846
@@ -XXX,XX +XXX,XX @@ static TCGv compute_ldst_addr_typeb(DisasContext *dc, int ra, int imm)
8847
}
8848
8849
if (ra == 1 && dc->cfg->stackprot) {
8850
- gen_helper_stackprot(cpu_env, ret);
8851
+ gen_helper_stackprot(tcg_env, ret);
8852
}
8853
return ret;
8854
}
8855
@@ -XXX,XX +XXX,XX @@ static bool trans_mbar(DisasContext *dc, arg_mbar *arg)
8856
8857
t_sync_flags(dc);
8858
8859
- tcg_gen_st_i32(tcg_constant_i32(1), cpu_env,
8860
+ tcg_gen_st_i32(tcg_constant_i32(1), tcg_env,
8861
-offsetof(MicroBlazeCPU, env)
8862
+offsetof(CPUState, halted));
8863
8864
@@ -XXX,XX +XXX,XX @@ static bool trans_mts(DisasContext *dc, arg_mts *arg)
8865
tcg_gen_andi_i32(cpu_msr, src, ~(MSR_C | MSR_CC | MSR_PVR));
8866
break;
8867
case SR_FSR:
8868
- tcg_gen_st_i32(src, cpu_env, offsetof(CPUMBState, fsr));
8869
+ tcg_gen_st_i32(src, tcg_env, offsetof(CPUMBState, fsr));
8870
break;
8871
case 0x800:
8872
- tcg_gen_st_i32(src, cpu_env, offsetof(CPUMBState, slr));
8873
+ tcg_gen_st_i32(src, tcg_env, offsetof(CPUMBState, slr));
8874
break;
8875
case 0x802:
8876
- tcg_gen_st_i32(src, cpu_env, offsetof(CPUMBState, shr));
8877
+ tcg_gen_st_i32(src, tcg_env, offsetof(CPUMBState, shr));
8878
break;
8879
8880
case 0x1000: /* PID */
8881
@@ -XXX,XX +XXX,XX @@ static bool trans_mts(DisasContext *dc, arg_mts *arg)
8882
TCGv_i32 tmp_ext = tcg_constant_i32(arg->e);
8883
TCGv_i32 tmp_reg = tcg_constant_i32(arg->rs & 7);
8884
8885
- gen_helper_mmu_write(cpu_env, tmp_ext, tmp_reg, src);
8886
+ gen_helper_mmu_write(tcg_env, tmp_ext, tmp_reg, src);
8887
}
8888
break;
8889
8890
@@ -XXX,XX +XXX,XX @@ static bool trans_mfs(DisasContext *dc, arg_mfs *arg)
8891
case SR_EAR:
8892
{
8893
TCGv_i64 t64 = tcg_temp_new_i64();
8894
- tcg_gen_ld_i64(t64, cpu_env, offsetof(CPUMBState, ear));
8895
+ tcg_gen_ld_i64(t64, tcg_env, offsetof(CPUMBState, ear));
8896
tcg_gen_extrh_i64_i32(dest, t64);
8897
}
8898
return true;
8899
@@ -XXX,XX +XXX,XX @@ static bool trans_mfs(DisasContext *dc, arg_mfs *arg)
8900
case SR_EAR:
8901
{
8902
TCGv_i64 t64 = tcg_temp_new_i64();
8903
- tcg_gen_ld_i64(t64, cpu_env, offsetof(CPUMBState, ear));
8904
+ tcg_gen_ld_i64(t64, tcg_env, offsetof(CPUMBState, ear));
8905
tcg_gen_extrl_i64_i32(dest, t64);
8906
}
8907
break;
8908
case SR_ESR:
8909
- tcg_gen_ld_i32(dest, cpu_env, offsetof(CPUMBState, esr));
8910
+ tcg_gen_ld_i32(dest, tcg_env, offsetof(CPUMBState, esr));
8911
break;
8912
case SR_FSR:
8913
- tcg_gen_ld_i32(dest, cpu_env, offsetof(CPUMBState, fsr));
8914
+ tcg_gen_ld_i32(dest, tcg_env, offsetof(CPUMBState, fsr));
8915
break;
8916
case SR_BTR:
8917
- tcg_gen_ld_i32(dest, cpu_env, offsetof(CPUMBState, btr));
8918
+ tcg_gen_ld_i32(dest, tcg_env, offsetof(CPUMBState, btr));
8919
break;
8920
case SR_EDR:
8921
- tcg_gen_ld_i32(dest, cpu_env, offsetof(CPUMBState, edr));
8922
+ tcg_gen_ld_i32(dest, tcg_env, offsetof(CPUMBState, edr));
8923
break;
8924
case 0x800:
8925
- tcg_gen_ld_i32(dest, cpu_env, offsetof(CPUMBState, slr));
8926
+ tcg_gen_ld_i32(dest, tcg_env, offsetof(CPUMBState, slr));
8927
break;
8928
case 0x802:
8929
- tcg_gen_ld_i32(dest, cpu_env, offsetof(CPUMBState, shr));
8930
+ tcg_gen_ld_i32(dest, tcg_env, offsetof(CPUMBState, shr));
8931
break;
8932
8933
#ifndef CONFIG_USER_ONLY
8934
@@ -XXX,XX +XXX,XX @@ static bool trans_mfs(DisasContext *dc, arg_mfs *arg)
8935
TCGv_i32 tmp_ext = tcg_constant_i32(arg->e);
8936
TCGv_i32 tmp_reg = tcg_constant_i32(arg->rs & 7);
8937
8938
- gen_helper_mmu_read(dest, cpu_env, tmp_ext, tmp_reg);
8939
+ gen_helper_mmu_read(dest, tcg_env, tmp_ext, tmp_reg);
8940
}
8941
break;
8942
#endif
8943
8944
case 0x2000 ... 0x200c:
8945
- tcg_gen_ld_i32(dest, cpu_env,
8946
+ tcg_gen_ld_i32(dest, tcg_env,
8947
offsetof(MicroBlazeCPU, cfg.pvr_regs[arg->rs - 0x2000])
8948
- offsetof(MicroBlazeCPU, env));
8949
break;
8950
@@ -XXX,XX +XXX,XX @@ void mb_tcg_init(void)
8951
8952
for (int i = 0; i < ARRAY_SIZE(i32s); ++i) {
8953
*i32s[i].var =
8954
- tcg_global_mem_new_i32(cpu_env, i32s[i].ofs, i32s[i].name);
8955
+ tcg_global_mem_new_i32(tcg_env, i32s[i].ofs, i32s[i].name);
8956
}
8957
8958
cpu_res_addr =
8959
- tcg_global_mem_new(cpu_env, offsetof(CPUMBState, res_addr), "res_addr");
8960
+ tcg_global_mem_new(tcg_env, offsetof(CPUMBState, res_addr), "res_addr");
8961
}
8962
diff --git a/target/mips/tcg/lcsr_translate.c b/target/mips/tcg/lcsr_translate.c
8963
index XXXXXXX..XXXXXXX 100644
8964
--- a/target/mips/tcg/lcsr_translate.c
8965
+++ b/target/mips/tcg/lcsr_translate.c
8966
@@ -XXX,XX +XXX,XX @@ static bool trans_CPUCFG(DisasContext *ctx, arg_CPUCFG *a)
8967
TCGv src1 = tcg_temp_new();
8968
8969
gen_load_gpr(src1, a->rs);
8970
- gen_helper_lcsr_cpucfg(dest, cpu_env, src1);
8971
+ gen_helper_lcsr_cpucfg(dest, tcg_env, src1);
8972
gen_store_gpr(dest, a->rd);
8973
8974
return true;
8975
@@ -XXX,XX +XXX,XX @@ static bool gen_rdcsr(DisasContext *ctx, arg_r *a,
8976
8977
check_cp0_enabled(ctx);
8978
gen_load_gpr(src1, a->rs);
8979
- func(dest, cpu_env, src1);
8980
+ func(dest, tcg_env, src1);
8981
gen_store_gpr(dest, a->rd);
8982
8983
return true;
8984
@@ -XXX,XX +XXX,XX @@ static bool gen_wrcsr(DisasContext *ctx, arg_r *a,
8985
check_cp0_enabled(ctx);
8986
gen_load_gpr(addr, a->rs);
8987
gen_load_gpr(val, a->rd);
8988
- func(cpu_env, addr, val);
8989
+ func(tcg_env, addr, val);
8990
8991
return true;
8992
}
8993
diff --git a/target/mips/tcg/msa_translate.c b/target/mips/tcg/msa_translate.c
8994
index XXXXXXX..XXXXXXX 100644
8995
--- a/target/mips/tcg/msa_translate.c
8996
+++ b/target/mips/tcg/msa_translate.c
8997
@@ -XXX,XX +XXX,XX @@ void msa_translate_init(void)
8998
8999
off = offsetof(CPUMIPSState, active_fpu.fpr[i].wr.d[1]);
9000
msa_wr_d[i * 2 + 1] =
9001
- tcg_global_mem_new_i64(cpu_env, off, msaregnames[i * 2 + 1]);
9002
+ tcg_global_mem_new_i64(tcg_env, off, msaregnames[i * 2 + 1]);
9003
}
9004
}
9005
9006
@@ -XXX,XX +XXX,XX @@ static bool trans_msa_i8(DisasContext *ctx, arg_msa_i *a,
9007
return true;
9008
}
9009
9010
- gen_msa_i8(cpu_env,
9011
+ gen_msa_i8(tcg_env,
9012
tcg_constant_i32(a->wd),
9013
tcg_constant_i32(a->ws),
9014
tcg_constant_i32(a->sa));
9015
@@ -XXX,XX +XXX,XX @@ static bool trans_SHF(DisasContext *ctx, arg_msa_i *a)
9016
return true;
9017
}
9018
9019
- gen_helper_msa_shf_df(cpu_env,
9020
+ gen_helper_msa_shf_df(tcg_env,
9021
tcg_constant_i32(a->df),
9022
tcg_constant_i32(a->wd),
9023
tcg_constant_i32(a->ws),
9024
@@ -XXX,XX +XXX,XX @@ static bool trans_msa_i5(DisasContext *ctx, arg_msa_i *a,
9025
return true;
9026
}
9027
9028
- gen_msa_i5(cpu_env,
9029
+ gen_msa_i5(tcg_env,
9030
tcg_constant_i32(a->df),
9031
tcg_constant_i32(a->wd),
9032
tcg_constant_i32(a->ws),
9033
@@ -XXX,XX +XXX,XX @@ static bool trans_LDI(DisasContext *ctx, arg_msa_ldi *a)
9034
return true;
9035
}
9036
9037
- gen_helper_msa_ldi_df(cpu_env,
9038
+ gen_helper_msa_ldi_df(tcg_env,
9039
tcg_constant_i32(a->df),
9040
tcg_constant_i32(a->wd),
9041
tcg_constant_i32(a->sa));
9042
@@ -XXX,XX +XXX,XX @@ static bool trans_msa_bit(DisasContext *ctx, arg_msa_bit *a,
9043
return true;
9044
}
9045
9046
- gen_msa_bit(cpu_env,
9047
+ gen_msa_bit(tcg_env,
9048
tcg_constant_i32(a->df),
9049
tcg_constant_i32(a->wd),
9050
tcg_constant_i32(a->ws),
9051
@@ -XXX,XX +XXX,XX @@ static bool trans_msa_3rf(DisasContext *ctx, arg_msa_r *a,
9052
return true;
9053
}
9054
9055
- gen_msa_3rf(cpu_env,
9056
+ gen_msa_3rf(tcg_env,
9057
tcg_constant_i32(a->df),
9058
tcg_constant_i32(a->wd),
9059
tcg_constant_i32(a->ws),
9060
@@ -XXX,XX +XXX,XX @@ static bool trans_msa_3r(DisasContext *ctx, arg_msa_r *a,
9061
return true;
9062
}
9063
9064
- gen_msa_3r(cpu_env,
9065
+ gen_msa_3r(tcg_env,
9066
tcg_constant_i32(a->wd),
9067
tcg_constant_i32(a->ws),
9068
tcg_constant_i32(a->wt));
9069
@@ -XXX,XX +XXX,XX @@ static bool trans_MOVE_V(DisasContext *ctx, arg_msa_elm *a)
9070
return true;
9071
}
9072
9073
- gen_helper_msa_move_v(cpu_env,
9074
+ gen_helper_msa_move_v(tcg_env,
9075
tcg_constant_i32(a->wd),
9076
tcg_constant_i32(a->ws));
9077
9078
@@ -XXX,XX +XXX,XX @@ static bool trans_CTCMSA(DisasContext *ctx, arg_msa_elm *a)
9079
telm = tcg_temp_new();
9080
9081
gen_load_gpr(telm, a->ws);
9082
- gen_helper_msa_ctcmsa(cpu_env, telm, tcg_constant_i32(a->wd));
9083
+ gen_helper_msa_ctcmsa(tcg_env, telm, tcg_constant_i32(a->wd));
9084
9085
return true;
9086
}
9087
@@ -XXX,XX +XXX,XX @@ static bool trans_CFCMSA(DisasContext *ctx, arg_msa_elm *a)
9088
9089
telm = tcg_temp_new();
9090
9091
- gen_helper_msa_cfcmsa(telm, cpu_env, tcg_constant_i32(a->ws));
9092
+ gen_helper_msa_cfcmsa(telm, tcg_env, tcg_constant_i32(a->ws));
9093
gen_store_gpr(telm, a->wd);
9094
9095
return true;
9096
@@ -XXX,XX +XXX,XX @@ static bool trans_msa_elm(DisasContext *ctx, arg_msa_elm_df *a,
9097
return true;
9098
}
9099
9100
- gen_msa_elm_df(cpu_env,
9101
+ gen_msa_elm_df(tcg_env,
9102
tcg_constant_i32(a->df),
9103
tcg_constant_i32(a->wd),
9104
tcg_constant_i32(a->ws),
9105
@@ -XXX,XX +XXX,XX @@ static bool trans_msa_elm_fn(DisasContext *ctx, arg_msa_elm_df *a,
9106
return true;
9107
}
9108
9109
- gen_msa_elm[a->df](cpu_env,
9110
+ gen_msa_elm[a->df](tcg_env,
9111
tcg_constant_i32(a->wd),
9112
tcg_constant_i32(a->ws),
9113
tcg_constant_i32(a->n));
9114
@@ -XXX,XX +XXX,XX @@ static bool trans_msa_2r(DisasContext *ctx, arg_msa_r *a,
9115
return true;
9116
}
9117
9118
- gen_msa_2r(cpu_env, tcg_constant_i32(a->wd), tcg_constant_i32(a->ws));
9119
+ gen_msa_2r(tcg_env, tcg_constant_i32(a->wd), tcg_constant_i32(a->ws));
9120
9121
return true;
9122
}
9123
@@ -XXX,XX +XXX,XX @@ static bool trans_FILL(DisasContext *ctx, arg_msa_r *a)
9124
return true;
9125
}
9126
9127
- gen_helper_msa_fill_df(cpu_env,
9128
+ gen_helper_msa_fill_df(tcg_env,
9129
tcg_constant_i32(a->df),
9130
tcg_constant_i32(a->wd),
9131
tcg_constant_i32(a->ws));
9132
@@ -XXX,XX +XXX,XX @@ static bool trans_msa_2rf(DisasContext *ctx, arg_msa_r *a,
9133
return true;
9134
}
9135
9136
- gen_msa_2rf(cpu_env,
9137
+ gen_msa_2rf(tcg_env,
9138
tcg_constant_i32(a->df),
9139
tcg_constant_i32(a->wd),
9140
tcg_constant_i32(a->ws));
9141
@@ -XXX,XX +XXX,XX @@ static bool trans_msa_ldst(DisasContext *ctx, arg_msa_i *a,
9142
taddr = tcg_temp_new();
9143
9144
gen_base_offset_addr(ctx, taddr, a->ws, a->sa << a->df);
9145
- gen_msa_ldst(cpu_env, tcg_constant_i32(a->wd), taddr);
9146
+ gen_msa_ldst(tcg_env, tcg_constant_i32(a->wd), taddr);
9147
9148
return true;
9149
}
9150
diff --git a/target/mips/tcg/mxu_translate.c b/target/mips/tcg/mxu_translate.c
9151
index XXXXXXX..XXXXXXX 100644
9152
--- a/target/mips/tcg/mxu_translate.c
9153
+++ b/target/mips/tcg/mxu_translate.c
9154
@@ -XXX,XX +XXX,XX @@ static const char mxuregnames[NUMBER_OF_MXU_REGISTERS][4] = {
9155
void mxu_translate_init(void)
9156
{
9157
for (unsigned i = 0; i < NUMBER_OF_MXU_REGISTERS - 1; i++) {
9158
- mxu_gpr[i] = tcg_global_mem_new(cpu_env,
9159
+ mxu_gpr[i] = tcg_global_mem_new(tcg_env,
9160
offsetof(CPUMIPSState, active_tc.mxu_gpr[i]),
9161
mxuregnames[i]);
9162
}
9163
9164
- mxu_CR = tcg_global_mem_new(cpu_env,
9165
+ mxu_CR = tcg_global_mem_new(tcg_env,
9166
offsetof(CPUMIPSState, active_tc.mxu_cr),
9167
mxuregnames[NUMBER_OF_MXU_REGISTERS - 1]);
9168
}
9169
diff --git a/target/mips/tcg/translate.c b/target/mips/tcg/translate.c
9170
index XXXXXXX..XXXXXXX 100644
9171
--- a/target/mips/tcg/translate.c
9172
+++ b/target/mips/tcg/translate.c
9173
@@ -XXX,XX +XXX,XX @@ static inline void gen_load_srsgpr(int from, int to)
9174
TCGv_i32 t2 = tcg_temp_new_i32();
9175
TCGv_ptr addr = tcg_temp_new_ptr();
9176
9177
- tcg_gen_ld_i32(t2, cpu_env, offsetof(CPUMIPSState, CP0_SRSCtl));
9178
+ tcg_gen_ld_i32(t2, tcg_env, offsetof(CPUMIPSState, CP0_SRSCtl));
9179
tcg_gen_shri_i32(t2, t2, CP0SRSCtl_PSS);
9180
tcg_gen_andi_i32(t2, t2, 0xf);
9181
tcg_gen_muli_i32(t2, t2, sizeof(target_ulong) * 32);
9182
tcg_gen_ext_i32_ptr(addr, t2);
9183
- tcg_gen_add_ptr(addr, cpu_env, addr);
9184
+ tcg_gen_add_ptr(addr, tcg_env, addr);
9185
9186
tcg_gen_ld_tl(t0, addr, sizeof(target_ulong) * from);
9187
}
9188
@@ -XXX,XX +XXX,XX @@ static inline void gen_store_srsgpr(int from, int to)
9189
TCGv_ptr addr = tcg_temp_new_ptr();
9190
9191
gen_load_gpr(t0, from);
9192
- tcg_gen_ld_i32(t2, cpu_env, offsetof(CPUMIPSState, CP0_SRSCtl));
9193
+ tcg_gen_ld_i32(t2, tcg_env, offsetof(CPUMIPSState, CP0_SRSCtl));
9194
tcg_gen_shri_i32(t2, t2, CP0SRSCtl_PSS);
9195
tcg_gen_andi_i32(t2, t2, 0xf);
9196
tcg_gen_muli_i32(t2, t2, sizeof(target_ulong) * 32);
9197
tcg_gen_ext_i32_ptr(addr, t2);
9198
- tcg_gen_add_ptr(addr, cpu_env, addr);
9199
+ tcg_gen_add_ptr(addr, tcg_env, addr);
9200
9201
tcg_gen_st_tl(t0, addr, sizeof(target_ulong) * to);
9202
}
9203
@@ -XXX,XX +XXX,XX @@ static inline void restore_cpu_state(CPUMIPSState *env, DisasContext *ctx)
9204
void generate_exception_err(DisasContext *ctx, int excp, int err)
9205
{
9206
save_cpu_state(ctx, 1);
9207
- gen_helper_raise_exception_err(cpu_env, tcg_constant_i32(excp),
9208
+ gen_helper_raise_exception_err(tcg_env, tcg_constant_i32(excp),
9209
tcg_constant_i32(err));
9210
ctx->base.is_jmp = DISAS_NORETURN;
9211
}
9212
9213
void generate_exception(DisasContext *ctx, int excp)
9214
{
9215
- gen_helper_raise_exception(cpu_env, tcg_constant_i32(excp));
9216
+ gen_helper_raise_exception(tcg_env, tcg_constant_i32(excp));
9217
}
9218
9219
void generate_exception_end(DisasContext *ctx, int excp)
9220
@@ -XXX,XX +XXX,XX @@ void generate_exception_break(DisasContext *ctx, int code)
9221
{
9222
#ifdef CONFIG_USER_ONLY
9223
/* Pass the break code along to cpu_loop. */
9224
- tcg_gen_st_i32(tcg_constant_i32(code), cpu_env,
9225
+ tcg_gen_st_i32(tcg_constant_i32(code), tcg_env,
9226
offsetof(CPUMIPSState, error_code));
9227
#endif
9228
generate_exception_end(ctx, EXCP_BREAK);
9229
@@ -XXX,XX +XXX,XX @@ static inline void gen_r6_cmp_ ## fmt(DisasContext *ctx, int n, \
9230
gen_ldcmp_fpr ## bits(ctx, fp1, ft); \
9231
switch (n) { \
9232
case 0: \
9233
- gen_helper_r6_cmp_ ## fmt ## _af(fp0, cpu_env, fp0, fp1); \
9234
+ gen_helper_r6_cmp_ ## fmt ## _af(fp0, tcg_env, fp0, fp1); \
9235
break; \
9236
case 1: \
9237
- gen_helper_r6_cmp_ ## fmt ## _un(fp0, cpu_env, fp0, fp1); \
9238
+ gen_helper_r6_cmp_ ## fmt ## _un(fp0, tcg_env, fp0, fp1); \
9239
break; \
9240
case 2: \
9241
- gen_helper_r6_cmp_ ## fmt ## _eq(fp0, cpu_env, fp0, fp1); \
9242
+ gen_helper_r6_cmp_ ## fmt ## _eq(fp0, tcg_env, fp0, fp1); \
9243
break; \
9244
case 3: \
9245
- gen_helper_r6_cmp_ ## fmt ## _ueq(fp0, cpu_env, fp0, fp1); \
9246
+ gen_helper_r6_cmp_ ## fmt ## _ueq(fp0, tcg_env, fp0, fp1); \
9247
break; \
9248
case 4: \
9249
- gen_helper_r6_cmp_ ## fmt ## _lt(fp0, cpu_env, fp0, fp1); \
9250
+ gen_helper_r6_cmp_ ## fmt ## _lt(fp0, tcg_env, fp0, fp1); \
9251
break; \
9252
case 5: \
9253
- gen_helper_r6_cmp_ ## fmt ## _ult(fp0, cpu_env, fp0, fp1); \
9254
+ gen_helper_r6_cmp_ ## fmt ## _ult(fp0, tcg_env, fp0, fp1); \
9255
break; \
9256
case 6: \
9257
- gen_helper_r6_cmp_ ## fmt ## _le(fp0, cpu_env, fp0, fp1); \
9258
+ gen_helper_r6_cmp_ ## fmt ## _le(fp0, tcg_env, fp0, fp1); \
9259
break; \
9260
case 7: \
9261
- gen_helper_r6_cmp_ ## fmt ## _ule(fp0, cpu_env, fp0, fp1); \
9262
+ gen_helper_r6_cmp_ ## fmt ## _ule(fp0, tcg_env, fp0, fp1); \
9263
break; \
9264
case 8: \
9265
- gen_helper_r6_cmp_ ## fmt ## _saf(fp0, cpu_env, fp0, fp1); \
9266
+ gen_helper_r6_cmp_ ## fmt ## _saf(fp0, tcg_env, fp0, fp1); \
9267
break; \
9268
case 9: \
9269
- gen_helper_r6_cmp_ ## fmt ## _sun(fp0, cpu_env, fp0, fp1); \
9270
+ gen_helper_r6_cmp_ ## fmt ## _sun(fp0, tcg_env, fp0, fp1); \
9271
break; \
9272
case 10: \
9273
- gen_helper_r6_cmp_ ## fmt ## _seq(fp0, cpu_env, fp0, fp1); \
9274
+ gen_helper_r6_cmp_ ## fmt ## _seq(fp0, tcg_env, fp0, fp1); \
9275
break; \
9276
case 11: \
9277
- gen_helper_r6_cmp_ ## fmt ## _sueq(fp0, cpu_env, fp0, fp1); \
9278
+ gen_helper_r6_cmp_ ## fmt ## _sueq(fp0, tcg_env, fp0, fp1); \
9279
break; \
9280
case 12: \
9281
- gen_helper_r6_cmp_ ## fmt ## _slt(fp0, cpu_env, fp0, fp1); \
9282
+ gen_helper_r6_cmp_ ## fmt ## _slt(fp0, tcg_env, fp0, fp1); \
9283
break; \
9284
case 13: \
9285
- gen_helper_r6_cmp_ ## fmt ## _sult(fp0, cpu_env, fp0, fp1); \
9286
+ gen_helper_r6_cmp_ ## fmt ## _sult(fp0, tcg_env, fp0, fp1); \
9287
break; \
9288
case 14: \
9289
- gen_helper_r6_cmp_ ## fmt ## _sle(fp0, cpu_env, fp0, fp1); \
9290
+ gen_helper_r6_cmp_ ## fmt ## _sle(fp0, tcg_env, fp0, fp1); \
9291
break; \
9292
case 15: \
9293
- gen_helper_r6_cmp_ ## fmt ## _sule(fp0, cpu_env, fp0, fp1); \
9294
+ gen_helper_r6_cmp_ ## fmt ## _sule(fp0, tcg_env, fp0, fp1); \
9295
break; \
9296
case 17: \
9297
- gen_helper_r6_cmp_ ## fmt ## _or(fp0, cpu_env, fp0, fp1); \
9298
+ gen_helper_r6_cmp_ ## fmt ## _or(fp0, tcg_env, fp0, fp1); \
9299
break; \
9300
case 18: \
9301
- gen_helper_r6_cmp_ ## fmt ## _une(fp0, cpu_env, fp0, fp1); \
9302
+ gen_helper_r6_cmp_ ## fmt ## _une(fp0, tcg_env, fp0, fp1); \
9303
break; \
9304
case 19: \
9305
- gen_helper_r6_cmp_ ## fmt ## _ne(fp0, cpu_env, fp0, fp1); \
9306
+ gen_helper_r6_cmp_ ## fmt ## _ne(fp0, tcg_env, fp0, fp1); \
9307
break; \
9308
case 25: \
9309
- gen_helper_r6_cmp_ ## fmt ## _sor(fp0, cpu_env, fp0, fp1); \
9310
+ gen_helper_r6_cmp_ ## fmt ## _sor(fp0, tcg_env, fp0, fp1); \
9311
break; \
9312
case 26: \
9313
- gen_helper_r6_cmp_ ## fmt ## _sune(fp0, cpu_env, fp0, fp1); \
9314
+ gen_helper_r6_cmp_ ## fmt ## _sune(fp0, tcg_env, fp0, fp1); \
9315
break; \
9316
case 27: \
9317
- gen_helper_r6_cmp_ ## fmt ## _sne(fp0, cpu_env, fp0, fp1); \
9318
+ gen_helper_r6_cmp_ ## fmt ## _sne(fp0, tcg_env, fp0, fp1); \
9319
break; \
9320
default: \
9321
abort(); \
9322
@@ -XXX,XX +XXX,XX @@ static inline void op_ld_##insn(TCGv ret, TCGv arg1, int mem_idx, \
9323
TCGv t0 = tcg_temp_new(); \
9324
tcg_gen_mov_tl(t0, arg1); \
9325
tcg_gen_qemu_ld_tl(ret, arg1, ctx->mem_idx, memop); \
9326
- tcg_gen_st_tl(t0, cpu_env, offsetof(CPUMIPSState, lladdr)); \
9327
- tcg_gen_st_tl(ret, cpu_env, offsetof(CPUMIPSState, llval)); \
9328
+ tcg_gen_st_tl(t0, tcg_env, offsetof(CPUMIPSState, lladdr)); \
9329
+ tcg_gen_st_tl(ret, tcg_env, offsetof(CPUMIPSState, llval)); \
9330
}
9331
#else
9332
#define OP_LD_ATOMIC(insn, fname) \
9333
static inline void op_ld_##insn(TCGv ret, TCGv arg1, int mem_idx, \
9334
DisasContext *ctx) \
9335
{ \
9336
- gen_helper_##insn(ret, cpu_env, arg1, tcg_constant_i32(mem_idx)); \
9337
+ gen_helper_##insn(ret, tcg_env, arg1, tcg_constant_i32(mem_idx)); \
9338
}
9339
#endif
9340
OP_LD_ATOMIC(ll, MO_TESL);
9341
@@ -XXX,XX +XXX,XX @@ static void gen_trap(DisasContext *ctx, uint32_t opc,
9342
/* Always trap */
9343
#ifdef CONFIG_USER_ONLY
9344
/* Pass the break code along to cpu_loop. */
9345
- tcg_gen_st_i32(tcg_constant_i32(code), cpu_env,
9346
+ tcg_gen_st_i32(tcg_constant_i32(code), tcg_env,
9347
offsetof(CPUMIPSState, error_code));
9348
#endif
9349
generate_exception_end(ctx, EXCP_TRAP);
9350
@@ -XXX,XX +XXX,XX @@ static void gen_trap(DisasContext *ctx, uint32_t opc,
9351
}
9352
#ifdef CONFIG_USER_ONLY
9353
/* Pass the break code along to cpu_loop. */
9354
- tcg_gen_st_i32(tcg_constant_i32(code), cpu_env,
9355
+ tcg_gen_st_i32(tcg_constant_i32(code), tcg_env,
9356
offsetof(CPUMIPSState, error_code));
9357
#endif
9358
/* Like save_cpu_state, only don't update saved values. */
9359
@@ -XXX,XX +XXX,XX @@ static inline void gen_mthc0_entrylo(TCGv arg, target_ulong off)
9360
TCGv_i64 t1 = tcg_temp_new_i64();
9361
9362
tcg_gen_ext_tl_i64(t0, arg);
9363
- tcg_gen_ld_i64(t1, cpu_env, off);
9364
+ tcg_gen_ld_i64(t1, tcg_env, off);
9365
#if defined(TARGET_MIPS64)
9366
tcg_gen_deposit_i64(t1, t1, t0, 30, 32);
9367
#else
9368
tcg_gen_concat32_i64(t1, t1, t0);
9369
#endif
9370
- tcg_gen_st_i64(t1, cpu_env, off);
9371
+ tcg_gen_st_i64(t1, tcg_env, off);
9372
}
9373
9374
static inline void gen_mthc0_store64(TCGv arg, target_ulong off)
9375
@@ -XXX,XX +XXX,XX @@ static inline void gen_mthc0_store64(TCGv arg, target_ulong off)
9376
TCGv_i64 t1 = tcg_temp_new_i64();
9377
9378
tcg_gen_ext_tl_i64(t0, arg);
9379
- tcg_gen_ld_i64(t1, cpu_env, off);
9380
+ tcg_gen_ld_i64(t1, tcg_env, off);
9381
tcg_gen_concat32_i64(t1, t1, t0);
9382
- tcg_gen_st_i64(t1, cpu_env, off);
9383
+ tcg_gen_st_i64(t1, tcg_env, off);
9384
}
9385
9386
static inline void gen_mfhc0_entrylo(TCGv arg, target_ulong off)
9387
{
9388
TCGv_i64 t0 = tcg_temp_new_i64();
9389
9390
- tcg_gen_ld_i64(t0, cpu_env, off);
9391
+ tcg_gen_ld_i64(t0, tcg_env, off);
9392
#if defined(TARGET_MIPS64)
9393
tcg_gen_shri_i64(t0, t0, 30);
9394
#else
9395
@@ -XXX,XX +XXX,XX @@ static inline void gen_mfhc0_load64(TCGv arg, target_ulong off, int shift)
9396
{
9397
TCGv_i64 t0 = tcg_temp_new_i64();
9398
9399
- tcg_gen_ld_i64(t0, cpu_env, off);
9400
+ tcg_gen_ld_i64(t0, tcg_env, off);
9401
tcg_gen_shri_i64(t0, t0, 32 + shift);
9402
gen_move_low32(arg, t0);
9403
}
9404
@@ -XXX,XX +XXX,XX @@ static inline void gen_mfc0_load32(TCGv arg, target_ulong off)
9405
{
9406
TCGv_i32 t0 = tcg_temp_new_i32();
9407
9408
- tcg_gen_ld_i32(t0, cpu_env, off);
9409
+ tcg_gen_ld_i32(t0, tcg_env, off);
9410
tcg_gen_ext_i32_tl(arg, t0);
9411
}
9412
9413
static inline void gen_mfc0_load64(TCGv arg, target_ulong off)
9414
{
9415
- tcg_gen_ld_tl(arg, cpu_env, off);
9416
+ tcg_gen_ld_tl(arg, tcg_env, off);
9417
tcg_gen_ext32s_tl(arg, arg);
9418
}
9419
9420
@@ -XXX,XX +XXX,XX @@ static inline void gen_mtc0_store32(TCGv arg, target_ulong off)
9421
TCGv_i32 t0 = tcg_temp_new_i32();
9422
9423
tcg_gen_trunc_tl_i32(t0, arg);
9424
- tcg_gen_st_i32(t0, cpu_env, off);
9425
+ tcg_gen_st_i32(t0, tcg_env, off);
9426
}
9427
9428
#define CP0_CHECK(c) \
9429
@@ -XXX,XX +XXX,XX @@ static void gen_mfhc0(DisasContext *ctx, TCGv arg, int reg, int sel)
9430
switch (sel) {
9431
case CP0_REG09__SAAR:
9432
CP0_CHECK(ctx->saar);
9433
- gen_helper_mfhc0_saar(arg, cpu_env);
9434
+ gen_helper_mfhc0_saar(arg, tcg_env);
9435
register_name = "SAAR";
9436
break;
9437
default:
9438
@@ -XXX,XX +XXX,XX @@ static void gen_mfhc0(DisasContext *ctx, TCGv arg, int reg, int sel)
9439
break;
9440
case CP0_REG17__MAAR:
9441
CP0_CHECK(ctx->mrp);
9442
- gen_helper_mfhc0_maar(arg, cpu_env);
9443
+ gen_helper_mfhc0_maar(arg, tcg_env);
9444
register_name = "MAAR";
9445
break;
9446
default:
9447
@@ -XXX,XX +XXX,XX @@ static void gen_mthc0(DisasContext *ctx, TCGv arg, int reg, int sel)
9448
switch (sel) {
9449
case CP0_REG09__SAAR:
9450
CP0_CHECK(ctx->saar);
9451
- gen_helper_mthc0_saar(cpu_env, arg);
9452
+ gen_helper_mthc0_saar(tcg_env, arg);
9453
register_name = "SAAR";
9454
break;
9455
default:
9456
@@ -XXX,XX +XXX,XX @@ static void gen_mthc0(DisasContext *ctx, TCGv arg, int reg, int sel)
9457
break;
9458
case CP0_REG17__MAAR:
9459
CP0_CHECK(ctx->mrp);
9460
- gen_helper_mthc0_maar(cpu_env, arg);
9461
+ gen_helper_mthc0_maar(tcg_env, arg);
9462
register_name = "MAAR";
9463
break;
9464
default:
9465
@@ -XXX,XX +XXX,XX @@ static void gen_mfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
9466
break;
9467
case CP0_REG00__MVPCONTROL:
9468
CP0_CHECK(ctx->insn_flags & ASE_MT);
9469
- gen_helper_mfc0_mvpcontrol(arg, cpu_env);
9470
+ gen_helper_mfc0_mvpcontrol(arg, tcg_env);
9471
register_name = "MVPControl";
9472
break;
9473
case CP0_REG00__MVPCONF0:
9474
CP0_CHECK(ctx->insn_flags & ASE_MT);
9475
- gen_helper_mfc0_mvpconf0(arg, cpu_env);
9476
+ gen_helper_mfc0_mvpconf0(arg, tcg_env);
9477
register_name = "MVPConf0";
9478
break;
9479
case CP0_REG00__MVPCONF1:
9480
CP0_CHECK(ctx->insn_flags & ASE_MT);
9481
- gen_helper_mfc0_mvpconf1(arg, cpu_env);
9482
+ gen_helper_mfc0_mvpconf1(arg, tcg_env);
9483
register_name = "MVPConf1";
9484
break;
9485
case CP0_REG00__VPCONTROL:
9486
@@ -XXX,XX +XXX,XX @@ static void gen_mfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
9487
switch (sel) {
9488
case CP0_REG01__RANDOM:
9489
CP0_CHECK(!(ctx->insn_flags & ISA_MIPS_R6));
9490
- gen_helper_mfc0_random(arg, cpu_env);
9491
+ gen_helper_mfc0_random(arg, tcg_env);
9492
register_name = "Random";
9493
break;
9494
case CP0_REG01__VPECONTROL:
9495
@@ -XXX,XX +XXX,XX @@ static void gen_mfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
9496
case CP0_REG02__ENTRYLO0:
9497
{
9498
TCGv_i64 tmp = tcg_temp_new_i64();
9499
- tcg_gen_ld_i64(tmp, cpu_env,
9500
+ tcg_gen_ld_i64(tmp, tcg_env,
9501
offsetof(CPUMIPSState, CP0_EntryLo0));
9502
#if defined(TARGET_MIPS64)
9503
if (ctx->rxi) {
9504
@@ -XXX,XX +XXX,XX @@ static void gen_mfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
9505
break;
9506
case CP0_REG02__TCSTATUS:
9507
CP0_CHECK(ctx->insn_flags & ASE_MT);
9508
- gen_helper_mfc0_tcstatus(arg, cpu_env);
9509
+ gen_helper_mfc0_tcstatus(arg, tcg_env);
9510
register_name = "TCStatus";
9511
break;
9512
case CP0_REG02__TCBIND:
9513
CP0_CHECK(ctx->insn_flags & ASE_MT);
9514
- gen_helper_mfc0_tcbind(arg, cpu_env);
9515
+ gen_helper_mfc0_tcbind(arg, tcg_env);
9516
register_name = "TCBind";
9517
break;
9518
case CP0_REG02__TCRESTART:
9519
CP0_CHECK(ctx->insn_flags & ASE_MT);
9520
- gen_helper_mfc0_tcrestart(arg, cpu_env);
9521
+ gen_helper_mfc0_tcrestart(arg, tcg_env);
9522
register_name = "TCRestart";
9523
break;
9524
case CP0_REG02__TCHALT:
9525
CP0_CHECK(ctx->insn_flags & ASE_MT);
9526
- gen_helper_mfc0_tchalt(arg, cpu_env);
9527
+ gen_helper_mfc0_tchalt(arg, tcg_env);
9528
register_name = "TCHalt";
9529
break;
9530
case CP0_REG02__TCCONTEXT:
9531
CP0_CHECK(ctx->insn_flags & ASE_MT);
9532
- gen_helper_mfc0_tccontext(arg, cpu_env);
9533
+ gen_helper_mfc0_tccontext(arg, tcg_env);
9534
register_name = "TCContext";
9535
break;
9536
case CP0_REG02__TCSCHEDULE:
9537
CP0_CHECK(ctx->insn_flags & ASE_MT);
9538
- gen_helper_mfc0_tcschedule(arg, cpu_env);
9539
+ gen_helper_mfc0_tcschedule(arg, tcg_env);
9540
register_name = "TCSchedule";
9541
break;
9542
case CP0_REG02__TCSCHEFBACK:
9543
CP0_CHECK(ctx->insn_flags & ASE_MT);
9544
- gen_helper_mfc0_tcschefback(arg, cpu_env);
9545
+ gen_helper_mfc0_tcschefback(arg, tcg_env);
9546
register_name = "TCScheFBack";
9547
break;
9548
default:
9549
@@ -XXX,XX +XXX,XX @@ static void gen_mfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
9550
case CP0_REG03__ENTRYLO1:
9551
{
9552
TCGv_i64 tmp = tcg_temp_new_i64();
9553
- tcg_gen_ld_i64(tmp, cpu_env,
9554
+ tcg_gen_ld_i64(tmp, tcg_env,
9555
offsetof(CPUMIPSState, CP0_EntryLo1));
9556
#if defined(TARGET_MIPS64)
9557
if (ctx->rxi) {
9558
@@ -XXX,XX +XXX,XX @@ static void gen_mfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
9559
case CP0_REGISTER_04:
9560
switch (sel) {
9561
case CP0_REG04__CONTEXT:
9562
- tcg_gen_ld_tl(arg, cpu_env, offsetof(CPUMIPSState, CP0_Context));
9563
+ tcg_gen_ld_tl(arg, tcg_env, offsetof(CPUMIPSState, CP0_Context));
9564
tcg_gen_ext32s_tl(arg, arg);
9565
register_name = "Context";
9566
break;
9567
@@ -XXX,XX +XXX,XX @@ static void gen_mfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
9568
goto cp0_unimplemented;
9569
case CP0_REG04__USERLOCAL:
9570
CP0_CHECK(ctx->ulri);
9571
- tcg_gen_ld_tl(arg, cpu_env,
9572
+ tcg_gen_ld_tl(arg, tcg_env,
9573
offsetof(CPUMIPSState, active_tc.CP0_UserLocal));
9574
tcg_gen_ext32s_tl(arg, arg);
9575
register_name = "UserLocal";
9576
break;
9577
case CP0_REG04__MMID:
9578
CP0_CHECK(ctx->mi);
9579
- gen_helper_mtc0_memorymapid(cpu_env, arg);
9580
+ gen_helper_mtc0_memorymapid(tcg_env, arg);
9581
register_name = "MMID";
9582
break;
9583
default:
9584
@@ -XXX,XX +XXX,XX @@ static void gen_mfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
9585
break;
9586
case CP0_REG05__SEGCTL0:
9587
CP0_CHECK(ctx->sc);
9588
- tcg_gen_ld_tl(arg, cpu_env, offsetof(CPUMIPSState, CP0_SegCtl0));
9589
+ tcg_gen_ld_tl(arg, tcg_env, offsetof(CPUMIPSState, CP0_SegCtl0));
9590
tcg_gen_ext32s_tl(arg, arg);
9591
register_name = "SegCtl0";
9592
break;
9593
case CP0_REG05__SEGCTL1:
9594
CP0_CHECK(ctx->sc);
9595
- tcg_gen_ld_tl(arg, cpu_env, offsetof(CPUMIPSState, CP0_SegCtl1));
9596
+ tcg_gen_ld_tl(arg, tcg_env, offsetof(CPUMIPSState, CP0_SegCtl1));
9597
tcg_gen_ext32s_tl(arg, arg);
9598
register_name = "SegCtl1";
9599
break;
9600
case CP0_REG05__SEGCTL2:
9601
CP0_CHECK(ctx->sc);
9602
- tcg_gen_ld_tl(arg, cpu_env, offsetof(CPUMIPSState, CP0_SegCtl2));
9603
+ tcg_gen_ld_tl(arg, tcg_env, offsetof(CPUMIPSState, CP0_SegCtl2));
9604
tcg_gen_ext32s_tl(arg, arg);
9605
register_name = "SegCtl2";
9606
break;
9607
@@ -XXX,XX +XXX,XX @@ static void gen_mfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
9608
case CP0_REGISTER_08:
9609
switch (sel) {
9610
case CP0_REG08__BADVADDR:
9611
- tcg_gen_ld_tl(arg, cpu_env, offsetof(CPUMIPSState, CP0_BadVAddr));
9612
+ tcg_gen_ld_tl(arg, tcg_env, offsetof(CPUMIPSState, CP0_BadVAddr));
9613
tcg_gen_ext32s_tl(arg, arg);
9614
register_name = "BadVAddr";
9615
break;
9616
@@ -XXX,XX +XXX,XX @@ static void gen_mfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
9617
/* Mark as an IO operation because we read the time. */
9618
translator_io_start(&ctx->base);
9619
9620
- gen_helper_mfc0_count(arg, cpu_env);
9621
+ gen_helper_mfc0_count(arg, tcg_env);
9622
/*
9623
* Break the TB to be able to take timer interrupts immediately
9624
* after reading count. DISAS_STOP isn't sufficient, we need to
9625
@@ -XXX,XX +XXX,XX @@ static void gen_mfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
9626
break;
9627
case CP0_REG09__SAAR:
9628
CP0_CHECK(ctx->saar);
9629
- gen_helper_mfc0_saar(arg, cpu_env);
9630
+ gen_helper_mfc0_saar(arg, tcg_env);
9631
register_name = "SAAR";
9632
break;
9633
default:
9634
@@ -XXX,XX +XXX,XX @@ static void gen_mfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
9635
case CP0_REGISTER_10:
9636
switch (sel) {
9637
case CP0_REG10__ENTRYHI:
9638
- tcg_gen_ld_tl(arg, cpu_env, offsetof(CPUMIPSState, CP0_EntryHi));
9639
+ tcg_gen_ld_tl(arg, tcg_env, offsetof(CPUMIPSState, CP0_EntryHi));
9640
tcg_gen_ext32s_tl(arg, arg);
9641
register_name = "EntryHi";
9642
break;
9643
@@ -XXX,XX +XXX,XX @@ static void gen_mfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
9644
case CP0_REGISTER_14:
9645
switch (sel) {
9646
case CP0_REG14__EPC:
9647
- tcg_gen_ld_tl(arg, cpu_env, offsetof(CPUMIPSState, CP0_EPC));
9648
+ tcg_gen_ld_tl(arg, tcg_env, offsetof(CPUMIPSState, CP0_EPC));
9649
tcg_gen_ext32s_tl(arg, arg);
9650
register_name = "EPC";
9651
break;
9652
@@ -XXX,XX +XXX,XX @@ static void gen_mfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
9653
break;
9654
case CP0_REG15__EBASE:
9655
check_insn(ctx, ISA_MIPS_R2);
9656
- tcg_gen_ld_tl(arg, cpu_env, offsetof(CPUMIPSState, CP0_EBase));
9657
+ tcg_gen_ld_tl(arg, tcg_env, offsetof(CPUMIPSState, CP0_EBase));
9658
tcg_gen_ext32s_tl(arg, arg);
9659
register_name = "EBase";
9660
break;
9661
case CP0_REG15__CMGCRBASE:
9662
check_insn(ctx, ISA_MIPS_R2);
9663
CP0_CHECK(ctx->cmgcr);
9664
- tcg_gen_ld_tl(arg, cpu_env, offsetof(CPUMIPSState, CP0_CMGCRBase));
9665
+ tcg_gen_ld_tl(arg, tcg_env, offsetof(CPUMIPSState, CP0_CMGCRBase));
9666
tcg_gen_ext32s_tl(arg, arg);
9667
register_name = "CMGCRBase";
9668
break;
9669
@@ -XXX,XX +XXX,XX @@ static void gen_mfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
9670
case CP0_REGISTER_17:
9671
switch (sel) {
9672
case CP0_REG17__LLADDR:
9673
- gen_helper_mfc0_lladdr(arg, cpu_env);
9674
+ gen_helper_mfc0_lladdr(arg, tcg_env);
9675
register_name = "LLAddr";
9676
break;
9677
case CP0_REG17__MAAR:
9678
CP0_CHECK(ctx->mrp);
9679
- gen_helper_mfc0_maar(arg, cpu_env);
9680
+ gen_helper_mfc0_maar(arg, tcg_env);
9681
register_name = "MAAR";
9682
break;
9683
case CP0_REG17__MAARI:
9684
@@ -XXX,XX +XXX,XX @@ static void gen_mfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
9685
case CP0_REG20__XCONTEXT:
9686
#if defined(TARGET_MIPS64)
9687
check_insn(ctx, ISA_MIPS3);
9688
- tcg_gen_ld_tl(arg, cpu_env, offsetof(CPUMIPSState, CP0_XContext));
9689
+ tcg_gen_ld_tl(arg, tcg_env, offsetof(CPUMIPSState, CP0_XContext));
9690
tcg_gen_ext32s_tl(arg, arg);
9691
register_name = "XContext";
9692
break;
9693
@@ -XXX,XX +XXX,XX @@ static void gen_mfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
9694
case CP0_REGISTER_23:
9695
switch (sel) {
9696
case CP0_REG23__DEBUG:
9697
- gen_helper_mfc0_debug(arg, cpu_env); /* EJTAG support */
9698
+ gen_helper_mfc0_debug(arg, tcg_env); /* EJTAG support */
9699
register_name = "Debug";
9700
break;
9701
case CP0_REG23__TRACECONTROL:
9702
@@ -XXX,XX +XXX,XX @@ static void gen_mfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
9703
switch (sel) {
9704
case CP0_REG24__DEPC:
9705
/* EJTAG support */
9706
- tcg_gen_ld_tl(arg, cpu_env, offsetof(CPUMIPSState, CP0_DEPC));
9707
+ tcg_gen_ld_tl(arg, tcg_env, offsetof(CPUMIPSState, CP0_DEPC));
9708
tcg_gen_ext32s_tl(arg, arg);
9709
register_name = "DEPC";
9710
break;
9711
@@ -XXX,XX +XXX,XX @@ static void gen_mfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
9712
case CP0_REG28__TAGLO3:
9713
{
9714
TCGv_i64 tmp = tcg_temp_new_i64();
9715
- tcg_gen_ld_i64(tmp, cpu_env, offsetof(CPUMIPSState, CP0_TagLo));
9716
+ tcg_gen_ld_i64(tmp, tcg_env, offsetof(CPUMIPSState, CP0_TagLo));
9717
gen_move_low32(arg, tmp);
9718
}
9719
register_name = "TagLo";
9720
@@ -XXX,XX +XXX,XX @@ static void gen_mfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
9721
case CP0_REGISTER_30:
9722
switch (sel) {
9723
case CP0_REG30__ERROREPC:
9724
- tcg_gen_ld_tl(arg, cpu_env, offsetof(CPUMIPSState, CP0_ErrorEPC));
9725
+ tcg_gen_ld_tl(arg, tcg_env, offsetof(CPUMIPSState, CP0_ErrorEPC));
9726
tcg_gen_ext32s_tl(arg, arg);
9727
register_name = "ErrorEPC";
9728
break;
9729
@@ -XXX,XX +XXX,XX @@ static void gen_mfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
9730
case CP0_REG31__KSCRATCH5:
9731
case CP0_REG31__KSCRATCH6:
9732
CP0_CHECK(ctx->kscrexist & (1 << sel));
9733
- tcg_gen_ld_tl(arg, cpu_env,
9734
+ tcg_gen_ld_tl(arg, tcg_env,
9735
offsetof(CPUMIPSState, CP0_KScratch[sel - 2]));
9736
tcg_gen_ext32s_tl(arg, arg);
9737
register_name = "KScratch";
9738
@@ -XXX,XX +XXX,XX @@ static void gen_mtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
9739
case CP0_REGISTER_00:
9740
switch (sel) {
9741
case CP0_REG00__INDEX:
9742
- gen_helper_mtc0_index(cpu_env, arg);
9743
+ gen_helper_mtc0_index(tcg_env, arg);
9744
register_name = "Index";
9745
break;
9746
case CP0_REG00__MVPCONTROL:
9747
CP0_CHECK(ctx->insn_flags & ASE_MT);
9748
- gen_helper_mtc0_mvpcontrol(cpu_env, arg);
9749
+ gen_helper_mtc0_mvpcontrol(tcg_env, arg);
9750
register_name = "MVPControl";
9751
break;
9752
case CP0_REG00__MVPCONF0:
9753
@@ -XXX,XX +XXX,XX @@ static void gen_mtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
9754
break;
9755
case CP0_REG01__VPECONTROL:
9756
CP0_CHECK(ctx->insn_flags & ASE_MT);
9757
- gen_helper_mtc0_vpecontrol(cpu_env, arg);
9758
+ gen_helper_mtc0_vpecontrol(tcg_env, arg);
9759
register_name = "VPEControl";
9760
break;
9761
case CP0_REG01__VPECONF0:
9762
CP0_CHECK(ctx->insn_flags & ASE_MT);
9763
- gen_helper_mtc0_vpeconf0(cpu_env, arg);
9764
+ gen_helper_mtc0_vpeconf0(tcg_env, arg);
9765
register_name = "VPEConf0";
9766
break;
9767
case CP0_REG01__VPECONF1:
9768
CP0_CHECK(ctx->insn_flags & ASE_MT);
9769
- gen_helper_mtc0_vpeconf1(cpu_env, arg);
9770
+ gen_helper_mtc0_vpeconf1(tcg_env, arg);
9771
register_name = "VPEConf1";
9772
break;
9773
case CP0_REG01__YQMASK:
9774
CP0_CHECK(ctx->insn_flags & ASE_MT);
9775
- gen_helper_mtc0_yqmask(cpu_env, arg);
9776
+ gen_helper_mtc0_yqmask(tcg_env, arg);
9777
register_name = "YQMask";
9778
break;
9779
case CP0_REG01__VPESCHEDULE:
9780
CP0_CHECK(ctx->insn_flags & ASE_MT);
9781
- tcg_gen_st_tl(arg, cpu_env,
9782
+ tcg_gen_st_tl(arg, tcg_env,
9783
offsetof(CPUMIPSState, CP0_VPESchedule));
9784
register_name = "VPESchedule";
9785
break;
9786
case CP0_REG01__VPESCHEFBACK:
9787
CP0_CHECK(ctx->insn_flags & ASE_MT);
9788
- tcg_gen_st_tl(arg, cpu_env,
9789
+ tcg_gen_st_tl(arg, tcg_env,
9790
offsetof(CPUMIPSState, CP0_VPEScheFBack));
9791
register_name = "VPEScheFBack";
9792
break;
9793
case CP0_REG01__VPEOPT:
9794
CP0_CHECK(ctx->insn_flags & ASE_MT);
9795
- gen_helper_mtc0_vpeopt(cpu_env, arg);
9796
+ gen_helper_mtc0_vpeopt(tcg_env, arg);
9797
register_name = "VPEOpt";
9798
break;
9799
default:
9800
@@ -XXX,XX +XXX,XX @@ static void gen_mtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
9801
case CP0_REGISTER_02:
9802
switch (sel) {
9803
case CP0_REG02__ENTRYLO0:
9804
- gen_helper_mtc0_entrylo0(cpu_env, arg);
9805
+ gen_helper_mtc0_entrylo0(tcg_env, arg);
9806
register_name = "EntryLo0";
9807
break;
9808
case CP0_REG02__TCSTATUS:
9809
CP0_CHECK(ctx->insn_flags & ASE_MT);
9810
- gen_helper_mtc0_tcstatus(cpu_env, arg);
9811
+ gen_helper_mtc0_tcstatus(tcg_env, arg);
9812
register_name = "TCStatus";
9813
break;
9814
case CP0_REG02__TCBIND:
9815
CP0_CHECK(ctx->insn_flags & ASE_MT);
9816
- gen_helper_mtc0_tcbind(cpu_env, arg);
9817
+ gen_helper_mtc0_tcbind(tcg_env, arg);
9818
register_name = "TCBind";
9819
break;
9820
case CP0_REG02__TCRESTART:
9821
CP0_CHECK(ctx->insn_flags & ASE_MT);
9822
- gen_helper_mtc0_tcrestart(cpu_env, arg);
9823
+ gen_helper_mtc0_tcrestart(tcg_env, arg);
9824
register_name = "TCRestart";
9825
break;
9826
case CP0_REG02__TCHALT:
9827
CP0_CHECK(ctx->insn_flags & ASE_MT);
9828
- gen_helper_mtc0_tchalt(cpu_env, arg);
9829
+ gen_helper_mtc0_tchalt(tcg_env, arg);
9830
register_name = "TCHalt";
9831
break;
9832
case CP0_REG02__TCCONTEXT:
9833
CP0_CHECK(ctx->insn_flags & ASE_MT);
9834
- gen_helper_mtc0_tccontext(cpu_env, arg);
9835
+ gen_helper_mtc0_tccontext(tcg_env, arg);
9836
register_name = "TCContext";
9837
break;
9838
case CP0_REG02__TCSCHEDULE:
9839
CP0_CHECK(ctx->insn_flags & ASE_MT);
9840
- gen_helper_mtc0_tcschedule(cpu_env, arg);
9841
+ gen_helper_mtc0_tcschedule(tcg_env, arg);
9842
register_name = "TCSchedule";
9843
break;
9844
case CP0_REG02__TCSCHEFBACK:
9845
CP0_CHECK(ctx->insn_flags & ASE_MT);
9846
- gen_helper_mtc0_tcschefback(cpu_env, arg);
9847
+ gen_helper_mtc0_tcschefback(tcg_env, arg);
9848
register_name = "TCScheFBack";
9849
break;
9850
default:
9851
@@ -XXX,XX +XXX,XX @@ static void gen_mtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
9852
case CP0_REGISTER_03:
9853
switch (sel) {
9854
case CP0_REG03__ENTRYLO1:
9855
- gen_helper_mtc0_entrylo1(cpu_env, arg);
9856
+ gen_helper_mtc0_entrylo1(tcg_env, arg);
9857
register_name = "EntryLo1";
9858
break;
9859
case CP0_REG03__GLOBALNUM:
9860
@@ -XXX,XX +XXX,XX @@ static void gen_mtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
9861
case CP0_REGISTER_04:
9862
switch (sel) {
9863
case CP0_REG04__CONTEXT:
9864
- gen_helper_mtc0_context(cpu_env, arg);
9865
+ gen_helper_mtc0_context(tcg_env, arg);
9866
register_name = "Context";
9867
break;
9868
case CP0_REG04__CONTEXTCONFIG:
9869
@@ -XXX,XX +XXX,XX @@ static void gen_mtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
9870
goto cp0_unimplemented;
9871
case CP0_REG04__USERLOCAL:
9872
CP0_CHECK(ctx->ulri);
9873
- tcg_gen_st_tl(arg, cpu_env,
9874
+ tcg_gen_st_tl(arg, tcg_env,
9875
offsetof(CPUMIPSState, active_tc.CP0_UserLocal));
9876
register_name = "UserLocal";
9877
break;
9878
@@ -XXX,XX +XXX,XX @@ static void gen_mtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
9879
case CP0_REGISTER_05:
9880
switch (sel) {
9881
case CP0_REG05__PAGEMASK:
9882
- gen_helper_mtc0_pagemask(cpu_env, arg);
9883
+ gen_helper_mtc0_pagemask(tcg_env, arg);
9884
register_name = "PageMask";
9885
break;
9886
case CP0_REG05__PAGEGRAIN:
9887
check_insn(ctx, ISA_MIPS_R2);
9888
- gen_helper_mtc0_pagegrain(cpu_env, arg);
9889
+ gen_helper_mtc0_pagegrain(tcg_env, arg);
9890
register_name = "PageGrain";
9891
ctx->base.is_jmp = DISAS_STOP;
9892
break;
9893
case CP0_REG05__SEGCTL0:
9894
CP0_CHECK(ctx->sc);
9895
- gen_helper_mtc0_segctl0(cpu_env, arg);
9896
+ gen_helper_mtc0_segctl0(tcg_env, arg);
9897
register_name = "SegCtl0";
9898
break;
9899
case CP0_REG05__SEGCTL1:
9900
CP0_CHECK(ctx->sc);
9901
- gen_helper_mtc0_segctl1(cpu_env, arg);
9902
+ gen_helper_mtc0_segctl1(tcg_env, arg);
9903
register_name = "SegCtl1";
9904
break;
9905
case CP0_REG05__SEGCTL2:
9906
CP0_CHECK(ctx->sc);
9907
- gen_helper_mtc0_segctl2(cpu_env, arg);
9908
+ gen_helper_mtc0_segctl2(tcg_env, arg);
9909
register_name = "SegCtl2";
9910
break;
9911
case CP0_REG05__PWBASE:
9912
@@ -XXX,XX +XXX,XX @@ static void gen_mtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
9913
break;
9914
case CP0_REG05__PWFIELD:
9915
check_pw(ctx);
9916
- gen_helper_mtc0_pwfield(cpu_env, arg);
9917
+ gen_helper_mtc0_pwfield(tcg_env, arg);
9918
register_name = "PWField";
9919
break;
9920
case CP0_REG05__PWSIZE:
9921
check_pw(ctx);
9922
- gen_helper_mtc0_pwsize(cpu_env, arg);
9923
+ gen_helper_mtc0_pwsize(tcg_env, arg);
9924
register_name = "PWSize";
9925
break;
9926
default:
9927
@@ -XXX,XX +XXX,XX @@ static void gen_mtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
9928
case CP0_REGISTER_06:
9929
switch (sel) {
9930
case CP0_REG06__WIRED:
9931
- gen_helper_mtc0_wired(cpu_env, arg);
9932
+ gen_helper_mtc0_wired(tcg_env, arg);
9933
register_name = "Wired";
9934
break;
9935
case CP0_REG06__SRSCONF0:
9936
check_insn(ctx, ISA_MIPS_R2);
9937
- gen_helper_mtc0_srsconf0(cpu_env, arg);
9938
+ gen_helper_mtc0_srsconf0(tcg_env, arg);
9939
register_name = "SRSConf0";
9940
break;
9941
case CP0_REG06__SRSCONF1:
9942
check_insn(ctx, ISA_MIPS_R2);
9943
- gen_helper_mtc0_srsconf1(cpu_env, arg);
9944
+ gen_helper_mtc0_srsconf1(tcg_env, arg);
9945
register_name = "SRSConf1";
9946
break;
9947
case CP0_REG06__SRSCONF2:
9948
check_insn(ctx, ISA_MIPS_R2);
9949
- gen_helper_mtc0_srsconf2(cpu_env, arg);
9950
+ gen_helper_mtc0_srsconf2(tcg_env, arg);
9951
register_name = "SRSConf2";
9952
break;
9953
case CP0_REG06__SRSCONF3:
9954
check_insn(ctx, ISA_MIPS_R2);
9955
- gen_helper_mtc0_srsconf3(cpu_env, arg);
9956
+ gen_helper_mtc0_srsconf3(tcg_env, arg);
9957
register_name = "SRSConf3";
9958
break;
9959
case CP0_REG06__SRSCONF4:
9960
check_insn(ctx, ISA_MIPS_R2);
9961
- gen_helper_mtc0_srsconf4(cpu_env, arg);
9962
+ gen_helper_mtc0_srsconf4(tcg_env, arg);
9963
register_name = "SRSConf4";
9964
break;
9965
case CP0_REG06__PWCTL:
9966
check_pw(ctx);
9967
- gen_helper_mtc0_pwctl(cpu_env, arg);
9968
+ gen_helper_mtc0_pwctl(tcg_env, arg);
9969
register_name = "PWCtl";
9970
break;
9971
default:
9972
@@ -XXX,XX +XXX,XX @@ static void gen_mtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
9973
switch (sel) {
9974
case CP0_REG07__HWRENA:
9975
check_insn(ctx, ISA_MIPS_R2);
9976
- gen_helper_mtc0_hwrena(cpu_env, arg);
9977
+ gen_helper_mtc0_hwrena(tcg_env, arg);
9978
ctx->base.is_jmp = DISAS_STOP;
9979
register_name = "HWREna";
9980
break;
9981
@@ -XXX,XX +XXX,XX @@ static void gen_mtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
9982
case CP0_REGISTER_09:
9983
switch (sel) {
9984
case CP0_REG09__COUNT:
9985
- gen_helper_mtc0_count(cpu_env, arg);
9986
+ gen_helper_mtc0_count(tcg_env, arg);
9987
register_name = "Count";
9988
break;
9989
case CP0_REG09__SAARI:
9990
CP0_CHECK(ctx->saar);
9991
- gen_helper_mtc0_saari(cpu_env, arg);
9992
+ gen_helper_mtc0_saari(tcg_env, arg);
9993
register_name = "SAARI";
9994
break;
9995
case CP0_REG09__SAAR:
9996
CP0_CHECK(ctx->saar);
9997
- gen_helper_mtc0_saar(cpu_env, arg);
9998
+ gen_helper_mtc0_saar(tcg_env, arg);
9999
register_name = "SAAR";
10000
break;
10001
default:
10002
@@ -XXX,XX +XXX,XX @@ static void gen_mtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
10003
case CP0_REGISTER_10:
10004
switch (sel) {
10005
case CP0_REG10__ENTRYHI:
10006
- gen_helper_mtc0_entryhi(cpu_env, arg);
10007
+ gen_helper_mtc0_entryhi(tcg_env, arg);
10008
register_name = "EntryHi";
10009
break;
10010
default:
10011
@@ -XXX,XX +XXX,XX @@ static void gen_mtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
10012
case CP0_REGISTER_11:
10013
switch (sel) {
10014
case CP0_REG11__COMPARE:
10015
- gen_helper_mtc0_compare(cpu_env, arg);
10016
+ gen_helper_mtc0_compare(tcg_env, arg);
10017
register_name = "Compare";
10018
break;
10019
/* 6,7 are implementation dependent */
10020
@@ -XXX,XX +XXX,XX @@ static void gen_mtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
10021
switch (sel) {
10022
case CP0_REG12__STATUS:
10023
save_cpu_state(ctx, 1);
10024
- gen_helper_mtc0_status(cpu_env, arg);
10025
+ gen_helper_mtc0_status(tcg_env, arg);
10026
/* DISAS_STOP isn't good enough here, hflags may have changed. */
10027
gen_save_pc(ctx->base.pc_next + 4);
10028
ctx->base.is_jmp = DISAS_EXIT;
10029
@@ -XXX,XX +XXX,XX @@ static void gen_mtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
10030
break;
10031
case CP0_REG12__INTCTL:
10032
check_insn(ctx, ISA_MIPS_R2);
10033
- gen_helper_mtc0_intctl(cpu_env, arg);
10034
+ gen_helper_mtc0_intctl(tcg_env, arg);
10035
/* Stop translation as we may have switched the execution mode */
10036
ctx->base.is_jmp = DISAS_STOP;
10037
register_name = "IntCtl";
10038
break;
10039
case CP0_REG12__SRSCTL:
10040
check_insn(ctx, ISA_MIPS_R2);
10041
- gen_helper_mtc0_srsctl(cpu_env, arg);
10042
+ gen_helper_mtc0_srsctl(tcg_env, arg);
10043
/* Stop translation as we may have switched the execution mode */
10044
ctx->base.is_jmp = DISAS_STOP;
10045
register_name = "SRSCtl";
10046
@@ -XXX,XX +XXX,XX @@ static void gen_mtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
10047
switch (sel) {
10048
case CP0_REG13__CAUSE:
10049
save_cpu_state(ctx, 1);
10050
- gen_helper_mtc0_cause(cpu_env, arg);
10051
+ gen_helper_mtc0_cause(tcg_env, arg);
10052
/*
10053
* Stop translation as we may have triggered an interrupt.
10054
* DISAS_STOP isn't sufficient, we need to ensure we break out of
10055
@@ -XXX,XX +XXX,XX @@ static void gen_mtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
10056
case CP0_REGISTER_14:
10057
switch (sel) {
10058
case CP0_REG14__EPC:
10059
- tcg_gen_st_tl(arg, cpu_env, offsetof(CPUMIPSState, CP0_EPC));
10060
+ tcg_gen_st_tl(arg, tcg_env, offsetof(CPUMIPSState, CP0_EPC));
10061
register_name = "EPC";
10062
break;
10063
default:
10064
@@ -XXX,XX +XXX,XX @@ static void gen_mtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
10065
break;
10066
case CP0_REG15__EBASE:
10067
check_insn(ctx, ISA_MIPS_R2);
10068
- gen_helper_mtc0_ebase(cpu_env, arg);
10069
+ gen_helper_mtc0_ebase(tcg_env, arg);
10070
register_name = "EBase";
10071
break;
10072
default:
10073
@@ -XXX,XX +XXX,XX @@ static void gen_mtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
10074
case CP0_REGISTER_16:
10075
switch (sel) {
10076
case CP0_REG16__CONFIG:
10077
- gen_helper_mtc0_config0(cpu_env, arg);
10078
+ gen_helper_mtc0_config0(tcg_env, arg);
10079
register_name = "Config";
10080
/* Stop translation as we may have switched the execution mode */
10081
ctx->base.is_jmp = DISAS_STOP;
10082
@@ -XXX,XX +XXX,XX @@ static void gen_mtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
10083
register_name = "Config1";
10084
break;
10085
case CP0_REG16__CONFIG2:
10086
- gen_helper_mtc0_config2(cpu_env, arg);
10087
+ gen_helper_mtc0_config2(tcg_env, arg);
10088
register_name = "Config2";
10089
/* Stop translation as we may have switched the execution mode */
10090
ctx->base.is_jmp = DISAS_STOP;
10091
break;
10092
case CP0_REG16__CONFIG3:
10093
- gen_helper_mtc0_config3(cpu_env, arg);
10094
+ gen_helper_mtc0_config3(tcg_env, arg);
10095
register_name = "Config3";
10096
/* Stop translation as we may have switched the execution mode */
10097
ctx->base.is_jmp = DISAS_STOP;
10098
break;
10099
case CP0_REG16__CONFIG4:
10100
- gen_helper_mtc0_config4(cpu_env, arg);
10101
+ gen_helper_mtc0_config4(tcg_env, arg);
10102
register_name = "Config4";
10103
ctx->base.is_jmp = DISAS_STOP;
10104
break;
10105
case CP0_REG16__CONFIG5:
10106
- gen_helper_mtc0_config5(cpu_env, arg);
10107
+ gen_helper_mtc0_config5(tcg_env, arg);
10108
register_name = "Config5";
10109
/* Stop translation as we may have switched the execution mode */
10110
ctx->base.is_jmp = DISAS_STOP;
10111
@@ -XXX,XX +XXX,XX @@ static void gen_mtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
10112
case CP0_REGISTER_17:
10113
switch (sel) {
10114
case CP0_REG17__LLADDR:
10115
- gen_helper_mtc0_lladdr(cpu_env, arg);
10116
+ gen_helper_mtc0_lladdr(tcg_env, arg);
10117
register_name = "LLAddr";
10118
break;
10119
case CP0_REG17__MAAR:
10120
CP0_CHECK(ctx->mrp);
10121
- gen_helper_mtc0_maar(cpu_env, arg);
10122
+ gen_helper_mtc0_maar(tcg_env, arg);
10123
register_name = "MAAR";
10124
break;
10125
case CP0_REG17__MAARI:
10126
CP0_CHECK(ctx->mrp);
10127
- gen_helper_mtc0_maari(cpu_env, arg);
10128
+ gen_helper_mtc0_maari(tcg_env, arg);
10129
register_name = "MAARI";
10130
break;
10131
default:
10132
@@ -XXX,XX +XXX,XX @@ static void gen_mtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
10133
case CP0_REG20__XCONTEXT:
10134
#if defined(TARGET_MIPS64)
10135
check_insn(ctx, ISA_MIPS3);
10136
- gen_helper_mtc0_xcontext(cpu_env, arg);
10137
+ gen_helper_mtc0_xcontext(tcg_env, arg);
10138
register_name = "XContext";
10139
break;
10140
#endif
10141
@@ -XXX,XX +XXX,XX @@ static void gen_mtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
10142
CP0_CHECK(!(ctx->insn_flags & ISA_MIPS_R6));
10143
switch (sel) {
10144
case 0:
10145
- gen_helper_mtc0_framemask(cpu_env, arg);
10146
+ gen_helper_mtc0_framemask(tcg_env, arg);
10147
register_name = "Framemask";
10148
break;
10149
default:
10150
@@ -XXX,XX +XXX,XX @@ static void gen_mtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
10151
case CP0_REGISTER_23:
10152
switch (sel) {
10153
case CP0_REG23__DEBUG:
10154
- gen_helper_mtc0_debug(cpu_env, arg); /* EJTAG support */
10155
+ gen_helper_mtc0_debug(tcg_env, arg); /* EJTAG support */
10156
/* DISAS_STOP isn't good enough here, hflags may have changed. */
10157
gen_save_pc(ctx->base.pc_next + 4);
10158
ctx->base.is_jmp = DISAS_EXIT;
10159
@@ -XXX,XX +XXX,XX @@ static void gen_mtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
10160
break;
10161
case CP0_REG23__TRACECONTROL:
10162
/* PDtrace support */
10163
- /* gen_helper_mtc0_tracecontrol(cpu_env, arg); */
10164
+ /* gen_helper_mtc0_tracecontrol(tcg_env, arg); */
10165
register_name = "TraceControl";
10166
/* Stop translation as we may have switched the execution mode */
10167
ctx->base.is_jmp = DISAS_STOP;
10168
goto cp0_unimplemented;
10169
case CP0_REG23__TRACECONTROL2:
10170
/* PDtrace support */
10171
- /* gen_helper_mtc0_tracecontrol2(cpu_env, arg); */
10172
+ /* gen_helper_mtc0_tracecontrol2(tcg_env, arg); */
10173
register_name = "TraceControl2";
10174
/* Stop translation as we may have switched the execution mode */
10175
ctx->base.is_jmp = DISAS_STOP;
10176
@@ -XXX,XX +XXX,XX @@ static void gen_mtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
10177
/* Stop translation as we may have switched the execution mode */
10178
ctx->base.is_jmp = DISAS_STOP;
10179
/* PDtrace support */
10180
- /* gen_helper_mtc0_usertracedata1(cpu_env, arg);*/
10181
+ /* gen_helper_mtc0_usertracedata1(tcg_env, arg);*/
10182
register_name = "UserTraceData";
10183
/* Stop translation as we may have switched the execution mode */
10184
ctx->base.is_jmp = DISAS_STOP;
10185
goto cp0_unimplemented;
10186
case CP0_REG23__TRACEIBPC:
10187
/* PDtrace support */
10188
- /* gen_helper_mtc0_traceibpc(cpu_env, arg); */
10189
+ /* gen_helper_mtc0_traceibpc(tcg_env, arg); */
10190
/* Stop translation as we may have switched the execution mode */
10191
ctx->base.is_jmp = DISAS_STOP;
10192
register_name = "TraceIBPC";
10193
goto cp0_unimplemented;
10194
case CP0_REG23__TRACEDBPC:
10195
/* PDtrace support */
10196
- /* gen_helper_mtc0_tracedbpc(cpu_env, arg); */
10197
+ /* gen_helper_mtc0_tracedbpc(tcg_env, arg); */
10198
/* Stop translation as we may have switched the execution mode */
10199
ctx->base.is_jmp = DISAS_STOP;
10200
register_name = "TraceDBPC";
10201
@@ -XXX,XX +XXX,XX @@ static void gen_mtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
10202
switch (sel) {
10203
case CP0_REG24__DEPC:
10204
/* EJTAG support */
10205
- tcg_gen_st_tl(arg, cpu_env, offsetof(CPUMIPSState, CP0_DEPC));
10206
+ tcg_gen_st_tl(arg, tcg_env, offsetof(CPUMIPSState, CP0_DEPC));
10207
register_name = "DEPC";
10208
break;
10209
default:
10210
@@ -XXX,XX +XXX,XX @@ static void gen_mtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
10211
case CP0_REGISTER_25:
10212
switch (sel) {
10213
case CP0_REG25__PERFCTL0:
10214
- gen_helper_mtc0_performance0(cpu_env, arg);
10215
+ gen_helper_mtc0_performance0(tcg_env, arg);
10216
register_name = "Performance0";
10217
break;
10218
case CP0_REG25__PERFCNT0:
10219
@@ -XXX,XX +XXX,XX @@ static void gen_mtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
10220
case CP0_REGISTER_26:
10221
switch (sel) {
10222
case CP0_REG26__ERRCTL:
10223
- gen_helper_mtc0_errctl(cpu_env, arg);
10224
+ gen_helper_mtc0_errctl(tcg_env, arg);
10225
ctx->base.is_jmp = DISAS_STOP;
10226
register_name = "ErrCtl";
10227
break;
10228
@@ -XXX,XX +XXX,XX @@ static void gen_mtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
10229
case CP0_REG28__TAGLO1:
10230
case CP0_REG28__TAGLO2:
10231
case CP0_REG28__TAGLO3:
10232
- gen_helper_mtc0_taglo(cpu_env, arg);
10233
+ gen_helper_mtc0_taglo(tcg_env, arg);
10234
register_name = "TagLo";
10235
break;
10236
case CP0_REG28__DATALO:
10237
case CP0_REG28__DATALO1:
10238
case CP0_REG28__DATALO2:
10239
case CP0_REG28__DATALO3:
10240
- gen_helper_mtc0_datalo(cpu_env, arg);
10241
+ gen_helper_mtc0_datalo(tcg_env, arg);
10242
register_name = "DataLo";
10243
break;
10244
default:
10245
@@ -XXX,XX +XXX,XX @@ static void gen_mtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
10246
case CP0_REG29__TAGHI1:
10247
case CP0_REG29__TAGHI2:
10248
case CP0_REG29__TAGHI3:
10249
- gen_helper_mtc0_taghi(cpu_env, arg);
10250
+ gen_helper_mtc0_taghi(tcg_env, arg);
10251
register_name = "TagHi";
10252
break;
10253
case CP0_REG29__DATAHI:
10254
case CP0_REG29__DATAHI1:
10255
case CP0_REG29__DATAHI2:
10256
case CP0_REG29__DATAHI3:
10257
- gen_helper_mtc0_datahi(cpu_env, arg);
10258
+ gen_helper_mtc0_datahi(tcg_env, arg);
10259
register_name = "DataHi";
10260
break;
10261
default:
10262
@@ -XXX,XX +XXX,XX @@ static void gen_mtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
10263
case CP0_REGISTER_30:
10264
switch (sel) {
10265
case CP0_REG30__ERROREPC:
10266
- tcg_gen_st_tl(arg, cpu_env, offsetof(CPUMIPSState, CP0_ErrorEPC));
10267
+ tcg_gen_st_tl(arg, tcg_env, offsetof(CPUMIPSState, CP0_ErrorEPC));
10268
register_name = "ErrorEPC";
10269
break;
10270
default:
10271
@@ -XXX,XX +XXX,XX @@ static void gen_mtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
10272
case CP0_REG31__KSCRATCH5:
10273
case CP0_REG31__KSCRATCH6:
10274
CP0_CHECK(ctx->kscrexist & (1 << sel));
10275
- tcg_gen_st_tl(arg, cpu_env,
10276
+ tcg_gen_st_tl(arg, tcg_env,
10277
offsetof(CPUMIPSState, CP0_KScratch[sel - 2]));
10278
register_name = "KScratch";
10279
break;
10280
@@ -XXX,XX +XXX,XX @@ static void gen_dmfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
10281
break;
10282
case CP0_REG00__MVPCONTROL:
10283
CP0_CHECK(ctx->insn_flags & ASE_MT);
10284
- gen_helper_mfc0_mvpcontrol(arg, cpu_env);
10285
+ gen_helper_mfc0_mvpcontrol(arg, tcg_env);
10286
register_name = "MVPControl";
10287
break;
10288
case CP0_REG00__MVPCONF0:
10289
CP0_CHECK(ctx->insn_flags & ASE_MT);
10290
- gen_helper_mfc0_mvpconf0(arg, cpu_env);
10291
+ gen_helper_mfc0_mvpconf0(arg, tcg_env);
10292
register_name = "MVPConf0";
10293
break;
10294
case CP0_REG00__MVPCONF1:
10295
CP0_CHECK(ctx->insn_flags & ASE_MT);
10296
- gen_helper_mfc0_mvpconf1(arg, cpu_env);
10297
+ gen_helper_mfc0_mvpconf1(arg, tcg_env);
10298
register_name = "MVPConf1";
10299
break;
10300
case CP0_REG00__VPCONTROL:
10301
@@ -XXX,XX +XXX,XX @@ static void gen_dmfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
10302
switch (sel) {
10303
case CP0_REG01__RANDOM:
10304
CP0_CHECK(!(ctx->insn_flags & ISA_MIPS_R6));
10305
- gen_helper_mfc0_random(arg, cpu_env);
10306
+ gen_helper_mfc0_random(arg, tcg_env);
10307
register_name = "Random";
10308
break;
10309
case CP0_REG01__VPECONTROL:
10310
@@ -XXX,XX +XXX,XX @@ static void gen_dmfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
10311
break;
10312
case CP0_REG01__YQMASK:
10313
CP0_CHECK(ctx->insn_flags & ASE_MT);
10314
- tcg_gen_ld_tl(arg, cpu_env,
10315
+ tcg_gen_ld_tl(arg, tcg_env,
10316
offsetof(CPUMIPSState, CP0_YQMask));
10317
register_name = "YQMask";
10318
break;
10319
case CP0_REG01__VPESCHEDULE:
10320
CP0_CHECK(ctx->insn_flags & ASE_MT);
10321
- tcg_gen_ld_tl(arg, cpu_env,
10322
+ tcg_gen_ld_tl(arg, tcg_env,
10323
offsetof(CPUMIPSState, CP0_VPESchedule));
10324
register_name = "VPESchedule";
10325
break;
10326
case CP0_REG01__VPESCHEFBACK:
10327
CP0_CHECK(ctx->insn_flags & ASE_MT);
10328
- tcg_gen_ld_tl(arg, cpu_env,
10329
+ tcg_gen_ld_tl(arg, tcg_env,
10330
offsetof(CPUMIPSState, CP0_VPEScheFBack));
10331
register_name = "VPEScheFBack";
10332
break;
10333
@@ -XXX,XX +XXX,XX @@ static void gen_dmfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
10334
case CP0_REGISTER_02:
10335
switch (sel) {
10336
case CP0_REG02__ENTRYLO0:
10337
- tcg_gen_ld_tl(arg, cpu_env,
10338
+ tcg_gen_ld_tl(arg, tcg_env,
10339
offsetof(CPUMIPSState, CP0_EntryLo0));
10340
register_name = "EntryLo0";
10341
break;
10342
case CP0_REG02__TCSTATUS:
10343
CP0_CHECK(ctx->insn_flags & ASE_MT);
10344
- gen_helper_mfc0_tcstatus(arg, cpu_env);
10345
+ gen_helper_mfc0_tcstatus(arg, tcg_env);
10346
register_name = "TCStatus";
10347
break;
10348
case CP0_REG02__TCBIND:
10349
CP0_CHECK(ctx->insn_flags & ASE_MT);
10350
- gen_helper_mfc0_tcbind(arg, cpu_env);
10351
+ gen_helper_mfc0_tcbind(arg, tcg_env);
10352
register_name = "TCBind";
10353
break;
10354
case CP0_REG02__TCRESTART:
10355
CP0_CHECK(ctx->insn_flags & ASE_MT);
10356
- gen_helper_dmfc0_tcrestart(arg, cpu_env);
10357
+ gen_helper_dmfc0_tcrestart(arg, tcg_env);
10358
register_name = "TCRestart";
10359
break;
10360
case CP0_REG02__TCHALT:
10361
CP0_CHECK(ctx->insn_flags & ASE_MT);
10362
- gen_helper_dmfc0_tchalt(arg, cpu_env);
10363
+ gen_helper_dmfc0_tchalt(arg, tcg_env);
10364
register_name = "TCHalt";
10365
break;
10366
case CP0_REG02__TCCONTEXT:
10367
CP0_CHECK(ctx->insn_flags & ASE_MT);
10368
- gen_helper_dmfc0_tccontext(arg, cpu_env);
10369
+ gen_helper_dmfc0_tccontext(arg, tcg_env);
10370
register_name = "TCContext";
10371
break;
10372
case CP0_REG02__TCSCHEDULE:
10373
CP0_CHECK(ctx->insn_flags & ASE_MT);
10374
- gen_helper_dmfc0_tcschedule(arg, cpu_env);
10375
+ gen_helper_dmfc0_tcschedule(arg, tcg_env);
10376
register_name = "TCSchedule";
10377
break;
10378
case CP0_REG02__TCSCHEFBACK:
10379
CP0_CHECK(ctx->insn_flags & ASE_MT);
10380
- gen_helper_dmfc0_tcschefback(arg, cpu_env);
10381
+ gen_helper_dmfc0_tcschefback(arg, tcg_env);
10382
register_name = "TCScheFBack";
10383
break;
10384
default:
10385
@@ -XXX,XX +XXX,XX @@ static void gen_dmfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
10386
case CP0_REGISTER_03:
10387
switch (sel) {
10388
case CP0_REG03__ENTRYLO1:
10389
- tcg_gen_ld_tl(arg, cpu_env, offsetof(CPUMIPSState, CP0_EntryLo1));
10390
+ tcg_gen_ld_tl(arg, tcg_env, offsetof(CPUMIPSState, CP0_EntryLo1));
10391
register_name = "EntryLo1";
10392
break;
10393
case CP0_REG03__GLOBALNUM:
10394
@@ -XXX,XX +XXX,XX @@ static void gen_dmfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
10395
case CP0_REGISTER_04:
10396
switch (sel) {
10397
case CP0_REG04__CONTEXT:
10398
- tcg_gen_ld_tl(arg, cpu_env, offsetof(CPUMIPSState, CP0_Context));
10399
+ tcg_gen_ld_tl(arg, tcg_env, offsetof(CPUMIPSState, CP0_Context));
10400
register_name = "Context";
10401
break;
10402
case CP0_REG04__CONTEXTCONFIG:
10403
@@ -XXX,XX +XXX,XX @@ static void gen_dmfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
10404
goto cp0_unimplemented;
10405
case CP0_REG04__USERLOCAL:
10406
CP0_CHECK(ctx->ulri);
10407
- tcg_gen_ld_tl(arg, cpu_env,
10408
+ tcg_gen_ld_tl(arg, tcg_env,
10409
offsetof(CPUMIPSState, active_tc.CP0_UserLocal));
10410
register_name = "UserLocal";
10411
break;
10412
case CP0_REG04__MMID:
10413
CP0_CHECK(ctx->mi);
10414
- gen_helper_mtc0_memorymapid(cpu_env, arg);
10415
+ gen_helper_mtc0_memorymapid(tcg_env, arg);
10416
register_name = "MMID";
10417
break;
10418
default:
10419
@@ -XXX,XX +XXX,XX @@ static void gen_dmfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
10420
break;
10421
case CP0_REG05__SEGCTL0:
10422
CP0_CHECK(ctx->sc);
10423
- tcg_gen_ld_tl(arg, cpu_env, offsetof(CPUMIPSState, CP0_SegCtl0));
10424
+ tcg_gen_ld_tl(arg, tcg_env, offsetof(CPUMIPSState, CP0_SegCtl0));
10425
register_name = "SegCtl0";
10426
break;
10427
case CP0_REG05__SEGCTL1:
10428
CP0_CHECK(ctx->sc);
10429
- tcg_gen_ld_tl(arg, cpu_env, offsetof(CPUMIPSState, CP0_SegCtl1));
10430
+ tcg_gen_ld_tl(arg, tcg_env, offsetof(CPUMIPSState, CP0_SegCtl1));
10431
register_name = "SegCtl1";
10432
break;
10433
case CP0_REG05__SEGCTL2:
10434
CP0_CHECK(ctx->sc);
10435
- tcg_gen_ld_tl(arg, cpu_env, offsetof(CPUMIPSState, CP0_SegCtl2));
10436
+ tcg_gen_ld_tl(arg, tcg_env, offsetof(CPUMIPSState, CP0_SegCtl2));
10437
register_name = "SegCtl2";
10438
break;
10439
case CP0_REG05__PWBASE:
10440
check_pw(ctx);
10441
- tcg_gen_ld_tl(arg, cpu_env, offsetof(CPUMIPSState, CP0_PWBase));
10442
+ tcg_gen_ld_tl(arg, tcg_env, offsetof(CPUMIPSState, CP0_PWBase));
10443
register_name = "PWBase";
10444
break;
10445
case CP0_REG05__PWFIELD:
10446
check_pw(ctx);
10447
- tcg_gen_ld_tl(arg, cpu_env, offsetof(CPUMIPSState, CP0_PWField));
10448
+ tcg_gen_ld_tl(arg, tcg_env, offsetof(CPUMIPSState, CP0_PWField));
10449
register_name = "PWField";
10450
break;
10451
case CP0_REG05__PWSIZE:
10452
check_pw(ctx);
10453
- tcg_gen_ld_tl(arg, cpu_env, offsetof(CPUMIPSState, CP0_PWSize));
10454
+ tcg_gen_ld_tl(arg, tcg_env, offsetof(CPUMIPSState, CP0_PWSize));
10455
register_name = "PWSize";
10456
break;
10457
default:
10458
@@ -XXX,XX +XXX,XX @@ static void gen_dmfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
10459
case CP0_REGISTER_08:
10460
switch (sel) {
10461
case CP0_REG08__BADVADDR:
10462
- tcg_gen_ld_tl(arg, cpu_env, offsetof(CPUMIPSState, CP0_BadVAddr));
10463
+ tcg_gen_ld_tl(arg, tcg_env, offsetof(CPUMIPSState, CP0_BadVAddr));
10464
register_name = "BadVAddr";
10465
break;
10466
case CP0_REG08__BADINSTR:
10467
@@ -XXX,XX +XXX,XX @@ static void gen_dmfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
10468
case CP0_REG09__COUNT:
10469
/* Mark as an IO operation because we read the time. */
10470
translator_io_start(&ctx->base);
10471
- gen_helper_mfc0_count(arg, cpu_env);
10472
+ gen_helper_mfc0_count(arg, tcg_env);
10473
/*
10474
* Break the TB to be able to take timer interrupts immediately
10475
* after reading count. DISAS_STOP isn't sufficient, we need to
10476
@@ -XXX,XX +XXX,XX @@ static void gen_dmfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
10477
break;
10478
case CP0_REG09__SAAR:
10479
CP0_CHECK(ctx->saar);
10480
- gen_helper_dmfc0_saar(arg, cpu_env);
10481
+ gen_helper_dmfc0_saar(arg, tcg_env);
10482
register_name = "SAAR";
10483
break;
10484
default:
10485
@@ -XXX,XX +XXX,XX @@ static void gen_dmfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
10486
case CP0_REGISTER_10:
10487
switch (sel) {
10488
case CP0_REG10__ENTRYHI:
10489
- tcg_gen_ld_tl(arg, cpu_env, offsetof(CPUMIPSState, CP0_EntryHi));
10490
+ tcg_gen_ld_tl(arg, tcg_env, offsetof(CPUMIPSState, CP0_EntryHi));
10491
register_name = "EntryHi";
10492
break;
10493
default:
10494
@@ -XXX,XX +XXX,XX @@ static void gen_dmfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
10495
case CP0_REGISTER_14:
10496
switch (sel) {
10497
case CP0_REG14__EPC:
10498
- tcg_gen_ld_tl(arg, cpu_env, offsetof(CPUMIPSState, CP0_EPC));
10499
+ tcg_gen_ld_tl(arg, tcg_env, offsetof(CPUMIPSState, CP0_EPC));
10500
register_name = "EPC";
10501
break;
10502
default:
10503
@@ -XXX,XX +XXX,XX @@ static void gen_dmfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
10504
break;
10505
case CP0_REG15__EBASE:
10506
check_insn(ctx, ISA_MIPS_R2);
10507
- tcg_gen_ld_tl(arg, cpu_env, offsetof(CPUMIPSState, CP0_EBase));
10508
+ tcg_gen_ld_tl(arg, tcg_env, offsetof(CPUMIPSState, CP0_EBase));
10509
register_name = "EBase";
10510
break;
10511
case CP0_REG15__CMGCRBASE:
10512
check_insn(ctx, ISA_MIPS_R2);
10513
CP0_CHECK(ctx->cmgcr);
10514
- tcg_gen_ld_tl(arg, cpu_env, offsetof(CPUMIPSState, CP0_CMGCRBase));
10515
+ tcg_gen_ld_tl(arg, tcg_env, offsetof(CPUMIPSState, CP0_CMGCRBase));
10516
register_name = "CMGCRBase";
10517
break;
10518
default:
10519
@@ -XXX,XX +XXX,XX @@ static void gen_dmfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
10520
case CP0_REGISTER_17:
10521
switch (sel) {
10522
case CP0_REG17__LLADDR:
10523
- gen_helper_dmfc0_lladdr(arg, cpu_env);
10524
+ gen_helper_dmfc0_lladdr(arg, tcg_env);
10525
register_name = "LLAddr";
10526
break;
10527
case CP0_REG17__MAAR:
10528
CP0_CHECK(ctx->mrp);
10529
- gen_helper_dmfc0_maar(arg, cpu_env);
10530
+ gen_helper_dmfc0_maar(arg, tcg_env);
10531
register_name = "MAAR";
10532
break;
10533
case CP0_REG17__MAARI:
10534
@@ -XXX,XX +XXX,XX @@ static void gen_dmfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
10535
switch (sel) {
10536
case CP0_REG20__XCONTEXT:
10537
check_insn(ctx, ISA_MIPS3);
10538
- tcg_gen_ld_tl(arg, cpu_env, offsetof(CPUMIPSState, CP0_XContext));
10539
+ tcg_gen_ld_tl(arg, tcg_env, offsetof(CPUMIPSState, CP0_XContext));
10540
register_name = "XContext";
10541
break;
10542
default:
10543
@@ -XXX,XX +XXX,XX @@ static void gen_dmfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
10544
case CP0_REGISTER_23:
10545
switch (sel) {
10546
case CP0_REG23__DEBUG:
10547
- gen_helper_mfc0_debug(arg, cpu_env); /* EJTAG support */
10548
+ gen_helper_mfc0_debug(arg, tcg_env); /* EJTAG support */
10549
register_name = "Debug";
10550
break;
10551
case CP0_REG23__TRACECONTROL:
10552
/* PDtrace support */
10553
- /* gen_helper_dmfc0_tracecontrol(arg, cpu_env); */
10554
+ /* gen_helper_dmfc0_tracecontrol(arg, tcg_env); */
10555
register_name = "TraceControl";
10556
goto cp0_unimplemented;
10557
case CP0_REG23__TRACECONTROL2:
10558
/* PDtrace support */
10559
- /* gen_helper_dmfc0_tracecontrol2(arg, cpu_env); */
10560
+ /* gen_helper_dmfc0_tracecontrol2(arg, tcg_env); */
10561
register_name = "TraceControl2";
10562
goto cp0_unimplemented;
10563
case CP0_REG23__USERTRACEDATA1:
10564
/* PDtrace support */
10565
- /* gen_helper_dmfc0_usertracedata1(arg, cpu_env);*/
10566
+ /* gen_helper_dmfc0_usertracedata1(arg, tcg_env);*/
10567
register_name = "UserTraceData1";
10568
goto cp0_unimplemented;
10569
case CP0_REG23__TRACEIBPC:
10570
/* PDtrace support */
10571
- /* gen_helper_dmfc0_traceibpc(arg, cpu_env); */
10572
+ /* gen_helper_dmfc0_traceibpc(arg, tcg_env); */
10573
register_name = "TraceIBPC";
10574
goto cp0_unimplemented;
10575
case CP0_REG23__TRACEDBPC:
10576
/* PDtrace support */
10577
- /* gen_helper_dmfc0_tracedbpc(arg, cpu_env); */
10578
+ /* gen_helper_dmfc0_tracedbpc(arg, tcg_env); */
10579
register_name = "TraceDBPC";
10580
goto cp0_unimplemented;
10581
default:
10582
@@ -XXX,XX +XXX,XX @@ static void gen_dmfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
10583
switch (sel) {
10584
case CP0_REG24__DEPC:
10585
/* EJTAG support */
10586
- tcg_gen_ld_tl(arg, cpu_env, offsetof(CPUMIPSState, CP0_DEPC));
10587
+ tcg_gen_ld_tl(arg, tcg_env, offsetof(CPUMIPSState, CP0_DEPC));
10588
register_name = "DEPC";
10589
break;
10590
default:
10591
@@ -XXX,XX +XXX,XX @@ static void gen_dmfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
10592
case CP0_REGISTER_30:
10593
switch (sel) {
10594
case CP0_REG30__ERROREPC:
10595
- tcg_gen_ld_tl(arg, cpu_env, offsetof(CPUMIPSState, CP0_ErrorEPC));
10596
+ tcg_gen_ld_tl(arg, tcg_env, offsetof(CPUMIPSState, CP0_ErrorEPC));
10597
register_name = "ErrorEPC";
10598
break;
10599
default:
10600
@@ -XXX,XX +XXX,XX @@ static void gen_dmfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
10601
case CP0_REG31__KSCRATCH5:
10602
case CP0_REG31__KSCRATCH6:
10603
CP0_CHECK(ctx->kscrexist & (1 << sel));
10604
- tcg_gen_ld_tl(arg, cpu_env,
10605
+ tcg_gen_ld_tl(arg, tcg_env,
10606
offsetof(CPUMIPSState, CP0_KScratch[sel - 2]));
10607
register_name = "KScratch";
10608
break;
10609
@@ -XXX,XX +XXX,XX @@ static void gen_dmtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
10610
case CP0_REGISTER_00:
10611
switch (sel) {
10612
case CP0_REG00__INDEX:
10613
- gen_helper_mtc0_index(cpu_env, arg);
10614
+ gen_helper_mtc0_index(tcg_env, arg);
10615
register_name = "Index";
10616
break;
10617
case CP0_REG00__MVPCONTROL:
10618
CP0_CHECK(ctx->insn_flags & ASE_MT);
10619
- gen_helper_mtc0_mvpcontrol(cpu_env, arg);
10620
+ gen_helper_mtc0_mvpcontrol(tcg_env, arg);
10621
register_name = "MVPControl";
10622
break;
10623
case CP0_REG00__MVPCONF0:
10624
@@ -XXX,XX +XXX,XX @@ static void gen_dmtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
10625
break;
10626
case CP0_REG01__VPECONTROL:
10627
CP0_CHECK(ctx->insn_flags & ASE_MT);
10628
- gen_helper_mtc0_vpecontrol(cpu_env, arg);
10629
+ gen_helper_mtc0_vpecontrol(tcg_env, arg);
10630
register_name = "VPEControl";
10631
break;
10632
case CP0_REG01__VPECONF0:
10633
CP0_CHECK(ctx->insn_flags & ASE_MT);
10634
- gen_helper_mtc0_vpeconf0(cpu_env, arg);
10635
+ gen_helper_mtc0_vpeconf0(tcg_env, arg);
10636
register_name = "VPEConf0";
10637
break;
10638
case CP0_REG01__VPECONF1:
10639
CP0_CHECK(ctx->insn_flags & ASE_MT);
10640
- gen_helper_mtc0_vpeconf1(cpu_env, arg);
10641
+ gen_helper_mtc0_vpeconf1(tcg_env, arg);
10642
register_name = "VPEConf1";
10643
break;
10644
case CP0_REG01__YQMASK:
10645
CP0_CHECK(ctx->insn_flags & ASE_MT);
10646
- gen_helper_mtc0_yqmask(cpu_env, arg);
10647
+ gen_helper_mtc0_yqmask(tcg_env, arg);
10648
register_name = "YQMask";
10649
break;
10650
case CP0_REG01__VPESCHEDULE:
10651
CP0_CHECK(ctx->insn_flags & ASE_MT);
10652
- tcg_gen_st_tl(arg, cpu_env,
10653
+ tcg_gen_st_tl(arg, tcg_env,
10654
offsetof(CPUMIPSState, CP0_VPESchedule));
10655
register_name = "VPESchedule";
10656
break;
10657
case CP0_REG01__VPESCHEFBACK:
10658
CP0_CHECK(ctx->insn_flags & ASE_MT);
10659
- tcg_gen_st_tl(arg, cpu_env,
10660
+ tcg_gen_st_tl(arg, tcg_env,
10661
offsetof(CPUMIPSState, CP0_VPEScheFBack));
10662
register_name = "VPEScheFBack";
10663
break;
10664
case CP0_REG01__VPEOPT:
10665
CP0_CHECK(ctx->insn_flags & ASE_MT);
10666
- gen_helper_mtc0_vpeopt(cpu_env, arg);
10667
+ gen_helper_mtc0_vpeopt(tcg_env, arg);
10668
register_name = "VPEOpt";
10669
break;
10670
default:
10671
@@ -XXX,XX +XXX,XX @@ static void gen_dmtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
10672
case CP0_REGISTER_02:
10673
switch (sel) {
10674
case CP0_REG02__ENTRYLO0:
10675
- gen_helper_dmtc0_entrylo0(cpu_env, arg);
10676
+ gen_helper_dmtc0_entrylo0(tcg_env, arg);
10677
register_name = "EntryLo0";
10678
break;
10679
case CP0_REG02__TCSTATUS:
10680
CP0_CHECK(ctx->insn_flags & ASE_MT);
10681
- gen_helper_mtc0_tcstatus(cpu_env, arg);
10682
+ gen_helper_mtc0_tcstatus(tcg_env, arg);
10683
register_name = "TCStatus";
10684
break;
10685
case CP0_REG02__TCBIND:
10686
CP0_CHECK(ctx->insn_flags & ASE_MT);
10687
- gen_helper_mtc0_tcbind(cpu_env, arg);
10688
+ gen_helper_mtc0_tcbind(tcg_env, arg);
10689
register_name = "TCBind";
10690
break;
10691
case CP0_REG02__TCRESTART:
10692
CP0_CHECK(ctx->insn_flags & ASE_MT);
10693
- gen_helper_mtc0_tcrestart(cpu_env, arg);
10694
+ gen_helper_mtc0_tcrestart(tcg_env, arg);
10695
register_name = "TCRestart";
10696
break;
10697
case CP0_REG02__TCHALT:
10698
CP0_CHECK(ctx->insn_flags & ASE_MT);
10699
- gen_helper_mtc0_tchalt(cpu_env, arg);
10700
+ gen_helper_mtc0_tchalt(tcg_env, arg);
10701
register_name = "TCHalt";
10702
break;
10703
case CP0_REG02__TCCONTEXT:
10704
CP0_CHECK(ctx->insn_flags & ASE_MT);
10705
- gen_helper_mtc0_tccontext(cpu_env, arg);
10706
+ gen_helper_mtc0_tccontext(tcg_env, arg);
10707
register_name = "TCContext";
10708
break;
10709
case CP0_REG02__TCSCHEDULE:
10710
CP0_CHECK(ctx->insn_flags & ASE_MT);
10711
- gen_helper_mtc0_tcschedule(cpu_env, arg);
10712
+ gen_helper_mtc0_tcschedule(tcg_env, arg);
10713
register_name = "TCSchedule";
10714
break;
10715
case CP0_REG02__TCSCHEFBACK:
10716
CP0_CHECK(ctx->insn_flags & ASE_MT);
10717
- gen_helper_mtc0_tcschefback(cpu_env, arg);
10718
+ gen_helper_mtc0_tcschefback(tcg_env, arg);
10719
register_name = "TCScheFBack";
10720
break;
10721
default:
10722
@@ -XXX,XX +XXX,XX @@ static void gen_dmtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
10723
case CP0_REGISTER_03:
10724
switch (sel) {
10725
case CP0_REG03__ENTRYLO1:
10726
- gen_helper_dmtc0_entrylo1(cpu_env, arg);
10727
+ gen_helper_dmtc0_entrylo1(tcg_env, arg);
10728
register_name = "EntryLo1";
10729
break;
10730
case CP0_REG03__GLOBALNUM:
10731
@@ -XXX,XX +XXX,XX @@ static void gen_dmtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
10732
case CP0_REGISTER_04:
10733
switch (sel) {
10734
case CP0_REG04__CONTEXT:
10735
- gen_helper_mtc0_context(cpu_env, arg);
10736
+ gen_helper_mtc0_context(tcg_env, arg);
10737
register_name = "Context";
10738
break;
10739
case CP0_REG04__CONTEXTCONFIG:
10740
@@ -XXX,XX +XXX,XX @@ static void gen_dmtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
10741
goto cp0_unimplemented;
10742
case CP0_REG04__USERLOCAL:
10743
CP0_CHECK(ctx->ulri);
10744
- tcg_gen_st_tl(arg, cpu_env,
10745
+ tcg_gen_st_tl(arg, tcg_env,
10746
offsetof(CPUMIPSState, active_tc.CP0_UserLocal));
10747
register_name = "UserLocal";
10748
break;
10749
@@ -XXX,XX +XXX,XX @@ static void gen_dmtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
10750
case CP0_REGISTER_05:
10751
switch (sel) {
10752
case CP0_REG05__PAGEMASK:
10753
- gen_helper_mtc0_pagemask(cpu_env, arg);
10754
+ gen_helper_mtc0_pagemask(tcg_env, arg);
10755
register_name = "PageMask";
10756
break;
10757
case CP0_REG05__PAGEGRAIN:
10758
check_insn(ctx, ISA_MIPS_R2);
10759
- gen_helper_mtc0_pagegrain(cpu_env, arg);
10760
+ gen_helper_mtc0_pagegrain(tcg_env, arg);
10761
register_name = "PageGrain";
10762
break;
10763
case CP0_REG05__SEGCTL0:
10764
CP0_CHECK(ctx->sc);
10765
- gen_helper_mtc0_segctl0(cpu_env, arg);
10766
+ gen_helper_mtc0_segctl0(tcg_env, arg);
10767
register_name = "SegCtl0";
10768
break;
10769
case CP0_REG05__SEGCTL1:
10770
CP0_CHECK(ctx->sc);
10771
- gen_helper_mtc0_segctl1(cpu_env, arg);
10772
+ gen_helper_mtc0_segctl1(tcg_env, arg);
10773
register_name = "SegCtl1";
10774
break;
10775
case CP0_REG05__SEGCTL2:
10776
CP0_CHECK(ctx->sc);
10777
- gen_helper_mtc0_segctl2(cpu_env, arg);
10778
+ gen_helper_mtc0_segctl2(tcg_env, arg);
10779
register_name = "SegCtl2";
10780
break;
10781
case CP0_REG05__PWBASE:
10782
check_pw(ctx);
10783
- tcg_gen_st_tl(arg, cpu_env, offsetof(CPUMIPSState, CP0_PWBase));
10784
+ tcg_gen_st_tl(arg, tcg_env, offsetof(CPUMIPSState, CP0_PWBase));
10785
register_name = "PWBase";
10786
break;
10787
case CP0_REG05__PWFIELD:
10788
check_pw(ctx);
10789
- gen_helper_mtc0_pwfield(cpu_env, arg);
10790
+ gen_helper_mtc0_pwfield(tcg_env, arg);
10791
register_name = "PWField";
10792
break;
10793
case CP0_REG05__PWSIZE:
10794
check_pw(ctx);
10795
- gen_helper_mtc0_pwsize(cpu_env, arg);
10796
+ gen_helper_mtc0_pwsize(tcg_env, arg);
10797
register_name = "PWSize";
10798
break;
10799
default:
10800
@@ -XXX,XX +XXX,XX @@ static void gen_dmtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
10801
case CP0_REGISTER_06:
10802
switch (sel) {
10803
case CP0_REG06__WIRED:
10804
- gen_helper_mtc0_wired(cpu_env, arg);
10805
+ gen_helper_mtc0_wired(tcg_env, arg);
10806
register_name = "Wired";
10807
break;
10808
case CP0_REG06__SRSCONF0:
10809
check_insn(ctx, ISA_MIPS_R2);
10810
- gen_helper_mtc0_srsconf0(cpu_env, arg);
10811
+ gen_helper_mtc0_srsconf0(tcg_env, arg);
10812
register_name = "SRSConf0";
10813
break;
10814
case CP0_REG06__SRSCONF1:
10815
check_insn(ctx, ISA_MIPS_R2);
10816
- gen_helper_mtc0_srsconf1(cpu_env, arg);
10817
+ gen_helper_mtc0_srsconf1(tcg_env, arg);
10818
register_name = "SRSConf1";
10819
break;
10820
case CP0_REG06__SRSCONF2:
10821
check_insn(ctx, ISA_MIPS_R2);
10822
- gen_helper_mtc0_srsconf2(cpu_env, arg);
10823
+ gen_helper_mtc0_srsconf2(tcg_env, arg);
10824
register_name = "SRSConf2";
10825
break;
10826
case CP0_REG06__SRSCONF3:
10827
check_insn(ctx, ISA_MIPS_R2);
10828
- gen_helper_mtc0_srsconf3(cpu_env, arg);
10829
+ gen_helper_mtc0_srsconf3(tcg_env, arg);
10830
register_name = "SRSConf3";
10831
break;
10832
case CP0_REG06__SRSCONF4:
10833
check_insn(ctx, ISA_MIPS_R2);
10834
- gen_helper_mtc0_srsconf4(cpu_env, arg);
10835
+ gen_helper_mtc0_srsconf4(tcg_env, arg);
10836
register_name = "SRSConf4";
10837
break;
10838
case CP0_REG06__PWCTL:
10839
check_pw(ctx);
10840
- gen_helper_mtc0_pwctl(cpu_env, arg);
10841
+ gen_helper_mtc0_pwctl(tcg_env, arg);
10842
register_name = "PWCtl";
10843
break;
10844
default:
10845
@@ -XXX,XX +XXX,XX @@ static void gen_dmtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
10846
switch (sel) {
10847
case CP0_REG07__HWRENA:
10848
check_insn(ctx, ISA_MIPS_R2);
10849
- gen_helper_mtc0_hwrena(cpu_env, arg);
10850
+ gen_helper_mtc0_hwrena(tcg_env, arg);
10851
ctx->base.is_jmp = DISAS_STOP;
10852
register_name = "HWREna";
10853
break;
10854
@@ -XXX,XX +XXX,XX @@ static void gen_dmtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
10855
case CP0_REGISTER_09:
10856
switch (sel) {
10857
case CP0_REG09__COUNT:
10858
- gen_helper_mtc0_count(cpu_env, arg);
10859
+ gen_helper_mtc0_count(tcg_env, arg);
10860
register_name = "Count";
10861
break;
10862
case CP0_REG09__SAARI:
10863
CP0_CHECK(ctx->saar);
10864
- gen_helper_mtc0_saari(cpu_env, arg);
10865
+ gen_helper_mtc0_saari(tcg_env, arg);
10866
register_name = "SAARI";
10867
break;
10868
case CP0_REG09__SAAR:
10869
CP0_CHECK(ctx->saar);
10870
- gen_helper_mtc0_saar(cpu_env, arg);
10871
+ gen_helper_mtc0_saar(tcg_env, arg);
10872
register_name = "SAAR";
10873
break;
10874
default:
10875
@@ -XXX,XX +XXX,XX @@ static void gen_dmtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
10876
case CP0_REGISTER_10:
10877
switch (sel) {
10878
case CP0_REG10__ENTRYHI:
10879
- gen_helper_mtc0_entryhi(cpu_env, arg);
10880
+ gen_helper_mtc0_entryhi(tcg_env, arg);
10881
register_name = "EntryHi";
10882
break;
10883
default:
10884
@@ -XXX,XX +XXX,XX @@ static void gen_dmtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
10885
case CP0_REGISTER_11:
10886
switch (sel) {
10887
case CP0_REG11__COMPARE:
10888
- gen_helper_mtc0_compare(cpu_env, arg);
10889
+ gen_helper_mtc0_compare(tcg_env, arg);
10890
register_name = "Compare";
10891
break;
10892
/* 6,7 are implementation dependent */
10893
@@ -XXX,XX +XXX,XX @@ static void gen_dmtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
10894
switch (sel) {
10895
case CP0_REG12__STATUS:
10896
save_cpu_state(ctx, 1);
10897
- gen_helper_mtc0_status(cpu_env, arg);
10898
+ gen_helper_mtc0_status(tcg_env, arg);
10899
/* DISAS_STOP isn't good enough here, hflags may have changed. */
10900
gen_save_pc(ctx->base.pc_next + 4);
10901
ctx->base.is_jmp = DISAS_EXIT;
10902
@@ -XXX,XX +XXX,XX @@ static void gen_dmtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
10903
break;
10904
case CP0_REG12__INTCTL:
10905
check_insn(ctx, ISA_MIPS_R2);
10906
- gen_helper_mtc0_intctl(cpu_env, arg);
10907
+ gen_helper_mtc0_intctl(tcg_env, arg);
10908
/* Stop translation as we may have switched the execution mode */
10909
ctx->base.is_jmp = DISAS_STOP;
10910
register_name = "IntCtl";
10911
break;
10912
case CP0_REG12__SRSCTL:
10913
check_insn(ctx, ISA_MIPS_R2);
10914
- gen_helper_mtc0_srsctl(cpu_env, arg);
10915
+ gen_helper_mtc0_srsctl(tcg_env, arg);
10916
/* Stop translation as we may have switched the execution mode */
10917
ctx->base.is_jmp = DISAS_STOP;
10918
register_name = "SRSCtl";
10919
@@ -XXX,XX +XXX,XX @@ static void gen_dmtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
10920
switch (sel) {
10921
case CP0_REG13__CAUSE:
10922
save_cpu_state(ctx, 1);
10923
- gen_helper_mtc0_cause(cpu_env, arg);
10924
+ gen_helper_mtc0_cause(tcg_env, arg);
10925
/*
10926
* Stop translation as we may have triggered an interrupt.
10927
* DISAS_STOP isn't sufficient, we need to ensure we break out of
10928
@@ -XXX,XX +XXX,XX @@ static void gen_dmtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
10929
case CP0_REGISTER_14:
10930
switch (sel) {
10931
case CP0_REG14__EPC:
10932
- tcg_gen_st_tl(arg, cpu_env, offsetof(CPUMIPSState, CP0_EPC));
10933
+ tcg_gen_st_tl(arg, tcg_env, offsetof(CPUMIPSState, CP0_EPC));
10934
register_name = "EPC";
10935
break;
10936
default:
10937
@@ -XXX,XX +XXX,XX @@ static void gen_dmtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
10938
break;
10939
case CP0_REG15__EBASE:
10940
check_insn(ctx, ISA_MIPS_R2);
10941
- gen_helper_mtc0_ebase(cpu_env, arg);
10942
+ gen_helper_mtc0_ebase(tcg_env, arg);
10943
register_name = "EBase";
10944
break;
10945
default:
10946
@@ -XXX,XX +XXX,XX @@ static void gen_dmtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
10947
case CP0_REGISTER_16:
10948
switch (sel) {
10949
case CP0_REG16__CONFIG:
10950
- gen_helper_mtc0_config0(cpu_env, arg);
10951
+ gen_helper_mtc0_config0(tcg_env, arg);
10952
register_name = "Config";
10953
/* Stop translation as we may have switched the execution mode */
10954
ctx->base.is_jmp = DISAS_STOP;
10955
@@ -XXX,XX +XXX,XX @@ static void gen_dmtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
10956
register_name = "Config1";
10957
break;
10958
case CP0_REG16__CONFIG2:
10959
- gen_helper_mtc0_config2(cpu_env, arg);
10960
+ gen_helper_mtc0_config2(tcg_env, arg);
10961
register_name = "Config2";
10962
/* Stop translation as we may have switched the execution mode */
10963
ctx->base.is_jmp = DISAS_STOP;
10964
break;
10965
case CP0_REG16__CONFIG3:
10966
- gen_helper_mtc0_config3(cpu_env, arg);
10967
+ gen_helper_mtc0_config3(tcg_env, arg);
10968
register_name = "Config3";
10969
/* Stop translation as we may have switched the execution mode */
10970
ctx->base.is_jmp = DISAS_STOP;
10971
@@ -XXX,XX +XXX,XX @@ static void gen_dmtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
10972
register_name = "Config4";
10973
break;
10974
case CP0_REG16__CONFIG5:
10975
- gen_helper_mtc0_config5(cpu_env, arg);
10976
+ gen_helper_mtc0_config5(tcg_env, arg);
10977
register_name = "Config5";
10978
/* Stop translation as we may have switched the execution mode */
10979
ctx->base.is_jmp = DISAS_STOP;
10980
@@ -XXX,XX +XXX,XX @@ static void gen_dmtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
10981
case CP0_REGISTER_17:
10982
switch (sel) {
10983
case CP0_REG17__LLADDR:
10984
- gen_helper_mtc0_lladdr(cpu_env, arg);
10985
+ gen_helper_mtc0_lladdr(tcg_env, arg);
10986
register_name = "LLAddr";
10987
break;
10988
case CP0_REG17__MAAR:
10989
CP0_CHECK(ctx->mrp);
10990
- gen_helper_mtc0_maar(cpu_env, arg);
10991
+ gen_helper_mtc0_maar(tcg_env, arg);
10992
register_name = "MAAR";
10993
break;
10994
case CP0_REG17__MAARI:
10995
CP0_CHECK(ctx->mrp);
10996
- gen_helper_mtc0_maari(cpu_env, arg);
10997
+ gen_helper_mtc0_maari(tcg_env, arg);
10998
register_name = "MAARI";
10999
break;
11000
default:
11001
@@ -XXX,XX +XXX,XX @@ static void gen_dmtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
11002
switch (sel) {
11003
case CP0_REG20__XCONTEXT:
11004
check_insn(ctx, ISA_MIPS3);
11005
- gen_helper_mtc0_xcontext(cpu_env, arg);
11006
+ gen_helper_mtc0_xcontext(tcg_env, arg);
11007
register_name = "XContext";
11008
break;
11009
default:
11010
@@ -XXX,XX +XXX,XX @@ static void gen_dmtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
11011
CP0_CHECK(!(ctx->insn_flags & ISA_MIPS_R6));
11012
switch (sel) {
11013
case 0:
11014
- gen_helper_mtc0_framemask(cpu_env, arg);
11015
+ gen_helper_mtc0_framemask(tcg_env, arg);
11016
register_name = "Framemask";
11017
break;
11018
default:
11019
@@ -XXX,XX +XXX,XX @@ static void gen_dmtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
11020
case CP0_REGISTER_23:
11021
switch (sel) {
11022
case CP0_REG23__DEBUG:
11023
- gen_helper_mtc0_debug(cpu_env, arg); /* EJTAG support */
11024
+ gen_helper_mtc0_debug(tcg_env, arg); /* EJTAG support */
11025
/* DISAS_STOP isn't good enough here, hflags may have changed. */
11026
gen_save_pc(ctx->base.pc_next + 4);
11027
ctx->base.is_jmp = DISAS_EXIT;
11028
@@ -XXX,XX +XXX,XX @@ static void gen_dmtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
11029
break;
11030
case CP0_REG23__TRACECONTROL:
11031
/* PDtrace support */
11032
- /* gen_helper_mtc0_tracecontrol(cpu_env, arg); */
11033
+ /* gen_helper_mtc0_tracecontrol(tcg_env, arg); */
11034
/* Stop translation as we may have switched the execution mode */
11035
ctx->base.is_jmp = DISAS_STOP;
11036
register_name = "TraceControl";
11037
goto cp0_unimplemented;
11038
case CP0_REG23__TRACECONTROL2:
11039
/* PDtrace support */
11040
- /* gen_helper_mtc0_tracecontrol2(cpu_env, arg); */
11041
+ /* gen_helper_mtc0_tracecontrol2(tcg_env, arg); */
11042
/* Stop translation as we may have switched the execution mode */
11043
ctx->base.is_jmp = DISAS_STOP;
11044
register_name = "TraceControl2";
11045
goto cp0_unimplemented;
11046
case CP0_REG23__USERTRACEDATA1:
11047
/* PDtrace support */
11048
- /* gen_helper_mtc0_usertracedata1(cpu_env, arg);*/
11049
+ /* gen_helper_mtc0_usertracedata1(tcg_env, arg);*/
11050
/* Stop translation as we may have switched the execution mode */
11051
ctx->base.is_jmp = DISAS_STOP;
11052
register_name = "UserTraceData1";
11053
goto cp0_unimplemented;
11054
case CP0_REG23__TRACEIBPC:
11055
/* PDtrace support */
11056
- /* gen_helper_mtc0_traceibpc(cpu_env, arg); */
11057
+ /* gen_helper_mtc0_traceibpc(tcg_env, arg); */
11058
/* Stop translation as we may have switched the execution mode */
11059
ctx->base.is_jmp = DISAS_STOP;
11060
register_name = "TraceIBPC";
11061
goto cp0_unimplemented;
11062
case CP0_REG23__TRACEDBPC:
11063
/* PDtrace support */
11064
- /* gen_helper_mtc0_tracedbpc(cpu_env, arg); */
11065
+ /* gen_helper_mtc0_tracedbpc(tcg_env, arg); */
11066
/* Stop translation as we may have switched the execution mode */
11067
ctx->base.is_jmp = DISAS_STOP;
11068
register_name = "TraceDBPC";
11069
@@ -XXX,XX +XXX,XX @@ static void gen_dmtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
11070
switch (sel) {
11071
case CP0_REG24__DEPC:
11072
/* EJTAG support */
11073
- tcg_gen_st_tl(arg, cpu_env, offsetof(CPUMIPSState, CP0_DEPC));
11074
+ tcg_gen_st_tl(arg, tcg_env, offsetof(CPUMIPSState, CP0_DEPC));
11075
register_name = "DEPC";
11076
break;
11077
default:
11078
@@ -XXX,XX +XXX,XX @@ static void gen_dmtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
11079
case CP0_REGISTER_25:
11080
switch (sel) {
11081
case CP0_REG25__PERFCTL0:
11082
- gen_helper_mtc0_performance0(cpu_env, arg);
11083
+ gen_helper_mtc0_performance0(tcg_env, arg);
11084
register_name = "Performance0";
11085
break;
11086
case CP0_REG25__PERFCNT0:
11087
- /* gen_helper_mtc0_performance1(cpu_env, arg); */
11088
+ /* gen_helper_mtc0_performance1(tcg_env, arg); */
11089
register_name = "Performance1";
11090
goto cp0_unimplemented;
11091
case CP0_REG25__PERFCTL1:
11092
- /* gen_helper_mtc0_performance2(cpu_env, arg); */
11093
+ /* gen_helper_mtc0_performance2(tcg_env, arg); */
11094
register_name = "Performance2";
11095
goto cp0_unimplemented;
11096
case CP0_REG25__PERFCNT1:
11097
- /* gen_helper_mtc0_performance3(cpu_env, arg); */
11098
+ /* gen_helper_mtc0_performance3(tcg_env, arg); */
11099
register_name = "Performance3";
11100
goto cp0_unimplemented;
11101
case CP0_REG25__PERFCTL2:
11102
- /* gen_helper_mtc0_performance4(cpu_env, arg); */
11103
+ /* gen_helper_mtc0_performance4(tcg_env, arg); */
11104
register_name = "Performance4";
11105
goto cp0_unimplemented;
11106
case CP0_REG25__PERFCNT2:
11107
- /* gen_helper_mtc0_performance5(cpu_env, arg); */
11108
+ /* gen_helper_mtc0_performance5(tcg_env, arg); */
11109
register_name = "Performance5";
11110
goto cp0_unimplemented;
11111
case CP0_REG25__PERFCTL3:
11112
- /* gen_helper_mtc0_performance6(cpu_env, arg); */
11113
+ /* gen_helper_mtc0_performance6(tcg_env, arg); */
11114
register_name = "Performance6";
11115
goto cp0_unimplemented;
11116
case CP0_REG25__PERFCNT3:
11117
- /* gen_helper_mtc0_performance7(cpu_env, arg); */
11118
+ /* gen_helper_mtc0_performance7(tcg_env, arg); */
11119
register_name = "Performance7";
11120
goto cp0_unimplemented;
11121
default:
11122
@@ -XXX,XX +XXX,XX @@ static void gen_dmtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
11123
case CP0_REGISTER_26:
11124
switch (sel) {
11125
case CP0_REG26__ERRCTL:
11126
- gen_helper_mtc0_errctl(cpu_env, arg);
11127
+ gen_helper_mtc0_errctl(tcg_env, arg);
11128
ctx->base.is_jmp = DISAS_STOP;
11129
register_name = "ErrCtl";
11130
break;
11131
@@ -XXX,XX +XXX,XX @@ static void gen_dmtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
11132
case CP0_REG28__TAGLO1:
11133
case CP0_REG28__TAGLO2:
11134
case CP0_REG28__TAGLO3:
11135
- gen_helper_mtc0_taglo(cpu_env, arg);
11136
+ gen_helper_mtc0_taglo(tcg_env, arg);
11137
register_name = "TagLo";
11138
break;
11139
case CP0_REG28__DATALO:
11140
case CP0_REG28__DATALO1:
11141
case CP0_REG28__DATALO2:
11142
case CP0_REG28__DATALO3:
11143
- gen_helper_mtc0_datalo(cpu_env, arg);
11144
+ gen_helper_mtc0_datalo(tcg_env, arg);
11145
register_name = "DataLo";
11146
break;
11147
default:
11148
@@ -XXX,XX +XXX,XX @@ static void gen_dmtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
11149
case CP0_REG29__TAGHI1:
11150
case CP0_REG29__TAGHI2:
11151
case CP0_REG29__TAGHI3:
11152
- gen_helper_mtc0_taghi(cpu_env, arg);
11153
+ gen_helper_mtc0_taghi(tcg_env, arg);
11154
register_name = "TagHi";
11155
break;
11156
case CP0_REG29__DATAHI:
11157
case CP0_REG29__DATAHI1:
11158
case CP0_REG29__DATAHI2:
11159
case CP0_REG29__DATAHI3:
11160
- gen_helper_mtc0_datahi(cpu_env, arg);
11161
+ gen_helper_mtc0_datahi(tcg_env, arg);
11162
register_name = "DataHi";
11163
break;
11164
default:
11165
@@ -XXX,XX +XXX,XX @@ static void gen_dmtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
11166
case CP0_REGISTER_30:
11167
switch (sel) {
11168
case CP0_REG30__ERROREPC:
11169
- tcg_gen_st_tl(arg, cpu_env, offsetof(CPUMIPSState, CP0_ErrorEPC));
11170
+ tcg_gen_st_tl(arg, tcg_env, offsetof(CPUMIPSState, CP0_ErrorEPC));
11171
register_name = "ErrorEPC";
11172
break;
11173
default:
11174
@@ -XXX,XX +XXX,XX @@ static void gen_dmtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
11175
case CP0_REG31__KSCRATCH5:
11176
case CP0_REG31__KSCRATCH6:
11177
CP0_CHECK(ctx->kscrexist & (1 << sel));
11178
- tcg_gen_st_tl(arg, cpu_env,
11179
+ tcg_gen_st_tl(arg, tcg_env,
11180
offsetof(CPUMIPSState, CP0_KScratch[sel - 2]));
11181
register_name = "KScratch";
11182
break;
11183
@@ -XXX,XX +XXX,XX @@ static void gen_mftr(CPUMIPSState *env, DisasContext *ctx, int rt, int rd,
11184
case 1:
11185
switch (sel) {
11186
case 1:
11187
- gen_helper_mftc0_vpecontrol(t0, cpu_env);
11188
+ gen_helper_mftc0_vpecontrol(t0, tcg_env);
11189
break;
11190
case 2:
11191
- gen_helper_mftc0_vpeconf0(t0, cpu_env);
11192
+ gen_helper_mftc0_vpeconf0(t0, tcg_env);
11193
break;
11194
default:
11195
goto die;
11196
@@ -XXX,XX +XXX,XX @@ static void gen_mftr(CPUMIPSState *env, DisasContext *ctx, int rt, int rd,
11197
case 2:
11198
switch (sel) {
11199
case 1:
11200
- gen_helper_mftc0_tcstatus(t0, cpu_env);
11201
+ gen_helper_mftc0_tcstatus(t0, tcg_env);
11202
break;
11203
case 2:
11204
- gen_helper_mftc0_tcbind(t0, cpu_env);
11205
+ gen_helper_mftc0_tcbind(t0, tcg_env);
11206
break;
11207
case 3:
11208
- gen_helper_mftc0_tcrestart(t0, cpu_env);
11209
+ gen_helper_mftc0_tcrestart(t0, tcg_env);
11210
break;
11211
case 4:
11212
- gen_helper_mftc0_tchalt(t0, cpu_env);
11213
+ gen_helper_mftc0_tchalt(t0, tcg_env);
11214
break;
11215
case 5:
11216
- gen_helper_mftc0_tccontext(t0, cpu_env);
11217
+ gen_helper_mftc0_tccontext(t0, tcg_env);
11218
break;
11219
case 6:
11220
- gen_helper_mftc0_tcschedule(t0, cpu_env);
11221
+ gen_helper_mftc0_tcschedule(t0, tcg_env);
11222
break;
11223
case 7:
11224
- gen_helper_mftc0_tcschefback(t0, cpu_env);
11225
+ gen_helper_mftc0_tcschefback(t0, tcg_env);
11226
break;
11227
default:
11228
gen_mfc0(ctx, t0, rt, sel);
11229
@@ -XXX,XX +XXX,XX @@ static void gen_mftr(CPUMIPSState *env, DisasContext *ctx, int rt, int rd,
11230
case 10:
11231
switch (sel) {
11232
case 0:
11233
- gen_helper_mftc0_entryhi(t0, cpu_env);
11234
+ gen_helper_mftc0_entryhi(t0, tcg_env);
11235
break;
11236
default:
11237
gen_mfc0(ctx, t0, rt, sel);
11238
@@ -XXX,XX +XXX,XX @@ static void gen_mftr(CPUMIPSState *env, DisasContext *ctx, int rt, int rd,
11239
case 12:
11240
switch (sel) {
11241
case 0:
11242
- gen_helper_mftc0_status(t0, cpu_env);
11243
+ gen_helper_mftc0_status(t0, tcg_env);
11244
break;
11245
default:
11246
gen_mfc0(ctx, t0, rt, sel);
11247
@@ -XXX,XX +XXX,XX @@ static void gen_mftr(CPUMIPSState *env, DisasContext *ctx, int rt, int rd,
11248
case 13:
11249
switch (sel) {
11250
case 0:
11251
- gen_helper_mftc0_cause(t0, cpu_env);
11252
+ gen_helper_mftc0_cause(t0, tcg_env);
11253
break;
11254
default:
11255
goto die;
11256
@@ -XXX,XX +XXX,XX @@ static void gen_mftr(CPUMIPSState *env, DisasContext *ctx, int rt, int rd,
11257
case 14:
11258
switch (sel) {
11259
case 0:
11260
- gen_helper_mftc0_epc(t0, cpu_env);
11261
+ gen_helper_mftc0_epc(t0, tcg_env);
11262
break;
11263
default:
11264
goto die;
11265
@@ -XXX,XX +XXX,XX @@ static void gen_mftr(CPUMIPSState *env, DisasContext *ctx, int rt, int rd,
11266
case 15:
11267
switch (sel) {
11268
case 1:
11269
- gen_helper_mftc0_ebase(t0, cpu_env);
11270
+ gen_helper_mftc0_ebase(t0, tcg_env);
11271
break;
11272
default:
11273
goto die;
11274
@@ -XXX,XX +XXX,XX @@ static void gen_mftr(CPUMIPSState *env, DisasContext *ctx, int rt, int rd,
11275
case 5:
11276
case 6:
11277
case 7:
11278
- gen_helper_mftc0_configx(t0, cpu_env, tcg_constant_tl(sel));
11279
+ gen_helper_mftc0_configx(t0, tcg_env, tcg_constant_tl(sel));
11280
break;
11281
default:
11282
goto die;
11283
@@ -XXX,XX +XXX,XX @@ static void gen_mftr(CPUMIPSState *env, DisasContext *ctx, int rt, int rd,
11284
case 23:
11285
switch (sel) {
11286
case 0:
11287
- gen_helper_mftc0_debug(t0, cpu_env);
11288
+ gen_helper_mftc0_debug(t0, tcg_env);
11289
break;
11290
default:
11291
gen_mfc0(ctx, t0, rt, sel);
11292
@@ -XXX,XX +XXX,XX @@ static void gen_mftr(CPUMIPSState *env, DisasContext *ctx, int rt, int rd,
11293
gen_helper_1e0i(mftacx, t0, 3);
11294
break;
11295
case 16:
11296
- gen_helper_mftdsp(t0, cpu_env);
11297
+ gen_helper_mftdsp(t0, tcg_env);
11298
break;
11299
default:
11300
goto die;
11301
@@ -XXX,XX +XXX,XX @@ static void gen_mttr(CPUMIPSState *env, DisasContext *ctx, int rd, int rt,
11302
case 1:
11303
switch (sel) {
11304
case 1:
11305
- gen_helper_mttc0_vpecontrol(cpu_env, t0);
11306
+ gen_helper_mttc0_vpecontrol(tcg_env, t0);
11307
break;
11308
case 2:
11309
- gen_helper_mttc0_vpeconf0(cpu_env, t0);
11310
+ gen_helper_mttc0_vpeconf0(tcg_env, t0);
11311
break;
11312
default:
11313
goto die;
11314
@@ -XXX,XX +XXX,XX @@ static void gen_mttr(CPUMIPSState *env, DisasContext *ctx, int rd, int rt,
11315
case 2:
11316
switch (sel) {
11317
case 1:
11318
- gen_helper_mttc0_tcstatus(cpu_env, t0);
11319
+ gen_helper_mttc0_tcstatus(tcg_env, t0);
11320
break;
11321
case 2:
11322
- gen_helper_mttc0_tcbind(cpu_env, t0);
11323
+ gen_helper_mttc0_tcbind(tcg_env, t0);
11324
break;
11325
case 3:
11326
- gen_helper_mttc0_tcrestart(cpu_env, t0);
11327
+ gen_helper_mttc0_tcrestart(tcg_env, t0);
11328
break;
11329
case 4:
11330
- gen_helper_mttc0_tchalt(cpu_env, t0);
11331
+ gen_helper_mttc0_tchalt(tcg_env, t0);
11332
break;
11333
case 5:
11334
- gen_helper_mttc0_tccontext(cpu_env, t0);
11335
+ gen_helper_mttc0_tccontext(tcg_env, t0);
11336
break;
11337
case 6:
11338
- gen_helper_mttc0_tcschedule(cpu_env, t0);
11339
+ gen_helper_mttc0_tcschedule(tcg_env, t0);
11340
break;
11341
case 7:
11342
- gen_helper_mttc0_tcschefback(cpu_env, t0);
11343
+ gen_helper_mttc0_tcschefback(tcg_env, t0);
11344
break;
11345
default:
11346
gen_mtc0(ctx, t0, rd, sel);
11347
@@ -XXX,XX +XXX,XX @@ static void gen_mttr(CPUMIPSState *env, DisasContext *ctx, int rd, int rt,
11348
case 10:
11349
switch (sel) {
11350
case 0:
11351
- gen_helper_mttc0_entryhi(cpu_env, t0);
11352
+ gen_helper_mttc0_entryhi(tcg_env, t0);
11353
break;
11354
default:
11355
gen_mtc0(ctx, t0, rd, sel);
11356
@@ -XXX,XX +XXX,XX @@ static void gen_mttr(CPUMIPSState *env, DisasContext *ctx, int rd, int rt,
11357
case 12:
11358
switch (sel) {
11359
case 0:
11360
- gen_helper_mttc0_status(cpu_env, t0);
11361
+ gen_helper_mttc0_status(tcg_env, t0);
11362
break;
11363
default:
11364
gen_mtc0(ctx, t0, rd, sel);
11365
@@ -XXX,XX +XXX,XX @@ static void gen_mttr(CPUMIPSState *env, DisasContext *ctx, int rd, int rt,
11366
case 13:
11367
switch (sel) {
11368
case 0:
11369
- gen_helper_mttc0_cause(cpu_env, t0);
11370
+ gen_helper_mttc0_cause(tcg_env, t0);
11371
break;
11372
default:
11373
goto die;
11374
@@ -XXX,XX +XXX,XX @@ static void gen_mttr(CPUMIPSState *env, DisasContext *ctx, int rd, int rt,
11375
case 15:
11376
switch (sel) {
11377
case 1:
11378
- gen_helper_mttc0_ebase(cpu_env, t0);
11379
+ gen_helper_mttc0_ebase(tcg_env, t0);
11380
break;
11381
default:
11382
goto die;
11383
@@ -XXX,XX +XXX,XX @@ static void gen_mttr(CPUMIPSState *env, DisasContext *ctx, int rd, int rt,
11384
case 23:
11385
switch (sel) {
11386
case 0:
11387
- gen_helper_mttc0_debug(cpu_env, t0);
11388
+ gen_helper_mttc0_debug(tcg_env, t0);
11389
break;
11390
default:
11391
gen_mtc0(ctx, t0, rd, sel);
11392
@@ -XXX,XX +XXX,XX @@ static void gen_mttr(CPUMIPSState *env, DisasContext *ctx, int rd, int rt,
11393
gen_helper_0e1i(mttacx, t0, 3);
11394
break;
11395
case 16:
11396
- gen_helper_mttdsp(cpu_env, t0);
11397
+ gen_helper_mttdsp(tcg_env, t0);
11398
break;
11399
default:
11400
goto die;
11401
@@ -XXX,XX +XXX,XX @@ static void gen_cp0(CPUMIPSState *env, DisasContext *ctx, uint32_t opc,
11402
if (!env->tlb->helper_tlbwi) {
11403
goto die;
11404
}
11405
- gen_helper_tlbwi(cpu_env);
11406
+ gen_helper_tlbwi(tcg_env);
11407
break;
11408
case OPC_TLBINV:
11409
opn = "tlbinv";
11410
@@ -XXX,XX +XXX,XX @@ static void gen_cp0(CPUMIPSState *env, DisasContext *ctx, uint32_t opc,
11411
if (!env->tlb->helper_tlbinv) {
11412
goto die;
11413
}
11414
- gen_helper_tlbinv(cpu_env);
11415
+ gen_helper_tlbinv(tcg_env);
11416
} /* treat as nop if TLBINV not supported */
11417
break;
11418
case OPC_TLBINVF:
11419
@@ -XXX,XX +XXX,XX @@ static void gen_cp0(CPUMIPSState *env, DisasContext *ctx, uint32_t opc,
11420
if (!env->tlb->helper_tlbinvf) {
11421
goto die;
11422
}
11423
- gen_helper_tlbinvf(cpu_env);
11424
+ gen_helper_tlbinvf(tcg_env);
11425
} /* treat as nop if TLBINV not supported */
11426
break;
11427
case OPC_TLBWR:
11428
@@ -XXX,XX +XXX,XX @@ static void gen_cp0(CPUMIPSState *env, DisasContext *ctx, uint32_t opc,
11429
if (!env->tlb->helper_tlbwr) {
11430
goto die;
11431
}
11432
- gen_helper_tlbwr(cpu_env);
11433
+ gen_helper_tlbwr(tcg_env);
11434
break;
11435
case OPC_TLBP:
11436
opn = "tlbp";
11437
if (!env->tlb->helper_tlbp) {
11438
goto die;
11439
}
11440
- gen_helper_tlbp(cpu_env);
11441
+ gen_helper_tlbp(tcg_env);
11442
break;
11443
case OPC_TLBR:
11444
opn = "tlbr";
11445
if (!env->tlb->helper_tlbr) {
11446
goto die;
11447
}
11448
- gen_helper_tlbr(cpu_env);
11449
+ gen_helper_tlbr(tcg_env);
11450
break;
11451
case OPC_ERET: /* OPC_ERETNC */
11452
if ((ctx->insn_flags & ISA_MIPS_R6) &&
11453
@@ -XXX,XX +XXX,XX @@ static void gen_cp0(CPUMIPSState *env, DisasContext *ctx, uint32_t opc,
11454
/* OPC_ERETNC */
11455
opn = "eretnc";
11456
check_insn(ctx, ISA_MIPS_R5);
11457
- gen_helper_eretnc(cpu_env);
11458
+ gen_helper_eretnc(tcg_env);
11459
} else {
11460
/* OPC_ERET */
11461
opn = "eret";
11462
check_insn(ctx, ISA_MIPS2);
11463
- gen_helper_eret(cpu_env);
11464
+ gen_helper_eret(tcg_env);
11465
}
11466
ctx->base.is_jmp = DISAS_EXIT;
11467
}
11468
@@ -XXX,XX +XXX,XX @@ static void gen_cp0(CPUMIPSState *env, DisasContext *ctx, uint32_t opc,
11469
MIPS_INVAL(opn);
11470
gen_reserved_instruction(ctx);
11471
} else {
11472
- gen_helper_deret(cpu_env);
11473
+ gen_helper_deret(tcg_env);
11474
ctx->base.is_jmp = DISAS_EXIT;
11475
}
11476
break;
11477
@@ -XXX,XX +XXX,XX @@ static void gen_cp0(CPUMIPSState *env, DisasContext *ctx, uint32_t opc,
11478
ctx->base.pc_next += 4;
11479
save_cpu_state(ctx, 1);
11480
ctx->base.pc_next -= 4;
11481
- gen_helper_wait(cpu_env);
11482
+ gen_helper_wait(tcg_env);
11483
ctx->base.is_jmp = DISAS_NORETURN;
11484
break;
11485
default:
11486
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
11487
11488
gen_load_fpr32(ctx, fp0, fs);
11489
gen_load_fpr32(ctx, fp1, ft);
11490
- gen_helper_float_add_s(fp0, cpu_env, fp0, fp1);
11491
+ gen_helper_float_add_s(fp0, tcg_env, fp0, fp1);
11492
gen_store_fpr32(ctx, fp0, fd);
11493
}
11494
break;
11495
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
11496
11497
gen_load_fpr32(ctx, fp0, fs);
11498
gen_load_fpr32(ctx, fp1, ft);
11499
- gen_helper_float_sub_s(fp0, cpu_env, fp0, fp1);
11500
+ gen_helper_float_sub_s(fp0, tcg_env, fp0, fp1);
11501
gen_store_fpr32(ctx, fp0, fd);
11502
}
11503
break;
11504
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
11505
11506
gen_load_fpr32(ctx, fp0, fs);
11507
gen_load_fpr32(ctx, fp1, ft);
11508
- gen_helper_float_mul_s(fp0, cpu_env, fp0, fp1);
11509
+ gen_helper_float_mul_s(fp0, tcg_env, fp0, fp1);
11510
gen_store_fpr32(ctx, fp0, fd);
11511
}
11512
break;
11513
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
11514
11515
gen_load_fpr32(ctx, fp0, fs);
11516
gen_load_fpr32(ctx, fp1, ft);
11517
- gen_helper_float_div_s(fp0, cpu_env, fp0, fp1);
11518
+ gen_helper_float_div_s(fp0, tcg_env, fp0, fp1);
11519
gen_store_fpr32(ctx, fp0, fd);
11520
}
11521
break;
11522
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
11523
TCGv_i32 fp0 = tcg_temp_new_i32();
11524
11525
gen_load_fpr32(ctx, fp0, fs);
11526
- gen_helper_float_sqrt_s(fp0, cpu_env, fp0);
11527
+ gen_helper_float_sqrt_s(fp0, tcg_env, fp0);
11528
gen_store_fpr32(ctx, fp0, fd);
11529
}
11530
break;
11531
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
11532
11533
gen_load_fpr32(ctx, fp32, fs);
11534
if (ctx->nan2008) {
11535
- gen_helper_float_round_2008_l_s(fp64, cpu_env, fp32);
11536
+ gen_helper_float_round_2008_l_s(fp64, tcg_env, fp32);
11537
} else {
11538
- gen_helper_float_round_l_s(fp64, cpu_env, fp32);
11539
+ gen_helper_float_round_l_s(fp64, tcg_env, fp32);
11540
}
11541
gen_store_fpr64(ctx, fp64, fd);
11542
}
11543
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
11544
11545
gen_load_fpr32(ctx, fp32, fs);
11546
if (ctx->nan2008) {
11547
- gen_helper_float_trunc_2008_l_s(fp64, cpu_env, fp32);
11548
+ gen_helper_float_trunc_2008_l_s(fp64, tcg_env, fp32);
11549
} else {
11550
- gen_helper_float_trunc_l_s(fp64, cpu_env, fp32);
11551
+ gen_helper_float_trunc_l_s(fp64, tcg_env, fp32);
11552
}
11553
gen_store_fpr64(ctx, fp64, fd);
11554
}
11555
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
11556
11557
gen_load_fpr32(ctx, fp32, fs);
11558
if (ctx->nan2008) {
11559
- gen_helper_float_ceil_2008_l_s(fp64, cpu_env, fp32);
11560
+ gen_helper_float_ceil_2008_l_s(fp64, tcg_env, fp32);
11561
} else {
11562
- gen_helper_float_ceil_l_s(fp64, cpu_env, fp32);
11563
+ gen_helper_float_ceil_l_s(fp64, tcg_env, fp32);
11564
}
11565
gen_store_fpr64(ctx, fp64, fd);
11566
}
11567
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
11568
11569
gen_load_fpr32(ctx, fp32, fs);
11570
if (ctx->nan2008) {
11571
- gen_helper_float_floor_2008_l_s(fp64, cpu_env, fp32);
11572
+ gen_helper_float_floor_2008_l_s(fp64, tcg_env, fp32);
11573
} else {
11574
- gen_helper_float_floor_l_s(fp64, cpu_env, fp32);
11575
+ gen_helper_float_floor_l_s(fp64, tcg_env, fp32);
11576
}
11577
gen_store_fpr64(ctx, fp64, fd);
11578
}
11579
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
11580
11581
gen_load_fpr32(ctx, fp0, fs);
11582
if (ctx->nan2008) {
11583
- gen_helper_float_round_2008_w_s(fp0, cpu_env, fp0);
11584
+ gen_helper_float_round_2008_w_s(fp0, tcg_env, fp0);
11585
} else {
11586
- gen_helper_float_round_w_s(fp0, cpu_env, fp0);
11587
+ gen_helper_float_round_w_s(fp0, tcg_env, fp0);
11588
}
11589
gen_store_fpr32(ctx, fp0, fd);
11590
}
11591
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
11592
11593
gen_load_fpr32(ctx, fp0, fs);
11594
if (ctx->nan2008) {
11595
- gen_helper_float_trunc_2008_w_s(fp0, cpu_env, fp0);
11596
+ gen_helper_float_trunc_2008_w_s(fp0, tcg_env, fp0);
11597
} else {
11598
- gen_helper_float_trunc_w_s(fp0, cpu_env, fp0);
11599
+ gen_helper_float_trunc_w_s(fp0, tcg_env, fp0);
11600
}
11601
gen_store_fpr32(ctx, fp0, fd);
11602
}
11603
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
11604
11605
gen_load_fpr32(ctx, fp0, fs);
11606
if (ctx->nan2008) {
11607
- gen_helper_float_ceil_2008_w_s(fp0, cpu_env, fp0);
11608
+ gen_helper_float_ceil_2008_w_s(fp0, tcg_env, fp0);
11609
} else {
11610
- gen_helper_float_ceil_w_s(fp0, cpu_env, fp0);
11611
+ gen_helper_float_ceil_w_s(fp0, tcg_env, fp0);
11612
}
11613
gen_store_fpr32(ctx, fp0, fd);
11614
}
11615
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
11616
11617
gen_load_fpr32(ctx, fp0, fs);
11618
if (ctx->nan2008) {
11619
- gen_helper_float_floor_2008_w_s(fp0, cpu_env, fp0);
11620
+ gen_helper_float_floor_2008_w_s(fp0, tcg_env, fp0);
11621
} else {
11622
- gen_helper_float_floor_w_s(fp0, cpu_env, fp0);
11623
+ gen_helper_float_floor_w_s(fp0, tcg_env, fp0);
11624
}
11625
gen_store_fpr32(ctx, fp0, fd);
11626
}
11627
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
11628
TCGv_i32 fp0 = tcg_temp_new_i32();
11629
11630
gen_load_fpr32(ctx, fp0, fs);
11631
- gen_helper_float_recip_s(fp0, cpu_env, fp0);
11632
+ gen_helper_float_recip_s(fp0, tcg_env, fp0);
11633
gen_store_fpr32(ctx, fp0, fd);
11634
}
11635
break;
11636
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
11637
TCGv_i32 fp0 = tcg_temp_new_i32();
11638
11639
gen_load_fpr32(ctx, fp0, fs);
11640
- gen_helper_float_rsqrt_s(fp0, cpu_env, fp0);
11641
+ gen_helper_float_rsqrt_s(fp0, tcg_env, fp0);
11642
gen_store_fpr32(ctx, fp0, fd);
11643
}
11644
break;
11645
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
11646
gen_load_fpr32(ctx, fp0, fs);
11647
gen_load_fpr32(ctx, fp1, ft);
11648
gen_load_fpr32(ctx, fp2, fd);
11649
- gen_helper_float_maddf_s(fp2, cpu_env, fp0, fp1, fp2);
11650
+ gen_helper_float_maddf_s(fp2, tcg_env, fp0, fp1, fp2);
11651
gen_store_fpr32(ctx, fp2, fd);
11652
}
11653
break;
11654
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
11655
gen_load_fpr32(ctx, fp0, fs);
11656
gen_load_fpr32(ctx, fp1, ft);
11657
gen_load_fpr32(ctx, fp2, fd);
11658
- gen_helper_float_msubf_s(fp2, cpu_env, fp0, fp1, fp2);
11659
+ gen_helper_float_msubf_s(fp2, tcg_env, fp0, fp1, fp2);
11660
gen_store_fpr32(ctx, fp2, fd);
11661
}
11662
break;
11663
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
11664
{
11665
TCGv_i32 fp0 = tcg_temp_new_i32();
11666
gen_load_fpr32(ctx, fp0, fs);
11667
- gen_helper_float_rint_s(fp0, cpu_env, fp0);
11668
+ gen_helper_float_rint_s(fp0, tcg_env, fp0);
11669
gen_store_fpr32(ctx, fp0, fd);
11670
}
11671
break;
11672
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
11673
{
11674
TCGv_i32 fp0 = tcg_temp_new_i32();
11675
gen_load_fpr32(ctx, fp0, fs);
11676
- gen_helper_float_class_s(fp0, cpu_env, fp0);
11677
+ gen_helper_float_class_s(fp0, tcg_env, fp0);
11678
gen_store_fpr32(ctx, fp0, fd);
11679
}
11680
break;
11681
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
11682
TCGv_i32 fp2 = tcg_temp_new_i32();
11683
gen_load_fpr32(ctx, fp0, fs);
11684
gen_load_fpr32(ctx, fp1, ft);
11685
- gen_helper_float_min_s(fp2, cpu_env, fp0, fp1);
11686
+ gen_helper_float_min_s(fp2, tcg_env, fp0, fp1);
11687
gen_store_fpr32(ctx, fp2, fd);
11688
} else {
11689
/* OPC_RECIP2_S */
11690
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
11691
11692
gen_load_fpr32(ctx, fp0, fs);
11693
gen_load_fpr32(ctx, fp1, ft);
11694
- gen_helper_float_recip2_s(fp0, cpu_env, fp0, fp1);
11695
+ gen_helper_float_recip2_s(fp0, tcg_env, fp0, fp1);
11696
gen_store_fpr32(ctx, fp0, fd);
11697
}
11698
}
11699
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
11700
TCGv_i32 fp2 = tcg_temp_new_i32();
11701
gen_load_fpr32(ctx, fp0, fs);
11702
gen_load_fpr32(ctx, fp1, ft);
11703
- gen_helper_float_mina_s(fp2, cpu_env, fp0, fp1);
11704
+ gen_helper_float_mina_s(fp2, tcg_env, fp0, fp1);
11705
gen_store_fpr32(ctx, fp2, fd);
11706
} else {
11707
/* OPC_RECIP1_S */
11708
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
11709
TCGv_i32 fp0 = tcg_temp_new_i32();
11710
11711
gen_load_fpr32(ctx, fp0, fs);
11712
- gen_helper_float_recip1_s(fp0, cpu_env, fp0);
11713
+ gen_helper_float_recip1_s(fp0, tcg_env, fp0);
11714
gen_store_fpr32(ctx, fp0, fd);
11715
}
11716
}
11717
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
11718
TCGv_i32 fp1 = tcg_temp_new_i32();
11719
gen_load_fpr32(ctx, fp0, fs);
11720
gen_load_fpr32(ctx, fp1, ft);
11721
- gen_helper_float_max_s(fp1, cpu_env, fp0, fp1);
11722
+ gen_helper_float_max_s(fp1, tcg_env, fp0, fp1);
11723
gen_store_fpr32(ctx, fp1, fd);
11724
} else {
11725
/* OPC_RSQRT1_S */
11726
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
11727
TCGv_i32 fp0 = tcg_temp_new_i32();
11728
11729
gen_load_fpr32(ctx, fp0, fs);
11730
- gen_helper_float_rsqrt1_s(fp0, cpu_env, fp0);
11731
+ gen_helper_float_rsqrt1_s(fp0, tcg_env, fp0);
11732
gen_store_fpr32(ctx, fp0, fd);
11733
}
11734
}
11735
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
11736
TCGv_i32 fp1 = tcg_temp_new_i32();
11737
gen_load_fpr32(ctx, fp0, fs);
11738
gen_load_fpr32(ctx, fp1, ft);
11739
- gen_helper_float_maxa_s(fp1, cpu_env, fp0, fp1);
11740
+ gen_helper_float_maxa_s(fp1, tcg_env, fp0, fp1);
11741
gen_store_fpr32(ctx, fp1, fd);
11742
} else {
11743
/* OPC_RSQRT2_S */
11744
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
11745
11746
gen_load_fpr32(ctx, fp0, fs);
11747
gen_load_fpr32(ctx, fp1, ft);
11748
- gen_helper_float_rsqrt2_s(fp0, cpu_env, fp0, fp1);
11749
+ gen_helper_float_rsqrt2_s(fp0, tcg_env, fp0, fp1);
11750
gen_store_fpr32(ctx, fp0, fd);
11751
}
11752
}
11753
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
11754
TCGv_i64 fp64 = tcg_temp_new_i64();
11755
11756
gen_load_fpr32(ctx, fp32, fs);
11757
- gen_helper_float_cvtd_s(fp64, cpu_env, fp32);
11758
+ gen_helper_float_cvtd_s(fp64, tcg_env, fp32);
11759
gen_store_fpr64(ctx, fp64, fd);
11760
}
11761
break;
11762
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
11763
11764
gen_load_fpr32(ctx, fp0, fs);
11765
if (ctx->nan2008) {
11766
- gen_helper_float_cvt_2008_w_s(fp0, cpu_env, fp0);
11767
+ gen_helper_float_cvt_2008_w_s(fp0, tcg_env, fp0);
11768
} else {
11769
- gen_helper_float_cvt_w_s(fp0, cpu_env, fp0);
11770
+ gen_helper_float_cvt_w_s(fp0, tcg_env, fp0);
11771
}
11772
gen_store_fpr32(ctx, fp0, fd);
11773
}
11774
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
11775
11776
gen_load_fpr32(ctx, fp32, fs);
11777
if (ctx->nan2008) {
11778
- gen_helper_float_cvt_2008_l_s(fp64, cpu_env, fp32);
11779
+ gen_helper_float_cvt_2008_l_s(fp64, tcg_env, fp32);
11780
} else {
11781
- gen_helper_float_cvt_l_s(fp64, cpu_env, fp32);
11782
+ gen_helper_float_cvt_l_s(fp64, tcg_env, fp32);
11783
}
11784
gen_store_fpr64(ctx, fp64, fd);
11785
}
11786
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
11787
11788
gen_load_fpr64(ctx, fp0, fs);
11789
gen_load_fpr64(ctx, fp1, ft);
11790
- gen_helper_float_add_d(fp0, cpu_env, fp0, fp1);
11791
+ gen_helper_float_add_d(fp0, tcg_env, fp0, fp1);
11792
gen_store_fpr64(ctx, fp0, fd);
11793
}
11794
break;
11795
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
11796
11797
gen_load_fpr64(ctx, fp0, fs);
11798
gen_load_fpr64(ctx, fp1, ft);
11799
- gen_helper_float_sub_d(fp0, cpu_env, fp0, fp1);
11800
+ gen_helper_float_sub_d(fp0, tcg_env, fp0, fp1);
11801
gen_store_fpr64(ctx, fp0, fd);
11802
}
11803
break;
11804
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
11805
11806
gen_load_fpr64(ctx, fp0, fs);
11807
gen_load_fpr64(ctx, fp1, ft);
11808
- gen_helper_float_mul_d(fp0, cpu_env, fp0, fp1);
11809
+ gen_helper_float_mul_d(fp0, tcg_env, fp0, fp1);
11810
gen_store_fpr64(ctx, fp0, fd);
11811
}
11812
break;
11813
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
11814
11815
gen_load_fpr64(ctx, fp0, fs);
11816
gen_load_fpr64(ctx, fp1, ft);
11817
- gen_helper_float_div_d(fp0, cpu_env, fp0, fp1);
11818
+ gen_helper_float_div_d(fp0, tcg_env, fp0, fp1);
11819
gen_store_fpr64(ctx, fp0, fd);
11820
}
11821
break;
11822
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
11823
TCGv_i64 fp0 = tcg_temp_new_i64();
11824
11825
gen_load_fpr64(ctx, fp0, fs);
11826
- gen_helper_float_sqrt_d(fp0, cpu_env, fp0);
11827
+ gen_helper_float_sqrt_d(fp0, tcg_env, fp0);
11828
gen_store_fpr64(ctx, fp0, fd);
11829
}
11830
break;
11831
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
11832
11833
gen_load_fpr64(ctx, fp0, fs);
11834
if (ctx->nan2008) {
11835
- gen_helper_float_round_2008_l_d(fp0, cpu_env, fp0);
11836
+ gen_helper_float_round_2008_l_d(fp0, tcg_env, fp0);
11837
} else {
11838
- gen_helper_float_round_l_d(fp0, cpu_env, fp0);
11839
+ gen_helper_float_round_l_d(fp0, tcg_env, fp0);
11840
}
11841
gen_store_fpr64(ctx, fp0, fd);
11842
}
11843
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
11844
11845
gen_load_fpr64(ctx, fp0, fs);
11846
if (ctx->nan2008) {
11847
- gen_helper_float_trunc_2008_l_d(fp0, cpu_env, fp0);
11848
+ gen_helper_float_trunc_2008_l_d(fp0, tcg_env, fp0);
11849
} else {
11850
- gen_helper_float_trunc_l_d(fp0, cpu_env, fp0);
11851
+ gen_helper_float_trunc_l_d(fp0, tcg_env, fp0);
11852
}
11853
gen_store_fpr64(ctx, fp0, fd);
11854
}
11855
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
11856
11857
gen_load_fpr64(ctx, fp0, fs);
11858
if (ctx->nan2008) {
11859
- gen_helper_float_ceil_2008_l_d(fp0, cpu_env, fp0);
11860
+ gen_helper_float_ceil_2008_l_d(fp0, tcg_env, fp0);
11861
} else {
11862
- gen_helper_float_ceil_l_d(fp0, cpu_env, fp0);
11863
+ gen_helper_float_ceil_l_d(fp0, tcg_env, fp0);
11864
}
11865
gen_store_fpr64(ctx, fp0, fd);
11866
}
11867
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
11868
11869
gen_load_fpr64(ctx, fp0, fs);
11870
if (ctx->nan2008) {
11871
- gen_helper_float_floor_2008_l_d(fp0, cpu_env, fp0);
11872
+ gen_helper_float_floor_2008_l_d(fp0, tcg_env, fp0);
11873
} else {
11874
- gen_helper_float_floor_l_d(fp0, cpu_env, fp0);
11875
+ gen_helper_float_floor_l_d(fp0, tcg_env, fp0);
11876
}
11877
gen_store_fpr64(ctx, fp0, fd);
11878
}
11879
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
11880
11881
gen_load_fpr64(ctx, fp64, fs);
11882
if (ctx->nan2008) {
11883
- gen_helper_float_round_2008_w_d(fp32, cpu_env, fp64);
11884
+ gen_helper_float_round_2008_w_d(fp32, tcg_env, fp64);
11885
} else {
11886
- gen_helper_float_round_w_d(fp32, cpu_env, fp64);
11887
+ gen_helper_float_round_w_d(fp32, tcg_env, fp64);
11888
}
11889
gen_store_fpr32(ctx, fp32, fd);
11890
}
11891
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
11892
11893
gen_load_fpr64(ctx, fp64, fs);
11894
if (ctx->nan2008) {
11895
- gen_helper_float_trunc_2008_w_d(fp32, cpu_env, fp64);
11896
+ gen_helper_float_trunc_2008_w_d(fp32, tcg_env, fp64);
11897
} else {
11898
- gen_helper_float_trunc_w_d(fp32, cpu_env, fp64);
11899
+ gen_helper_float_trunc_w_d(fp32, tcg_env, fp64);
11900
}
11901
gen_store_fpr32(ctx, fp32, fd);
11902
}
11903
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
11904
11905
gen_load_fpr64(ctx, fp64, fs);
11906
if (ctx->nan2008) {
11907
- gen_helper_float_ceil_2008_w_d(fp32, cpu_env, fp64);
11908
+ gen_helper_float_ceil_2008_w_d(fp32, tcg_env, fp64);
11909
} else {
11910
- gen_helper_float_ceil_w_d(fp32, cpu_env, fp64);
11911
+ gen_helper_float_ceil_w_d(fp32, tcg_env, fp64);
11912
}
11913
gen_store_fpr32(ctx, fp32, fd);
11914
}
11915
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
11916
11917
gen_load_fpr64(ctx, fp64, fs);
11918
if (ctx->nan2008) {
11919
- gen_helper_float_floor_2008_w_d(fp32, cpu_env, fp64);
11920
+ gen_helper_float_floor_2008_w_d(fp32, tcg_env, fp64);
11921
} else {
11922
- gen_helper_float_floor_w_d(fp32, cpu_env, fp64);
11923
+ gen_helper_float_floor_w_d(fp32, tcg_env, fp64);
11924
}
11925
gen_store_fpr32(ctx, fp32, fd);
11926
}
11927
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
11928
TCGv_i64 fp0 = tcg_temp_new_i64();
11929
11930
gen_load_fpr64(ctx, fp0, fs);
11931
- gen_helper_float_recip_d(fp0, cpu_env, fp0);
11932
+ gen_helper_float_recip_d(fp0, tcg_env, fp0);
11933
gen_store_fpr64(ctx, fp0, fd);
11934
}
11935
break;
11936
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
11937
TCGv_i64 fp0 = tcg_temp_new_i64();
11938
11939
gen_load_fpr64(ctx, fp0, fs);
11940
- gen_helper_float_rsqrt_d(fp0, cpu_env, fp0);
11941
+ gen_helper_float_rsqrt_d(fp0, tcg_env, fp0);
11942
gen_store_fpr64(ctx, fp0, fd);
11943
}
11944
break;
11945
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
11946
gen_load_fpr64(ctx, fp0, fs);
11947
gen_load_fpr64(ctx, fp1, ft);
11948
gen_load_fpr64(ctx, fp2, fd);
11949
- gen_helper_float_maddf_d(fp2, cpu_env, fp0, fp1, fp2);
11950
+ gen_helper_float_maddf_d(fp2, tcg_env, fp0, fp1, fp2);
11951
gen_store_fpr64(ctx, fp2, fd);
11952
}
11953
break;
11954
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
11955
gen_load_fpr64(ctx, fp0, fs);
11956
gen_load_fpr64(ctx, fp1, ft);
11957
gen_load_fpr64(ctx, fp2, fd);
11958
- gen_helper_float_msubf_d(fp2, cpu_env, fp0, fp1, fp2);
11959
+ gen_helper_float_msubf_d(fp2, tcg_env, fp0, fp1, fp2);
11960
gen_store_fpr64(ctx, fp2, fd);
11961
}
11962
break;
11963
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
11964
{
11965
TCGv_i64 fp0 = tcg_temp_new_i64();
11966
gen_load_fpr64(ctx, fp0, fs);
11967
- gen_helper_float_rint_d(fp0, cpu_env, fp0);
11968
+ gen_helper_float_rint_d(fp0, tcg_env, fp0);
11969
gen_store_fpr64(ctx, fp0, fd);
11970
}
11971
break;
11972
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
11973
{
11974
TCGv_i64 fp0 = tcg_temp_new_i64();
11975
gen_load_fpr64(ctx, fp0, fs);
11976
- gen_helper_float_class_d(fp0, cpu_env, fp0);
11977
+ gen_helper_float_class_d(fp0, tcg_env, fp0);
11978
gen_store_fpr64(ctx, fp0, fd);
11979
}
11980
break;
11981
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
11982
TCGv_i64 fp1 = tcg_temp_new_i64();
11983
gen_load_fpr64(ctx, fp0, fs);
11984
gen_load_fpr64(ctx, fp1, ft);
11985
- gen_helper_float_min_d(fp1, cpu_env, fp0, fp1);
11986
+ gen_helper_float_min_d(fp1, tcg_env, fp0, fp1);
11987
gen_store_fpr64(ctx, fp1, fd);
11988
} else {
11989
/* OPC_RECIP2_D */
11990
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
11991
11992
gen_load_fpr64(ctx, fp0, fs);
11993
gen_load_fpr64(ctx, fp1, ft);
11994
- gen_helper_float_recip2_d(fp0, cpu_env, fp0, fp1);
11995
+ gen_helper_float_recip2_d(fp0, tcg_env, fp0, fp1);
11996
gen_store_fpr64(ctx, fp0, fd);
11997
}
11998
}
11999
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
12000
TCGv_i64 fp1 = tcg_temp_new_i64();
12001
gen_load_fpr64(ctx, fp0, fs);
12002
gen_load_fpr64(ctx, fp1, ft);
12003
- gen_helper_float_mina_d(fp1, cpu_env, fp0, fp1);
12004
+ gen_helper_float_mina_d(fp1, tcg_env, fp0, fp1);
12005
gen_store_fpr64(ctx, fp1, fd);
12006
} else {
12007
/* OPC_RECIP1_D */
12008
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
12009
TCGv_i64 fp0 = tcg_temp_new_i64();
12010
12011
gen_load_fpr64(ctx, fp0, fs);
12012
- gen_helper_float_recip1_d(fp0, cpu_env, fp0);
12013
+ gen_helper_float_recip1_d(fp0, tcg_env, fp0);
12014
gen_store_fpr64(ctx, fp0, fd);
12015
}
12016
}
12017
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
12018
TCGv_i64 fp1 = tcg_temp_new_i64();
12019
gen_load_fpr64(ctx, fp0, fs);
12020
gen_load_fpr64(ctx, fp1, ft);
12021
- gen_helper_float_max_d(fp1, cpu_env, fp0, fp1);
12022
+ gen_helper_float_max_d(fp1, tcg_env, fp0, fp1);
12023
gen_store_fpr64(ctx, fp1, fd);
12024
} else {
12025
/* OPC_RSQRT1_D */
12026
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
12027
TCGv_i64 fp0 = tcg_temp_new_i64();
12028
12029
gen_load_fpr64(ctx, fp0, fs);
12030
- gen_helper_float_rsqrt1_d(fp0, cpu_env, fp0);
12031
+ gen_helper_float_rsqrt1_d(fp0, tcg_env, fp0);
12032
gen_store_fpr64(ctx, fp0, fd);
12033
}
12034
}
12035
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
12036
TCGv_i64 fp1 = tcg_temp_new_i64();
12037
gen_load_fpr64(ctx, fp0, fs);
12038
gen_load_fpr64(ctx, fp1, ft);
12039
- gen_helper_float_maxa_d(fp1, cpu_env, fp0, fp1);
12040
+ gen_helper_float_maxa_d(fp1, tcg_env, fp0, fp1);
12041
gen_store_fpr64(ctx, fp1, fd);
12042
} else {
12043
/* OPC_RSQRT2_D */
12044
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
12045
12046
gen_load_fpr64(ctx, fp0, fs);
12047
gen_load_fpr64(ctx, fp1, ft);
12048
- gen_helper_float_rsqrt2_d(fp0, cpu_env, fp0, fp1);
12049
+ gen_helper_float_rsqrt2_d(fp0, tcg_env, fp0, fp1);
12050
gen_store_fpr64(ctx, fp0, fd);
12051
}
12052
}
12053
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
12054
TCGv_i64 fp64 = tcg_temp_new_i64();
12055
12056
gen_load_fpr64(ctx, fp64, fs);
12057
- gen_helper_float_cvts_d(fp32, cpu_env, fp64);
12058
+ gen_helper_float_cvts_d(fp32, tcg_env, fp64);
12059
gen_store_fpr32(ctx, fp32, fd);
12060
}
12061
break;
12062
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
12063
12064
gen_load_fpr64(ctx, fp64, fs);
12065
if (ctx->nan2008) {
12066
- gen_helper_float_cvt_2008_w_d(fp32, cpu_env, fp64);
12067
+ gen_helper_float_cvt_2008_w_d(fp32, tcg_env, fp64);
12068
} else {
12069
- gen_helper_float_cvt_w_d(fp32, cpu_env, fp64);
12070
+ gen_helper_float_cvt_w_d(fp32, tcg_env, fp64);
12071
}
12072
gen_store_fpr32(ctx, fp32, fd);
12073
}
12074
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
12075
12076
gen_load_fpr64(ctx, fp0, fs);
12077
if (ctx->nan2008) {
12078
- gen_helper_float_cvt_2008_l_d(fp0, cpu_env, fp0);
12079
+ gen_helper_float_cvt_2008_l_d(fp0, tcg_env, fp0);
12080
} else {
12081
- gen_helper_float_cvt_l_d(fp0, cpu_env, fp0);
12082
+ gen_helper_float_cvt_l_d(fp0, tcg_env, fp0);
12083
}
12084
gen_store_fpr64(ctx, fp0, fd);
12085
}
12086
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
12087
TCGv_i32 fp0 = tcg_temp_new_i32();
12088
12089
gen_load_fpr32(ctx, fp0, fs);
12090
- gen_helper_float_cvts_w(fp0, cpu_env, fp0);
12091
+ gen_helper_float_cvts_w(fp0, tcg_env, fp0);
12092
gen_store_fpr32(ctx, fp0, fd);
12093
}
12094
break;
12095
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
12096
TCGv_i64 fp64 = tcg_temp_new_i64();
12097
12098
gen_load_fpr32(ctx, fp32, fs);
12099
- gen_helper_float_cvtd_w(fp64, cpu_env, fp32);
12100
+ gen_helper_float_cvtd_w(fp64, tcg_env, fp32);
12101
gen_store_fpr64(ctx, fp64, fd);
12102
}
12103
break;
12104
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
12105
TCGv_i64 fp64 = tcg_temp_new_i64();
12106
12107
gen_load_fpr64(ctx, fp64, fs);
12108
- gen_helper_float_cvts_l(fp32, cpu_env, fp64);
12109
+ gen_helper_float_cvts_l(fp32, tcg_env, fp64);
12110
gen_store_fpr32(ctx, fp32, fd);
12111
}
12112
break;
12113
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
12114
TCGv_i64 fp0 = tcg_temp_new_i64();
12115
12116
gen_load_fpr64(ctx, fp0, fs);
12117
- gen_helper_float_cvtd_l(fp0, cpu_env, fp0);
12118
+ gen_helper_float_cvtd_l(fp0, tcg_env, fp0);
12119
gen_store_fpr64(ctx, fp0, fd);
12120
}
12121
break;
12122
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
12123
TCGv_i64 fp0 = tcg_temp_new_i64();
12124
12125
gen_load_fpr64(ctx, fp0, fs);
12126
- gen_helper_float_cvtps_pw(fp0, cpu_env, fp0);
12127
+ gen_helper_float_cvtps_pw(fp0, tcg_env, fp0);
12128
gen_store_fpr64(ctx, fp0, fd);
12129
}
12130
break;
12131
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
12132
12133
gen_load_fpr64(ctx, fp0, fs);
12134
gen_load_fpr64(ctx, fp1, ft);
12135
- gen_helper_float_add_ps(fp0, cpu_env, fp0, fp1);
12136
+ gen_helper_float_add_ps(fp0, tcg_env, fp0, fp1);
12137
gen_store_fpr64(ctx, fp0, fd);
12138
}
12139
break;
12140
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
12141
12142
gen_load_fpr64(ctx, fp0, fs);
12143
gen_load_fpr64(ctx, fp1, ft);
12144
- gen_helper_float_sub_ps(fp0, cpu_env, fp0, fp1);
12145
+ gen_helper_float_sub_ps(fp0, tcg_env, fp0, fp1);
12146
gen_store_fpr64(ctx, fp0, fd);
12147
}
12148
break;
12149
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
12150
12151
gen_load_fpr64(ctx, fp0, fs);
12152
gen_load_fpr64(ctx, fp1, ft);
12153
- gen_helper_float_mul_ps(fp0, cpu_env, fp0, fp1);
12154
+ gen_helper_float_mul_ps(fp0, tcg_env, fp0, fp1);
12155
gen_store_fpr64(ctx, fp0, fd);
12156
}
12157
break;
12158
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
12159
12160
gen_load_fpr64(ctx, fp0, ft);
12161
gen_load_fpr64(ctx, fp1, fs);
12162
- gen_helper_float_addr_ps(fp0, cpu_env, fp0, fp1);
12163
+ gen_helper_float_addr_ps(fp0, tcg_env, fp0, fp1);
12164
gen_store_fpr64(ctx, fp0, fd);
12165
}
12166
break;
12167
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
12168
12169
gen_load_fpr64(ctx, fp0, ft);
12170
gen_load_fpr64(ctx, fp1, fs);
12171
- gen_helper_float_mulr_ps(fp0, cpu_env, fp0, fp1);
12172
+ gen_helper_float_mulr_ps(fp0, tcg_env, fp0, fp1);
12173
gen_store_fpr64(ctx, fp0, fd);
12174
}
12175
break;
12176
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
12177
12178
gen_load_fpr64(ctx, fp0, fs);
12179
gen_load_fpr64(ctx, fp1, ft);
12180
- gen_helper_float_recip2_ps(fp0, cpu_env, fp0, fp1);
12181
+ gen_helper_float_recip2_ps(fp0, tcg_env, fp0, fp1);
12182
gen_store_fpr64(ctx, fp0, fd);
12183
}
12184
break;
12185
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
12186
TCGv_i64 fp0 = tcg_temp_new_i64();
12187
12188
gen_load_fpr64(ctx, fp0, fs);
12189
- gen_helper_float_recip1_ps(fp0, cpu_env, fp0);
12190
+ gen_helper_float_recip1_ps(fp0, tcg_env, fp0);
12191
gen_store_fpr64(ctx, fp0, fd);
12192
}
12193
break;
12194
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
12195
TCGv_i64 fp0 = tcg_temp_new_i64();
12196
12197
gen_load_fpr64(ctx, fp0, fs);
12198
- gen_helper_float_rsqrt1_ps(fp0, cpu_env, fp0);
12199
+ gen_helper_float_rsqrt1_ps(fp0, tcg_env, fp0);
12200
gen_store_fpr64(ctx, fp0, fd);
12201
}
12202
break;
12203
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
12204
12205
gen_load_fpr64(ctx, fp0, fs);
12206
gen_load_fpr64(ctx, fp1, ft);
12207
- gen_helper_float_rsqrt2_ps(fp0, cpu_env, fp0, fp1);
12208
+ gen_helper_float_rsqrt2_ps(fp0, tcg_env, fp0, fp1);
12209
gen_store_fpr64(ctx, fp0, fd);
12210
}
12211
break;
12212
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
12213
TCGv_i32 fp0 = tcg_temp_new_i32();
12214
12215
gen_load_fpr32h(ctx, fp0, fs);
12216
- gen_helper_float_cvts_pu(fp0, cpu_env, fp0);
12217
+ gen_helper_float_cvts_pu(fp0, tcg_env, fp0);
12218
gen_store_fpr32(ctx, fp0, fd);
12219
}
12220
break;
12221
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
12222
TCGv_i64 fp0 = tcg_temp_new_i64();
12223
12224
gen_load_fpr64(ctx, fp0, fs);
12225
- gen_helper_float_cvtpw_ps(fp0, cpu_env, fp0);
12226
+ gen_helper_float_cvtpw_ps(fp0, tcg_env, fp0);
12227
gen_store_fpr64(ctx, fp0, fd);
12228
}
12229
break;
12230
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
12231
TCGv_i32 fp0 = tcg_temp_new_i32();
12232
12233
gen_load_fpr32(ctx, fp0, fs);
12234
- gen_helper_float_cvts_pl(fp0, cpu_env, fp0);
12235
+ gen_helper_float_cvts_pl(fp0, tcg_env, fp0);
12236
gen_store_fpr32(ctx, fp0, fd);
12237
}
12238
break;
12239
@@ -XXX,XX +XXX,XX @@ static void gen_flt3_arith(DisasContext *ctx, uint32_t opc,
12240
gen_load_fpr32(ctx, fp0, fs);
12241
gen_load_fpr32(ctx, fp1, ft);
12242
gen_load_fpr32(ctx, fp2, fr);
12243
- gen_helper_float_madd_s(fp2, cpu_env, fp0, fp1, fp2);
12244
+ gen_helper_float_madd_s(fp2, tcg_env, fp0, fp1, fp2);
12245
gen_store_fpr32(ctx, fp2, fd);
12246
}
12247
break;
12248
@@ -XXX,XX +XXX,XX @@ static void gen_flt3_arith(DisasContext *ctx, uint32_t opc,
12249
gen_load_fpr64(ctx, fp0, fs);
12250
gen_load_fpr64(ctx, fp1, ft);
12251
gen_load_fpr64(ctx, fp2, fr);
12252
- gen_helper_float_madd_d(fp2, cpu_env, fp0, fp1, fp2);
12253
+ gen_helper_float_madd_d(fp2, tcg_env, fp0, fp1, fp2);
12254
gen_store_fpr64(ctx, fp2, fd);
12255
}
12256
break;
12257
@@ -XXX,XX +XXX,XX @@ static void gen_flt3_arith(DisasContext *ctx, uint32_t opc,
12258
gen_load_fpr64(ctx, fp0, fs);
12259
gen_load_fpr64(ctx, fp1, ft);
12260
gen_load_fpr64(ctx, fp2, fr);
12261
- gen_helper_float_madd_ps(fp2, cpu_env, fp0, fp1, fp2);
12262
+ gen_helper_float_madd_ps(fp2, tcg_env, fp0, fp1, fp2);
12263
gen_store_fpr64(ctx, fp2, fd);
12264
}
12265
break;
12266
@@ -XXX,XX +XXX,XX @@ static void gen_flt3_arith(DisasContext *ctx, uint32_t opc,
12267
gen_load_fpr32(ctx, fp0, fs);
12268
gen_load_fpr32(ctx, fp1, ft);
12269
gen_load_fpr32(ctx, fp2, fr);
12270
- gen_helper_float_msub_s(fp2, cpu_env, fp0, fp1, fp2);
12271
+ gen_helper_float_msub_s(fp2, tcg_env, fp0, fp1, fp2);
12272
gen_store_fpr32(ctx, fp2, fd);
12273
}
12274
break;
12275
@@ -XXX,XX +XXX,XX @@ static void gen_flt3_arith(DisasContext *ctx, uint32_t opc,
12276
gen_load_fpr64(ctx, fp0, fs);
12277
gen_load_fpr64(ctx, fp1, ft);
12278
gen_load_fpr64(ctx, fp2, fr);
12279
- gen_helper_float_msub_d(fp2, cpu_env, fp0, fp1, fp2);
12280
+ gen_helper_float_msub_d(fp2, tcg_env, fp0, fp1, fp2);
12281
gen_store_fpr64(ctx, fp2, fd);
12282
}
12283
break;
12284
@@ -XXX,XX +XXX,XX @@ static void gen_flt3_arith(DisasContext *ctx, uint32_t opc,
12285
gen_load_fpr64(ctx, fp0, fs);
12286
gen_load_fpr64(ctx, fp1, ft);
12287
gen_load_fpr64(ctx, fp2, fr);
12288
- gen_helper_float_msub_ps(fp2, cpu_env, fp0, fp1, fp2);
12289
+ gen_helper_float_msub_ps(fp2, tcg_env, fp0, fp1, fp2);
12290
gen_store_fpr64(ctx, fp2, fd);
12291
}
12292
break;
12293
@@ -XXX,XX +XXX,XX @@ static void gen_flt3_arith(DisasContext *ctx, uint32_t opc,
12294
gen_load_fpr32(ctx, fp0, fs);
12295
gen_load_fpr32(ctx, fp1, ft);
12296
gen_load_fpr32(ctx, fp2, fr);
12297
- gen_helper_float_nmadd_s(fp2, cpu_env, fp0, fp1, fp2);
12298
+ gen_helper_float_nmadd_s(fp2, tcg_env, fp0, fp1, fp2);
12299
gen_store_fpr32(ctx, fp2, fd);
12300
}
12301
break;
12302
@@ -XXX,XX +XXX,XX @@ static void gen_flt3_arith(DisasContext *ctx, uint32_t opc,
12303
gen_load_fpr64(ctx, fp0, fs);
12304
gen_load_fpr64(ctx, fp1, ft);
12305
gen_load_fpr64(ctx, fp2, fr);
12306
- gen_helper_float_nmadd_d(fp2, cpu_env, fp0, fp1, fp2);
12307
+ gen_helper_float_nmadd_d(fp2, tcg_env, fp0, fp1, fp2);
12308
gen_store_fpr64(ctx, fp2, fd);
12309
}
12310
break;
12311
@@ -XXX,XX +XXX,XX @@ static void gen_flt3_arith(DisasContext *ctx, uint32_t opc,
12312
gen_load_fpr64(ctx, fp0, fs);
12313
gen_load_fpr64(ctx, fp1, ft);
12314
gen_load_fpr64(ctx, fp2, fr);
12315
- gen_helper_float_nmadd_ps(fp2, cpu_env, fp0, fp1, fp2);
12316
+ gen_helper_float_nmadd_ps(fp2, tcg_env, fp0, fp1, fp2);
12317
gen_store_fpr64(ctx, fp2, fd);
12318
}
12319
break;
12320
@@ -XXX,XX +XXX,XX @@ static void gen_flt3_arith(DisasContext *ctx, uint32_t opc,
12321
gen_load_fpr32(ctx, fp0, fs);
12322
gen_load_fpr32(ctx, fp1, ft);
12323
gen_load_fpr32(ctx, fp2, fr);
12324
- gen_helper_float_nmsub_s(fp2, cpu_env, fp0, fp1, fp2);
12325
+ gen_helper_float_nmsub_s(fp2, tcg_env, fp0, fp1, fp2);
12326
gen_store_fpr32(ctx, fp2, fd);
12327
}
12328
break;
12329
@@ -XXX,XX +XXX,XX @@ static void gen_flt3_arith(DisasContext *ctx, uint32_t opc,
12330
gen_load_fpr64(ctx, fp0, fs);
12331
gen_load_fpr64(ctx, fp1, ft);
12332
gen_load_fpr64(ctx, fp2, fr);
12333
- gen_helper_float_nmsub_d(fp2, cpu_env, fp0, fp1, fp2);
12334
+ gen_helper_float_nmsub_d(fp2, tcg_env, fp0, fp1, fp2);
12335
gen_store_fpr64(ctx, fp2, fd);
12336
}
12337
break;
12338
@@ -XXX,XX +XXX,XX @@ static void gen_flt3_arith(DisasContext *ctx, uint32_t opc,
12339
gen_load_fpr64(ctx, fp0, fs);
12340
gen_load_fpr64(ctx, fp1, ft);
12341
gen_load_fpr64(ctx, fp2, fr);
12342
- gen_helper_float_nmsub_ps(fp2, cpu_env, fp0, fp1, fp2);
12343
+ gen_helper_float_nmsub_ps(fp2, tcg_env, fp0, fp1, fp2);
12344
gen_store_fpr64(ctx, fp2, fd);
12345
}
12346
break;
12347
@@ -XXX,XX +XXX,XX @@ void gen_rdhwr(DisasContext *ctx, int rt, int rd, int sel)
12348
12349
switch (rd) {
12350
case 0:
12351
- gen_helper_rdhwr_cpunum(t0, cpu_env);
12352
+ gen_helper_rdhwr_cpunum(t0, tcg_env);
12353
gen_store_gpr(t0, rt);
12354
break;
12355
case 1:
12356
- gen_helper_rdhwr_synci_step(t0, cpu_env);
12357
+ gen_helper_rdhwr_synci_step(t0, tcg_env);
12358
gen_store_gpr(t0, rt);
12359
break;
12360
case 2:
12361
translator_io_start(&ctx->base);
12362
- gen_helper_rdhwr_cc(t0, cpu_env);
12363
+ gen_helper_rdhwr_cc(t0, tcg_env);
12364
gen_store_gpr(t0, rt);
12365
/*
12366
* Break the TB to be able to take timer interrupts immediately
12367
@@ -XXX,XX +XXX,XX @@ void gen_rdhwr(DisasContext *ctx, int rt, int rd, int sel)
12368
ctx->base.is_jmp = DISAS_EXIT;
12369
break;
12370
case 3:
12371
- gen_helper_rdhwr_ccres(t0, cpu_env);
12372
+ gen_helper_rdhwr_ccres(t0, tcg_env);
12373
gen_store_gpr(t0, rt);
12374
break;
12375
case 4:
12376
@@ -XXX,XX +XXX,XX @@ void gen_rdhwr(DisasContext *ctx, int rt, int rd, int sel)
12377
*/
12378
generate_exception(ctx, EXCP_RI);
12379
}
12380
- gen_helper_rdhwr_performance(t0, cpu_env);
12381
+ gen_helper_rdhwr_performance(t0, tcg_env);
12382
gen_store_gpr(t0, rt);
12383
break;
12384
case 5:
12385
check_insn(ctx, ISA_MIPS_R6);
12386
- gen_helper_rdhwr_xnp(t0, cpu_env);
12387
+ gen_helper_rdhwr_xnp(t0, tcg_env);
12388
gen_store_gpr(t0, rt);
12389
break;
12390
case 29:
12391
#if defined(CONFIG_USER_ONLY)
12392
- tcg_gen_ld_tl(t0, cpu_env,
12393
+ tcg_gen_ld_tl(t0, tcg_env,
12394
offsetof(CPUMIPSState, active_tc.CP0_UserLocal));
12395
gen_store_gpr(t0, rt);
12396
break;
12397
#else
12398
if ((ctx->hflags & MIPS_HFLAG_CP0) ||
12399
(ctx->hflags & MIPS_HFLAG_HWRENA_ULR)) {
12400
- tcg_gen_ld_tl(t0, cpu_env,
12401
+ tcg_gen_ld_tl(t0, tcg_env,
12402
offsetof(CPUMIPSState, active_tc.CP0_UserLocal));
12403
gen_store_gpr(t0, rt);
12404
} else {
12405
@@ -XXX,XX +XXX,XX @@ static void gen_cache_operation(DisasContext *ctx, uint32_t op, int base,
12406
TCGv_i32 t0 = tcg_constant_i32(op);
12407
TCGv t1 = tcg_temp_new();
12408
gen_base_offset_addr(ctx, t1, base, offset);
12409
- gen_helper_cache(cpu_env, t1, t0);
12410
+ gen_helper_cache(tcg_env, t1, t0);
12411
}
12412
12413
static inline bool is_uhi(DisasContext *ctx, int sdbbp_code)
12414
@@ -XXX,XX +XXX,XX @@ static void gen_mipsdsp_arith(DisasContext *ctx, uint32_t op1, uint32_t op2,
12415
switch (op2) {
12416
case OPC_ABSQ_S_QB:
12417
check_dsp_r2(ctx);
12418
- gen_helper_absq_s_qb(cpu_gpr[ret], v2_t, cpu_env);
12419
+ gen_helper_absq_s_qb(cpu_gpr[ret], v2_t, tcg_env);
12420
break;
12421
case OPC_ABSQ_S_PH:
12422
check_dsp(ctx);
12423
- gen_helper_absq_s_ph(cpu_gpr[ret], v2_t, cpu_env);
12424
+ gen_helper_absq_s_ph(cpu_gpr[ret], v2_t, tcg_env);
12425
break;
12426
case OPC_ABSQ_S_W:
12427
check_dsp(ctx);
12428
- gen_helper_absq_s_w(cpu_gpr[ret], v2_t, cpu_env);
12429
+ gen_helper_absq_s_w(cpu_gpr[ret], v2_t, tcg_env);
12430
break;
12431
case OPC_PRECEQ_W_PHL:
12432
check_dsp(ctx);
12433
@@ -XXX,XX +XXX,XX @@ static void gen_mipsdsp_arith(DisasContext *ctx, uint32_t op1, uint32_t op2,
12434
switch (op2) {
12435
case OPC_ADDQ_PH:
12436
check_dsp(ctx);
12437
- gen_helper_addq_ph(cpu_gpr[ret], v1_t, v2_t, cpu_env);
12438
+ gen_helper_addq_ph(cpu_gpr[ret], v1_t, v2_t, tcg_env);
12439
break;
12440
case OPC_ADDQ_S_PH:
12441
check_dsp(ctx);
12442
- gen_helper_addq_s_ph(cpu_gpr[ret], v1_t, v2_t, cpu_env);
12443
+ gen_helper_addq_s_ph(cpu_gpr[ret], v1_t, v2_t, tcg_env);
12444
break;
12445
case OPC_ADDQ_S_W:
12446
check_dsp(ctx);
12447
- gen_helper_addq_s_w(cpu_gpr[ret], v1_t, v2_t, cpu_env);
12448
+ gen_helper_addq_s_w(cpu_gpr[ret], v1_t, v2_t, tcg_env);
12449
break;
12450
case OPC_ADDU_QB:
12451
check_dsp(ctx);
12452
- gen_helper_addu_qb(cpu_gpr[ret], v1_t, v2_t, cpu_env);
12453
+ gen_helper_addu_qb(cpu_gpr[ret], v1_t, v2_t, tcg_env);
12454
break;
12455
case OPC_ADDU_S_QB:
12456
check_dsp(ctx);
12457
- gen_helper_addu_s_qb(cpu_gpr[ret], v1_t, v2_t, cpu_env);
12458
+ gen_helper_addu_s_qb(cpu_gpr[ret], v1_t, v2_t, tcg_env);
12459
break;
12460
case OPC_ADDU_PH:
12461
check_dsp_r2(ctx);
12462
- gen_helper_addu_ph(cpu_gpr[ret], v1_t, v2_t, cpu_env);
12463
+ gen_helper_addu_ph(cpu_gpr[ret], v1_t, v2_t, tcg_env);
12464
break;
12465
case OPC_ADDU_S_PH:
12466
check_dsp_r2(ctx);
12467
- gen_helper_addu_s_ph(cpu_gpr[ret], v1_t, v2_t, cpu_env);
12468
+ gen_helper_addu_s_ph(cpu_gpr[ret], v1_t, v2_t, tcg_env);
12469
break;
12470
case OPC_SUBQ_PH:
12471
check_dsp(ctx);
12472
- gen_helper_subq_ph(cpu_gpr[ret], v1_t, v2_t, cpu_env);
12473
+ gen_helper_subq_ph(cpu_gpr[ret], v1_t, v2_t, tcg_env);
12474
break;
12475
case OPC_SUBQ_S_PH:
12476
check_dsp(ctx);
12477
- gen_helper_subq_s_ph(cpu_gpr[ret], v1_t, v2_t, cpu_env);
12478
+ gen_helper_subq_s_ph(cpu_gpr[ret], v1_t, v2_t, tcg_env);
12479
break;
12480
case OPC_SUBQ_S_W:
12481
check_dsp(ctx);
12482
- gen_helper_subq_s_w(cpu_gpr[ret], v1_t, v2_t, cpu_env);
12483
+ gen_helper_subq_s_w(cpu_gpr[ret], v1_t, v2_t, tcg_env);
12484
break;
12485
case OPC_SUBU_QB:
12486
check_dsp(ctx);
12487
- gen_helper_subu_qb(cpu_gpr[ret], v1_t, v2_t, cpu_env);
12488
+ gen_helper_subu_qb(cpu_gpr[ret], v1_t, v2_t, tcg_env);
12489
break;
12490
case OPC_SUBU_S_QB:
12491
check_dsp(ctx);
12492
- gen_helper_subu_s_qb(cpu_gpr[ret], v1_t, v2_t, cpu_env);
12493
+ gen_helper_subu_s_qb(cpu_gpr[ret], v1_t, v2_t, tcg_env);
12494
break;
12495
case OPC_SUBU_PH:
12496
check_dsp_r2(ctx);
12497
- gen_helper_subu_ph(cpu_gpr[ret], v1_t, v2_t, cpu_env);
12498
+ gen_helper_subu_ph(cpu_gpr[ret], v1_t, v2_t, tcg_env);
12499
break;
12500
case OPC_SUBU_S_PH:
12501
check_dsp_r2(ctx);
12502
- gen_helper_subu_s_ph(cpu_gpr[ret], v1_t, v2_t, cpu_env);
12503
+ gen_helper_subu_s_ph(cpu_gpr[ret], v1_t, v2_t, tcg_env);
12504
break;
12505
case OPC_ADDSC:
12506
check_dsp(ctx);
12507
- gen_helper_addsc(cpu_gpr[ret], v1_t, v2_t, cpu_env);
12508
+ gen_helper_addsc(cpu_gpr[ret], v1_t, v2_t, tcg_env);
12509
break;
12510
case OPC_ADDWC:
12511
check_dsp(ctx);
12512
- gen_helper_addwc(cpu_gpr[ret], v1_t, v2_t, cpu_env);
12513
+ gen_helper_addwc(cpu_gpr[ret], v1_t, v2_t, tcg_env);
12514
break;
12515
case OPC_MODSUB:
12516
check_dsp(ctx);
12517
@@ -XXX,XX +XXX,XX @@ static void gen_mipsdsp_arith(DisasContext *ctx, uint32_t op1, uint32_t op2,
12518
break;
12519
case OPC_PRECRQ_RS_PH_W:
12520
check_dsp(ctx);
12521
- gen_helper_precrq_rs_ph_w(cpu_gpr[ret], v1_t, v2_t, cpu_env);
12522
+ gen_helper_precrq_rs_ph_w(cpu_gpr[ret], v1_t, v2_t, tcg_env);
12523
break;
12524
case OPC_PRECRQU_S_QB_PH:
12525
check_dsp(ctx);
12526
- gen_helper_precrqu_s_qb_ph(cpu_gpr[ret], v1_t, v2_t, cpu_env);
12527
+ gen_helper_precrqu_s_qb_ph(cpu_gpr[ret], v1_t, v2_t, tcg_env);
12528
break;
12529
}
12530
break;
12531
@@ -XXX,XX +XXX,XX @@ static void gen_mipsdsp_arith(DisasContext *ctx, uint32_t op1, uint32_t op2,
12532
break;
12533
case OPC_ABSQ_S_OB:
12534
check_dsp_r2(ctx);
12535
- gen_helper_absq_s_ob(cpu_gpr[ret], v2_t, cpu_env);
12536
+ gen_helper_absq_s_ob(cpu_gpr[ret], v2_t, tcg_env);
12537
break;
12538
case OPC_ABSQ_S_PW:
12539
check_dsp(ctx);
12540
- gen_helper_absq_s_pw(cpu_gpr[ret], v2_t, cpu_env);
12541
+ gen_helper_absq_s_pw(cpu_gpr[ret], v2_t, tcg_env);
12542
break;
12543
case OPC_ABSQ_S_QH:
12544
check_dsp(ctx);
12545
- gen_helper_absq_s_qh(cpu_gpr[ret], v2_t, cpu_env);
12546
+ gen_helper_absq_s_qh(cpu_gpr[ret], v2_t, tcg_env);
12547
break;
12548
}
12549
break;
12550
@@ -XXX,XX +XXX,XX @@ static void gen_mipsdsp_arith(DisasContext *ctx, uint32_t op1, uint32_t op2,
12551
break;
12552
case OPC_SUBQ_PW:
12553
check_dsp(ctx);
12554
- gen_helper_subq_pw(cpu_gpr[ret], v1_t, v2_t, cpu_env);
12555
+ gen_helper_subq_pw(cpu_gpr[ret], v1_t, v2_t, tcg_env);
12556
break;
12557
case OPC_SUBQ_S_PW:
12558
check_dsp(ctx);
12559
- gen_helper_subq_s_pw(cpu_gpr[ret], v1_t, v2_t, cpu_env);
12560
+ gen_helper_subq_s_pw(cpu_gpr[ret], v1_t, v2_t, tcg_env);
12561
break;
12562
case OPC_SUBQ_QH:
12563
check_dsp(ctx);
12564
- gen_helper_subq_qh(cpu_gpr[ret], v1_t, v2_t, cpu_env);
12565
+ gen_helper_subq_qh(cpu_gpr[ret], v1_t, v2_t, tcg_env);
12566
break;
12567
case OPC_SUBQ_S_QH:
12568
check_dsp(ctx);
12569
- gen_helper_subq_s_qh(cpu_gpr[ret], v1_t, v2_t, cpu_env);
12570
+ gen_helper_subq_s_qh(cpu_gpr[ret], v1_t, v2_t, tcg_env);
12571
break;
12572
case OPC_SUBU_OB:
12573
check_dsp(ctx);
12574
- gen_helper_subu_ob(cpu_gpr[ret], v1_t, v2_t, cpu_env);
12575
+ gen_helper_subu_ob(cpu_gpr[ret], v1_t, v2_t, tcg_env);
12576
break;
12577
case OPC_SUBU_S_OB:
12578
check_dsp(ctx);
12579
- gen_helper_subu_s_ob(cpu_gpr[ret], v1_t, v2_t, cpu_env);
12580
+ gen_helper_subu_s_ob(cpu_gpr[ret], v1_t, v2_t, tcg_env);
12581
break;
12582
case OPC_SUBU_QH:
12583
check_dsp_r2(ctx);
12584
- gen_helper_subu_qh(cpu_gpr[ret], v1_t, v2_t, cpu_env);
12585
+ gen_helper_subu_qh(cpu_gpr[ret], v1_t, v2_t, tcg_env);
12586
break;
12587
case OPC_SUBU_S_QH:
12588
check_dsp_r2(ctx);
12589
- gen_helper_subu_s_qh(cpu_gpr[ret], v1_t, v2_t, cpu_env);
12590
+ gen_helper_subu_s_qh(cpu_gpr[ret], v1_t, v2_t, tcg_env);
12591
break;
12592
case OPC_SUBUH_OB:
12593
check_dsp_r2(ctx);
12594
@@ -XXX,XX +XXX,XX @@ static void gen_mipsdsp_arith(DisasContext *ctx, uint32_t op1, uint32_t op2,
12595
break;
12596
case OPC_ADDQ_PW:
12597
check_dsp(ctx);
12598
- gen_helper_addq_pw(cpu_gpr[ret], v1_t, v2_t, cpu_env);
12599
+ gen_helper_addq_pw(cpu_gpr[ret], v1_t, v2_t, tcg_env);
12600
break;
12601
case OPC_ADDQ_S_PW:
12602
check_dsp(ctx);
12603
- gen_helper_addq_s_pw(cpu_gpr[ret], v1_t, v2_t, cpu_env);
12604
+ gen_helper_addq_s_pw(cpu_gpr[ret], v1_t, v2_t, tcg_env);
12605
break;
12606
case OPC_ADDQ_QH:
12607
check_dsp(ctx);
12608
- gen_helper_addq_qh(cpu_gpr[ret], v1_t, v2_t, cpu_env);
12609
+ gen_helper_addq_qh(cpu_gpr[ret], v1_t, v2_t, tcg_env);
12610
break;
12611
case OPC_ADDQ_S_QH:
12612
check_dsp(ctx);
12613
- gen_helper_addq_s_qh(cpu_gpr[ret], v1_t, v2_t, cpu_env);
12614
+ gen_helper_addq_s_qh(cpu_gpr[ret], v1_t, v2_t, tcg_env);
12615
break;
12616
case OPC_ADDU_OB:
12617
check_dsp(ctx);
12618
- gen_helper_addu_ob(cpu_gpr[ret], v1_t, v2_t, cpu_env);
12619
+ gen_helper_addu_ob(cpu_gpr[ret], v1_t, v2_t, tcg_env);
12620
break;
12621
case OPC_ADDU_S_OB:
12622
check_dsp(ctx);
12623
- gen_helper_addu_s_ob(cpu_gpr[ret], v1_t, v2_t, cpu_env);
12624
+ gen_helper_addu_s_ob(cpu_gpr[ret], v1_t, v2_t, tcg_env);
12625
break;
12626
case OPC_ADDU_QH:
12627
check_dsp_r2(ctx);
12628
- gen_helper_addu_qh(cpu_gpr[ret], v1_t, v2_t, cpu_env);
12629
+ gen_helper_addu_qh(cpu_gpr[ret], v1_t, v2_t, tcg_env);
12630
break;
12631
case OPC_ADDU_S_QH:
12632
check_dsp_r2(ctx);
12633
- gen_helper_addu_s_qh(cpu_gpr[ret], v1_t, v2_t, cpu_env);
12634
+ gen_helper_addu_s_qh(cpu_gpr[ret], v1_t, v2_t, tcg_env);
12635
break;
12636
case OPC_ADDUH_OB:
12637
check_dsp_r2(ctx);
12638
@@ -XXX,XX +XXX,XX @@ static void gen_mipsdsp_arith(DisasContext *ctx, uint32_t op1, uint32_t op2,
12639
break;
12640
case OPC_PRECRQ_RS_QH_PW:
12641
check_dsp(ctx);
12642
- gen_helper_precrq_rs_qh_pw(cpu_gpr[ret], v1_t, v2_t, cpu_env);
12643
+ gen_helper_precrq_rs_qh_pw(cpu_gpr[ret], v1_t, v2_t, tcg_env);
12644
break;
12645
case OPC_PRECRQU_S_OB_QH:
12646
check_dsp(ctx);
12647
- gen_helper_precrqu_s_ob_qh(cpu_gpr[ret], v1_t, v2_t, cpu_env);
12648
+ gen_helper_precrqu_s_ob_qh(cpu_gpr[ret], v1_t, v2_t, tcg_env);
12649
break;
12650
}
12651
break;
12652
@@ -XXX,XX +XXX,XX @@ static void gen_mipsdsp_shift(DisasContext *ctx, uint32_t opc,
12653
switch (op2) {
12654
case OPC_SHLL_QB:
12655
check_dsp(ctx);
12656
- gen_helper_shll_qb(cpu_gpr[ret], t0, v2_t, cpu_env);
12657
+ gen_helper_shll_qb(cpu_gpr[ret], t0, v2_t, tcg_env);
12658
break;
12659
case OPC_SHLLV_QB:
12660
check_dsp(ctx);
12661
- gen_helper_shll_qb(cpu_gpr[ret], v1_t, v2_t, cpu_env);
12662
+ gen_helper_shll_qb(cpu_gpr[ret], v1_t, v2_t, tcg_env);
12663
break;
12664
case OPC_SHLL_PH:
12665
check_dsp(ctx);
12666
- gen_helper_shll_ph(cpu_gpr[ret], t0, v2_t, cpu_env);
12667
+ gen_helper_shll_ph(cpu_gpr[ret], t0, v2_t, tcg_env);
12668
break;
12669
case OPC_SHLLV_PH:
12670
check_dsp(ctx);
12671
- gen_helper_shll_ph(cpu_gpr[ret], v1_t, v2_t, cpu_env);
12672
+ gen_helper_shll_ph(cpu_gpr[ret], v1_t, v2_t, tcg_env);
12673
break;
12674
case OPC_SHLL_S_PH:
12675
check_dsp(ctx);
12676
- gen_helper_shll_s_ph(cpu_gpr[ret], t0, v2_t, cpu_env);
12677
+ gen_helper_shll_s_ph(cpu_gpr[ret], t0, v2_t, tcg_env);
12678
break;
12679
case OPC_SHLLV_S_PH:
12680
check_dsp(ctx);
12681
- gen_helper_shll_s_ph(cpu_gpr[ret], v1_t, v2_t, cpu_env);
12682
+ gen_helper_shll_s_ph(cpu_gpr[ret], v1_t, v2_t, tcg_env);
12683
break;
12684
case OPC_SHLL_S_W:
12685
check_dsp(ctx);
12686
- gen_helper_shll_s_w(cpu_gpr[ret], t0, v2_t, cpu_env);
12687
+ gen_helper_shll_s_w(cpu_gpr[ret], t0, v2_t, tcg_env);
12688
break;
12689
case OPC_SHLLV_S_W:
12690
check_dsp(ctx);
12691
- gen_helper_shll_s_w(cpu_gpr[ret], v1_t, v2_t, cpu_env);
12692
+ gen_helper_shll_s_w(cpu_gpr[ret], v1_t, v2_t, tcg_env);
12693
break;
12694
case OPC_SHRL_QB:
12695
check_dsp(ctx);
12696
@@ -XXX,XX +XXX,XX @@ static void gen_mipsdsp_shift(DisasContext *ctx, uint32_t opc,
12697
switch (op2) {
12698
case OPC_SHLL_PW:
12699
check_dsp(ctx);
12700
- gen_helper_shll_pw(cpu_gpr[ret], v2_t, t0, cpu_env);
12701
+ gen_helper_shll_pw(cpu_gpr[ret], v2_t, t0, tcg_env);
12702
break;
12703
case OPC_SHLLV_PW:
12704
check_dsp(ctx);
12705
- gen_helper_shll_pw(cpu_gpr[ret], v2_t, v1_t, cpu_env);
12706
+ gen_helper_shll_pw(cpu_gpr[ret], v2_t, v1_t, tcg_env);
12707
break;
12708
case OPC_SHLL_S_PW:
12709
check_dsp(ctx);
12710
- gen_helper_shll_s_pw(cpu_gpr[ret], v2_t, t0, cpu_env);
12711
+ gen_helper_shll_s_pw(cpu_gpr[ret], v2_t, t0, tcg_env);
12712
break;
12713
case OPC_SHLLV_S_PW:
12714
check_dsp(ctx);
12715
- gen_helper_shll_s_pw(cpu_gpr[ret], v2_t, v1_t, cpu_env);
12716
+ gen_helper_shll_s_pw(cpu_gpr[ret], v2_t, v1_t, tcg_env);
12717
break;
12718
case OPC_SHLL_OB:
12719
check_dsp(ctx);
12720
- gen_helper_shll_ob(cpu_gpr[ret], v2_t, t0, cpu_env);
12721
+ gen_helper_shll_ob(cpu_gpr[ret], v2_t, t0, tcg_env);
12722
break;
12723
case OPC_SHLLV_OB:
12724
check_dsp(ctx);
12725
- gen_helper_shll_ob(cpu_gpr[ret], v2_t, v1_t, cpu_env);
12726
+ gen_helper_shll_ob(cpu_gpr[ret], v2_t, v1_t, tcg_env);
12727
break;
12728
case OPC_SHLL_QH:
12729
check_dsp(ctx);
12730
- gen_helper_shll_qh(cpu_gpr[ret], v2_t, t0, cpu_env);
12731
+ gen_helper_shll_qh(cpu_gpr[ret], v2_t, t0, tcg_env);
12732
break;
12733
case OPC_SHLLV_QH:
12734
check_dsp(ctx);
12735
- gen_helper_shll_qh(cpu_gpr[ret], v2_t, v1_t, cpu_env);
12736
+ gen_helper_shll_qh(cpu_gpr[ret], v2_t, v1_t, tcg_env);
12737
break;
12738
case OPC_SHLL_S_QH:
12739
check_dsp(ctx);
12740
- gen_helper_shll_s_qh(cpu_gpr[ret], v2_t, t0, cpu_env);
12741
+ gen_helper_shll_s_qh(cpu_gpr[ret], v2_t, t0, tcg_env);
12742
break;
12743
case OPC_SHLLV_S_QH:
12744
check_dsp(ctx);
12745
- gen_helper_shll_s_qh(cpu_gpr[ret], v2_t, v1_t, cpu_env);
12746
+ gen_helper_shll_s_qh(cpu_gpr[ret], v2_t, v1_t, tcg_env);
12747
break;
12748
case OPC_SHRA_OB:
12749
check_dsp_r2(ctx);
12750
@@ -XXX,XX +XXX,XX @@ static void gen_mipsdsp_multiply(DisasContext *ctx, uint32_t op1, uint32_t op2,
12751
check_dsp_r2(ctx);
12752
switch (op2) {
12753
case OPC_MUL_PH:
12754
- gen_helper_mul_ph(cpu_gpr[ret], v1_t, v2_t, cpu_env);
12755
+ gen_helper_mul_ph(cpu_gpr[ret], v1_t, v2_t, tcg_env);
12756
break;
12757
case OPC_MUL_S_PH:
12758
- gen_helper_mul_s_ph(cpu_gpr[ret], v1_t, v2_t, cpu_env);
12759
+ gen_helper_mul_s_ph(cpu_gpr[ret], v1_t, v2_t, tcg_env);
12760
break;
12761
case OPC_MULQ_S_W:
12762
- gen_helper_mulq_s_w(cpu_gpr[ret], v1_t, v2_t, cpu_env);
12763
+ gen_helper_mulq_s_w(cpu_gpr[ret], v1_t, v2_t, tcg_env);
12764
break;
12765
case OPC_MULQ_RS_W:
12766
- gen_helper_mulq_rs_w(cpu_gpr[ret], v1_t, v2_t, cpu_env);
12767
+ gen_helper_mulq_rs_w(cpu_gpr[ret], v1_t, v2_t, tcg_env);
12768
break;
12769
}
12770
break;
12771
@@ -XXX,XX +XXX,XX @@ static void gen_mipsdsp_multiply(DisasContext *ctx, uint32_t op1, uint32_t op2,
12772
switch (op2) {
12773
case OPC_DPAU_H_QBL:
12774
check_dsp(ctx);
12775
- gen_helper_dpau_h_qbl(t0, v1_t, v2_t, cpu_env);
12776
+ gen_helper_dpau_h_qbl(t0, v1_t, v2_t, tcg_env);
12777
break;
12778
case OPC_DPAU_H_QBR:
12779
check_dsp(ctx);
12780
- gen_helper_dpau_h_qbr(t0, v1_t, v2_t, cpu_env);
12781
+ gen_helper_dpau_h_qbr(t0, v1_t, v2_t, tcg_env);
12782
break;
12783
case OPC_DPSU_H_QBL:
12784
check_dsp(ctx);
12785
- gen_helper_dpsu_h_qbl(t0, v1_t, v2_t, cpu_env);
12786
+ gen_helper_dpsu_h_qbl(t0, v1_t, v2_t, tcg_env);
12787
break;
12788
case OPC_DPSU_H_QBR:
12789
check_dsp(ctx);
12790
- gen_helper_dpsu_h_qbr(t0, v1_t, v2_t, cpu_env);
12791
+ gen_helper_dpsu_h_qbr(t0, v1_t, v2_t, tcg_env);
12792
break;
12793
case OPC_DPA_W_PH:
12794
check_dsp_r2(ctx);
12795
- gen_helper_dpa_w_ph(t0, v1_t, v2_t, cpu_env);
12796
+ gen_helper_dpa_w_ph(t0, v1_t, v2_t, tcg_env);
12797
break;
12798
case OPC_DPAX_W_PH:
12799
check_dsp_r2(ctx);
12800
- gen_helper_dpax_w_ph(t0, v1_t, v2_t, cpu_env);
12801
+ gen_helper_dpax_w_ph(t0, v1_t, v2_t, tcg_env);
12802
break;
12803
case OPC_DPAQ_S_W_PH:
12804
check_dsp(ctx);
12805
- gen_helper_dpaq_s_w_ph(t0, v1_t, v2_t, cpu_env);
12806
+ gen_helper_dpaq_s_w_ph(t0, v1_t, v2_t, tcg_env);
12807
break;
12808
case OPC_DPAQX_S_W_PH:
12809
check_dsp_r2(ctx);
12810
- gen_helper_dpaqx_s_w_ph(t0, v1_t, v2_t, cpu_env);
12811
+ gen_helper_dpaqx_s_w_ph(t0, v1_t, v2_t, tcg_env);
12812
break;
12813
case OPC_DPAQX_SA_W_PH:
12814
check_dsp_r2(ctx);
12815
- gen_helper_dpaqx_sa_w_ph(t0, v1_t, v2_t, cpu_env);
12816
+ gen_helper_dpaqx_sa_w_ph(t0, v1_t, v2_t, tcg_env);
12817
break;
12818
case OPC_DPS_W_PH:
12819
check_dsp_r2(ctx);
12820
- gen_helper_dps_w_ph(t0, v1_t, v2_t, cpu_env);
12821
+ gen_helper_dps_w_ph(t0, v1_t, v2_t, tcg_env);
12822
break;
12823
case OPC_DPSX_W_PH:
12824
check_dsp_r2(ctx);
12825
- gen_helper_dpsx_w_ph(t0, v1_t, v2_t, cpu_env);
12826
+ gen_helper_dpsx_w_ph(t0, v1_t, v2_t, tcg_env);
12827
break;
12828
case OPC_DPSQ_S_W_PH:
12829
check_dsp(ctx);
12830
- gen_helper_dpsq_s_w_ph(t0, v1_t, v2_t, cpu_env);
12831
+ gen_helper_dpsq_s_w_ph(t0, v1_t, v2_t, tcg_env);
12832
break;
12833
case OPC_DPSQX_S_W_PH:
12834
check_dsp_r2(ctx);
12835
- gen_helper_dpsqx_s_w_ph(t0, v1_t, v2_t, cpu_env);
12836
+ gen_helper_dpsqx_s_w_ph(t0, v1_t, v2_t, tcg_env);
12837
break;
12838
case OPC_DPSQX_SA_W_PH:
12839
check_dsp_r2(ctx);
12840
- gen_helper_dpsqx_sa_w_ph(t0, v1_t, v2_t, cpu_env);
12841
+ gen_helper_dpsqx_sa_w_ph(t0, v1_t, v2_t, tcg_env);
12842
break;
12843
case OPC_MULSAQ_S_W_PH:
12844
check_dsp(ctx);
12845
- gen_helper_mulsaq_s_w_ph(t0, v1_t, v2_t, cpu_env);
12846
+ gen_helper_mulsaq_s_w_ph(t0, v1_t, v2_t, tcg_env);
12847
break;
12848
case OPC_DPAQ_SA_L_W:
12849
check_dsp(ctx);
12850
- gen_helper_dpaq_sa_l_w(t0, v1_t, v2_t, cpu_env);
12851
+ gen_helper_dpaq_sa_l_w(t0, v1_t, v2_t, tcg_env);
12852
break;
12853
case OPC_DPSQ_SA_L_W:
12854
check_dsp(ctx);
12855
- gen_helper_dpsq_sa_l_w(t0, v1_t, v2_t, cpu_env);
12856
+ gen_helper_dpsq_sa_l_w(t0, v1_t, v2_t, tcg_env);
12857
break;
12858
case OPC_MAQ_S_W_PHL:
12859
check_dsp(ctx);
12860
- gen_helper_maq_s_w_phl(t0, v1_t, v2_t, cpu_env);
12861
+ gen_helper_maq_s_w_phl(t0, v1_t, v2_t, tcg_env);
12862
break;
12863
case OPC_MAQ_S_W_PHR:
12864
check_dsp(ctx);
12865
- gen_helper_maq_s_w_phr(t0, v1_t, v2_t, cpu_env);
12866
+ gen_helper_maq_s_w_phr(t0, v1_t, v2_t, tcg_env);
12867
break;
12868
case OPC_MAQ_SA_W_PHL:
12869
check_dsp(ctx);
12870
- gen_helper_maq_sa_w_phl(t0, v1_t, v2_t, cpu_env);
12871
+ gen_helper_maq_sa_w_phl(t0, v1_t, v2_t, tcg_env);
12872
break;
12873
case OPC_MAQ_SA_W_PHR:
12874
check_dsp(ctx);
12875
- gen_helper_maq_sa_w_phr(t0, v1_t, v2_t, cpu_env);
12876
+ gen_helper_maq_sa_w_phr(t0, v1_t, v2_t, tcg_env);
12877
break;
12878
case OPC_MULSA_W_PH:
12879
check_dsp_r2(ctx);
12880
- gen_helper_mulsa_w_ph(t0, v1_t, v2_t, cpu_env);
12881
+ gen_helper_mulsa_w_ph(t0, v1_t, v2_t, tcg_env);
12882
break;
12883
}
12884
break;
12885
@@ -XXX,XX +XXX,XX @@ static void gen_mipsdsp_multiply(DisasContext *ctx, uint32_t op1, uint32_t op2,
12886
switch (op2) {
12887
case OPC_DMADD:
12888
check_dsp(ctx);
12889
- gen_helper_dmadd(v1_t, v2_t, t0, cpu_env);
12890
+ gen_helper_dmadd(v1_t, v2_t, t0, tcg_env);
12891
break;
12892
case OPC_DMADDU:
12893
check_dsp(ctx);
12894
- gen_helper_dmaddu(v1_t, v2_t, t0, cpu_env);
12895
+ gen_helper_dmaddu(v1_t, v2_t, t0, tcg_env);
12896
break;
12897
case OPC_DMSUB:
12898
check_dsp(ctx);
12899
- gen_helper_dmsub(v1_t, v2_t, t0, cpu_env);
12900
+ gen_helper_dmsub(v1_t, v2_t, t0, tcg_env);
12901
break;
12902
case OPC_DMSUBU:
12903
check_dsp(ctx);
12904
- gen_helper_dmsubu(v1_t, v2_t, t0, cpu_env);
12905
+ gen_helper_dmsubu(v1_t, v2_t, t0, tcg_env);
12906
break;
12907
case OPC_DPA_W_QH:
12908
check_dsp_r2(ctx);
12909
- gen_helper_dpa_w_qh(v1_t, v2_t, t0, cpu_env);
12910
+ gen_helper_dpa_w_qh(v1_t, v2_t, t0, tcg_env);
12911
break;
12912
case OPC_DPAQ_S_W_QH:
12913
check_dsp(ctx);
12914
- gen_helper_dpaq_s_w_qh(v1_t, v2_t, t0, cpu_env);
12915
+ gen_helper_dpaq_s_w_qh(v1_t, v2_t, t0, tcg_env);
12916
break;
12917
case OPC_DPAQ_SA_L_PW:
12918
check_dsp(ctx);
12919
- gen_helper_dpaq_sa_l_pw(v1_t, v2_t, t0, cpu_env);
12920
+ gen_helper_dpaq_sa_l_pw(v1_t, v2_t, t0, tcg_env);
12921
break;
12922
case OPC_DPAU_H_OBL:
12923
check_dsp(ctx);
12924
- gen_helper_dpau_h_obl(v1_t, v2_t, t0, cpu_env);
12925
+ gen_helper_dpau_h_obl(v1_t, v2_t, t0, tcg_env);
12926
break;
12927
case OPC_DPAU_H_OBR:
12928
check_dsp(ctx);
12929
- gen_helper_dpau_h_obr(v1_t, v2_t, t0, cpu_env);
12930
+ gen_helper_dpau_h_obr(v1_t, v2_t, t0, tcg_env);
12931
break;
12932
case OPC_DPS_W_QH:
12933
check_dsp_r2(ctx);
12934
- gen_helper_dps_w_qh(v1_t, v2_t, t0, cpu_env);
12935
+ gen_helper_dps_w_qh(v1_t, v2_t, t0, tcg_env);
12936
break;
12937
case OPC_DPSQ_S_W_QH:
12938
check_dsp(ctx);
12939
- gen_helper_dpsq_s_w_qh(v1_t, v2_t, t0, cpu_env);
12940
+ gen_helper_dpsq_s_w_qh(v1_t, v2_t, t0, tcg_env);
12941
break;
12942
case OPC_DPSQ_SA_L_PW:
12943
check_dsp(ctx);
12944
- gen_helper_dpsq_sa_l_pw(v1_t, v2_t, t0, cpu_env);
12945
+ gen_helper_dpsq_sa_l_pw(v1_t, v2_t, t0, tcg_env);
12946
break;
12947
case OPC_DPSU_H_OBL:
12948
check_dsp(ctx);
12949
- gen_helper_dpsu_h_obl(v1_t, v2_t, t0, cpu_env);
12950
+ gen_helper_dpsu_h_obl(v1_t, v2_t, t0, tcg_env);
12951
break;
12952
case OPC_DPSU_H_OBR:
12953
check_dsp(ctx);
12954
- gen_helper_dpsu_h_obr(v1_t, v2_t, t0, cpu_env);
12955
+ gen_helper_dpsu_h_obr(v1_t, v2_t, t0, tcg_env);
12956
break;
12957
case OPC_MAQ_S_L_PWL:
12958
check_dsp(ctx);
12959
- gen_helper_maq_s_l_pwl(v1_t, v2_t, t0, cpu_env);
12960
+ gen_helper_maq_s_l_pwl(v1_t, v2_t, t0, tcg_env);
12961
break;
12962
case OPC_MAQ_S_L_PWR:
12963
check_dsp(ctx);
12964
- gen_helper_maq_s_l_pwr(v1_t, v2_t, t0, cpu_env);
12965
+ gen_helper_maq_s_l_pwr(v1_t, v2_t, t0, tcg_env);
12966
break;
12967
case OPC_MAQ_S_W_QHLL:
12968
check_dsp(ctx);
12969
- gen_helper_maq_s_w_qhll(v1_t, v2_t, t0, cpu_env);
12970
+ gen_helper_maq_s_w_qhll(v1_t, v2_t, t0, tcg_env);
12971
break;
12972
case OPC_MAQ_SA_W_QHLL:
12973
check_dsp(ctx);
12974
- gen_helper_maq_sa_w_qhll(v1_t, v2_t, t0, cpu_env);
12975
+ gen_helper_maq_sa_w_qhll(v1_t, v2_t, t0, tcg_env);
12976
break;
12977
case OPC_MAQ_S_W_QHLR:
12978
check_dsp(ctx);
12979
- gen_helper_maq_s_w_qhlr(v1_t, v2_t, t0, cpu_env);
12980
+ gen_helper_maq_s_w_qhlr(v1_t, v2_t, t0, tcg_env);
12981
break;
12982
case OPC_MAQ_SA_W_QHLR:
12983
check_dsp(ctx);
12984
- gen_helper_maq_sa_w_qhlr(v1_t, v2_t, t0, cpu_env);
12985
+ gen_helper_maq_sa_w_qhlr(v1_t, v2_t, t0, tcg_env);
12986
break;
12987
case OPC_MAQ_S_W_QHRL:
12988
check_dsp(ctx);
12989
- gen_helper_maq_s_w_qhrl(v1_t, v2_t, t0, cpu_env);
12990
+ gen_helper_maq_s_w_qhrl(v1_t, v2_t, t0, tcg_env);
12991
break;
12992
case OPC_MAQ_SA_W_QHRL:
12993
check_dsp(ctx);
12994
- gen_helper_maq_sa_w_qhrl(v1_t, v2_t, t0, cpu_env);
12995
+ gen_helper_maq_sa_w_qhrl(v1_t, v2_t, t0, tcg_env);
12996
break;
12997
case OPC_MAQ_S_W_QHRR:
12998
check_dsp(ctx);
12999
- gen_helper_maq_s_w_qhrr(v1_t, v2_t, t0, cpu_env);
13000
+ gen_helper_maq_s_w_qhrr(v1_t, v2_t, t0, tcg_env);
13001
break;
13002
case OPC_MAQ_SA_W_QHRR:
13003
check_dsp(ctx);
13004
- gen_helper_maq_sa_w_qhrr(v1_t, v2_t, t0, cpu_env);
13005
+ gen_helper_maq_sa_w_qhrr(v1_t, v2_t, t0, tcg_env);
13006
break;
13007
case OPC_MULSAQ_S_L_PW:
13008
check_dsp(ctx);
13009
- gen_helper_mulsaq_s_l_pw(v1_t, v2_t, t0, cpu_env);
13010
+ gen_helper_mulsaq_s_l_pw(v1_t, v2_t, t0, tcg_env);
13011
break;
13012
case OPC_MULSAQ_S_W_QH:
13013
check_dsp(ctx);
13014
- gen_helper_mulsaq_s_w_qh(v1_t, v2_t, t0, cpu_env);
13015
+ gen_helper_mulsaq_s_w_qh(v1_t, v2_t, t0, tcg_env);
13016
break;
13017
}
13018
}
13019
@@ -XXX,XX +XXX,XX @@ static void gen_mipsdsp_multiply(DisasContext *ctx, uint32_t op1, uint32_t op2,
13020
switch (op2) {
13021
case OPC_MULEU_S_PH_QBL:
13022
check_dsp(ctx);
13023
- gen_helper_muleu_s_ph_qbl(cpu_gpr[ret], v1_t, v2_t, cpu_env);
13024
+ gen_helper_muleu_s_ph_qbl(cpu_gpr[ret], v1_t, v2_t, tcg_env);
13025
break;
13026
case OPC_MULEU_S_PH_QBR:
13027
check_dsp(ctx);
13028
- gen_helper_muleu_s_ph_qbr(cpu_gpr[ret], v1_t, v2_t, cpu_env);
13029
+ gen_helper_muleu_s_ph_qbr(cpu_gpr[ret], v1_t, v2_t, tcg_env);
13030
break;
13031
case OPC_MULQ_RS_PH:
13032
check_dsp(ctx);
13033
- gen_helper_mulq_rs_ph(cpu_gpr[ret], v1_t, v2_t, cpu_env);
13034
+ gen_helper_mulq_rs_ph(cpu_gpr[ret], v1_t, v2_t, tcg_env);
13035
break;
13036
case OPC_MULEQ_S_W_PHL:
13037
check_dsp(ctx);
13038
- gen_helper_muleq_s_w_phl(cpu_gpr[ret], v1_t, v2_t, cpu_env);
13039
+ gen_helper_muleq_s_w_phl(cpu_gpr[ret], v1_t, v2_t, tcg_env);
13040
break;
13041
case OPC_MULEQ_S_W_PHR:
13042
check_dsp(ctx);
13043
- gen_helper_muleq_s_w_phr(cpu_gpr[ret], v1_t, v2_t, cpu_env);
13044
+ gen_helper_muleq_s_w_phr(cpu_gpr[ret], v1_t, v2_t, tcg_env);
13045
break;
13046
case OPC_MULQ_S_PH:
13047
check_dsp_r2(ctx);
13048
- gen_helper_mulq_s_ph(cpu_gpr[ret], v1_t, v2_t, cpu_env);
13049
+ gen_helper_mulq_s_ph(cpu_gpr[ret], v1_t, v2_t, tcg_env);
13050
break;
13051
}
13052
break;
13053
@@ -XXX,XX +XXX,XX @@ static void gen_mipsdsp_multiply(DisasContext *ctx, uint32_t op1, uint32_t op2,
13054
switch (op2) {
13055
case OPC_MULEQ_S_PW_QHL:
13056
check_dsp(ctx);
13057
- gen_helper_muleq_s_pw_qhl(cpu_gpr[ret], v1_t, v2_t, cpu_env);
13058
+ gen_helper_muleq_s_pw_qhl(cpu_gpr[ret], v1_t, v2_t, tcg_env);
13059
break;
13060
case OPC_MULEQ_S_PW_QHR:
13061
check_dsp(ctx);
13062
- gen_helper_muleq_s_pw_qhr(cpu_gpr[ret], v1_t, v2_t, cpu_env);
13063
+ gen_helper_muleq_s_pw_qhr(cpu_gpr[ret], v1_t, v2_t, tcg_env);
13064
break;
13065
case OPC_MULEU_S_QH_OBL:
13066
check_dsp(ctx);
13067
- gen_helper_muleu_s_qh_obl(cpu_gpr[ret], v1_t, v2_t, cpu_env);
13068
+ gen_helper_muleu_s_qh_obl(cpu_gpr[ret], v1_t, v2_t, tcg_env);
13069
break;
13070
case OPC_MULEU_S_QH_OBR:
13071
check_dsp(ctx);
13072
- gen_helper_muleu_s_qh_obr(cpu_gpr[ret], v1_t, v2_t, cpu_env);
13073
+ gen_helper_muleu_s_qh_obr(cpu_gpr[ret], v1_t, v2_t, tcg_env);
13074
break;
13075
case OPC_MULQ_RS_QH:
13076
check_dsp(ctx);
13077
- gen_helper_mulq_rs_qh(cpu_gpr[ret], v1_t, v2_t, cpu_env);
13078
+ gen_helper_mulq_rs_qh(cpu_gpr[ret], v1_t, v2_t, tcg_env);
13079
break;
13080
}
13081
break;
13082
@@ -XXX,XX +XXX,XX @@ static void gen_mipsdsp_add_cmp_pick(DisasContext *ctx,
13083
switch (op2) {
13084
case OPC_CMPU_EQ_QB:
13085
check_dsp(ctx);
13086
- gen_helper_cmpu_eq_qb(v1_t, v2_t, cpu_env);
13087
+ gen_helper_cmpu_eq_qb(v1_t, v2_t, tcg_env);
13088
break;
13089
case OPC_CMPU_LT_QB:
13090
check_dsp(ctx);
13091
- gen_helper_cmpu_lt_qb(v1_t, v2_t, cpu_env);
13092
+ gen_helper_cmpu_lt_qb(v1_t, v2_t, tcg_env);
13093
break;
13094
case OPC_CMPU_LE_QB:
13095
check_dsp(ctx);
13096
- gen_helper_cmpu_le_qb(v1_t, v2_t, cpu_env);
13097
+ gen_helper_cmpu_le_qb(v1_t, v2_t, tcg_env);
13098
break;
13099
case OPC_CMPGU_EQ_QB:
13100
check_dsp(ctx);
13101
@@ -XXX,XX +XXX,XX @@ static void gen_mipsdsp_add_cmp_pick(DisasContext *ctx,
13102
break;
13103
case OPC_CMP_EQ_PH:
13104
check_dsp(ctx);
13105
- gen_helper_cmp_eq_ph(v1_t, v2_t, cpu_env);
13106
+ gen_helper_cmp_eq_ph(v1_t, v2_t, tcg_env);
13107
break;
13108
case OPC_CMP_LT_PH:
13109
check_dsp(ctx);
13110
- gen_helper_cmp_lt_ph(v1_t, v2_t, cpu_env);
13111
+ gen_helper_cmp_lt_ph(v1_t, v2_t, tcg_env);
13112
break;
13113
case OPC_CMP_LE_PH:
13114
check_dsp(ctx);
13115
- gen_helper_cmp_le_ph(v1_t, v2_t, cpu_env);
13116
+ gen_helper_cmp_le_ph(v1_t, v2_t, tcg_env);
13117
break;
13118
case OPC_PICK_QB:
13119
check_dsp(ctx);
13120
- gen_helper_pick_qb(cpu_gpr[ret], v1_t, v2_t, cpu_env);
13121
+ gen_helper_pick_qb(cpu_gpr[ret], v1_t, v2_t, tcg_env);
13122
break;
13123
case OPC_PICK_PH:
13124
check_dsp(ctx);
13125
- gen_helper_pick_ph(cpu_gpr[ret], v1_t, v2_t, cpu_env);
13126
+ gen_helper_pick_ph(cpu_gpr[ret], v1_t, v2_t, tcg_env);
13127
break;
13128
case OPC_PACKRL_PH:
13129
check_dsp(ctx);
13130
@@ -XXX,XX +XXX,XX @@ static void gen_mipsdsp_add_cmp_pick(DisasContext *ctx,
13131
switch (op2) {
13132
case OPC_CMP_EQ_PW:
13133
check_dsp(ctx);
13134
- gen_helper_cmp_eq_pw(v1_t, v2_t, cpu_env);
13135
+ gen_helper_cmp_eq_pw(v1_t, v2_t, tcg_env);
13136
break;
13137
case OPC_CMP_LT_PW:
13138
check_dsp(ctx);
13139
- gen_helper_cmp_lt_pw(v1_t, v2_t, cpu_env);
13140
+ gen_helper_cmp_lt_pw(v1_t, v2_t, tcg_env);
13141
break;
13142
case OPC_CMP_LE_PW:
13143
check_dsp(ctx);
13144
- gen_helper_cmp_le_pw(v1_t, v2_t, cpu_env);
13145
+ gen_helper_cmp_le_pw(v1_t, v2_t, tcg_env);
13146
break;
13147
case OPC_CMP_EQ_QH:
13148
check_dsp(ctx);
13149
- gen_helper_cmp_eq_qh(v1_t, v2_t, cpu_env);
13150
+ gen_helper_cmp_eq_qh(v1_t, v2_t, tcg_env);
13151
break;
13152
case OPC_CMP_LT_QH:
13153
check_dsp(ctx);
13154
- gen_helper_cmp_lt_qh(v1_t, v2_t, cpu_env);
13155
+ gen_helper_cmp_lt_qh(v1_t, v2_t, tcg_env);
13156
break;
13157
case OPC_CMP_LE_QH:
13158
check_dsp(ctx);
13159
- gen_helper_cmp_le_qh(v1_t, v2_t, cpu_env);
13160
+ gen_helper_cmp_le_qh(v1_t, v2_t, tcg_env);
13161
break;
13162
case OPC_CMPGDU_EQ_OB:
13163
check_dsp_r2(ctx);
13164
- gen_helper_cmpgdu_eq_ob(cpu_gpr[ret], v1_t, v2_t, cpu_env);
13165
+ gen_helper_cmpgdu_eq_ob(cpu_gpr[ret], v1_t, v2_t, tcg_env);
13166
break;
13167
case OPC_CMPGDU_LT_OB:
13168
check_dsp_r2(ctx);
13169
- gen_helper_cmpgdu_lt_ob(cpu_gpr[ret], v1_t, v2_t, cpu_env);
13170
+ gen_helper_cmpgdu_lt_ob(cpu_gpr[ret], v1_t, v2_t, tcg_env);
13171
break;
13172
case OPC_CMPGDU_LE_OB:
13173
check_dsp_r2(ctx);
13174
- gen_helper_cmpgdu_le_ob(cpu_gpr[ret], v1_t, v2_t, cpu_env);
13175
+ gen_helper_cmpgdu_le_ob(cpu_gpr[ret], v1_t, v2_t, tcg_env);
13176
break;
13177
case OPC_CMPGU_EQ_OB:
13178
check_dsp(ctx);
13179
@@ -XXX,XX +XXX,XX @@ static void gen_mipsdsp_add_cmp_pick(DisasContext *ctx,
13180
break;
13181
case OPC_CMPU_EQ_OB:
13182
check_dsp(ctx);
13183
- gen_helper_cmpu_eq_ob(v1_t, v2_t, cpu_env);
13184
+ gen_helper_cmpu_eq_ob(v1_t, v2_t, tcg_env);
13185
break;
13186
case OPC_CMPU_LT_OB:
13187
check_dsp(ctx);
13188
- gen_helper_cmpu_lt_ob(v1_t, v2_t, cpu_env);
13189
+ gen_helper_cmpu_lt_ob(v1_t, v2_t, tcg_env);
13190
break;
13191
case OPC_CMPU_LE_OB:
13192
check_dsp(ctx);
13193
- gen_helper_cmpu_le_ob(v1_t, v2_t, cpu_env);
13194
+ gen_helper_cmpu_le_ob(v1_t, v2_t, tcg_env);
13195
break;
13196
case OPC_PACKRL_PW:
13197
check_dsp(ctx);
13198
@@ -XXX,XX +XXX,XX @@ static void gen_mipsdsp_add_cmp_pick(DisasContext *ctx,
13199
break;
13200
case OPC_PICK_OB:
13201
check_dsp(ctx);
13202
- gen_helper_pick_ob(cpu_gpr[ret], v1_t, v2_t, cpu_env);
13203
+ gen_helper_pick_ob(cpu_gpr[ret], v1_t, v2_t, tcg_env);
13204
break;
13205
case OPC_PICK_PW:
13206
check_dsp(ctx);
13207
- gen_helper_pick_pw(cpu_gpr[ret], v1_t, v2_t, cpu_env);
13208
+ gen_helper_pick_pw(cpu_gpr[ret], v1_t, v2_t, tcg_env);
13209
break;
13210
case OPC_PICK_QH:
13211
check_dsp(ctx);
13212
- gen_helper_pick_qh(cpu_gpr[ret], v1_t, v2_t, cpu_env);
13213
+ gen_helper_pick_qh(cpu_gpr[ret], v1_t, v2_t, tcg_env);
13214
break;
13215
}
13216
break;
13217
@@ -XXX,XX +XXX,XX @@ static void gen_mipsdsp_accinsn(DisasContext *ctx, uint32_t op1, uint32_t op2,
13218
case OPC_EXTR_W:
13219
tcg_gen_movi_tl(t0, v2);
13220
tcg_gen_movi_tl(t1, v1);
13221
- gen_helper_extr_w(cpu_gpr[ret], t0, t1, cpu_env);
13222
+ gen_helper_extr_w(cpu_gpr[ret], t0, t1, tcg_env);
13223
break;
13224
case OPC_EXTR_R_W:
13225
tcg_gen_movi_tl(t0, v2);
13226
tcg_gen_movi_tl(t1, v1);
13227
- gen_helper_extr_r_w(cpu_gpr[ret], t0, t1, cpu_env);
13228
+ gen_helper_extr_r_w(cpu_gpr[ret], t0, t1, tcg_env);
13229
break;
13230
case OPC_EXTR_RS_W:
13231
tcg_gen_movi_tl(t0, v2);
13232
tcg_gen_movi_tl(t1, v1);
13233
- gen_helper_extr_rs_w(cpu_gpr[ret], t0, t1, cpu_env);
13234
+ gen_helper_extr_rs_w(cpu_gpr[ret], t0, t1, tcg_env);
13235
break;
13236
case OPC_EXTR_S_H:
13237
tcg_gen_movi_tl(t0, v2);
13238
tcg_gen_movi_tl(t1, v1);
13239
- gen_helper_extr_s_h(cpu_gpr[ret], t0, t1, cpu_env);
13240
+ gen_helper_extr_s_h(cpu_gpr[ret], t0, t1, tcg_env);
13241
break;
13242
case OPC_EXTRV_S_H:
13243
tcg_gen_movi_tl(t0, v2);
13244
- gen_helper_extr_s_h(cpu_gpr[ret], t0, v1_t, cpu_env);
13245
+ gen_helper_extr_s_h(cpu_gpr[ret], t0, v1_t, tcg_env);
13246
break;
13247
case OPC_EXTRV_W:
13248
tcg_gen_movi_tl(t0, v2);
13249
- gen_helper_extr_w(cpu_gpr[ret], t0, v1_t, cpu_env);
13250
+ gen_helper_extr_w(cpu_gpr[ret], t0, v1_t, tcg_env);
13251
break;
13252
case OPC_EXTRV_R_W:
13253
tcg_gen_movi_tl(t0, v2);
13254
- gen_helper_extr_r_w(cpu_gpr[ret], t0, v1_t, cpu_env);
13255
+ gen_helper_extr_r_w(cpu_gpr[ret], t0, v1_t, tcg_env);
13256
break;
13257
case OPC_EXTRV_RS_W:
13258
tcg_gen_movi_tl(t0, v2);
13259
- gen_helper_extr_rs_w(cpu_gpr[ret], t0, v1_t, cpu_env);
13260
+ gen_helper_extr_rs_w(cpu_gpr[ret], t0, v1_t, tcg_env);
13261
break;
13262
case OPC_EXTP:
13263
tcg_gen_movi_tl(t0, v2);
13264
tcg_gen_movi_tl(t1, v1);
13265
- gen_helper_extp(cpu_gpr[ret], t0, t1, cpu_env);
13266
+ gen_helper_extp(cpu_gpr[ret], t0, t1, tcg_env);
13267
break;
13268
case OPC_EXTPV:
13269
tcg_gen_movi_tl(t0, v2);
13270
- gen_helper_extp(cpu_gpr[ret], t0, v1_t, cpu_env);
13271
+ gen_helper_extp(cpu_gpr[ret], t0, v1_t, tcg_env);
13272
break;
13273
case OPC_EXTPDP:
13274
tcg_gen_movi_tl(t0, v2);
13275
tcg_gen_movi_tl(t1, v1);
13276
- gen_helper_extpdp(cpu_gpr[ret], t0, t1, cpu_env);
13277
+ gen_helper_extpdp(cpu_gpr[ret], t0, t1, tcg_env);
13278
break;
13279
case OPC_EXTPDPV:
13280
tcg_gen_movi_tl(t0, v2);
13281
- gen_helper_extpdp(cpu_gpr[ret], t0, v1_t, cpu_env);
13282
+ gen_helper_extpdp(cpu_gpr[ret], t0, v1_t, tcg_env);
13283
break;
13284
case OPC_SHILO:
13285
imm = (ctx->opcode >> 20) & 0x3F;
13286
tcg_gen_movi_tl(t0, ret);
13287
tcg_gen_movi_tl(t1, imm);
13288
- gen_helper_shilo(t0, t1, cpu_env);
13289
+ gen_helper_shilo(t0, t1, tcg_env);
13290
break;
13291
case OPC_SHILOV:
13292
tcg_gen_movi_tl(t0, ret);
13293
- gen_helper_shilo(t0, v1_t, cpu_env);
13294
+ gen_helper_shilo(t0, v1_t, tcg_env);
13295
break;
13296
case OPC_MTHLIP:
13297
tcg_gen_movi_tl(t0, ret);
13298
- gen_helper_mthlip(t0, v1_t, cpu_env);
13299
+ gen_helper_mthlip(t0, v1_t, tcg_env);
13300
break;
13301
case OPC_WRDSP:
13302
imm = (ctx->opcode >> 11) & 0x3FF;
13303
tcg_gen_movi_tl(t0, imm);
13304
- gen_helper_wrdsp(v1_t, t0, cpu_env);
13305
+ gen_helper_wrdsp(v1_t, t0, tcg_env);
13306
break;
13307
case OPC_RDDSP:
13308
imm = (ctx->opcode >> 16) & 0x03FF;
13309
tcg_gen_movi_tl(t0, imm);
13310
- gen_helper_rddsp(cpu_gpr[ret], t0, cpu_env);
13311
+ gen_helper_rddsp(cpu_gpr[ret], t0, tcg_env);
13312
break;
13313
}
13314
break;
13315
@@ -XXX,XX +XXX,XX @@ static void gen_mipsdsp_accinsn(DisasContext *ctx, uint32_t op1, uint32_t op2,
13316
switch (op2) {
13317
case OPC_DMTHLIP:
13318
tcg_gen_movi_tl(t0, ret);
13319
- gen_helper_dmthlip(v1_t, t0, cpu_env);
13320
+ gen_helper_dmthlip(v1_t, t0, tcg_env);
13321
break;
13322
case OPC_DSHILO:
13323
{
13324
@@ -XXX,XX +XXX,XX @@ static void gen_mipsdsp_accinsn(DisasContext *ctx, uint32_t op1, uint32_t op2,
13325
int ac = (ctx->opcode >> 11) & 0x03;
13326
tcg_gen_movi_tl(t0, shift);
13327
tcg_gen_movi_tl(t1, ac);
13328
- gen_helper_dshilo(t0, t1, cpu_env);
13329
+ gen_helper_dshilo(t0, t1, tcg_env);
13330
break;
13331
}
13332
case OPC_DSHILOV:
13333
{
13334
int ac = (ctx->opcode >> 11) & 0x03;
13335
tcg_gen_movi_tl(t0, ac);
13336
- gen_helper_dshilo(v1_t, t0, cpu_env);
13337
+ gen_helper_dshilo(v1_t, t0, tcg_env);
13338
break;
13339
}
13340
case OPC_DEXTP:
13341
tcg_gen_movi_tl(t0, v2);
13342
tcg_gen_movi_tl(t1, v1);
13343
13344
- gen_helper_dextp(cpu_gpr[ret], t0, t1, cpu_env);
13345
+ gen_helper_dextp(cpu_gpr[ret], t0, t1, tcg_env);
13346
break;
13347
case OPC_DEXTPV:
13348
tcg_gen_movi_tl(t0, v2);
13349
- gen_helper_dextp(cpu_gpr[ret], t0, v1_t, cpu_env);
13350
+ gen_helper_dextp(cpu_gpr[ret], t0, v1_t, tcg_env);
13351
break;
13352
case OPC_DEXTPDP:
13353
tcg_gen_movi_tl(t0, v2);
13354
tcg_gen_movi_tl(t1, v1);
13355
- gen_helper_dextpdp(cpu_gpr[ret], t0, t1, cpu_env);
13356
+ gen_helper_dextpdp(cpu_gpr[ret], t0, t1, tcg_env);
13357
break;
13358
case OPC_DEXTPDPV:
13359
tcg_gen_movi_tl(t0, v2);
13360
- gen_helper_dextpdp(cpu_gpr[ret], t0, v1_t, cpu_env);
13361
+ gen_helper_dextpdp(cpu_gpr[ret], t0, v1_t, tcg_env);
13362
break;
13363
case OPC_DEXTR_L:
13364
tcg_gen_movi_tl(t0, v2);
13365
tcg_gen_movi_tl(t1, v1);
13366
- gen_helper_dextr_l(cpu_gpr[ret], t0, t1, cpu_env);
13367
+ gen_helper_dextr_l(cpu_gpr[ret], t0, t1, tcg_env);
13368
break;
13369
case OPC_DEXTR_R_L:
13370
tcg_gen_movi_tl(t0, v2);
13371
tcg_gen_movi_tl(t1, v1);
13372
- gen_helper_dextr_r_l(cpu_gpr[ret], t0, t1, cpu_env);
13373
+ gen_helper_dextr_r_l(cpu_gpr[ret], t0, t1, tcg_env);
13374
break;
13375
case OPC_DEXTR_RS_L:
13376
tcg_gen_movi_tl(t0, v2);
13377
tcg_gen_movi_tl(t1, v1);
13378
- gen_helper_dextr_rs_l(cpu_gpr[ret], t0, t1, cpu_env);
13379
+ gen_helper_dextr_rs_l(cpu_gpr[ret], t0, t1, tcg_env);
13380
break;
13381
case OPC_DEXTR_W:
13382
tcg_gen_movi_tl(t0, v2);
13383
tcg_gen_movi_tl(t1, v1);
13384
- gen_helper_dextr_w(cpu_gpr[ret], t0, t1, cpu_env);
13385
+ gen_helper_dextr_w(cpu_gpr[ret], t0, t1, tcg_env);
13386
break;
13387
case OPC_DEXTR_R_W:
13388
tcg_gen_movi_tl(t0, v2);
13389
tcg_gen_movi_tl(t1, v1);
13390
- gen_helper_dextr_r_w(cpu_gpr[ret], t0, t1, cpu_env);
13391
+ gen_helper_dextr_r_w(cpu_gpr[ret], t0, t1, tcg_env);
13392
break;
13393
case OPC_DEXTR_RS_W:
13394
tcg_gen_movi_tl(t0, v2);
13395
tcg_gen_movi_tl(t1, v1);
13396
- gen_helper_dextr_rs_w(cpu_gpr[ret], t0, t1, cpu_env);
13397
+ gen_helper_dextr_rs_w(cpu_gpr[ret], t0, t1, tcg_env);
13398
break;
13399
case OPC_DEXTR_S_H:
13400
tcg_gen_movi_tl(t0, v2);
13401
tcg_gen_movi_tl(t1, v1);
13402
- gen_helper_dextr_s_h(cpu_gpr[ret], t0, t1, cpu_env);
13403
+ gen_helper_dextr_s_h(cpu_gpr[ret], t0, t1, tcg_env);
13404
break;
13405
case OPC_DEXTRV_S_H:
13406
tcg_gen_movi_tl(t0, v2);
13407
- gen_helper_dextr_s_h(cpu_gpr[ret], t0, v1_t, cpu_env);
13408
+ gen_helper_dextr_s_h(cpu_gpr[ret], t0, v1_t, tcg_env);
13409
break;
13410
case OPC_DEXTRV_L:
13411
tcg_gen_movi_tl(t0, v2);
13412
- gen_helper_dextr_l(cpu_gpr[ret], t0, v1_t, cpu_env);
13413
+ gen_helper_dextr_l(cpu_gpr[ret], t0, v1_t, tcg_env);
13414
break;
13415
case OPC_DEXTRV_R_L:
13416
tcg_gen_movi_tl(t0, v2);
13417
- gen_helper_dextr_r_l(cpu_gpr[ret], t0, v1_t, cpu_env);
13418
+ gen_helper_dextr_r_l(cpu_gpr[ret], t0, v1_t, tcg_env);
13419
break;
13420
case OPC_DEXTRV_RS_L:
13421
tcg_gen_movi_tl(t0, v2);
13422
- gen_helper_dextr_rs_l(cpu_gpr[ret], t0, v1_t, cpu_env);
13423
+ gen_helper_dextr_rs_l(cpu_gpr[ret], t0, v1_t, tcg_env);
13424
break;
13425
case OPC_DEXTRV_W:
13426
tcg_gen_movi_tl(t0, v2);
13427
- gen_helper_dextr_w(cpu_gpr[ret], t0, v1_t, cpu_env);
13428
+ gen_helper_dextr_w(cpu_gpr[ret], t0, v1_t, tcg_env);
13429
break;
13430
case OPC_DEXTRV_R_W:
13431
tcg_gen_movi_tl(t0, v2);
13432
- gen_helper_dextr_r_w(cpu_gpr[ret], t0, v1_t, cpu_env);
13433
+ gen_helper_dextr_r_w(cpu_gpr[ret], t0, v1_t, tcg_env);
13434
break;
13435
case OPC_DEXTRV_RS_W:
13436
tcg_gen_movi_tl(t0, v2);
13437
- gen_helper_dextr_rs_w(cpu_gpr[ret], t0, v1_t, cpu_env);
13438
+ gen_helper_dextr_rs_w(cpu_gpr[ret], t0, v1_t, tcg_env);
13439
break;
13440
}
13441
break;
13442
@@ -XXX,XX +XXX,XX @@ static void decode_opc_special(CPUMIPSState *env, DisasContext *ctx)
13443
MIPS_INVAL("PMON / selsl");
13444
gen_reserved_instruction(ctx);
13445
#else
13446
- gen_helper_pmon(cpu_env, tcg_constant_i32(sa));
13447
+ gen_helper_pmon(tcg_env, tcg_constant_i32(sa));
13448
#endif
13449
break;
13450
case OPC_SYSCALL:
13451
@@ -XXX,XX +XXX,XX @@ static void decode_opc_special3_legacy(CPUMIPSState *env, DisasContext *ctx)
13452
gen_load_gpr(t0, rt);
13453
gen_load_gpr(t1, rs);
13454
13455
- gen_helper_insv(cpu_gpr[rt], cpu_env, t1, t0);
13456
+ gen_helper_insv(cpu_gpr[rt], tcg_env, t1, t0);
13457
break;
13458
}
13459
default: /* Invalid */
13460
@@ -XXX,XX +XXX,XX @@ static void decode_opc_special3_legacy(CPUMIPSState *env, DisasContext *ctx)
13461
gen_load_gpr(t0, rt);
13462
gen_load_gpr(t1, rs);
13463
13464
- gen_helper_dinsv(cpu_gpr[rt], cpu_env, t1, t0);
13465
+ gen_helper_dinsv(cpu_gpr[rt], tcg_env, t1, t0);
13466
break;
13467
}
13468
default: /* Invalid */
13469
@@ -XXX,XX +XXX,XX @@ static void decode_opc_special3(CPUMIPSState *env, DisasContext *ctx)
13470
TCGv t0 = tcg_temp_new();
13471
13472
gen_load_gpr(t0, rs);
13473
- gen_helper_yield(t0, cpu_env, t0);
13474
+ gen_helper_yield(t0, tcg_env, t0);
13475
gen_store_gpr(t0, rd);
13476
}
13477
break;
13478
@@ -XXX,XX +XXX,XX @@ static bool decode_opc_legacy(CPUMIPSState *env, DisasContext *ctx)
13479
break;
13480
case OPC_DVPE:
13481
check_cp0_mt(ctx);
13482
- gen_helper_dvpe(t0, cpu_env);
13483
+ gen_helper_dvpe(t0, tcg_env);
13484
gen_store_gpr(t0, rt);
13485
break;
13486
case OPC_EVPE:
13487
check_cp0_mt(ctx);
13488
- gen_helper_evpe(t0, cpu_env);
13489
+ gen_helper_evpe(t0, tcg_env);
13490
gen_store_gpr(t0, rt);
13491
break;
13492
case OPC_DVP:
13493
check_insn(ctx, ISA_MIPS_R6);
13494
if (ctx->vp) {
13495
- gen_helper_dvp(t0, cpu_env);
13496
+ gen_helper_dvp(t0, tcg_env);
13497
gen_store_gpr(t0, rt);
13498
}
13499
break;
13500
case OPC_EVP:
13501
check_insn(ctx, ISA_MIPS_R6);
13502
if (ctx->vp) {
13503
- gen_helper_evp(t0, cpu_env);
13504
+ gen_helper_evp(t0, tcg_env);
13505
gen_store_gpr(t0, rt);
13506
}
13507
break;
13508
case OPC_DI:
13509
check_insn(ctx, ISA_MIPS_R2);
13510
save_cpu_state(ctx, 1);
13511
- gen_helper_di(t0, cpu_env);
13512
+ gen_helper_di(t0, tcg_env);
13513
gen_store_gpr(t0, rt);
13514
/*
13515
* Stop translation as we may have switched
13516
@@ -XXX,XX +XXX,XX @@ static bool decode_opc_legacy(CPUMIPSState *env, DisasContext *ctx)
13517
case OPC_EI:
13518
check_insn(ctx, ISA_MIPS_R2);
13519
save_cpu_state(ctx, 1);
13520
- gen_helper_ei(t0, cpu_env);
13521
+ gen_helper_ei(t0, tcg_env);
13522
gen_store_gpr(t0, rt);
13523
/*
13524
* DISAS_STOP isn't sufficient, we need to ensure we break
13525
@@ -XXX,XX +XXX,XX @@ void mips_tcg_init(void)
13526
{
13527
cpu_gpr[0] = NULL;
13528
for (unsigned i = 1; i < 32; i++)
13529
- cpu_gpr[i] = tcg_global_mem_new(cpu_env,
13530
+ cpu_gpr[i] = tcg_global_mem_new(tcg_env,
13531
offsetof(CPUMIPSState,
13532
active_tc.gpr[i]),
13533
regnames[i]);
13534
@@ -XXX,XX +XXX,XX @@ void mips_tcg_init(void)
13535
for (unsigned i = 1; i < 32; i++) {
13536
g_autofree char *rname = g_strdup_printf("%s[hi]", regnames[i]);
13537
13538
- cpu_gpr_hi[i] = tcg_global_mem_new_i64(cpu_env,
13539
+ cpu_gpr_hi[i] = tcg_global_mem_new_i64(tcg_env,
13540
offsetof(CPUMIPSState,
13541
active_tc.gpr_hi[i]),
13542
rname);
13543
@@ -XXX,XX +XXX,XX @@ void mips_tcg_init(void)
13544
for (unsigned i = 0; i < 32; i++) {
13545
int off = offsetof(CPUMIPSState, active_fpu.fpr[i].wr.d[0]);
13546
13547
- fpu_f64[i] = tcg_global_mem_new_i64(cpu_env, off, fregnames[i]);
13548
+ fpu_f64[i] = tcg_global_mem_new_i64(tcg_env, off, fregnames[i]);
13549
}
13550
msa_translate_init();
13551
- cpu_PC = tcg_global_mem_new(cpu_env,
13552
+ cpu_PC = tcg_global_mem_new(tcg_env,
13553
offsetof(CPUMIPSState, active_tc.PC), "PC");
13554
for (unsigned i = 0; i < MIPS_DSP_ACC; i++) {
13555
- cpu_HI[i] = tcg_global_mem_new(cpu_env,
13556
+ cpu_HI[i] = tcg_global_mem_new(tcg_env,
13557
offsetof(CPUMIPSState, active_tc.HI[i]),
13558
regnames_HI[i]);
13559
- cpu_LO[i] = tcg_global_mem_new(cpu_env,
13560
+ cpu_LO[i] = tcg_global_mem_new(tcg_env,
13561
offsetof(CPUMIPSState, active_tc.LO[i]),
13562
regnames_LO[i]);
13563
}
13564
- cpu_dspctrl = tcg_global_mem_new(cpu_env,
13565
+ cpu_dspctrl = tcg_global_mem_new(tcg_env,
13566
offsetof(CPUMIPSState,
13567
active_tc.DSPControl),
13568
"DSPControl");
13569
- bcond = tcg_global_mem_new(cpu_env,
13570
+ bcond = tcg_global_mem_new(tcg_env,
13571
offsetof(CPUMIPSState, bcond), "bcond");
13572
- btarget = tcg_global_mem_new(cpu_env,
13573
+ btarget = tcg_global_mem_new(tcg_env,
13574
offsetof(CPUMIPSState, btarget), "btarget");
13575
- hflags = tcg_global_mem_new_i32(cpu_env,
13576
+ hflags = tcg_global_mem_new_i32(tcg_env,
13577
offsetof(CPUMIPSState, hflags), "hflags");
13578
13579
- fpu_fcr0 = tcg_global_mem_new_i32(cpu_env,
13580
+ fpu_fcr0 = tcg_global_mem_new_i32(tcg_env,
13581
offsetof(CPUMIPSState, active_fpu.fcr0),
13582
"fcr0");
13583
- fpu_fcr31 = tcg_global_mem_new_i32(cpu_env,
13584
+ fpu_fcr31 = tcg_global_mem_new_i32(tcg_env,
13585
offsetof(CPUMIPSState, active_fpu.fcr31),
13586
"fcr31");
13587
- cpu_lladdr = tcg_global_mem_new(cpu_env, offsetof(CPUMIPSState, lladdr),
13588
+ cpu_lladdr = tcg_global_mem_new(tcg_env, offsetof(CPUMIPSState, lladdr),
13589
"lladdr");
13590
- cpu_llval = tcg_global_mem_new(cpu_env, offsetof(CPUMIPSState, llval),
13591
+ cpu_llval = tcg_global_mem_new(tcg_env, offsetof(CPUMIPSState, llval),
13592
"llval");
13593
13594
if (TARGET_LONG_BITS == 32) {
13595
diff --git a/target/mips/tcg/vr54xx_translate.c b/target/mips/tcg/vr54xx_translate.c
13596
index XXXXXXX..XXXXXXX 100644
13597
--- a/target/mips/tcg/vr54xx_translate.c
13598
+++ b/target/mips/tcg/vr54xx_translate.c
13599
@@ -XXX,XX +XXX,XX @@ static bool trans_mult_acc(DisasContext *ctx, arg_r *a,
13600
gen_load_gpr(t0, a->rs);
13601
gen_load_gpr(t1, a->rt);
13602
13603
- gen_helper_mult_acc(t0, cpu_env, t0, t1);
13604
+ gen_helper_mult_acc(t0, tcg_env, t0, t1);
13605
13606
gen_store_gpr(t0, a->rd);
13607
return true;
13608
diff --git a/target/nios2/translate.c b/target/nios2/translate.c
13609
index XXXXXXX..XXXXXXX 100644
13610
--- a/target/nios2/translate.c
13611
+++ b/target/nios2/translate.c
13612
@@ -XXX,XX +XXX,XX @@ static void t_gen_helper_raise_exception(DisasContext *dc, uint32_t index)
13613
{
13614
/* Note that PC is advanced for all hardware exceptions. */
13615
tcg_gen_movi_tl(cpu_pc, dc->base.pc_next);
13616
- gen_helper_raise_exception(cpu_env, tcg_constant_i32(index));
13617
+ gen_helper_raise_exception(tcg_env, tcg_constant_i32(index));
13618
dc->base.is_jmp = DISAS_NORETURN;
13619
}
13620
13621
@@ -XXX,XX +XXX,XX @@ static void gen_jumpr(DisasContext *dc, int regno, bool is_call)
13622
tcg_gen_lookup_and_goto_ptr();
13623
13624
gen_set_label(l);
13625
- tcg_gen_st_tl(dest, cpu_env, offsetof(CPUNios2State, ctrl[CR_BADADDR]));
13626
+ tcg_gen_st_tl(dest, tcg_env, offsetof(CPUNios2State, ctrl[CR_BADADDR]));
13627
t_gen_helper_raise_exception(dc, EXCP_UNALIGND);
13628
13629
dc->base.is_jmp = DISAS_NORETURN;
13630
@@ -XXX,XX +XXX,XX @@ static void rdprs(DisasContext *dc, uint32_t code, uint32_t flags)
13631
#else
13632
I_TYPE(instr, code);
13633
TCGv dest = dest_gpr(dc, instr.b);
13634
- gen_helper_rdprs(dest, cpu_env, tcg_constant_i32(instr.a));
13635
+ gen_helper_rdprs(dest, tcg_env, tcg_constant_i32(instr.a));
13636
tcg_gen_addi_tl(dest, dest, instr.imm16.s);
13637
#endif
13638
}
13639
@@ -XXX,XX +XXX,XX @@ static void eret(DisasContext *dc, uint32_t code, uint32_t flags)
13640
#else
13641
if (FIELD_EX32(dc->tb_flags, TBFLAGS, CRS0)) {
13642
TCGv tmp = tcg_temp_new();
13643
- tcg_gen_ld_tl(tmp, cpu_env, offsetof(CPUNios2State, ctrl[CR_ESTATUS]));
13644
- gen_helper_eret(cpu_env, tmp, load_gpr(dc, R_EA));
13645
+ tcg_gen_ld_tl(tmp, tcg_env, offsetof(CPUNios2State, ctrl[CR_ESTATUS]));
13646
+ gen_helper_eret(tcg_env, tmp, load_gpr(dc, R_EA));
13647
} else {
13648
- gen_helper_eret(cpu_env, load_gpr(dc, R_SSTATUS), load_gpr(dc, R_EA));
13649
+ gen_helper_eret(tcg_env, load_gpr(dc, R_SSTATUS), load_gpr(dc, R_EA));
13650
}
13651
dc->base.is_jmp = DISAS_NORETURN;
13652
#endif
13653
@@ -XXX,XX +XXX,XX @@ static void bret(DisasContext *dc, uint32_t code, uint32_t flags)
13654
g_assert_not_reached();
13655
#else
13656
TCGv tmp = tcg_temp_new();
13657
- tcg_gen_ld_tl(tmp, cpu_env, offsetof(CPUNios2State, ctrl[CR_BSTATUS]));
13658
- gen_helper_eret(cpu_env, tmp, load_gpr(dc, R_BA));
13659
+ tcg_gen_ld_tl(tmp, tcg_env, offsetof(CPUNios2State, ctrl[CR_BSTATUS]));
13660
+ gen_helper_eret(tcg_env, tmp, load_gpr(dc, R_BA));
13661
13662
dc->base.is_jmp = DISAS_NORETURN;
13663
#endif
13664
@@ -XXX,XX +XXX,XX @@ static void rdctl(DisasContext *dc, uint32_t code, uint32_t flags)
13665
*/
13666
t1 = tcg_temp_new();
13667
t2 = tcg_temp_new();
13668
- tcg_gen_ld_tl(t1, cpu_env, offsetof(CPUNios2State, ctrl[CR_IPENDING]));
13669
- tcg_gen_ld_tl(t2, cpu_env, offsetof(CPUNios2State, ctrl[CR_IENABLE]));
13670
+ tcg_gen_ld_tl(t1, tcg_env, offsetof(CPUNios2State, ctrl[CR_IPENDING]));
13671
+ tcg_gen_ld_tl(t2, tcg_env, offsetof(CPUNios2State, ctrl[CR_IENABLE]));
13672
tcg_gen_and_tl(dest, t1, t2);
13673
break;
13674
default:
13675
- tcg_gen_ld_tl(dest, cpu_env,
13676
+ tcg_gen_ld_tl(dest, tcg_env,
13677
offsetof(CPUNios2State, ctrl[instr.imm5]));
13678
break;
13679
}
13680
@@ -XXX,XX +XXX,XX @@ static void wrctl(DisasContext *dc, uint32_t code, uint32_t flags)
13681
13682
switch (instr.imm5) {
13683
case CR_PTEADDR:
13684
- gen_helper_mmu_write_pteaddr(cpu_env, v);
13685
+ gen_helper_mmu_write_pteaddr(tcg_env, v);
13686
break;
13687
case CR_TLBACC:
13688
- gen_helper_mmu_write_tlbacc(cpu_env, v);
13689
+ gen_helper_mmu_write_tlbacc(tcg_env, v);
13690
break;
13691
case CR_TLBMISC:
13692
- gen_helper_mmu_write_tlbmisc(cpu_env, v);
13693
+ gen_helper_mmu_write_tlbmisc(tcg_env, v);
13694
break;
13695
case CR_STATUS:
13696
case CR_IENABLE:
13697
@@ -XXX,XX +XXX,XX @@ static void wrctl(DisasContext *dc, uint32_t code, uint32_t flags)
13698
default:
13699
if (wr == -1) {
13700
/* The register is entirely writable. */
13701
- tcg_gen_st_tl(v, cpu_env, ofs);
13702
+ tcg_gen_st_tl(v, tcg_env, ofs);
13703
} else {
13704
/*
13705
* The register is partially read-only or reserved:
13706
@@ -XXX,XX +XXX,XX @@ static void wrctl(DisasContext *dc, uint32_t code, uint32_t flags)
13707
13708
if (ro != 0) {
13709
TCGv o = tcg_temp_new();
13710
- tcg_gen_ld_tl(o, cpu_env, ofs);
13711
+ tcg_gen_ld_tl(o, tcg_env, ofs);
13712
tcg_gen_andi_tl(o, o, ro);
13713
tcg_gen_or_tl(n, n, o);
13714
}
13715
13716
- tcg_gen_st_tl(n, cpu_env, ofs);
13717
+ tcg_gen_st_tl(n, tcg_env, ofs);
13718
}
13719
break;
13720
}
13721
@@ -XXX,XX +XXX,XX @@ static void wrprs(DisasContext *dc, uint32_t code, uint32_t flags)
13722
g_assert_not_reached();
13723
#else
13724
R_TYPE(instr, code);
13725
- gen_helper_wrprs(cpu_env, tcg_constant_i32(instr.c),
13726
+ gen_helper_wrprs(tcg_env, tcg_constant_i32(instr.c),
13727
load_gpr(dc, instr.a));
13728
/*
13729
* The expected write to PRS[r0] is 0, from CRS[r0].
13730
@@ -XXX,XX +XXX,XX @@ gen_rr_shift(ror, rotr)
13731
static void divs(DisasContext *dc, uint32_t code, uint32_t flags)
13732
{
13733
R_TYPE(instr, (code));
13734
- gen_helper_divs(dest_gpr(dc, instr.c), cpu_env,
13735
+ gen_helper_divs(dest_gpr(dc, instr.c), tcg_env,
13736
load_gpr(dc, instr.a), load_gpr(dc, instr.b));
13737
}
13738
13739
static void divu(DisasContext *dc, uint32_t code, uint32_t flags)
13740
{
13741
R_TYPE(instr, (code));
13742
- gen_helper_divu(dest_gpr(dc, instr.c), cpu_env,
13743
+ gen_helper_divu(dest_gpr(dc, instr.c), tcg_env,
13744
load_gpr(dc, instr.a), load_gpr(dc, instr.b));
13745
}
13746
13747
@@ -XXX,XX +XXX,XX @@ static void trap(DisasContext *dc, uint32_t code, uint32_t flags)
13748
* things easier for cpu_loop if we pop this into env->error_code.
13749
*/
13750
R_TYPE(instr, code);
13751
- tcg_gen_st_i32(tcg_constant_i32(instr.imm5), cpu_env,
13752
+ tcg_gen_st_i32(tcg_constant_i32(instr.imm5), tcg_env,
13753
offsetof(CPUNios2State, error_code));
13754
#endif
13755
t_gen_helper_raise_exception(dc, EXCP_TRAP);
13756
@@ -XXX,XX +XXX,XX @@ void nios2_cpu_dump_state(CPUState *cs, FILE *f, int flags)
13757
void nios2_tcg_init(void)
13758
{
13759
#ifndef CONFIG_USER_ONLY
13760
- TCGv_ptr crs = tcg_global_mem_new_ptr(cpu_env,
13761
+ TCGv_ptr crs = tcg_global_mem_new_ptr(tcg_env,
13762
offsetof(CPUNios2State, regs), "crs");
13763
13764
for (int i = 0; i < NUM_GP_REGS; i++) {
13765
@@ -XXX,XX +XXX,XX @@ void nios2_tcg_init(void)
13766
#endif
13767
13768
for (int i = 0; i < NUM_GP_REGS; i++) {
13769
- cpu_R[i] = tcg_global_mem_new(cpu_env, offsetof_regs0(i),
13770
+ cpu_R[i] = tcg_global_mem_new(tcg_env, offsetof_regs0(i),
13771
gr_regnames[i]);
13772
}
13773
13774
#undef offsetof_regs0
13775
13776
- cpu_pc = tcg_global_mem_new(cpu_env,
13777
+ cpu_pc = tcg_global_mem_new(tcg_env,
13778
offsetof(CPUNios2State, pc), "pc");
13779
}
13780
diff --git a/target/openrisc/translate.c b/target/openrisc/translate.c
13781
index XXXXXXX..XXXXXXX 100644
13782
--- a/target/openrisc/translate.c
13783
+++ b/target/openrisc/translate.c
13784
@@ -XXX,XX +XXX,XX @@ void openrisc_translate_init(void)
13785
};
13786
int i;
13787
13788
- cpu_sr = tcg_global_mem_new(cpu_env,
13789
+ cpu_sr = tcg_global_mem_new(tcg_env,
13790
offsetof(CPUOpenRISCState, sr), "sr");
13791
- cpu_dflag = tcg_global_mem_new_i32(cpu_env,
13792
+ cpu_dflag = tcg_global_mem_new_i32(tcg_env,
13793
offsetof(CPUOpenRISCState, dflag),
13794
"dflag");
13795
- cpu_pc = tcg_global_mem_new(cpu_env,
13796
+ cpu_pc = tcg_global_mem_new(tcg_env,
13797
offsetof(CPUOpenRISCState, pc), "pc");
13798
- cpu_ppc = tcg_global_mem_new(cpu_env,
13799
+ cpu_ppc = tcg_global_mem_new(tcg_env,
13800
offsetof(CPUOpenRISCState, ppc), "ppc");
13801
- jmp_pc = tcg_global_mem_new(cpu_env,
13802
+ jmp_pc = tcg_global_mem_new(tcg_env,
13803
offsetof(CPUOpenRISCState, jmp_pc), "jmp_pc");
13804
- cpu_sr_f = tcg_global_mem_new(cpu_env,
13805
+ cpu_sr_f = tcg_global_mem_new(tcg_env,
13806
offsetof(CPUOpenRISCState, sr_f), "sr_f");
13807
- cpu_sr_cy = tcg_global_mem_new(cpu_env,
13808
+ cpu_sr_cy = tcg_global_mem_new(tcg_env,
13809
offsetof(CPUOpenRISCState, sr_cy), "sr_cy");
13810
- cpu_sr_ov = tcg_global_mem_new(cpu_env,
13811
+ cpu_sr_ov = tcg_global_mem_new(tcg_env,
13812
offsetof(CPUOpenRISCState, sr_ov), "sr_ov");
13813
- cpu_lock_addr = tcg_global_mem_new(cpu_env,
13814
+ cpu_lock_addr = tcg_global_mem_new(tcg_env,
13815
offsetof(CPUOpenRISCState, lock_addr),
13816
"lock_addr");
13817
- cpu_lock_value = tcg_global_mem_new(cpu_env,
13818
+ cpu_lock_value = tcg_global_mem_new(tcg_env,
13819
offsetof(CPUOpenRISCState, lock_value),
13820
"lock_value");
13821
- fpcsr = tcg_global_mem_new_i32(cpu_env,
13822
+ fpcsr = tcg_global_mem_new_i32(tcg_env,
13823
offsetof(CPUOpenRISCState, fpcsr),
13824
"fpcsr");
13825
- cpu_mac = tcg_global_mem_new_i64(cpu_env,
13826
+ cpu_mac = tcg_global_mem_new_i64(tcg_env,
13827
offsetof(CPUOpenRISCState, mac),
13828
"mac");
13829
for (i = 0; i < 32; i++) {
13830
- cpu_regs[i] = tcg_global_mem_new(cpu_env,
13831
+ cpu_regs[i] = tcg_global_mem_new(tcg_env,
13832
offsetof(CPUOpenRISCState,
13833
shadow_gpr[0][i]),
13834
regnames[i]);
13835
@@ -XXX,XX +XXX,XX @@ void openrisc_translate_init(void)
13836
13837
static void gen_exception(DisasContext *dc, unsigned int excp)
13838
{
13839
- gen_helper_exception(cpu_env, tcg_constant_i32(excp));
13840
+ gen_helper_exception(tcg_env, tcg_constant_i32(excp));
13841
}
13842
13843
static void gen_illegal_exception(DisasContext *dc)
13844
@@ -XXX,XX +XXX,XX @@ static void check_r0_write(DisasContext *dc, int reg)
13845
static void gen_ove_cy(DisasContext *dc)
13846
{
13847
if (dc->tb_flags & SR_OVE) {
13848
- gen_helper_ove_cy(cpu_env);
13849
+ gen_helper_ove_cy(tcg_env);
13850
}
13851
}
13852
13853
static void gen_ove_ov(DisasContext *dc)
13854
{
13855
if (dc->tb_flags & SR_OVE) {
13856
- gen_helper_ove_ov(cpu_env);
13857
+ gen_helper_ove_ov(tcg_env);
13858
}
13859
}
13860
13861
static void gen_ove_cyov(DisasContext *dc)
13862
{
13863
if (dc->tb_flags & SR_OVE) {
13864
- gen_helper_ove_cyov(cpu_env);
13865
+ gen_helper_ove_cyov(tcg_env);
13866
}
13867
}
13868
13869
@@ -XXX,XX +XXX,XX @@ static bool trans_l_mfspr(DisasContext *dc, arg_l_mfspr *a)
13870
}
13871
13872
tcg_gen_ori_tl(spr, cpu_R(dc, a->a), a->k);
13873
- gen_helper_mfspr(cpu_R(dc, a->d), cpu_env, cpu_R(dc, a->d), spr);
13874
+ gen_helper_mfspr(cpu_R(dc, a->d), tcg_env, cpu_R(dc, a->d), spr);
13875
return true;
13876
}
13877
13878
@@ -XXX,XX +XXX,XX @@ static bool trans_l_mtspr(DisasContext *dc, arg_l_mtspr *a)
13879
dc->base.is_jmp = DISAS_EXIT;
13880
13881
tcg_gen_ori_tl(spr, cpu_R(dc, a->a), a->k);
13882
- gen_helper_mtspr(cpu_env, spr, cpu_R(dc, a->b));
13883
+ gen_helper_mtspr(tcg_env, spr, cpu_R(dc, a->b));
13884
return true;
13885
}
13886
13887
@@ -XXX,XX +XXX,XX @@ static bool trans_l_rfe(DisasContext *dc, arg_l_rfe *a)
13888
if (is_user(dc)) {
13889
gen_illegal_exception(dc);
13890
} else {
13891
- gen_helper_rfe(cpu_env);
13892
+ gen_helper_rfe(tcg_env);
13893
dc->base.is_jmp = DISAS_EXIT;
13894
}
13895
return true;
13896
@@ -XXX,XX +XXX,XX @@ static bool do_fp2(DisasContext *dc, arg_da *a,
13897
return false;
13898
}
13899
check_r0_write(dc, a->d);
13900
- fn(cpu_R(dc, a->d), cpu_env, cpu_R(dc, a->a));
13901
- gen_helper_update_fpcsr(cpu_env);
13902
+ fn(cpu_R(dc, a->d), tcg_env, cpu_R(dc, a->a));
13903
+ gen_helper_update_fpcsr(tcg_env);
13904
return true;
13905
}
13906
13907
@@ -XXX,XX +XXX,XX @@ static bool do_fp3(DisasContext *dc, arg_dab *a,
13908
return false;
13909
}
13910
check_r0_write(dc, a->d);
13911
- fn(cpu_R(dc, a->d), cpu_env, cpu_R(dc, a->a), cpu_R(dc, a->b));
13912
- gen_helper_update_fpcsr(cpu_env);
13913
+ fn(cpu_R(dc, a->d), tcg_env, cpu_R(dc, a->a), cpu_R(dc, a->b));
13914
+ gen_helper_update_fpcsr(tcg_env);
13915
return true;
13916
}
13917
13918
@@ -XXX,XX +XXX,XX @@ static bool do_fpcmp(DisasContext *dc, arg_ab *a,
13919
return false;
13920
}
13921
if (swap) {
13922
- fn(cpu_sr_f, cpu_env, cpu_R(dc, a->b), cpu_R(dc, a->a));
13923
+ fn(cpu_sr_f, tcg_env, cpu_R(dc, a->b), cpu_R(dc, a->a));
13924
} else {
13925
- fn(cpu_sr_f, cpu_env, cpu_R(dc, a->a), cpu_R(dc, a->b));
13926
+ fn(cpu_sr_f, tcg_env, cpu_R(dc, a->a), cpu_R(dc, a->b));
13927
}
13928
if (inv) {
13929
tcg_gen_xori_tl(cpu_sr_f, cpu_sr_f, 1);
13930
}
13931
- gen_helper_update_fpcsr(cpu_env);
13932
+ gen_helper_update_fpcsr(tcg_env);
13933
return true;
13934
}
13935
13936
@@ -XXX,XX +XXX,XX @@ static bool trans_lf_madd_s(DisasContext *dc, arg_dab *a)
13937
return false;
13938
}
13939
check_r0_write(dc, a->d);
13940
- gen_helper_float_madd_s(cpu_R(dc, a->d), cpu_env, cpu_R(dc, a->d),
13941
+ gen_helper_float_madd_s(cpu_R(dc, a->d), tcg_env, cpu_R(dc, a->d),
13942
cpu_R(dc, a->a), cpu_R(dc, a->b));
13943
- gen_helper_update_fpcsr(cpu_env);
13944
+ gen_helper_update_fpcsr(tcg_env);
13945
return true;
13946
}
13947
13948
@@ -XXX,XX +XXX,XX @@ static bool do_dp3(DisasContext *dc, arg_dab_pair *a,
13949
t1 = tcg_temp_new_i64();
13950
load_pair(dc, t0, a->a, a->ap);
13951
load_pair(dc, t1, a->b, a->bp);
13952
- fn(t0, cpu_env, t0, t1);
13953
+ fn(t0, tcg_env, t0, t1);
13954
save_pair(dc, t0, a->d, a->dp);
13955
13956
- gen_helper_update_fpcsr(cpu_env);
13957
+ gen_helper_update_fpcsr(tcg_env);
13958
return true;
13959
}
13960
13961
@@ -XXX,XX +XXX,XX @@ static bool do_dp2(DisasContext *dc, arg_da_pair *a,
13962
13963
t0 = tcg_temp_new_i64();
13964
load_pair(dc, t0, a->a, a->ap);
13965
- fn(t0, cpu_env, t0);
13966
+ fn(t0, tcg_env, t0);
13967
save_pair(dc, t0, a->d, a->dp);
13968
13969
- gen_helper_update_fpcsr(cpu_env);
13970
+ gen_helper_update_fpcsr(tcg_env);
13971
return true;
13972
}
13973
13974
@@ -XXX,XX +XXX,XX @@ static bool do_dpcmp(DisasContext *dc, arg_ab_pair *a,
13975
load_pair(dc, t0, a->a, a->ap);
13976
load_pair(dc, t1, a->b, a->bp);
13977
if (swap) {
13978
- fn(cpu_sr_f, cpu_env, t1, t0);
13979
+ fn(cpu_sr_f, tcg_env, t1, t0);
13980
} else {
13981
- fn(cpu_sr_f, cpu_env, t0, t1);
13982
+ fn(cpu_sr_f, tcg_env, t0, t1);
13983
}
13984
13985
if (inv) {
13986
tcg_gen_xori_tl(cpu_sr_f, cpu_sr_f, 1);
13987
}
13988
- gen_helper_update_fpcsr(cpu_env);
13989
+ gen_helper_update_fpcsr(tcg_env);
13990
return true;
13991
}
13992
13993
@@ -XXX,XX +XXX,XX @@ static bool trans_lf_stod_d(DisasContext *dc, arg_lf_stod_d *a)
13994
check_r0_write(dc, a->d);
13995
13996
t0 = tcg_temp_new_i64();
13997
- gen_helper_stod(t0, cpu_env, cpu_R(dc, a->a));
13998
+ gen_helper_stod(t0, tcg_env, cpu_R(dc, a->a));
13999
save_pair(dc, t0, a->d, a->dp);
14000
14001
- gen_helper_update_fpcsr(cpu_env);
14002
+ gen_helper_update_fpcsr(tcg_env);
14003
return true;
14004
}
14005
14006
@@ -XXX,XX +XXX,XX @@ static bool trans_lf_dtos_d(DisasContext *dc, arg_lf_dtos_d *a)
14007
14008
t0 = tcg_temp_new_i64();
14009
load_pair(dc, t0, a->a, a->ap);
14010
- gen_helper_dtos(cpu_R(dc, a->d), cpu_env, t0);
14011
+ gen_helper_dtos(cpu_R(dc, a->d), tcg_env, t0);
14012
14013
- gen_helper_update_fpcsr(cpu_env);
14014
+ gen_helper_update_fpcsr(tcg_env);
14015
return true;
14016
}
14017
14018
@@ -XXX,XX +XXX,XX @@ static bool trans_lf_madd_d(DisasContext *dc, arg_dab_pair *a)
14019
load_pair(dc, t0, a->d, a->dp);
14020
load_pair(dc, t1, a->a, a->ap);
14021
load_pair(dc, t2, a->b, a->bp);
14022
- gen_helper_float_madd_d(t0, cpu_env, t0, t1, t2);
14023
+ gen_helper_float_madd_d(t0, tcg_env, t0, t1, t2);
14024
save_pair(dc, t0, a->d, a->dp);
14025
14026
- gen_helper_update_fpcsr(cpu_env);
14027
+ gen_helper_update_fpcsr(tcg_env);
14028
return true;
14029
}
14030
14031
diff --git a/target/ppc/translate.c b/target/ppc/translate.c
14032
index XXXXXXX..XXXXXXX 100644
14033
--- a/target/ppc/translate.c
14034
+++ b/target/ppc/translate.c
14035
@@ -XXX,XX +XXX,XX @@ void ppc_translate_init(void)
14036
14037
for (i = 0; i < 8; i++) {
14038
snprintf(p, cpu_reg_names_size, "crf%d", i);
14039
- cpu_crf[i] = tcg_global_mem_new_i32(cpu_env,
14040
+ cpu_crf[i] = tcg_global_mem_new_i32(tcg_env,
14041
offsetof(CPUPPCState, crf[i]), p);
14042
p += 5;
14043
cpu_reg_names_size -= 5;
14044
@@ -XXX,XX +XXX,XX @@ void ppc_translate_init(void)
14045
14046
for (i = 0; i < 32; i++) {
14047
snprintf(p, cpu_reg_names_size, "r%d", i);
14048
- cpu_gpr[i] = tcg_global_mem_new(cpu_env,
14049
+ cpu_gpr[i] = tcg_global_mem_new(tcg_env,
14050
offsetof(CPUPPCState, gpr[i]), p);
14051
p += (i < 10) ? 3 : 4;
14052
cpu_reg_names_size -= (i < 10) ? 3 : 4;
14053
snprintf(p, cpu_reg_names_size, "r%dH", i);
14054
- cpu_gprh[i] = tcg_global_mem_new(cpu_env,
14055
+ cpu_gprh[i] = tcg_global_mem_new(tcg_env,
14056
offsetof(CPUPPCState, gprh[i]), p);
14057
p += (i < 10) ? 4 : 5;
14058
cpu_reg_names_size -= (i < 10) ? 4 : 5;
14059
}
14060
14061
- cpu_nip = tcg_global_mem_new(cpu_env,
14062
+ cpu_nip = tcg_global_mem_new(tcg_env,
14063
offsetof(CPUPPCState, nip), "nip");
14064
14065
- cpu_msr = tcg_global_mem_new(cpu_env,
14066
+ cpu_msr = tcg_global_mem_new(tcg_env,
14067
offsetof(CPUPPCState, msr), "msr");
14068
14069
- cpu_ctr = tcg_global_mem_new(cpu_env,
14070
+ cpu_ctr = tcg_global_mem_new(tcg_env,
14071
offsetof(CPUPPCState, ctr), "ctr");
14072
14073
- cpu_lr = tcg_global_mem_new(cpu_env,
14074
+ cpu_lr = tcg_global_mem_new(tcg_env,
14075
offsetof(CPUPPCState, lr), "lr");
14076
14077
#if defined(TARGET_PPC64)
14078
- cpu_cfar = tcg_global_mem_new(cpu_env,
14079
+ cpu_cfar = tcg_global_mem_new(tcg_env,
14080
offsetof(CPUPPCState, cfar), "cfar");
14081
#endif
14082
14083
- cpu_xer = tcg_global_mem_new(cpu_env,
14084
+ cpu_xer = tcg_global_mem_new(tcg_env,
14085
offsetof(CPUPPCState, xer), "xer");
14086
- cpu_so = tcg_global_mem_new(cpu_env,
14087
+ cpu_so = tcg_global_mem_new(tcg_env,
14088
offsetof(CPUPPCState, so), "SO");
14089
- cpu_ov = tcg_global_mem_new(cpu_env,
14090
+ cpu_ov = tcg_global_mem_new(tcg_env,
14091
offsetof(CPUPPCState, ov), "OV");
14092
- cpu_ca = tcg_global_mem_new(cpu_env,
14093
+ cpu_ca = tcg_global_mem_new(tcg_env,
14094
offsetof(CPUPPCState, ca), "CA");
14095
- cpu_ov32 = tcg_global_mem_new(cpu_env,
14096
+ cpu_ov32 = tcg_global_mem_new(tcg_env,
14097
offsetof(CPUPPCState, ov32), "OV32");
14098
- cpu_ca32 = tcg_global_mem_new(cpu_env,
14099
+ cpu_ca32 = tcg_global_mem_new(tcg_env,
14100
offsetof(CPUPPCState, ca32), "CA32");
14101
14102
- cpu_reserve = tcg_global_mem_new(cpu_env,
14103
+ cpu_reserve = tcg_global_mem_new(tcg_env,
14104
offsetof(CPUPPCState, reserve_addr),
14105
"reserve_addr");
14106
- cpu_reserve_length = tcg_global_mem_new(cpu_env,
14107
+ cpu_reserve_length = tcg_global_mem_new(tcg_env,
14108
offsetof(CPUPPCState,
14109
reserve_length),
14110
"reserve_length");
14111
- cpu_reserve_val = tcg_global_mem_new(cpu_env,
14112
+ cpu_reserve_val = tcg_global_mem_new(tcg_env,
14113
offsetof(CPUPPCState, reserve_val),
14114
"reserve_val");
14115
#if defined(TARGET_PPC64)
14116
- cpu_reserve_val2 = tcg_global_mem_new(cpu_env,
14117
+ cpu_reserve_val2 = tcg_global_mem_new(tcg_env,
14118
offsetof(CPUPPCState, reserve_val2),
14119
"reserve_val2");
14120
#endif
14121
14122
- cpu_fpscr = tcg_global_mem_new(cpu_env,
14123
+ cpu_fpscr = tcg_global_mem_new(tcg_env,
14124
offsetof(CPUPPCState, fpscr), "fpscr");
14125
14126
- cpu_access_type = tcg_global_mem_new_i32(cpu_env,
14127
+ cpu_access_type = tcg_global_mem_new_i32(tcg_env,
14128
offsetof(CPUPPCState, access_type),
14129
"access_type");
14130
}
14131
@@ -XXX,XX +XXX,XX @@ static inline bool gen_serialize(DisasContext *ctx)
14132
{
14133
if (tb_cflags(ctx->base.tb) & CF_PARALLEL) {
14134
/* Restart with exclusive lock. */
14135
- gen_helper_exit_atomic(cpu_env);
14136
+ gen_helper_exit_atomic(tcg_env);
14137
ctx->base.is_jmp = DISAS_NORETURN;
14138
return false;
14139
}
14140
@@ -XXX,XX +XXX,XX @@ static inline bool gen_serialize_core_lpar(DisasContext *ctx)
14141
/* SPR load/store helpers */
14142
static inline void gen_load_spr(TCGv t, int reg)
14143
{
14144
- tcg_gen_ld_tl(t, cpu_env, offsetof(CPUPPCState, spr[reg]));
14145
+ tcg_gen_ld_tl(t, tcg_env, offsetof(CPUPPCState, spr[reg]));
14146
}
14147
14148
static inline void gen_store_spr(int reg, TCGv t)
14149
{
14150
- tcg_gen_st_tl(t, cpu_env, offsetof(CPUPPCState, spr[reg]));
14151
+ tcg_gen_st_tl(t, tcg_env, offsetof(CPUPPCState, spr[reg]));
14152
}
14153
14154
static inline void gen_set_access_type(DisasContext *ctx, int access_type)
14155
@@ -XXX,XX +XXX,XX @@ static void gen_exception_err(DisasContext *ctx, uint32_t excp, uint32_t error)
14156
gen_update_nip(ctx, ctx->cia);
14157
t0 = tcg_constant_i32(excp);
14158
t1 = tcg_constant_i32(error);
14159
- gen_helper_raise_exception_err(cpu_env, t0, t1);
14160
+ gen_helper_raise_exception_err(tcg_env, t0, t1);
14161
ctx->base.is_jmp = DISAS_NORETURN;
14162
}
14163
14164
@@ -XXX,XX +XXX,XX @@ static void gen_exception(DisasContext *ctx, uint32_t excp)
14165
*/
14166
gen_update_nip(ctx, ctx->cia);
14167
t0 = tcg_constant_i32(excp);
14168
- gen_helper_raise_exception(cpu_env, t0);
14169
+ gen_helper_raise_exception(tcg_env, t0);
14170
ctx->base.is_jmp = DISAS_NORETURN;
14171
}
14172
14173
@@ -XXX,XX +XXX,XX @@ static void gen_exception_nip(DisasContext *ctx, uint32_t excp,
14174
14175
gen_update_nip(ctx, nip);
14176
t0 = tcg_constant_i32(excp);
14177
- gen_helper_raise_exception(cpu_env, t0);
14178
+ gen_helper_raise_exception(tcg_env, t0);
14179
ctx->base.is_jmp = DISAS_NORETURN;
14180
}
14181
14182
@@ -XXX,XX +XXX,XX @@ static void gen_exception_nip(DisasContext *ctx, uint32_t excp,
14183
static void gen_ppc_maybe_interrupt(DisasContext *ctx)
14184
{
14185
translator_io_start(&ctx->base);
14186
- gen_helper_ppc_maybe_interrupt(cpu_env);
14187
+ gen_helper_ppc_maybe_interrupt(tcg_env);
14188
}
14189
#endif
14190
14191
@@ -XXX,XX +XXX,XX @@ static void gen_debug_exception(DisasContext *ctx, bool rfi_type)
14192
gen_load_spr(t0, SPR_BOOKE_DBSR);
14193
tcg_gen_ori_tl(t0, t0, dbsr);
14194
gen_store_spr(SPR_BOOKE_DBSR, t0);
14195
- gen_helper_raise_exception(cpu_env,
14196
+ gen_helper_raise_exception(tcg_env,
14197
tcg_constant_i32(POWERPC_EXCP_DEBUG));
14198
ctx->base.is_jmp = DISAS_NORETURN;
14199
} else {
14200
if (!rfi_type) { /* BookS does not single step rfi type instructions */
14201
TCGv t0 = tcg_temp_new();
14202
tcg_gen_movi_tl(t0, ctx->cia);
14203
- gen_helper_book3s_trace(cpu_env, t0);
14204
+ gen_helper_book3s_trace(tcg_env, t0);
14205
ctx->base.is_jmp = DISAS_NORETURN;
14206
}
14207
}
14208
@@ -XXX,XX +XXX,XX @@ static void spr_load_dump_spr(int sprn)
14209
{
14210
#ifdef PPC_DUMP_SPR_ACCESSES
14211
TCGv_i32 t0 = tcg_constant_i32(sprn);
14212
- gen_helper_load_dump_spr(cpu_env, t0);
14213
+ gen_helper_load_dump_spr(tcg_env, t0);
14214
#endif
14215
}
14216
14217
@@ -XXX,XX +XXX,XX @@ static void spr_store_dump_spr(int sprn)
14218
{
14219
#ifdef PPC_DUMP_SPR_ACCESSES
14220
TCGv_i32 t0 = tcg_constant_i32(sprn);
14221
- gen_helper_store_dump_spr(cpu_env, t0);
14222
+ gen_helper_store_dump_spr(tcg_env, t0);
14223
#endif
14224
}
14225
14226
@@ -XXX,XX +XXX,XX @@ void spr_core_write_generic(DisasContext *ctx, int sprn, int gprn)
14227
return;
14228
}
14229
14230
- gen_helper_spr_core_write_generic(cpu_env, tcg_constant_i32(sprn),
14231
+ gen_helper_spr_core_write_generic(tcg_env, tcg_constant_i32(sprn),
14232
cpu_gpr[gprn]);
14233
spr_store_dump_spr(sprn);
14234
}
14235
@@ -XXX,XX +XXX,XX @@ void spr_write_CTRL(DisasContext *ctx, int sprn, int gprn)
14236
return;
14237
}
14238
14239
- gen_helper_spr_write_CTRL(cpu_env, tcg_constant_i32(sprn),
14240
+ gen_helper_spr_write_CTRL(tcg_env, tcg_constant_i32(sprn),
14241
cpu_gpr[gprn]);
14242
out:
14243
spr_store_dump_spr(sprn);
14244
@@ -XXX,XX +XXX,XX @@ void spr_write_cfar(DisasContext *ctx, int sprn, int gprn)
14245
void spr_write_ciabr(DisasContext *ctx, int sprn, int gprn)
14246
{
14247
translator_io_start(&ctx->base);
14248
- gen_helper_store_ciabr(cpu_env, cpu_gpr[gprn]);
14249
+ gen_helper_store_ciabr(tcg_env, cpu_gpr[gprn]);
14250
}
14251
14252
/* Watchpoint */
14253
void spr_write_dawr0(DisasContext *ctx, int sprn, int gprn)
14254
{
14255
translator_io_start(&ctx->base);
14256
- gen_helper_store_dawr0(cpu_env, cpu_gpr[gprn]);
14257
+ gen_helper_store_dawr0(tcg_env, cpu_gpr[gprn]);
14258
}
14259
14260
void spr_write_dawrx0(DisasContext *ctx, int sprn, int gprn)
14261
{
14262
translator_io_start(&ctx->base);
14263
- gen_helper_store_dawrx0(cpu_env, cpu_gpr[gprn]);
14264
+ gen_helper_store_dawrx0(tcg_env, cpu_gpr[gprn]);
14265
}
14266
#endif /* defined(TARGET_PPC64) && !defined(CONFIG_USER_ONLY) */
14267
14268
@@ -XXX,XX +XXX,XX @@ void spr_write_ureg(DisasContext *ctx, int sprn, int gprn)
14269
void spr_read_decr(DisasContext *ctx, int gprn, int sprn)
14270
{
14271
translator_io_start(&ctx->base);
14272
- gen_helper_load_decr(cpu_gpr[gprn], cpu_env);
14273
+ gen_helper_load_decr(cpu_gpr[gprn], tcg_env);
14274
}
14275
14276
void spr_write_decr(DisasContext *ctx, int sprn, int gprn)
14277
{
14278
translator_io_start(&ctx->base);
14279
- gen_helper_store_decr(cpu_env, cpu_gpr[gprn]);
14280
+ gen_helper_store_decr(tcg_env, cpu_gpr[gprn]);
14281
}
14282
#endif
14283
14284
@@ -XXX,XX +XXX,XX @@ void spr_write_decr(DisasContext *ctx, int sprn, int gprn)
14285
void spr_read_tbl(DisasContext *ctx, int gprn, int sprn)
14286
{
14287
translator_io_start(&ctx->base);
14288
- gen_helper_load_tbl(cpu_gpr[gprn], cpu_env);
14289
+ gen_helper_load_tbl(cpu_gpr[gprn], tcg_env);
14290
}
14291
14292
void spr_read_tbu(DisasContext *ctx, int gprn, int sprn)
14293
{
14294
translator_io_start(&ctx->base);
14295
- gen_helper_load_tbu(cpu_gpr[gprn], cpu_env);
14296
+ gen_helper_load_tbu(cpu_gpr[gprn], tcg_env);
14297
}
14298
14299
void spr_read_atbl(DisasContext *ctx, int gprn, int sprn)
14300
{
14301
- gen_helper_load_atbl(cpu_gpr[gprn], cpu_env);
14302
+ gen_helper_load_atbl(cpu_gpr[gprn], tcg_env);
14303
}
14304
14305
void spr_read_atbu(DisasContext *ctx, int gprn, int sprn)
14306
{
14307
- gen_helper_load_atbu(cpu_gpr[gprn], cpu_env);
14308
+ gen_helper_load_atbu(cpu_gpr[gprn], tcg_env);
14309
}
14310
14311
#if !defined(CONFIG_USER_ONLY)
14312
void spr_write_tbl(DisasContext *ctx, int sprn, int gprn)
14313
{
14314
translator_io_start(&ctx->base);
14315
- gen_helper_store_tbl(cpu_env, cpu_gpr[gprn]);
14316
+ gen_helper_store_tbl(tcg_env, cpu_gpr[gprn]);
14317
}
14318
14319
void spr_write_tbu(DisasContext *ctx, int sprn, int gprn)
14320
{
14321
translator_io_start(&ctx->base);
14322
- gen_helper_store_tbu(cpu_env, cpu_gpr[gprn]);
14323
+ gen_helper_store_tbu(tcg_env, cpu_gpr[gprn]);
14324
}
14325
14326
void spr_write_atbl(DisasContext *ctx, int sprn, int gprn)
14327
{
14328
- gen_helper_store_atbl(cpu_env, cpu_gpr[gprn]);
14329
+ gen_helper_store_atbl(tcg_env, cpu_gpr[gprn]);
14330
}
14331
14332
void spr_write_atbu(DisasContext *ctx, int sprn, int gprn)
14333
{
14334
- gen_helper_store_atbu(cpu_env, cpu_gpr[gprn]);
14335
+ gen_helper_store_atbu(tcg_env, cpu_gpr[gprn]);
14336
}
14337
14338
#if defined(TARGET_PPC64)
14339
void spr_read_purr(DisasContext *ctx, int gprn, int sprn)
14340
{
14341
translator_io_start(&ctx->base);
14342
- gen_helper_load_purr(cpu_gpr[gprn], cpu_env);
14343
+ gen_helper_load_purr(cpu_gpr[gprn], tcg_env);
14344
}
14345
14346
void spr_write_purr(DisasContext *ctx, int sprn, int gprn)
14347
{
14348
translator_io_start(&ctx->base);
14349
- gen_helper_store_purr(cpu_env, cpu_gpr[gprn]);
14350
+ gen_helper_store_purr(tcg_env, cpu_gpr[gprn]);
14351
}
14352
14353
/* HDECR */
14354
void spr_read_hdecr(DisasContext *ctx, int gprn, int sprn)
14355
{
14356
translator_io_start(&ctx->base);
14357
- gen_helper_load_hdecr(cpu_gpr[gprn], cpu_env);
14358
+ gen_helper_load_hdecr(cpu_gpr[gprn], tcg_env);
14359
}
14360
14361
void spr_write_hdecr(DisasContext *ctx, int sprn, int gprn)
14362
{
14363
translator_io_start(&ctx->base);
14364
- gen_helper_store_hdecr(cpu_env, cpu_gpr[gprn]);
14365
+ gen_helper_store_hdecr(tcg_env, cpu_gpr[gprn]);
14366
}
14367
14368
void spr_read_vtb(DisasContext *ctx, int gprn, int sprn)
14369
{
14370
translator_io_start(&ctx->base);
14371
- gen_helper_load_vtb(cpu_gpr[gprn], cpu_env);
14372
+ gen_helper_load_vtb(cpu_gpr[gprn], tcg_env);
14373
}
14374
14375
void spr_write_vtb(DisasContext *ctx, int sprn, int gprn)
14376
{
14377
translator_io_start(&ctx->base);
14378
- gen_helper_store_vtb(cpu_env, cpu_gpr[gprn]);
14379
+ gen_helper_store_vtb(tcg_env, cpu_gpr[gprn]);
14380
}
14381
14382
void spr_write_tbu40(DisasContext *ctx, int sprn, int gprn)
14383
{
14384
translator_io_start(&ctx->base);
14385
- gen_helper_store_tbu40(cpu_env, cpu_gpr[gprn]);
14386
+ gen_helper_store_tbu40(tcg_env, cpu_gpr[gprn]);
14387
}
14388
14389
#endif
14390
@@ -XXX,XX +XXX,XX @@ void spr_write_tbu40(DisasContext *ctx, int sprn, int gprn)
14391
/* IBAT0L...IBAT7L */
14392
void spr_read_ibat(DisasContext *ctx, int gprn, int sprn)
14393
{
14394
- tcg_gen_ld_tl(cpu_gpr[gprn], cpu_env,
14395
+ tcg_gen_ld_tl(cpu_gpr[gprn], tcg_env,
14396
offsetof(CPUPPCState,
14397
IBAT[sprn & 1][(sprn - SPR_IBAT0U) / 2]));
14398
}
14399
14400
void spr_read_ibat_h(DisasContext *ctx, int gprn, int sprn)
14401
{
14402
- tcg_gen_ld_tl(cpu_gpr[gprn], cpu_env,
14403
+ tcg_gen_ld_tl(cpu_gpr[gprn], tcg_env,
14404
offsetof(CPUPPCState,
14405
IBAT[sprn & 1][((sprn - SPR_IBAT4U) / 2) + 4]));
14406
}
14407
@@ -XXX,XX +XXX,XX @@ void spr_read_ibat_h(DisasContext *ctx, int gprn, int sprn)
14408
void spr_write_ibatu(DisasContext *ctx, int sprn, int gprn)
14409
{
14410
TCGv_i32 t0 = tcg_constant_i32((sprn - SPR_IBAT0U) / 2);
14411
- gen_helper_store_ibatu(cpu_env, t0, cpu_gpr[gprn]);
14412
+ gen_helper_store_ibatu(tcg_env, t0, cpu_gpr[gprn]);
14413
}
14414
14415
void spr_write_ibatu_h(DisasContext *ctx, int sprn, int gprn)
14416
{
14417
TCGv_i32 t0 = tcg_constant_i32(((sprn - SPR_IBAT4U) / 2) + 4);
14418
- gen_helper_store_ibatu(cpu_env, t0, cpu_gpr[gprn]);
14419
+ gen_helper_store_ibatu(tcg_env, t0, cpu_gpr[gprn]);
14420
}
14421
14422
void spr_write_ibatl(DisasContext *ctx, int sprn, int gprn)
14423
{
14424
TCGv_i32 t0 = tcg_constant_i32((sprn - SPR_IBAT0L) / 2);
14425
- gen_helper_store_ibatl(cpu_env, t0, cpu_gpr[gprn]);
14426
+ gen_helper_store_ibatl(tcg_env, t0, cpu_gpr[gprn]);
14427
}
14428
14429
void spr_write_ibatl_h(DisasContext *ctx, int sprn, int gprn)
14430
{
14431
TCGv_i32 t0 = tcg_constant_i32(((sprn - SPR_IBAT4L) / 2) + 4);
14432
- gen_helper_store_ibatl(cpu_env, t0, cpu_gpr[gprn]);
14433
+ gen_helper_store_ibatl(tcg_env, t0, cpu_gpr[gprn]);
14434
}
14435
14436
/* DBAT0U...DBAT7U */
14437
/* DBAT0L...DBAT7L */
14438
void spr_read_dbat(DisasContext *ctx, int gprn, int sprn)
14439
{
14440
- tcg_gen_ld_tl(cpu_gpr[gprn], cpu_env,
14441
+ tcg_gen_ld_tl(cpu_gpr[gprn], tcg_env,
14442
offsetof(CPUPPCState,
14443
DBAT[sprn & 1][(sprn - SPR_DBAT0U) / 2]));
14444
}
14445
14446
void spr_read_dbat_h(DisasContext *ctx, int gprn, int sprn)
14447
{
14448
- tcg_gen_ld_tl(cpu_gpr[gprn], cpu_env,
14449
+ tcg_gen_ld_tl(cpu_gpr[gprn], tcg_env,
14450
offsetof(CPUPPCState,
14451
DBAT[sprn & 1][((sprn - SPR_DBAT4U) / 2) + 4]));
14452
}
14453
@@ -XXX,XX +XXX,XX @@ void spr_read_dbat_h(DisasContext *ctx, int gprn, int sprn)
14454
void spr_write_dbatu(DisasContext *ctx, int sprn, int gprn)
14455
{
14456
TCGv_i32 t0 = tcg_constant_i32((sprn - SPR_DBAT0U) / 2);
14457
- gen_helper_store_dbatu(cpu_env, t0, cpu_gpr[gprn]);
14458
+ gen_helper_store_dbatu(tcg_env, t0, cpu_gpr[gprn]);
14459
}
14460
14461
void spr_write_dbatu_h(DisasContext *ctx, int sprn, int gprn)
14462
{
14463
TCGv_i32 t0 = tcg_constant_i32(((sprn - SPR_DBAT4U) / 2) + 4);
14464
- gen_helper_store_dbatu(cpu_env, t0, cpu_gpr[gprn]);
14465
+ gen_helper_store_dbatu(tcg_env, t0, cpu_gpr[gprn]);
14466
}
14467
14468
void spr_write_dbatl(DisasContext *ctx, int sprn, int gprn)
14469
{
14470
TCGv_i32 t0 = tcg_constant_i32((sprn - SPR_DBAT0L) / 2);
14471
- gen_helper_store_dbatl(cpu_env, t0, cpu_gpr[gprn]);
14472
+ gen_helper_store_dbatl(tcg_env, t0, cpu_gpr[gprn]);
14473
}
14474
14475
void spr_write_dbatl_h(DisasContext *ctx, int sprn, int gprn)
14476
{
14477
TCGv_i32 t0 = tcg_constant_i32(((sprn - SPR_DBAT4L) / 2) + 4);
14478
- gen_helper_store_dbatl(cpu_env, t0, cpu_gpr[gprn]);
14479
+ gen_helper_store_dbatl(tcg_env, t0, cpu_gpr[gprn]);
14480
}
14481
14482
/* SDR1 */
14483
void spr_write_sdr1(DisasContext *ctx, int sprn, int gprn)
14484
{
14485
- gen_helper_store_sdr1(cpu_env, cpu_gpr[gprn]);
14486
+ gen_helper_store_sdr1(tcg_env, cpu_gpr[gprn]);
14487
}
14488
14489
#if defined(TARGET_PPC64)
14490
@@ -XXX,XX +XXX,XX @@ void spr_write_sdr1(DisasContext *ctx, int sprn, int gprn)
14491
/* PIDR */
14492
void spr_write_pidr(DisasContext *ctx, int sprn, int gprn)
14493
{
14494
- gen_helper_store_pidr(cpu_env, cpu_gpr[gprn]);
14495
+ gen_helper_store_pidr(tcg_env, cpu_gpr[gprn]);
14496
}
14497
14498
void spr_write_lpidr(DisasContext *ctx, int sprn, int gprn)
14499
{
14500
- gen_helper_store_lpidr(cpu_env, cpu_gpr[gprn]);
14501
+ gen_helper_store_lpidr(tcg_env, cpu_gpr[gprn]);
14502
}
14503
14504
void spr_read_hior(DisasContext *ctx, int gprn, int sprn)
14505
{
14506
- tcg_gen_ld_tl(cpu_gpr[gprn], cpu_env, offsetof(CPUPPCState, excp_prefix));
14507
+ tcg_gen_ld_tl(cpu_gpr[gprn], tcg_env, offsetof(CPUPPCState, excp_prefix));
14508
}
14509
14510
void spr_write_hior(DisasContext *ctx, int sprn, int gprn)
14511
{
14512
TCGv t0 = tcg_temp_new();
14513
tcg_gen_andi_tl(t0, cpu_gpr[gprn], 0x3FFFFF00000ULL);
14514
- tcg_gen_st_tl(t0, cpu_env, offsetof(CPUPPCState, excp_prefix));
14515
+ tcg_gen_st_tl(t0, tcg_env, offsetof(CPUPPCState, excp_prefix));
14516
}
14517
void spr_write_ptcr(DisasContext *ctx, int sprn, int gprn)
14518
{
14519
- gen_helper_store_ptcr(cpu_env, cpu_gpr[gprn]);
14520
+ gen_helper_store_ptcr(tcg_env, cpu_gpr[gprn]);
14521
}
14522
14523
void spr_write_pcr(DisasContext *ctx, int sprn, int gprn)
14524
{
14525
- gen_helper_store_pcr(cpu_env, cpu_gpr[gprn]);
14526
+ gen_helper_store_pcr(tcg_env, cpu_gpr[gprn]);
14527
}
14528
14529
/* DPDES */
14530
@@ -XXX,XX +XXX,XX @@ void spr_read_dpdes(DisasContext *ctx, int gprn, int sprn)
14531
return;
14532
}
14533
14534
- gen_helper_load_dpdes(cpu_gpr[gprn], cpu_env);
14535
+ gen_helper_load_dpdes(cpu_gpr[gprn], tcg_env);
14536
}
14537
14538
void spr_write_dpdes(DisasContext *ctx, int sprn, int gprn)
14539
@@ -XXX,XX +XXX,XX @@ void spr_write_dpdes(DisasContext *ctx, int sprn, int gprn)
14540
return;
14541
}
14542
14543
- gen_helper_store_dpdes(cpu_env, cpu_gpr[gprn]);
14544
+ gen_helper_store_dpdes(tcg_env, cpu_gpr[gprn]);
14545
}
14546
#endif
14547
#endif
14548
@@ -XXX,XX +XXX,XX @@ void spr_write_dpdes(DisasContext *ctx, int sprn, int gprn)
14549
void spr_read_40x_pit(DisasContext *ctx, int gprn, int sprn)
14550
{
14551
translator_io_start(&ctx->base);
14552
- gen_helper_load_40x_pit(cpu_gpr[gprn], cpu_env);
14553
+ gen_helper_load_40x_pit(cpu_gpr[gprn], tcg_env);
14554
}
14555
14556
void spr_write_40x_pit(DisasContext *ctx, int sprn, int gprn)
14557
{
14558
translator_io_start(&ctx->base);
14559
- gen_helper_store_40x_pit(cpu_env, cpu_gpr[gprn]);
14560
+ gen_helper_store_40x_pit(tcg_env, cpu_gpr[gprn]);
14561
}
14562
14563
void spr_write_40x_dbcr0(DisasContext *ctx, int sprn, int gprn)
14564
{
14565
translator_io_start(&ctx->base);
14566
gen_store_spr(sprn, cpu_gpr[gprn]);
14567
- gen_helper_store_40x_dbcr0(cpu_env, cpu_gpr[gprn]);
14568
+ gen_helper_store_40x_dbcr0(tcg_env, cpu_gpr[gprn]);
14569
/* We must stop translation as we may have rebooted */
14570
ctx->base.is_jmp = DISAS_EXIT_UPDATE;
14571
}
14572
@@ -XXX,XX +XXX,XX @@ void spr_write_40x_dbcr0(DisasContext *ctx, int sprn, int gprn)
14573
void spr_write_40x_sler(DisasContext *ctx, int sprn, int gprn)
14574
{
14575
translator_io_start(&ctx->base);
14576
- gen_helper_store_40x_sler(cpu_env, cpu_gpr[gprn]);
14577
+ gen_helper_store_40x_sler(tcg_env, cpu_gpr[gprn]);
14578
}
14579
14580
void spr_write_40x_tcr(DisasContext *ctx, int sprn, int gprn)
14581
{
14582
translator_io_start(&ctx->base);
14583
- gen_helper_store_40x_tcr(cpu_env, cpu_gpr[gprn]);
14584
+ gen_helper_store_40x_tcr(tcg_env, cpu_gpr[gprn]);
14585
}
14586
14587
void spr_write_40x_tsr(DisasContext *ctx, int sprn, int gprn)
14588
{
14589
translator_io_start(&ctx->base);
14590
- gen_helper_store_40x_tsr(cpu_env, cpu_gpr[gprn]);
14591
+ gen_helper_store_40x_tsr(tcg_env, cpu_gpr[gprn]);
14592
}
14593
14594
void spr_write_40x_pid(DisasContext *ctx, int sprn, int gprn)
14595
{
14596
TCGv t0 = tcg_temp_new();
14597
tcg_gen_andi_tl(t0, cpu_gpr[gprn], 0xFF);
14598
- gen_helper_store_40x_pid(cpu_env, t0);
14599
+ gen_helper_store_40x_pid(tcg_env, t0);
14600
}
14601
14602
void spr_write_booke_tcr(DisasContext *ctx, int sprn, int gprn)
14603
{
14604
translator_io_start(&ctx->base);
14605
- gen_helper_store_booke_tcr(cpu_env, cpu_gpr[gprn]);
14606
+ gen_helper_store_booke_tcr(tcg_env, cpu_gpr[gprn]);
14607
}
14608
14609
void spr_write_booke_tsr(DisasContext *ctx, int sprn, int gprn)
14610
{
14611
translator_io_start(&ctx->base);
14612
- gen_helper_store_booke_tsr(cpu_env, cpu_gpr[gprn]);
14613
+ gen_helper_store_booke_tsr(tcg_env, cpu_gpr[gprn]);
14614
}
14615
#endif
14616
14617
@@ -XXX,XX +XXX,XX @@ void spr_write_pir(DisasContext *ctx, int sprn, int gprn)
14618
void spr_read_spefscr(DisasContext *ctx, int gprn, int sprn)
14619
{
14620
TCGv_i32 t0 = tcg_temp_new_i32();
14621
- tcg_gen_ld_i32(t0, cpu_env, offsetof(CPUPPCState, spe_fscr));
14622
+ tcg_gen_ld_i32(t0, tcg_env, offsetof(CPUPPCState, spe_fscr));
14623
tcg_gen_extu_i32_tl(cpu_gpr[gprn], t0);
14624
}
14625
14626
@@ -XXX,XX +XXX,XX @@ void spr_write_spefscr(DisasContext *ctx, int sprn, int gprn)
14627
{
14628
TCGv_i32 t0 = tcg_temp_new_i32();
14629
tcg_gen_trunc_tl_i32(t0, cpu_gpr[gprn]);
14630
- tcg_gen_st_i32(t0, cpu_env, offsetof(CPUPPCState, spe_fscr));
14631
+ tcg_gen_st_i32(t0, tcg_env, offsetof(CPUPPCState, spe_fscr));
14632
}
14633
14634
#if !defined(CONFIG_USER_ONLY)
14635
@@ -XXX,XX +XXX,XX @@ void spr_write_spefscr(DisasContext *ctx, int sprn, int gprn)
14636
void spr_write_excp_prefix(DisasContext *ctx, int sprn, int gprn)
14637
{
14638
TCGv t0 = tcg_temp_new();
14639
- tcg_gen_ld_tl(t0, cpu_env, offsetof(CPUPPCState, ivpr_mask));
14640
+ tcg_gen_ld_tl(t0, tcg_env, offsetof(CPUPPCState, ivpr_mask));
14641
tcg_gen_and_tl(t0, t0, cpu_gpr[gprn]);
14642
- tcg_gen_st_tl(t0, cpu_env, offsetof(CPUPPCState, excp_prefix));
14643
+ tcg_gen_st_tl(t0, tcg_env, offsetof(CPUPPCState, excp_prefix));
14644
gen_store_spr(sprn, t0);
14645
}
14646
14647
@@ -XXX,XX +XXX,XX @@ void spr_write_excp_vector(DisasContext *ctx, int sprn, int gprn)
14648
}
14649
14650
TCGv t0 = tcg_temp_new();
14651
- tcg_gen_ld_tl(t0, cpu_env, offsetof(CPUPPCState, ivor_mask));
14652
+ tcg_gen_ld_tl(t0, tcg_env, offsetof(CPUPPCState, ivor_mask));
14653
tcg_gen_and_tl(t0, t0, cpu_gpr[gprn]);
14654
- tcg_gen_st_tl(t0, cpu_env, offsetof(CPUPPCState, excp_vectors[sprn_offs]));
14655
+ tcg_gen_st_tl(t0, tcg_env, offsetof(CPUPPCState, excp_vectors[sprn_offs]));
14656
gen_store_spr(sprn, t0);
14657
}
14658
#endif
14659
@@ -XXX,XX +XXX,XX @@ void spr_write_iamr(DisasContext *ctx, int sprn, int gprn)
14660
#ifndef CONFIG_USER_ONLY
14661
void spr_read_thrm(DisasContext *ctx, int gprn, int sprn)
14662
{
14663
- gen_helper_fixup_thrm(cpu_env);
14664
+ gen_helper_fixup_thrm(tcg_env);
14665
gen_load_spr(cpu_gpr[gprn], sprn);
14666
spr_load_dump_spr(sprn);
14667
}
14668
@@ -XXX,XX +XXX,XX @@ void spr_write_e500_l2csr0(DisasContext *ctx, int sprn, int gprn)
14669
14670
void spr_write_booke206_mmucsr0(DisasContext *ctx, int sprn, int gprn)
14671
{
14672
- gen_helper_booke206_tlbflush(cpu_env, cpu_gpr[gprn]);
14673
+ gen_helper_booke206_tlbflush(tcg_env, cpu_gpr[gprn]);
14674
}
14675
14676
void spr_write_booke_pid(DisasContext *ctx, int sprn, int gprn)
14677
{
14678
TCGv_i32 t0 = tcg_constant_i32(sprn);
14679
- gen_helper_booke_setpid(cpu_env, t0, cpu_gpr[gprn]);
14680
+ gen_helper_booke_setpid(tcg_env, t0, cpu_gpr[gprn]);
14681
}
14682
14683
void spr_write_eplc(DisasContext *ctx, int sprn, int gprn)
14684
{
14685
- gen_helper_booke_set_eplc(cpu_env, cpu_gpr[gprn]);
14686
+ gen_helper_booke_set_eplc(tcg_env, cpu_gpr[gprn]);
14687
}
14688
14689
void spr_write_epsc(DisasContext *ctx, int sprn, int gprn)
14690
{
14691
- gen_helper_booke_set_epsc(cpu_env, cpu_gpr[gprn]);
14692
+ gen_helper_booke_set_epsc(tcg_env, cpu_gpr[gprn]);
14693
}
14694
14695
#endif
14696
@@ -XXX,XX +XXX,XX @@ static void gen_fscr_facility_check(DisasContext *ctx, int facility_sprn,
14697
TCGv_i32 t2 = tcg_constant_i32(sprn);
14698
TCGv_i32 t3 = tcg_constant_i32(cause);
14699
14700
- gen_helper_fscr_facility_check(cpu_env, t1, t2, t3);
14701
+ gen_helper_fscr_facility_check(tcg_env, t1, t2, t3);
14702
}
14703
14704
static void gen_msr_facility_check(DisasContext *ctx, int facility_sprn,
14705
@@ -XXX,XX +XXX,XX @@ static void gen_msr_facility_check(DisasContext *ctx, int facility_sprn,
14706
TCGv_i32 t2 = tcg_constant_i32(sprn);
14707
TCGv_i32 t3 = tcg_constant_i32(cause);
14708
14709
- gen_helper_msr_facility_check(cpu_env, t1, t2, t3);
14710
+ gen_helper_msr_facility_check(tcg_env, t1, t2, t3);
14711
}
14712
14713
void spr_read_prev_upper32(DisasContext *ctx, int gprn, int sprn)
14714
@@ -XXX,XX +XXX,XX @@ void spr_write_hmer(DisasContext *ctx, int sprn, int gprn)
14715
14716
void spr_read_tfmr(DisasContext *ctx, int gprn, int sprn)
14717
{
14718
- gen_helper_load_tfmr(cpu_gpr[gprn], cpu_env);
14719
+ gen_helper_load_tfmr(cpu_gpr[gprn], tcg_env);
14720
}
14721
14722
void spr_write_tfmr(DisasContext *ctx, int sprn, int gprn)
14723
{
14724
- gen_helper_store_tfmr(cpu_env, cpu_gpr[gprn]);
14725
+ gen_helper_store_tfmr(tcg_env, cpu_gpr[gprn]);
14726
}
14727
14728
void spr_write_lpcr(DisasContext *ctx, int sprn, int gprn)
14729
{
14730
translator_io_start(&ctx->base);
14731
- gen_helper_store_lpcr(cpu_env, cpu_gpr[gprn]);
14732
+ gen_helper_store_lpcr(tcg_env, cpu_gpr[gprn]);
14733
}
14734
#endif /* !defined(CONFIG_USER_ONLY) */
14735
14736
@@ -XXX,XX +XXX,XX @@ GEN_INT_ARITH_DIVW(divwo, 0x1F, 1, 1);
14737
static void gen_##name(DisasContext *ctx) \
14738
{ \
14739
TCGv_i32 t0 = tcg_constant_i32(compute_ov); \
14740
- gen_helper_##hlpr(cpu_gpr[rD(ctx->opcode)], cpu_env, \
14741
+ gen_helper_##hlpr(cpu_gpr[rD(ctx->opcode)], tcg_env, \
14742
cpu_gpr[rA(ctx->opcode)], cpu_gpr[rB(ctx->opcode)], t0); \
14743
if (unlikely(Rc(ctx->opcode) != 0)) { \
14744
gen_set_Rc0(ctx, cpu_gpr[rD(ctx->opcode)]); \
14745
@@ -XXX,XX +XXX,XX @@ GEN_LOGICAL2(nor, tcg_gen_nor_tl, 0x03, PPC_INTEGER);
14746
static void gen_pause(DisasContext *ctx)
14747
{
14748
TCGv_i32 t0 = tcg_constant_i32(0);
14749
- tcg_gen_st_i32(t0, cpu_env,
14750
+ tcg_gen_st_i32(t0, tcg_env,
14751
-offsetof(PowerPCCPU, env) + offsetof(CPUState, halted));
14752
14753
/* Stop translation, this gives other CPUs a chance to run */
14754
@@ -XXX,XX +XXX,XX @@ static void gen_slw(DisasContext *ctx)
14755
/* sraw & sraw. */
14756
static void gen_sraw(DisasContext *ctx)
14757
{
14758
- gen_helper_sraw(cpu_gpr[rA(ctx->opcode)], cpu_env,
14759
+ gen_helper_sraw(cpu_gpr[rA(ctx->opcode)], tcg_env,
14760
cpu_gpr[rS(ctx->opcode)], cpu_gpr[rB(ctx->opcode)]);
14761
if (unlikely(Rc(ctx->opcode) != 0)) {
14762
gen_set_Rc0(ctx, cpu_gpr[rA(ctx->opcode)]);
14763
@@ -XXX,XX +XXX,XX @@ static void gen_sld(DisasContext *ctx)
14764
/* srad & srad. */
14765
static void gen_srad(DisasContext *ctx)
14766
{
14767
- gen_helper_srad(cpu_gpr[rA(ctx->opcode)], cpu_env,
14768
+ gen_helper_srad(cpu_gpr[rA(ctx->opcode)], tcg_env,
14769
cpu_gpr[rS(ctx->opcode)], cpu_gpr[rB(ctx->opcode)]);
14770
if (unlikely(Rc(ctx->opcode) != 0)) {
14771
gen_set_Rc0(ctx, cpu_gpr[rA(ctx->opcode)]);
14772
@@ -XXX,XX +XXX,XX @@ static void gen_lmw(DisasContext *ctx)
14773
t0 = tcg_temp_new();
14774
t1 = tcg_constant_i32(rD(ctx->opcode));
14775
gen_addr_imm_index(ctx, t0, 0);
14776
- gen_helper_lmw(cpu_env, t0, t1);
14777
+ gen_helper_lmw(tcg_env, t0, t1);
14778
}
14779
14780
/* stmw */
14781
@@ -XXX,XX +XXX,XX @@ static void gen_stmw(DisasContext *ctx)
14782
t0 = tcg_temp_new();
14783
t1 = tcg_constant_i32(rS(ctx->opcode));
14784
gen_addr_imm_index(ctx, t0, 0);
14785
- gen_helper_stmw(cpu_env, t0, t1);
14786
+ gen_helper_stmw(tcg_env, t0, t1);
14787
}
14788
14789
/*** Integer load and store strings ***/
14790
@@ -XXX,XX +XXX,XX @@ static void gen_lswi(DisasContext *ctx)
14791
gen_addr_register(ctx, t0);
14792
t1 = tcg_constant_i32(nb);
14793
t2 = tcg_constant_i32(start);
14794
- gen_helper_lsw(cpu_env, t0, t1, t2);
14795
+ gen_helper_lsw(tcg_env, t0, t1, t2);
14796
}
14797
14798
/* lswx */
14799
@@ -XXX,XX +XXX,XX @@ static void gen_lswx(DisasContext *ctx)
14800
t1 = tcg_constant_i32(rD(ctx->opcode));
14801
t2 = tcg_constant_i32(rA(ctx->opcode));
14802
t3 = tcg_constant_i32(rB(ctx->opcode));
14803
- gen_helper_lswx(cpu_env, t0, t1, t2, t3);
14804
+ gen_helper_lswx(tcg_env, t0, t1, t2, t3);
14805
}
14806
14807
/* stswi */
14808
@@ -XXX,XX +XXX,XX @@ static void gen_stswi(DisasContext *ctx)
14809
}
14810
t1 = tcg_constant_i32(nb);
14811
t2 = tcg_constant_i32(rS(ctx->opcode));
14812
- gen_helper_stsw(cpu_env, t0, t1, t2);
14813
+ gen_helper_stsw(tcg_env, t0, t1, t2);
14814
}
14815
14816
/* stswx */
14817
@@ -XXX,XX +XXX,XX @@ static void gen_stswx(DisasContext *ctx)
14818
tcg_gen_trunc_tl_i32(t1, cpu_xer);
14819
tcg_gen_andi_i32(t1, t1, 0x7F);
14820
t2 = tcg_constant_i32(rS(ctx->opcode));
14821
- gen_helper_stsw(cpu_env, t0, t1, t2);
14822
+ gen_helper_stsw(tcg_env, t0, t1, t2);
14823
}
14824
14825
/*** Memory synchronisation ***/
14826
@@ -XXX,XX +XXX,XX @@ static inline void gen_check_tlb_flush(DisasContext *ctx, bool global)
14827
}
14828
l = gen_new_label();
14829
t = tcg_temp_new_i32();
14830
- tcg_gen_ld_i32(t, cpu_env, offsetof(CPUPPCState, tlb_need_flush));
14831
+ tcg_gen_ld_i32(t, tcg_env, offsetof(CPUPPCState, tlb_need_flush));
14832
tcg_gen_brcondi_i32(TCG_COND_EQ, t, 0, l);
14833
if (global) {
14834
- gen_helper_check_tlb_flush_global(cpu_env);
14835
+ gen_helper_check_tlb_flush_global(tcg_env);
14836
} else {
14837
- gen_helper_check_tlb_flush_local(cpu_env);
14838
+ gen_helper_check_tlb_flush_local(tcg_env);
14839
}
14840
gen_set_label(l);
14841
}
14842
@@ -XXX,XX +XXX,XX @@ static void gen_ld_atomic(DisasContext *ctx, MemOp memop)
14843
14844
if (need_serial) {
14845
/* Restart with exclusive lock. */
14846
- gen_helper_exit_atomic(cpu_env);
14847
+ gen_helper_exit_atomic(tcg_env);
14848
ctx->base.is_jmp = DISAS_NORETURN;
14849
}
14850
}
14851
@@ -XXX,XX +XXX,XX @@ static void gen_st_atomic(DisasContext *ctx, MemOp memop)
14852
case 24: /* Store twin */
14853
if (tb_cflags(ctx->base.tb) & CF_PARALLEL) {
14854
/* Restart with exclusive lock. */
14855
- gen_helper_exit_atomic(cpu_env);
14856
+ gen_helper_exit_atomic(tcg_env);
14857
ctx->base.is_jmp = DISAS_NORETURN;
14858
} else {
14859
TCGv t = tcg_temp_new();
14860
@@ -XXX,XX +XXX,XX @@ static void gen_lqarx(DisasContext *ctx)
14861
14862
tcg_gen_mov_tl(cpu_reserve, EA);
14863
tcg_gen_movi_tl(cpu_reserve_length, 16);
14864
- tcg_gen_st_tl(hi, cpu_env, offsetof(CPUPPCState, reserve_val));
14865
- tcg_gen_st_tl(lo, cpu_env, offsetof(CPUPPCState, reserve_val2));
14866
+ tcg_gen_st_tl(hi, tcg_env, offsetof(CPUPPCState, reserve_val));
14867
+ tcg_gen_st_tl(lo, tcg_env, offsetof(CPUPPCState, reserve_val2));
14868
}
14869
14870
/* stqcx. */
14871
@@ -XXX,XX +XXX,XX @@ static void gen_wait(DisasContext *ctx)
14872
*/
14873
if (wc == 0) {
14874
TCGv_i32 t0 = tcg_constant_i32(1);
14875
- tcg_gen_st_i32(t0, cpu_env,
14876
+ tcg_gen_st_i32(t0, tcg_env,
14877
-offsetof(PowerPCCPU, env) + offsetof(CPUState, halted));
14878
/* Stop translation, as the CPU is supposed to sleep from now */
14879
gen_exception_nip(ctx, EXCP_HLT, ctx->base.pc_next);
14880
@@ -XXX,XX +XXX,XX @@ static void gen_doze(DisasContext *ctx)
14881
CHK_HV(ctx);
14882
translator_io_start(&ctx->base);
14883
t = tcg_constant_i32(PPC_PM_DOZE);
14884
- gen_helper_pminsn(cpu_env, t);
14885
+ gen_helper_pminsn(tcg_env, t);
14886
/* Stop translation, as the CPU is supposed to sleep from now */
14887
gen_exception_nip(ctx, EXCP_HLT, ctx->base.pc_next);
14888
#endif /* defined(CONFIG_USER_ONLY) */
14889
@@ -XXX,XX +XXX,XX @@ static void gen_nap(DisasContext *ctx)
14890
CHK_HV(ctx);
14891
translator_io_start(&ctx->base);
14892
t = tcg_constant_i32(PPC_PM_NAP);
14893
- gen_helper_pminsn(cpu_env, t);
14894
+ gen_helper_pminsn(tcg_env, t);
14895
/* Stop translation, as the CPU is supposed to sleep from now */
14896
gen_exception_nip(ctx, EXCP_HLT, ctx->base.pc_next);
14897
#endif /* defined(CONFIG_USER_ONLY) */
14898
@@ -XXX,XX +XXX,XX @@ static void gen_stop(DisasContext *ctx)
14899
CHK_HV(ctx);
14900
translator_io_start(&ctx->base);
14901
t = tcg_constant_i32(PPC_PM_STOP);
14902
- gen_helper_pminsn(cpu_env, t);
14903
+ gen_helper_pminsn(tcg_env, t);
14904
/* Stop translation, as the CPU is supposed to sleep from now */
14905
gen_exception_nip(ctx, EXCP_HLT, ctx->base.pc_next);
14906
#endif /* defined(CONFIG_USER_ONLY) */
14907
@@ -XXX,XX +XXX,XX @@ static void gen_sleep(DisasContext *ctx)
14908
CHK_HV(ctx);
14909
translator_io_start(&ctx->base);
14910
t = tcg_constant_i32(PPC_PM_SLEEP);
14911
- gen_helper_pminsn(cpu_env, t);
14912
+ gen_helper_pminsn(tcg_env, t);
14913
/* Stop translation, as the CPU is supposed to sleep from now */
14914
gen_exception_nip(ctx, EXCP_HLT, ctx->base.pc_next);
14915
#endif /* defined(CONFIG_USER_ONLY) */
14916
@@ -XXX,XX +XXX,XX @@ static void gen_rvwinkle(DisasContext *ctx)
14917
CHK_HV(ctx);
14918
translator_io_start(&ctx->base);
14919
t = tcg_constant_i32(PPC_PM_RVWINKLE);
14920
- gen_helper_pminsn(cpu_env, t);
14921
+ gen_helper_pminsn(tcg_env, t);
14922
/* Stop translation, as the CPU is supposed to sleep from now */
14923
gen_exception_nip(ctx, EXCP_HLT, ctx->base.pc_next);
14924
#endif /* defined(CONFIG_USER_ONLY) */
14925
@@ -XXX,XX +XXX,XX @@ static void pmu_count_insns(DisasContext *ctx)
14926
/* Check for overflow, if it's enabled */
14927
if (ctx->mmcr0_pmcjce) {
14928
tcg_gen_brcondi_tl(TCG_COND_LT, t0, PMC_COUNTER_NEGATIVE_VAL, l);
14929
- gen_helper_handle_pmc5_overflow(cpu_env);
14930
+ gen_helper_handle_pmc5_overflow(tcg_env);
14931
}
14932
14933
gen_set_label(l);
14934
} else {
14935
- gen_helper_insns_inc(cpu_env, tcg_constant_i32(ctx->base.num_insns));
14936
+ gen_helper_insns_inc(tcg_env, tcg_constant_i32(ctx->base.num_insns));
14937
}
14938
#else
14939
/*
14940
@@ -XXX,XX +XXX,XX @@ static void gen_rfi(DisasContext *ctx)
14941
CHK_SV(ctx);
14942
translator_io_start(&ctx->base);
14943
gen_update_cfar(ctx, ctx->cia);
14944
- gen_helper_rfi(cpu_env);
14945
+ gen_helper_rfi(tcg_env);
14946
ctx->base.is_jmp = DISAS_EXIT;
14947
#endif
14948
}
14949
@@ -XXX,XX +XXX,XX @@ static void gen_rfid(DisasContext *ctx)
14950
CHK_SV(ctx);
14951
translator_io_start(&ctx->base);
14952
gen_update_cfar(ctx, ctx->cia);
14953
- gen_helper_rfid(cpu_env);
14954
+ gen_helper_rfid(tcg_env);
14955
ctx->base.is_jmp = DISAS_EXIT;
14956
#endif
14957
}
14958
@@ -XXX,XX +XXX,XX @@ static void gen_rfscv(DisasContext *ctx)
14959
CHK_SV(ctx);
14960
translator_io_start(&ctx->base);
14961
gen_update_cfar(ctx, ctx->cia);
14962
- gen_helper_rfscv(cpu_env);
14963
+ gen_helper_rfscv(tcg_env);
14964
ctx->base.is_jmp = DISAS_EXIT;
14965
#endif
14966
}
14967
@@ -XXX,XX +XXX,XX @@ static void gen_hrfid(DisasContext *ctx)
14968
/* Restore CPU state */
14969
CHK_HV(ctx);
14970
translator_io_start(&ctx->base);
14971
- gen_helper_hrfid(cpu_env);
14972
+ gen_helper_hrfid(tcg_env);
14973
ctx->base.is_jmp = DISAS_EXIT;
14974
#endif
14975
}
14976
@@ -XXX,XX +XXX,XX @@ static void gen_scv(DisasContext *ctx)
14977
14978
/* Set the PC back to the faulting instruction. */
14979
gen_update_nip(ctx, ctx->cia);
14980
- gen_helper_scv(cpu_env, tcg_constant_i32(lev));
14981
+ gen_helper_scv(tcg_env, tcg_constant_i32(lev));
14982
14983
ctx->base.is_jmp = DISAS_NORETURN;
14984
}
14985
@@ -XXX,XX +XXX,XX @@ static void gen_tw(DisasContext *ctx)
14986
return;
14987
}
14988
t0 = tcg_constant_i32(TO(ctx->opcode));
14989
- gen_helper_tw(cpu_env, cpu_gpr[rA(ctx->opcode)], cpu_gpr[rB(ctx->opcode)],
14990
+ gen_helper_tw(tcg_env, cpu_gpr[rA(ctx->opcode)], cpu_gpr[rB(ctx->opcode)],
14991
t0);
14992
}
14993
14994
@@ -XXX,XX +XXX,XX @@ static void gen_twi(DisasContext *ctx)
14995
}
14996
t0 = tcg_constant_tl(SIMM(ctx->opcode));
14997
t1 = tcg_constant_i32(TO(ctx->opcode));
14998
- gen_helper_tw(cpu_env, cpu_gpr[rA(ctx->opcode)], t0, t1);
14999
+ gen_helper_tw(tcg_env, cpu_gpr[rA(ctx->opcode)], t0, t1);
15000
}
15001
15002
#if defined(TARGET_PPC64)
15003
@@ -XXX,XX +XXX,XX @@ static void gen_td(DisasContext *ctx)
15004
return;
15005
}
15006
t0 = tcg_constant_i32(TO(ctx->opcode));
15007
- gen_helper_td(cpu_env, cpu_gpr[rA(ctx->opcode)], cpu_gpr[rB(ctx->opcode)],
15008
+ gen_helper_td(tcg_env, cpu_gpr[rA(ctx->opcode)], cpu_gpr[rB(ctx->opcode)],
15009
t0);
15010
}
15011
15012
@@ -XXX,XX +XXX,XX @@ static void gen_tdi(DisasContext *ctx)
15013
}
15014
t0 = tcg_constant_tl(SIMM(ctx->opcode));
15015
t1 = tcg_constant_i32(TO(ctx->opcode));
15016
- gen_helper_td(cpu_env, cpu_gpr[rA(ctx->opcode)], t0, t1);
15017
+ gen_helper_td(tcg_env, cpu_gpr[rA(ctx->opcode)], t0, t1);
15018
}
15019
#endif
15020
15021
@@ -XXX,XX +XXX,XX @@ static void gen_mtmsrd(DisasContext *ctx)
15022
tcg_gen_andi_tl(t1, cpu_msr, ~mask);
15023
tcg_gen_or_tl(t0, t0, t1);
15024
15025
- gen_helper_store_msr(cpu_env, t0);
15026
+ gen_helper_store_msr(tcg_env, t0);
15027
15028
/* Must stop the translation as machine state (may have) changed */
15029
ctx->base.is_jmp = DISAS_EXIT_UPDATE;
15030
@@ -XXX,XX +XXX,XX @@ static void gen_mtmsr(DisasContext *ctx)
15031
tcg_gen_andi_tl(t1, cpu_msr, ~mask);
15032
tcg_gen_or_tl(t0, t0, t1);
15033
15034
- gen_helper_store_msr(cpu_env, t0);
15035
+ gen_helper_store_msr(tcg_env, t0);
15036
15037
/* Must stop the translation as machine state (may have) changed */
15038
ctx->base.is_jmp = DISAS_EXIT_UPDATE;
15039
@@ -XXX,XX +XXX,XX @@ static void gen_dcbz(DisasContext *ctx)
15040
tcgv_addr = tcg_temp_new();
15041
tcgv_op = tcg_constant_i32(ctx->opcode & 0x03FF000);
15042
gen_addr_reg_index(ctx, tcgv_addr);
15043
- gen_helper_dcbz(cpu_env, tcgv_addr, tcgv_op);
15044
+ gen_helper_dcbz(tcg_env, tcgv_addr, tcgv_op);
15045
}
15046
15047
/* dcbzep */
15048
@@ -XXX,XX +XXX,XX @@ static void gen_dcbzep(DisasContext *ctx)
15049
tcgv_addr = tcg_temp_new();
15050
tcgv_op = tcg_constant_i32(ctx->opcode & 0x03FF000);
15051
gen_addr_reg_index(ctx, tcgv_addr);
15052
- gen_helper_dcbzep(cpu_env, tcgv_addr, tcgv_op);
15053
+ gen_helper_dcbzep(tcg_env, tcgv_addr, tcgv_op);
15054
}
15055
15056
/* dst / dstt */
15057
@@ -XXX,XX +XXX,XX @@ static void gen_icbi(DisasContext *ctx)
15058
gen_set_access_type(ctx, ACCESS_CACHE);
15059
t0 = tcg_temp_new();
15060
gen_addr_reg_index(ctx, t0);
15061
- gen_helper_icbi(cpu_env, t0);
15062
+ gen_helper_icbi(tcg_env, t0);
15063
}
15064
15065
/* icbiep */
15066
@@ -XXX,XX +XXX,XX @@ static void gen_icbiep(DisasContext *ctx)
15067
gen_set_access_type(ctx, ACCESS_CACHE);
15068
t0 = tcg_temp_new();
15069
gen_addr_reg_index(ctx, t0);
15070
- gen_helper_icbiep(cpu_env, t0);
15071
+ gen_helper_icbiep(tcg_env, t0);
15072
}
15073
15074
/* Optional: */
15075
@@ -XXX,XX +XXX,XX @@ static void gen_mfsr(DisasContext *ctx)
15076
15077
CHK_SV(ctx);
15078
t0 = tcg_constant_tl(SR(ctx->opcode));
15079
- gen_helper_load_sr(cpu_gpr[rD(ctx->opcode)], cpu_env, t0);
15080
+ gen_helper_load_sr(cpu_gpr[rD(ctx->opcode)], tcg_env, t0);
15081
#endif /* defined(CONFIG_USER_ONLY) */
15082
}
15083
15084
@@ -XXX,XX +XXX,XX @@ static void gen_mfsrin(DisasContext *ctx)
15085
CHK_SV(ctx);
15086
t0 = tcg_temp_new();
15087
tcg_gen_extract_tl(t0, cpu_gpr[rB(ctx->opcode)], 28, 4);
15088
- gen_helper_load_sr(cpu_gpr[rD(ctx->opcode)], cpu_env, t0);
15089
+ gen_helper_load_sr(cpu_gpr[rD(ctx->opcode)], tcg_env, t0);
15090
#endif /* defined(CONFIG_USER_ONLY) */
15091
}
15092
15093
@@ -XXX,XX +XXX,XX @@ static void gen_mtsr(DisasContext *ctx)
15094
15095
CHK_SV(ctx);
15096
t0 = tcg_constant_tl(SR(ctx->opcode));
15097
- gen_helper_store_sr(cpu_env, t0, cpu_gpr[rS(ctx->opcode)]);
15098
+ gen_helper_store_sr(tcg_env, t0, cpu_gpr[rS(ctx->opcode)]);
15099
#endif /* defined(CONFIG_USER_ONLY) */
15100
}
15101
15102
@@ -XXX,XX +XXX,XX @@ static void gen_mtsrin(DisasContext *ctx)
15103
15104
t0 = tcg_temp_new();
15105
tcg_gen_extract_tl(t0, cpu_gpr[rB(ctx->opcode)], 28, 4);
15106
- gen_helper_store_sr(cpu_env, t0, cpu_gpr[rD(ctx->opcode)]);
15107
+ gen_helper_store_sr(tcg_env, t0, cpu_gpr[rD(ctx->opcode)]);
15108
#endif /* defined(CONFIG_USER_ONLY) */
15109
}
15110
15111
@@ -XXX,XX +XXX,XX @@ static void gen_mfsr_64b(DisasContext *ctx)
15112
15113
CHK_SV(ctx);
15114
t0 = tcg_constant_tl(SR(ctx->opcode));
15115
- gen_helper_load_sr(cpu_gpr[rD(ctx->opcode)], cpu_env, t0);
15116
+ gen_helper_load_sr(cpu_gpr[rD(ctx->opcode)], tcg_env, t0);
15117
#endif /* defined(CONFIG_USER_ONLY) */
15118
}
15119
15120
@@ -XXX,XX +XXX,XX @@ static void gen_mfsrin_64b(DisasContext *ctx)
15121
CHK_SV(ctx);
15122
t0 = tcg_temp_new();
15123
tcg_gen_extract_tl(t0, cpu_gpr[rB(ctx->opcode)], 28, 4);
15124
- gen_helper_load_sr(cpu_gpr[rD(ctx->opcode)], cpu_env, t0);
15125
+ gen_helper_load_sr(cpu_gpr[rD(ctx->opcode)], tcg_env, t0);
15126
#endif /* defined(CONFIG_USER_ONLY) */
15127
}
15128
15129
@@ -XXX,XX +XXX,XX @@ static void gen_mtsr_64b(DisasContext *ctx)
15130
15131
CHK_SV(ctx);
15132
t0 = tcg_constant_tl(SR(ctx->opcode));
15133
- gen_helper_store_sr(cpu_env, t0, cpu_gpr[rS(ctx->opcode)]);
15134
+ gen_helper_store_sr(tcg_env, t0, cpu_gpr[rS(ctx->opcode)]);
15135
#endif /* defined(CONFIG_USER_ONLY) */
15136
}
15137
15138
@@ -XXX,XX +XXX,XX @@ static void gen_mtsrin_64b(DisasContext *ctx)
15139
CHK_SV(ctx);
15140
t0 = tcg_temp_new();
15141
tcg_gen_extract_tl(t0, cpu_gpr[rB(ctx->opcode)], 28, 4);
15142
- gen_helper_store_sr(cpu_env, t0, cpu_gpr[rS(ctx->opcode)]);
15143
+ gen_helper_store_sr(tcg_env, t0, cpu_gpr[rS(ctx->opcode)]);
15144
#endif /* defined(CONFIG_USER_ONLY) */
15145
}
15146
15147
@@ -XXX,XX +XXX,XX @@ static void gen_tlbia(DisasContext *ctx)
15148
#else
15149
CHK_HV(ctx);
15150
15151
- gen_helper_tlbia(cpu_env);
15152
+ gen_helper_tlbia(tcg_env);
15153
#endif /* defined(CONFIG_USER_ONLY) */
15154
}
15155
15156
@@ -XXX,XX +XXX,XX @@ static void gen_tlbld_6xx(DisasContext *ctx)
15157
GEN_PRIV(ctx);
15158
#else
15159
CHK_SV(ctx);
15160
- gen_helper_6xx_tlbd(cpu_env, cpu_gpr[rB(ctx->opcode)]);
15161
+ gen_helper_6xx_tlbd(tcg_env, cpu_gpr[rB(ctx->opcode)]);
15162
#endif /* defined(CONFIG_USER_ONLY) */
15163
}
15164
15165
@@ -XXX,XX +XXX,XX @@ static void gen_tlbli_6xx(DisasContext *ctx)
15166
GEN_PRIV(ctx);
15167
#else
15168
CHK_SV(ctx);
15169
- gen_helper_6xx_tlbi(cpu_env, cpu_gpr[rB(ctx->opcode)]);
15170
+ gen_helper_6xx_tlbi(tcg_env, cpu_gpr[rB(ctx->opcode)]);
15171
#endif /* defined(CONFIG_USER_ONLY) */
15172
}
15173
15174
@@ -XXX,XX +XXX,XX @@ static void gen_tlbiva(DisasContext *ctx)
15175
CHK_SV(ctx);
15176
t0 = tcg_temp_new();
15177
gen_addr_reg_index(ctx, t0);
15178
- gen_helper_tlbiva(cpu_env, cpu_gpr[rB(ctx->opcode)]);
15179
+ gen_helper_tlbiva(tcg_env, cpu_gpr[rB(ctx->opcode)]);
15180
#endif /* defined(CONFIG_USER_ONLY) */
15181
}
15182
15183
@@ -XXX,XX +XXX,XX @@ static void gen_mfdcr(DisasContext *ctx)
15184
15185
CHK_SV(ctx);
15186
dcrn = tcg_constant_tl(SPR(ctx->opcode));
15187
- gen_helper_load_dcr(cpu_gpr[rD(ctx->opcode)], cpu_env, dcrn);
15188
+ gen_helper_load_dcr(cpu_gpr[rD(ctx->opcode)], tcg_env, dcrn);
15189
#endif /* defined(CONFIG_USER_ONLY) */
15190
}
15191
15192
@@ -XXX,XX +XXX,XX @@ static void gen_mtdcr(DisasContext *ctx)
15193
15194
CHK_SV(ctx);
15195
dcrn = tcg_constant_tl(SPR(ctx->opcode));
15196
- gen_helper_store_dcr(cpu_env, dcrn, cpu_gpr[rS(ctx->opcode)]);
15197
+ gen_helper_store_dcr(tcg_env, dcrn, cpu_gpr[rS(ctx->opcode)]);
15198
#endif /* defined(CONFIG_USER_ONLY) */
15199
}
15200
15201
@@ -XXX,XX +XXX,XX @@ static void gen_mfdcrx(DisasContext *ctx)
15202
GEN_PRIV(ctx);
15203
#else
15204
CHK_SV(ctx);
15205
- gen_helper_load_dcr(cpu_gpr[rD(ctx->opcode)], cpu_env,
15206
+ gen_helper_load_dcr(cpu_gpr[rD(ctx->opcode)], tcg_env,
15207
cpu_gpr[rA(ctx->opcode)]);
15208
/* Note: Rc update flag set leads to undefined state of Rc0 */
15209
#endif /* defined(CONFIG_USER_ONLY) */
15210
@@ -XXX,XX +XXX,XX @@ static void gen_mtdcrx(DisasContext *ctx)
15211
GEN_PRIV(ctx);
15212
#else
15213
CHK_SV(ctx);
15214
- gen_helper_store_dcr(cpu_env, cpu_gpr[rA(ctx->opcode)],
15215
+ gen_helper_store_dcr(tcg_env, cpu_gpr[rA(ctx->opcode)],
15216
cpu_gpr[rS(ctx->opcode)]);
15217
/* Note: Rc update flag set leads to undefined state of Rc0 */
15218
#endif /* defined(CONFIG_USER_ONLY) */
15219
@@ -XXX,XX +XXX,XX @@ static void gen_rfci_40x(DisasContext *ctx)
15220
#else
15221
CHK_SV(ctx);
15222
/* Restore CPU state */
15223
- gen_helper_40x_rfci(cpu_env);
15224
+ gen_helper_40x_rfci(tcg_env);
15225
ctx->base.is_jmp = DISAS_EXIT;
15226
#endif /* defined(CONFIG_USER_ONLY) */
15227
}
15228
@@ -XXX,XX +XXX,XX @@ static void gen_rfci(DisasContext *ctx)
15229
#else
15230
CHK_SV(ctx);
15231
/* Restore CPU state */
15232
- gen_helper_rfci(cpu_env);
15233
+ gen_helper_rfci(tcg_env);
15234
ctx->base.is_jmp = DISAS_EXIT;
15235
#endif /* defined(CONFIG_USER_ONLY) */
15236
}
15237
@@ -XXX,XX +XXX,XX @@ static void gen_rfdi(DisasContext *ctx)
15238
#else
15239
CHK_SV(ctx);
15240
/* Restore CPU state */
15241
- gen_helper_rfdi(cpu_env);
15242
+ gen_helper_rfdi(tcg_env);
15243
ctx->base.is_jmp = DISAS_EXIT;
15244
#endif /* defined(CONFIG_USER_ONLY) */
15245
}
15246
@@ -XXX,XX +XXX,XX @@ static void gen_rfmci(DisasContext *ctx)
15247
#else
15248
CHK_SV(ctx);
15249
/* Restore CPU state */
15250
- gen_helper_rfmci(cpu_env);
15251
+ gen_helper_rfmci(tcg_env);
15252
ctx->base.is_jmp = DISAS_EXIT;
15253
#endif /* defined(CONFIG_USER_ONLY) */
15254
}
15255
@@ -XXX,XX +XXX,XX @@ static void gen_tlbre_40x(DisasContext *ctx)
15256
CHK_SV(ctx);
15257
switch (rB(ctx->opcode)) {
15258
case 0:
15259
- gen_helper_4xx_tlbre_hi(cpu_gpr[rD(ctx->opcode)], cpu_env,
15260
+ gen_helper_4xx_tlbre_hi(cpu_gpr[rD(ctx->opcode)], tcg_env,
15261
cpu_gpr[rA(ctx->opcode)]);
15262
break;
15263
case 1:
15264
- gen_helper_4xx_tlbre_lo(cpu_gpr[rD(ctx->opcode)], cpu_env,
15265
+ gen_helper_4xx_tlbre_lo(cpu_gpr[rD(ctx->opcode)], tcg_env,
15266
cpu_gpr[rA(ctx->opcode)]);
15267
break;
15268
default:
15269
@@ -XXX,XX +XXX,XX @@ static void gen_tlbsx_40x(DisasContext *ctx)
15270
CHK_SV(ctx);
15271
t0 = tcg_temp_new();
15272
gen_addr_reg_index(ctx, t0);
15273
- gen_helper_4xx_tlbsx(cpu_gpr[rD(ctx->opcode)], cpu_env, t0);
15274
+ gen_helper_4xx_tlbsx(cpu_gpr[rD(ctx->opcode)], tcg_env, t0);
15275
if (Rc(ctx->opcode)) {
15276
TCGLabel *l1 = gen_new_label();
15277
tcg_gen_trunc_tl_i32(cpu_crf[0], cpu_so);
15278
@@ -XXX,XX +XXX,XX @@ static void gen_tlbwe_40x(DisasContext *ctx)
15279
15280
switch (rB(ctx->opcode)) {
15281
case 0:
15282
- gen_helper_4xx_tlbwe_hi(cpu_env, cpu_gpr[rA(ctx->opcode)],
15283
+ gen_helper_4xx_tlbwe_hi(tcg_env, cpu_gpr[rA(ctx->opcode)],
15284
cpu_gpr[rS(ctx->opcode)]);
15285
break;
15286
case 1:
15287
- gen_helper_4xx_tlbwe_lo(cpu_env, cpu_gpr[rA(ctx->opcode)],
15288
+ gen_helper_4xx_tlbwe_lo(tcg_env, cpu_gpr[rA(ctx->opcode)],
15289
cpu_gpr[rS(ctx->opcode)]);
15290
break;
15291
default:
15292
@@ -XXX,XX +XXX,XX @@ static void gen_tlbre_440(DisasContext *ctx)
15293
case 2:
15294
{
15295
TCGv_i32 t0 = tcg_constant_i32(rB(ctx->opcode));
15296
- gen_helper_440_tlbre(cpu_gpr[rD(ctx->opcode)], cpu_env,
15297
+ gen_helper_440_tlbre(cpu_gpr[rD(ctx->opcode)], tcg_env,
15298
t0, cpu_gpr[rA(ctx->opcode)]);
15299
}
15300
break;
15301
@@ -XXX,XX +XXX,XX @@ static void gen_tlbsx_440(DisasContext *ctx)
15302
CHK_SV(ctx);
15303
t0 = tcg_temp_new();
15304
gen_addr_reg_index(ctx, t0);
15305
- gen_helper_440_tlbsx(cpu_gpr[rD(ctx->opcode)], cpu_env, t0);
15306
+ gen_helper_440_tlbsx(cpu_gpr[rD(ctx->opcode)], tcg_env, t0);
15307
if (Rc(ctx->opcode)) {
15308
TCGLabel *l1 = gen_new_label();
15309
tcg_gen_trunc_tl_i32(cpu_crf[0], cpu_so);
15310
@@ -XXX,XX +XXX,XX @@ static void gen_tlbwe_440(DisasContext *ctx)
15311
case 2:
15312
{
15313
TCGv_i32 t0 = tcg_constant_i32(rB(ctx->opcode));
15314
- gen_helper_440_tlbwe(cpu_env, t0, cpu_gpr[rA(ctx->opcode)],
15315
+ gen_helper_440_tlbwe(tcg_env, t0, cpu_gpr[rA(ctx->opcode)],
15316
cpu_gpr[rS(ctx->opcode)]);
15317
}
15318
break;
15319
@@ -XXX,XX +XXX,XX @@ static void gen_tlbre_booke206(DisasContext *ctx)
15320
GEN_PRIV(ctx);
15321
#else
15322
CHK_SV(ctx);
15323
- gen_helper_booke206_tlbre(cpu_env);
15324
+ gen_helper_booke206_tlbre(tcg_env);
15325
#endif /* defined(CONFIG_USER_ONLY) */
15326
}
15327
15328
@@ -XXX,XX +XXX,XX @@ static void gen_tlbsx_booke206(DisasContext *ctx)
15329
} else {
15330
t0 = cpu_gpr[rB(ctx->opcode)];
15331
}
15332
- gen_helper_booke206_tlbsx(cpu_env, t0);
15333
+ gen_helper_booke206_tlbsx(tcg_env, t0);
15334
#endif /* defined(CONFIG_USER_ONLY) */
15335
}
15336
15337
@@ -XXX,XX +XXX,XX @@ static void gen_tlbwe_booke206(DisasContext *ctx)
15338
GEN_PRIV(ctx);
15339
#else
15340
CHK_SV(ctx);
15341
- gen_helper_booke206_tlbwe(cpu_env);
15342
+ gen_helper_booke206_tlbwe(tcg_env);
15343
#endif /* defined(CONFIG_USER_ONLY) */
15344
}
15345
15346
@@ -XXX,XX +XXX,XX @@ static void gen_tlbivax_booke206(DisasContext *ctx)
15347
CHK_SV(ctx);
15348
t0 = tcg_temp_new();
15349
gen_addr_reg_index(ctx, t0);
15350
- gen_helper_booke206_tlbivax(cpu_env, t0);
15351
+ gen_helper_booke206_tlbivax(tcg_env, t0);
15352
#endif /* defined(CONFIG_USER_ONLY) */
15353
}
15354
15355
@@ -XXX,XX +XXX,XX @@ static void gen_tlbilx_booke206(DisasContext *ctx)
15356
15357
switch ((ctx->opcode >> 21) & 0x3) {
15358
case 0:
15359
- gen_helper_booke206_tlbilx0(cpu_env, t0);
15360
+ gen_helper_booke206_tlbilx0(tcg_env, t0);
15361
break;
15362
case 1:
15363
- gen_helper_booke206_tlbilx1(cpu_env, t0);
15364
+ gen_helper_booke206_tlbilx1(tcg_env, t0);
15365
break;
15366
case 3:
15367
- gen_helper_booke206_tlbilx3(cpu_env, t0);
15368
+ gen_helper_booke206_tlbilx3(tcg_env, t0);
15369
break;
15370
default:
15371
gen_inval_exception(ctx, POWERPC_EXCP_INVAL_INVAL);
15372
@@ -XXX,XX +XXX,XX @@ static void gen_wrteei(DisasContext *ctx)
15373
static void gen_dlmzb(DisasContext *ctx)
15374
{
15375
TCGv_i32 t0 = tcg_constant_i32(Rc(ctx->opcode));
15376
- gen_helper_dlmzb(cpu_gpr[rA(ctx->opcode)], cpu_env,
15377
+ gen_helper_dlmzb(cpu_gpr[rA(ctx->opcode)], tcg_env,
15378
cpu_gpr[rS(ctx->opcode)], cpu_gpr[rB(ctx->opcode)], t0);
15379
}
15380
15381
@@ -XXX,XX +XXX,XX @@ static void gen_tbegin(DisasContext *ctx)
15382
gen_exception_err(ctx, POWERPC_EXCP_FU, FSCR_IC_TM);
15383
return;
15384
}
15385
- gen_helper_tbegin(cpu_env);
15386
+ gen_helper_tbegin(tcg_env);
15387
}
15388
15389
#define GEN_TM_NOOP(name) \
15390
@@ -XXX,XX +XXX,XX @@ GEN_TM_PRIV_NOOP(trechkpt);
15391
15392
static inline void get_fpr(TCGv_i64 dst, int regno)
15393
{
15394
- tcg_gen_ld_i64(dst, cpu_env, fpr_offset(regno));
15395
+ tcg_gen_ld_i64(dst, tcg_env, fpr_offset(regno));
15396
}
15397
15398
static inline void set_fpr(int regno, TCGv_i64 src)
15399
{
15400
- tcg_gen_st_i64(src, cpu_env, fpr_offset(regno));
15401
+ tcg_gen_st_i64(src, tcg_env, fpr_offset(regno));
15402
/*
15403
* Before PowerISA v3.1 the result of doubleword 1 of the VSR
15404
* corresponding to the target FPR was undefined. However,
15405
@@ -XXX,XX +XXX,XX @@ static inline void set_fpr(int regno, TCGv_i64 src)
15406
* Starting at ISA v3.1, the result for doubleword 1 is now defined
15407
* to be 0.
15408
*/
15409
- tcg_gen_st_i64(tcg_constant_i64(0), cpu_env, vsr64_offset(regno, false));
15410
+ tcg_gen_st_i64(tcg_constant_i64(0), tcg_env, vsr64_offset(regno, false));
15411
}
15412
15413
static inline void get_avr64(TCGv_i64 dst, int regno, bool high)
15414
{
15415
- tcg_gen_ld_i64(dst, cpu_env, avr64_offset(regno, high));
15416
+ tcg_gen_ld_i64(dst, tcg_env, avr64_offset(regno, high));
15417
}
15418
15419
static inline void set_avr64(int regno, TCGv_i64 src, bool high)
15420
{
15421
- tcg_gen_st_i64(src, cpu_env, avr64_offset(regno, high));
15422
+ tcg_gen_st_i64(src, tcg_env, avr64_offset(regno, high));
15423
}
15424
15425
/*
15426
diff --git a/target/riscv/translate.c b/target/riscv/translate.c
15427
index XXXXXXX..XXXXXXX 100644
15428
--- a/target/riscv/translate.c
15429
+++ b/target/riscv/translate.c
15430
@@ -XXX,XX +XXX,XX @@ static void gen_update_pc(DisasContext *ctx, target_long diff)
15431
static void generate_exception(DisasContext *ctx, int excp)
15432
{
15433
gen_update_pc(ctx, 0);
15434
- gen_helper_raise_exception(cpu_env, tcg_constant_i32(excp));
15435
+ gen_helper_raise_exception(tcg_env, tcg_constant_i32(excp));
15436
ctx->base.is_jmp = DISAS_NORETURN;
15437
}
15438
15439
static void gen_exception_illegal(DisasContext *ctx)
15440
{
15441
- tcg_gen_st_i32(tcg_constant_i32(ctx->opcode), cpu_env,
15442
+ tcg_gen_st_i32(tcg_constant_i32(ctx->opcode), tcg_env,
15443
offsetof(CPURISCVState, bins));
15444
if (ctx->virt_inst_excp) {
15445
generate_exception(ctx, RISCV_EXCP_VIRT_INSTRUCTION_FAULT);
15446
@@ -XXX,XX +XXX,XX @@ static void gen_exception_illegal(DisasContext *ctx)
15447
15448
static void gen_exception_inst_addr_mis(DisasContext *ctx, TCGv target)
15449
{
15450
- tcg_gen_st_tl(target, cpu_env, offsetof(CPURISCVState, badaddr));
15451
+ tcg_gen_st_tl(target, tcg_env, offsetof(CPURISCVState, badaddr));
15452
generate_exception(ctx, RISCV_EXCP_INST_ADDR_MIS);
15453
}
15454
15455
@@ -XXX,XX +XXX,XX @@ static void lookup_and_goto_ptr(DisasContext *ctx)
15456
{
15457
#ifndef CONFIG_USER_ONLY
15458
if (ctx->itrigger) {
15459
- gen_helper_itrigger_match(cpu_env);
15460
+ gen_helper_itrigger_match(tcg_env);
15461
}
15462
#endif
15463
tcg_gen_lookup_and_goto_ptr();
15464
@@ -XXX,XX +XXX,XX @@ static void exit_tb(DisasContext *ctx)
15465
{
15466
#ifndef CONFIG_USER_ONLY
15467
if (ctx->itrigger) {
15468
- gen_helper_itrigger_match(cpu_env);
15469
+ gen_helper_itrigger_match(tcg_env);
15470
}
15471
#endif
15472
tcg_gen_exit_tb(NULL, 0);
15473
@@ -XXX,XX +XXX,XX @@ static void mark_fs_dirty(DisasContext *ctx)
15474
ctx->mstatus_fs = EXT_STATUS_DIRTY;
15475
15476
tmp = tcg_temp_new();
15477
- tcg_gen_ld_tl(tmp, cpu_env, offsetof(CPURISCVState, mstatus));
15478
+ tcg_gen_ld_tl(tmp, tcg_env, offsetof(CPURISCVState, mstatus));
15479
tcg_gen_ori_tl(tmp, tmp, MSTATUS_FS);
15480
- tcg_gen_st_tl(tmp, cpu_env, offsetof(CPURISCVState, mstatus));
15481
+ tcg_gen_st_tl(tmp, tcg_env, offsetof(CPURISCVState, mstatus));
15482
15483
if (ctx->virt_enabled) {
15484
- tcg_gen_ld_tl(tmp, cpu_env, offsetof(CPURISCVState, mstatus_hs));
15485
+ tcg_gen_ld_tl(tmp, tcg_env, offsetof(CPURISCVState, mstatus_hs));
15486
tcg_gen_ori_tl(tmp, tmp, MSTATUS_FS);
15487
- tcg_gen_st_tl(tmp, cpu_env, offsetof(CPURISCVState, mstatus_hs));
15488
+ tcg_gen_st_tl(tmp, tcg_env, offsetof(CPURISCVState, mstatus_hs));
15489
}
15490
}
15491
}
15492
@@ -XXX,XX +XXX,XX @@ static void mark_vs_dirty(DisasContext *ctx)
15493
ctx->mstatus_vs = EXT_STATUS_DIRTY;
15494
15495
tmp = tcg_temp_new();
15496
- tcg_gen_ld_tl(tmp, cpu_env, offsetof(CPURISCVState, mstatus));
15497
+ tcg_gen_ld_tl(tmp, tcg_env, offsetof(CPURISCVState, mstatus));
15498
tcg_gen_ori_tl(tmp, tmp, MSTATUS_VS);
15499
- tcg_gen_st_tl(tmp, cpu_env, offsetof(CPURISCVState, mstatus));
15500
+ tcg_gen_st_tl(tmp, tcg_env, offsetof(CPURISCVState, mstatus));
15501
15502
if (ctx->virt_enabled) {
15503
- tcg_gen_ld_tl(tmp, cpu_env, offsetof(CPURISCVState, mstatus_hs));
15504
+ tcg_gen_ld_tl(tmp, tcg_env, offsetof(CPURISCVState, mstatus_hs));
15505
tcg_gen_ori_tl(tmp, tmp, MSTATUS_VS);
15506
- tcg_gen_st_tl(tmp, cpu_env, offsetof(CPURISCVState, mstatus_hs));
15507
+ tcg_gen_st_tl(tmp, tcg_env, offsetof(CPURISCVState, mstatus_hs));
15508
}
15509
}
15510
}
15511
@@ -XXX,XX +XXX,XX @@ static void gen_set_rm(DisasContext *ctx, int rm)
15512
15513
/* The helper may raise ILLEGAL_INSN -- record binv for unwind. */
15514
decode_save_opc(ctx);
15515
- gen_helper_set_rounding_mode(cpu_env, tcg_constant_i32(rm));
15516
+ gen_helper_set_rounding_mode(tcg_env, tcg_constant_i32(rm));
15517
}
15518
15519
static void gen_set_rm_chkfrm(DisasContext *ctx, int rm)
15520
@@ -XXX,XX +XXX,XX @@ static void gen_set_rm_chkfrm(DisasContext *ctx, int rm)
15521
15522
/* The helper may raise ILLEGAL_INSN -- record binv for unwind. */
15523
decode_save_opc(ctx);
15524
- gen_helper_set_rounding_mode_chkfrm(cpu_env, tcg_constant_i32(rm));
15525
+ gen_helper_set_rounding_mode_chkfrm(tcg_env, tcg_constant_i32(rm));
15526
}
15527
15528
static int ex_plus_1(DisasContext *ctx, int nf)
15529
@@ -XXX,XX +XXX,XX @@ void riscv_translate_init(void)
15530
cpu_gprh[0] = NULL;
15531
15532
for (i = 1; i < 32; i++) {
15533
- cpu_gpr[i] = tcg_global_mem_new(cpu_env,
15534
+ cpu_gpr[i] = tcg_global_mem_new(tcg_env,
15535
offsetof(CPURISCVState, gpr[i]), riscv_int_regnames[i]);
15536
- cpu_gprh[i] = tcg_global_mem_new(cpu_env,
15537
+ cpu_gprh[i] = tcg_global_mem_new(tcg_env,
15538
offsetof(CPURISCVState, gprh[i]), riscv_int_regnamesh[i]);
15539
}
15540
15541
for (i = 0; i < 32; i++) {
15542
- cpu_fpr[i] = tcg_global_mem_new_i64(cpu_env,
15543
+ cpu_fpr[i] = tcg_global_mem_new_i64(tcg_env,
15544
offsetof(CPURISCVState, fpr[i]), riscv_fpr_regnames[i]);
15545
}
15546
15547
- cpu_pc = tcg_global_mem_new(cpu_env, offsetof(CPURISCVState, pc), "pc");
15548
- cpu_vl = tcg_global_mem_new(cpu_env, offsetof(CPURISCVState, vl), "vl");
15549
- cpu_vstart = tcg_global_mem_new(cpu_env, offsetof(CPURISCVState, vstart),
15550
+ cpu_pc = tcg_global_mem_new(tcg_env, offsetof(CPURISCVState, pc), "pc");
15551
+ cpu_vl = tcg_global_mem_new(tcg_env, offsetof(CPURISCVState, vl), "vl");
15552
+ cpu_vstart = tcg_global_mem_new(tcg_env, offsetof(CPURISCVState, vstart),
15553
"vstart");
15554
- load_res = tcg_global_mem_new(cpu_env, offsetof(CPURISCVState, load_res),
15555
+ load_res = tcg_global_mem_new(tcg_env, offsetof(CPURISCVState, load_res),
15556
"load_res");
15557
- load_val = tcg_global_mem_new(cpu_env, offsetof(CPURISCVState, load_val),
15558
+ load_val = tcg_global_mem_new(tcg_env, offsetof(CPURISCVState, load_val),
15559
"load_val");
15560
/* Assign PM CSRs to tcg globals */
15561
- pm_mask = tcg_global_mem_new(cpu_env, offsetof(CPURISCVState, cur_pmmask),
15562
+ pm_mask = tcg_global_mem_new(tcg_env, offsetof(CPURISCVState, cur_pmmask),
15563
"pmmask");
15564
- pm_base = tcg_global_mem_new(cpu_env, offsetof(CPURISCVState, cur_pmbase),
15565
+ pm_base = tcg_global_mem_new(tcg_env, offsetof(CPURISCVState, cur_pmbase),
15566
"pmbase");
15567
}
15568
diff --git a/target/rx/translate.c b/target/rx/translate.c
15569
index XXXXXXX..XXXXXXX 100644
15570
--- a/target/rx/translate.c
15571
+++ b/target/rx/translate.c
15572
@@ -XXX,XX +XXX,XX @@ static int is_privileged(DisasContext *ctx, int is_exception)
15573
{
15574
if (FIELD_EX32(ctx->tb_flags, PSW, PM)) {
15575
if (is_exception) {
15576
- gen_helper_raise_privilege_violation(cpu_env);
15577
+ gen_helper_raise_privilege_violation(tcg_env);
15578
}
15579
return 0;
15580
} else {
15581
@@ -XXX,XX +XXX,XX @@ static void move_from_cr(DisasContext *ctx, TCGv ret, int cr, uint32_t pc)
15582
{
15583
switch (cr) {
15584
case 0: /* PSW */
15585
- gen_helper_pack_psw(ret, cpu_env);
15586
+ gen_helper_pack_psw(ret, tcg_env);
15587
break;
15588
case 1: /* PC */
15589
tcg_gen_movi_i32(ret, pc);
15590
@@ -XXX,XX +XXX,XX @@ static void move_to_cr(DisasContext *ctx, TCGv val, int cr)
15591
}
15592
switch (cr) {
15593
case 0: /* PSW */
15594
- gen_helper_set_psw(cpu_env, val);
15595
+ gen_helper_set_psw(tcg_env, val);
15596
if (is_privileged(ctx, 0)) {
15597
/* PSW.{I,U} may be updated here. exit TB. */
15598
ctx->base.is_jmp = DISAS_UPDATE;
15599
@@ -XXX,XX +XXX,XX @@ static void move_to_cr(DisasContext *ctx, TCGv val, int cr)
15600
}
15601
break;
15602
case 3: /* FPSW */
15603
- gen_helper_set_fpsw(cpu_env, val);
15604
+ gen_helper_set_fpsw(tcg_env, val);
15605
break;
15606
case 8: /* BPSW */
15607
tcg_gen_mov_i32(cpu_bpsw, val);
15608
@@ -XXX,XX +XXX,XX @@ static bool trans_EMULU_mr(DisasContext *ctx, arg_EMULU_mr *a)
15609
15610
static void rx_div(TCGv ret, TCGv arg1, TCGv arg2)
15611
{
15612
- gen_helper_div(ret, cpu_env, arg1, arg2);
15613
+ gen_helper_div(ret, tcg_env, arg1, arg2);
15614
}
15615
15616
static void rx_divu(TCGv ret, TCGv arg1, TCGv arg2)
15617
{
15618
- gen_helper_divu(ret, cpu_env, arg1, arg2);
15619
+ gen_helper_divu(ret, tcg_env, arg1, arg2);
15620
}
15621
15622
/* div #imm, rd */
15623
@@ -XXX,XX +XXX,XX @@ static bool trans_NOP(DisasContext *ctx, arg_NOP *a)
15624
/* scmpu */
15625
static bool trans_SCMPU(DisasContext *ctx, arg_SCMPU *a)
15626
{
15627
- gen_helper_scmpu(cpu_env);
15628
+ gen_helper_scmpu(tcg_env);
15629
return true;
15630
}
15631
15632
/* smovu */
15633
static bool trans_SMOVU(DisasContext *ctx, arg_SMOVU *a)
15634
{
15635
- gen_helper_smovu(cpu_env);
15636
+ gen_helper_smovu(tcg_env);
15637
return true;
15638
}
15639
15640
/* smovf */
15641
static bool trans_SMOVF(DisasContext *ctx, arg_SMOVF *a)
15642
{
15643
- gen_helper_smovf(cpu_env);
15644
+ gen_helper_smovf(tcg_env);
15645
return true;
15646
}
15647
15648
/* smovb */
15649
static bool trans_SMOVB(DisasContext *ctx, arg_SMOVB *a)
15650
{
15651
- gen_helper_smovb(cpu_env);
15652
+ gen_helper_smovb(tcg_env);
15653
return true;
15654
}
15655
15656
#define STRING(op) \
15657
do { \
15658
TCGv size = tcg_constant_i32(a->sz); \
15659
- gen_helper_##op(cpu_env, size); \
15660
+ gen_helper_##op(tcg_env, size); \
15661
} while (0)
15662
15663
/* suntile.<bwl> */
15664
@@ -XXX,XX +XXX,XX @@ static bool trans_MVTACLO(DisasContext *ctx, arg_MVTACLO *a)
15665
static bool trans_RACW(DisasContext *ctx, arg_RACW *a)
15666
{
15667
TCGv imm = tcg_constant_i32(a->imm + 1);
15668
- gen_helper_racw(cpu_env, imm);
15669
+ gen_helper_racw(tcg_env, imm);
15670
return true;
15671
}
15672
15673
@@ -XXX,XX +XXX,XX @@ static bool trans_SAT(DisasContext *ctx, arg_SAT *a)
15674
/* satr */
15675
static bool trans_SATR(DisasContext *ctx, arg_SATR *a)
15676
{
15677
- gen_helper_satr(cpu_env);
15678
+ gen_helper_satr(tcg_env);
15679
return true;
15680
}
15681
15682
@@ -XXX,XX +XXX,XX @@ static bool trans_SATR(DisasContext *ctx, arg_SATR *a)
15683
cat3(arg_, name, _ir) * a) \
15684
{ \
15685
TCGv imm = tcg_constant_i32(li(ctx, 0)); \
15686
- gen_helper_##op(cpu_regs[a->rd], cpu_env, \
15687
+ gen_helper_##op(cpu_regs[a->rd], tcg_env, \
15688
cpu_regs[a->rd], imm); \
15689
return true; \
15690
} \
15691
@@ -XXX,XX +XXX,XX @@ static bool trans_SATR(DisasContext *ctx, arg_SATR *a)
15692
TCGv val, mem; \
15693
mem = tcg_temp_new(); \
15694
val = rx_load_source(ctx, mem, a->ld, MO_32, a->rs); \
15695
- gen_helper_##op(cpu_regs[a->rd], cpu_env, \
15696
+ gen_helper_##op(cpu_regs[a->rd], tcg_env, \
15697
cpu_regs[a->rd], val); \
15698
return true; \
15699
}
15700
@@ -XXX,XX +XXX,XX @@ static bool trans_SATR(DisasContext *ctx, arg_SATR *a)
15701
TCGv val, mem; \
15702
mem = tcg_temp_new(); \
15703
val = rx_load_source(ctx, mem, a->ld, MO_32, a->rs); \
15704
- gen_helper_##op(cpu_regs[a->rd], cpu_env, val); \
15705
+ gen_helper_##op(cpu_regs[a->rd], tcg_env, val); \
15706
return true; \
15707
}
15708
15709
@@ -XXX,XX +XXX,XX @@ FOP(FDIV, fdiv)
15710
static bool trans_FCMP_ir(DisasContext *ctx, arg_FCMP_ir * a)
15711
{
15712
TCGv imm = tcg_constant_i32(li(ctx, 0));
15713
- gen_helper_fcmp(cpu_env, cpu_regs[a->rd], imm);
15714
+ gen_helper_fcmp(tcg_env, cpu_regs[a->rd], imm);
15715
return true;
15716
}
15717
15718
@@ -XXX,XX +XXX,XX @@ static bool trans_FCMP_mr(DisasContext *ctx, arg_FCMP_mr *a)
15719
TCGv val, mem;
15720
mem = tcg_temp_new();
15721
val = rx_load_source(ctx, mem, a->ld, MO_32, a->rs);
15722
- gen_helper_fcmp(cpu_env, cpu_regs[a->rd], val);
15723
+ gen_helper_fcmp(tcg_env, cpu_regs[a->rd], val);
15724
return true;
15725
}
15726
15727
@@ -XXX,XX +XXX,XX @@ static bool trans_ITOF(DisasContext *ctx, arg_ITOF * a)
15728
TCGv val, mem;
15729
mem = tcg_temp_new();
15730
val = rx_load_source(ctx, mem, a->ld, a->mi, a->rs);
15731
- gen_helper_itof(cpu_regs[a->rd], cpu_env, val);
15732
+ gen_helper_itof(cpu_regs[a->rd], tcg_env, val);
15733
return true;
15734
}
15735
15736
@@ -XXX,XX +XXX,XX @@ static bool trans_RTFI(DisasContext *ctx, arg_RTFI *a)
15737
psw = tcg_temp_new();
15738
tcg_gen_mov_i32(cpu_pc, cpu_bpc);
15739
tcg_gen_mov_i32(psw, cpu_bpsw);
15740
- gen_helper_set_psw_rte(cpu_env, psw);
15741
+ gen_helper_set_psw_rte(tcg_env, psw);
15742
ctx->base.is_jmp = DISAS_EXIT;
15743
}
15744
return true;
15745
@@ -XXX,XX +XXX,XX @@ static bool trans_RTE(DisasContext *ctx, arg_RTE *a)
15746
psw = tcg_temp_new();
15747
pop(cpu_pc);
15748
pop(psw);
15749
- gen_helper_set_psw_rte(cpu_env, psw);
15750
+ gen_helper_set_psw_rte(tcg_env, psw);
15751
ctx->base.is_jmp = DISAS_EXIT;
15752
}
15753
return true;
15754
@@ -XXX,XX +XXX,XX @@ static bool trans_RTE(DisasContext *ctx, arg_RTE *a)
15755
static bool trans_BRK(DisasContext *ctx, arg_BRK *a)
15756
{
15757
tcg_gen_movi_i32(cpu_pc, ctx->base.pc_next);
15758
- gen_helper_rxbrk(cpu_env);
15759
+ gen_helper_rxbrk(tcg_env);
15760
ctx->base.is_jmp = DISAS_NORETURN;
15761
return true;
15762
}
15763
@@ -XXX,XX +XXX,XX @@ static bool trans_INT(DisasContext *ctx, arg_INT *a)
15764
tcg_debug_assert(a->imm < 0x100);
15765
vec = tcg_constant_i32(a->imm);
15766
tcg_gen_movi_i32(cpu_pc, ctx->base.pc_next);
15767
- gen_helper_rxint(cpu_env, vec);
15768
+ gen_helper_rxint(tcg_env, vec);
15769
ctx->base.is_jmp = DISAS_NORETURN;
15770
return true;
15771
}
15772
@@ -XXX,XX +XXX,XX @@ static bool trans_WAIT(DisasContext *ctx, arg_WAIT *a)
15773
{
15774
if (is_privileged(ctx, 1)) {
15775
tcg_gen_movi_i32(cpu_pc, ctx->base.pc_next);
15776
- gen_helper_wait(cpu_env);
15777
+ gen_helper_wait(tcg_env);
15778
}
15779
return true;
15780
}
15781
@@ -XXX,XX +XXX,XX @@ static void rx_tr_translate_insn(DisasContextBase *dcbase, CPUState *cs)
15782
ctx->pc = ctx->base.pc_next;
15783
insn = decode_load(ctx);
15784
if (!decode(ctx, insn)) {
15785
- gen_helper_raise_illegal_instruction(cpu_env);
15786
+ gen_helper_raise_illegal_instruction(tcg_env);
15787
}
15788
}
15789
15790
@@ -XXX,XX +XXX,XX @@ void gen_intermediate_code(CPUState *cs, TranslationBlock *tb, int *max_insns,
15791
}
15792
15793
#define ALLOC_REGISTER(sym, name) \
15794
- cpu_##sym = tcg_global_mem_new_i32(cpu_env, \
15795
+ cpu_##sym = tcg_global_mem_new_i32(tcg_env, \
15796
offsetof(CPURXState, sym), name)
15797
15798
void rx_translate_init(void)
15799
@@ -XXX,XX +XXX,XX @@ void rx_translate_init(void)
15800
int i;
15801
15802
for (i = 0; i < NUM_REGS; i++) {
15803
- cpu_regs[i] = tcg_global_mem_new_i32(cpu_env,
15804
+ cpu_regs[i] = tcg_global_mem_new_i32(tcg_env,
15805
offsetof(CPURXState, regs[i]),
15806
regnames[i]);
15807
}
15808
@@ -XXX,XX +XXX,XX @@ void rx_translate_init(void)
15809
ALLOC_REGISTER(isp, "ISP");
15810
ALLOC_REGISTER(fintv, "FINTV");
15811
ALLOC_REGISTER(intb, "INTB");
15812
- cpu_acc = tcg_global_mem_new_i64(cpu_env,
15813
+ cpu_acc = tcg_global_mem_new_i64(tcg_env,
15814
offsetof(CPURXState, acc), "ACC");
15815
}
15816
diff --git a/target/s390x/tcg/translate.c b/target/s390x/tcg/translate.c
15817
index XXXXXXX..XXXXXXX 100644
15818
--- a/target/s390x/tcg/translate.c
15819
+++ b/target/s390x/tcg/translate.c
15820
@@ -XXX,XX +XXX,XX @@ void s390x_translate_init(void)
15821
{
15822
int i;
15823
15824
- psw_addr = tcg_global_mem_new_i64(cpu_env,
15825
+ psw_addr = tcg_global_mem_new_i64(tcg_env,
15826
offsetof(CPUS390XState, psw.addr),
15827
"psw_addr");
15828
- psw_mask = tcg_global_mem_new_i64(cpu_env,
15829
+ psw_mask = tcg_global_mem_new_i64(tcg_env,
15830
offsetof(CPUS390XState, psw.mask),
15831
"psw_mask");
15832
- gbea = tcg_global_mem_new_i64(cpu_env,
15833
+ gbea = tcg_global_mem_new_i64(tcg_env,
15834
offsetof(CPUS390XState, gbea),
15835
"gbea");
15836
15837
- cc_op = tcg_global_mem_new_i32(cpu_env, offsetof(CPUS390XState, cc_op),
15838
+ cc_op = tcg_global_mem_new_i32(tcg_env, offsetof(CPUS390XState, cc_op),
15839
"cc_op");
15840
- cc_src = tcg_global_mem_new_i64(cpu_env, offsetof(CPUS390XState, cc_src),
15841
+ cc_src = tcg_global_mem_new_i64(tcg_env, offsetof(CPUS390XState, cc_src),
15842
"cc_src");
15843
- cc_dst = tcg_global_mem_new_i64(cpu_env, offsetof(CPUS390XState, cc_dst),
15844
+ cc_dst = tcg_global_mem_new_i64(tcg_env, offsetof(CPUS390XState, cc_dst),
15845
"cc_dst");
15846
- cc_vr = tcg_global_mem_new_i64(cpu_env, offsetof(CPUS390XState, cc_vr),
15847
+ cc_vr = tcg_global_mem_new_i64(tcg_env, offsetof(CPUS390XState, cc_vr),
15848
"cc_vr");
15849
15850
for (i = 0; i < 16; i++) {
15851
snprintf(cpu_reg_names[i], sizeof(cpu_reg_names[0]), "r%d", i);
15852
- regs[i] = tcg_global_mem_new(cpu_env,
15853
+ regs[i] = tcg_global_mem_new(tcg_env,
15854
offsetof(CPUS390XState, regs[i]),
15855
cpu_reg_names[i]);
15856
}
15857
@@ -XXX,XX +XXX,XX @@ static TCGv_i64 load_freg(int reg)
15858
{
15859
TCGv_i64 r = tcg_temp_new_i64();
15860
15861
- tcg_gen_ld_i64(r, cpu_env, freg64_offset(reg));
15862
+ tcg_gen_ld_i64(r, tcg_env, freg64_offset(reg));
15863
return r;
15864
}
15865
15866
@@ -XXX,XX +XXX,XX @@ static TCGv_i64 load_freg32_i64(int reg)
15867
{
15868
TCGv_i64 r = tcg_temp_new_i64();
15869
15870
- tcg_gen_ld32u_i64(r, cpu_env, freg32_offset(reg));
15871
+ tcg_gen_ld32u_i64(r, tcg_env, freg32_offset(reg));
15872
return r;
15873
}
15874
15875
@@ -XXX,XX +XXX,XX @@ static void store_reg(int reg, TCGv_i64 v)
15876
15877
static void store_freg(int reg, TCGv_i64 v)
15878
{
15879
- tcg_gen_st_i64(v, cpu_env, freg64_offset(reg));
15880
+ tcg_gen_st_i64(v, tcg_env, freg64_offset(reg));
15881
}
15882
15883
static void store_reg32_i64(int reg, TCGv_i64 v)
15884
@@ -XXX,XX +XXX,XX @@ static void store_reg32h_i64(int reg, TCGv_i64 v)
15885
15886
static void store_freg32_i64(int reg, TCGv_i64 v)
15887
{
15888
- tcg_gen_st32_i64(v, cpu_env, freg32_offset(reg));
15889
+ tcg_gen_st32_i64(v, tcg_env, freg32_offset(reg));
15890
}
15891
15892
static void update_psw_addr(DisasContext *s)
15893
@@ -XXX,XX +XXX,XX @@ static void per_branch(DisasContext *s, bool to_next)
15894
15895
if (s->base.tb->flags & FLAG_MASK_PER) {
15896
TCGv_i64 next_pc = to_next ? tcg_constant_i64(s->pc_tmp) : psw_addr;
15897
- gen_helper_per_branch(cpu_env, gbea, next_pc);
15898
+ gen_helper_per_branch(tcg_env, gbea, next_pc);
15899
}
15900
#endif
15901
}
15902
@@ -XXX,XX +XXX,XX @@ static void per_branch_cond(DisasContext *s, TCGCond cond,
15903
tcg_gen_brcond_i64(tcg_invert_cond(cond), arg1, arg2, lab);
15904
15905
tcg_gen_movi_i64(gbea, s->base.pc_next);
15906
- gen_helper_per_branch(cpu_env, gbea, psw_addr);
15907
+ gen_helper_per_branch(tcg_env, gbea, psw_addr);
15908
15909
gen_set_label(lab);
15910
} else {
15911
@@ -XXX,XX +XXX,XX @@ static int get_mem_index(DisasContext *s)
15912
15913
static void gen_exception(int excp)
15914
{
15915
- gen_helper_exception(cpu_env, tcg_constant_i32(excp));
15916
+ gen_helper_exception(tcg_env, tcg_constant_i32(excp));
15917
}
15918
15919
static void gen_program_exception(DisasContext *s, int code)
15920
{
15921
/* Remember what pgm exception this was. */
15922
- tcg_gen_st_i32(tcg_constant_i32(code), cpu_env,
15923
+ tcg_gen_st_i32(tcg_constant_i32(code), tcg_env,
15924
offsetof(CPUS390XState, int_pgm_code));
15925
15926
- tcg_gen_st_i32(tcg_constant_i32(s->ilen), cpu_env,
15927
+ tcg_gen_st_i32(tcg_constant_i32(s->ilen), tcg_env,
15928
offsetof(CPUS390XState, int_pgm_ilen));
15929
15930
/* update the psw */
15931
@@ -XXX,XX +XXX,XX @@ static inline void gen_illegal_opcode(DisasContext *s)
15932
15933
static inline void gen_data_exception(uint8_t dxc)
15934
{
15935
- gen_helper_data_exception(cpu_env, tcg_constant_i32(dxc));
15936
+ gen_helper_data_exception(tcg_env, tcg_constant_i32(dxc));
15937
}
15938
15939
static inline void gen_trap(DisasContext *s)
15940
@@ -XXX,XX +XXX,XX @@ static void gen_op_calc_cc(DisasContext *s)
15941
case CC_OP_LCBB:
15942
case CC_OP_MULS_32:
15943
/* 1 argument */
15944
- gen_helper_calc_cc(cc_op, cpu_env, local_cc_op, dummy, cc_dst, dummy);
15945
+ gen_helper_calc_cc(cc_op, tcg_env, local_cc_op, dummy, cc_dst, dummy);
15946
break;
15947
case CC_OP_ADDU:
15948
case CC_OP_ICM:
15949
@@ -XXX,XX +XXX,XX @@ static void gen_op_calc_cc(DisasContext *s)
15950
case CC_OP_VC:
15951
case CC_OP_MULS_64:
15952
/* 2 arguments */
15953
- gen_helper_calc_cc(cc_op, cpu_env, local_cc_op, cc_src, cc_dst, dummy);
15954
+ gen_helper_calc_cc(cc_op, tcg_env, local_cc_op, cc_src, cc_dst, dummy);
15955
break;
15956
case CC_OP_ADD_64:
15957
case CC_OP_SUB_64:
15958
case CC_OP_ADD_32:
15959
case CC_OP_SUB_32:
15960
/* 3 arguments */
15961
- gen_helper_calc_cc(cc_op, cpu_env, local_cc_op, cc_src, cc_dst, cc_vr);
15962
+ gen_helper_calc_cc(cc_op, tcg_env, local_cc_op, cc_src, cc_dst, cc_vr);
15963
break;
15964
case CC_OP_DYNAMIC:
15965
/* unknown operation - assume 3 arguments and cc_op in env */
15966
- gen_helper_calc_cc(cc_op, cpu_env, cc_op, cc_src, cc_dst, cc_vr);
15967
+ gen_helper_calc_cc(cc_op, tcg_env, cc_op, cc_src, cc_dst, cc_vr);
15968
break;
15969
default:
15970
g_assert_not_reached();
15971
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_asiu64(DisasContext *s, DisasOps *o)
15972
15973
static DisasJumpType op_aeb(DisasContext *s, DisasOps *o)
15974
{
15975
- gen_helper_aeb(o->out, cpu_env, o->in1, o->in2);
15976
+ gen_helper_aeb(o->out, tcg_env, o->in1, o->in2);
15977
return DISAS_NEXT;
15978
}
15979
15980
static DisasJumpType op_adb(DisasContext *s, DisasOps *o)
15981
{
15982
- gen_helper_adb(o->out, cpu_env, o->in1, o->in2);
15983
+ gen_helper_adb(o->out, tcg_env, o->in1, o->in2);
15984
return DISAS_NEXT;
15985
}
15986
15987
static DisasJumpType op_axb(DisasContext *s, DisasOps *o)
15988
{
15989
- gen_helper_axb(o->out_128, cpu_env, o->in1_128, o->in2_128);
15990
+ gen_helper_axb(o->out_128, tcg_env, o->in1_128, o->in2_128);
15991
return DISAS_NEXT;
15992
}
15993
15994
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_bal(DisasContext *s, DisasOps *o)
15995
if (have_field(s, ri)) { \
15996
if (unlikely(s->ex_value)) { \
15997
cdest = tcg_temp_new_i64(); \
15998
- tcg_gen_ld_i64(cdest, cpu_env, offsetof(CPUS390XState, ex_target));\
15999
+ tcg_gen_ld_i64(cdest, tcg_env, offsetof(CPUS390XState, ex_target));\
16000
tcg_gen_addi_i64(cdest, cdest, (int64_t)get_field(s, ri) * 2); \
16001
is_imm = false; \
16002
} else { \
16003
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_cj(DisasContext *s, DisasOps *o)
16004
16005
static DisasJumpType op_ceb(DisasContext *s, DisasOps *o)
16006
{
16007
- gen_helper_ceb(cc_op, cpu_env, o->in1, o->in2);
16008
+ gen_helper_ceb(cc_op, tcg_env, o->in1, o->in2);
16009
set_cc_static(s);
16010
return DISAS_NEXT;
16011
}
16012
16013
static DisasJumpType op_cdb(DisasContext *s, DisasOps *o)
16014
{
16015
- gen_helper_cdb(cc_op, cpu_env, o->in1, o->in2);
16016
+ gen_helper_cdb(cc_op, tcg_env, o->in1, o->in2);
16017
set_cc_static(s);
16018
return DISAS_NEXT;
16019
}
16020
16021
static DisasJumpType op_cxb(DisasContext *s, DisasOps *o)
16022
{
16023
- gen_helper_cxb(cc_op, cpu_env, o->in1_128, o->in2_128);
16024
+ gen_helper_cxb(cc_op, tcg_env, o->in1_128, o->in2_128);
16025
set_cc_static(s);
16026
return DISAS_NEXT;
16027
}
16028
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_cfeb(DisasContext *s, DisasOps *o)
16029
if (!m34) {
16030
return DISAS_NORETURN;
16031
}
16032
- gen_helper_cfeb(o->out, cpu_env, o->in2, m34);
16033
+ gen_helper_cfeb(o->out, tcg_env, o->in2, m34);
16034
set_cc_static(s);
16035
return DISAS_NEXT;
16036
}
16037
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_cfdb(DisasContext *s, DisasOps *o)
16038
if (!m34) {
16039
return DISAS_NORETURN;
16040
}
16041
- gen_helper_cfdb(o->out, cpu_env, o->in2, m34);
16042
+ gen_helper_cfdb(o->out, tcg_env, o->in2, m34);
16043
set_cc_static(s);
16044
return DISAS_NEXT;
16045
}
16046
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_cfxb(DisasContext *s, DisasOps *o)
16047
if (!m34) {
16048
return DISAS_NORETURN;
16049
}
16050
- gen_helper_cfxb(o->out, cpu_env, o->in2_128, m34);
16051
+ gen_helper_cfxb(o->out, tcg_env, o->in2_128, m34);
16052
set_cc_static(s);
16053
return DISAS_NEXT;
16054
}
16055
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_cgeb(DisasContext *s, DisasOps *o)
16056
if (!m34) {
16057
return DISAS_NORETURN;
16058
}
16059
- gen_helper_cgeb(o->out, cpu_env, o->in2, m34);
16060
+ gen_helper_cgeb(o->out, tcg_env, o->in2, m34);
16061
set_cc_static(s);
16062
return DISAS_NEXT;
16063
}
16064
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_cgdb(DisasContext *s, DisasOps *o)
16065
if (!m34) {
16066
return DISAS_NORETURN;
16067
}
16068
- gen_helper_cgdb(o->out, cpu_env, o->in2, m34);
16069
+ gen_helper_cgdb(o->out, tcg_env, o->in2, m34);
16070
set_cc_static(s);
16071
return DISAS_NEXT;
16072
}
16073
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_cgxb(DisasContext *s, DisasOps *o)
16074
if (!m34) {
16075
return DISAS_NORETURN;
16076
}
16077
- gen_helper_cgxb(o->out, cpu_env, o->in2_128, m34);
16078
+ gen_helper_cgxb(o->out, tcg_env, o->in2_128, m34);
16079
set_cc_static(s);
16080
return DISAS_NEXT;
16081
}
16082
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_clfeb(DisasContext *s, DisasOps *o)
16083
if (!m34) {
16084
return DISAS_NORETURN;
16085
}
16086
- gen_helper_clfeb(o->out, cpu_env, o->in2, m34);
16087
+ gen_helper_clfeb(o->out, tcg_env, o->in2, m34);
16088
set_cc_static(s);
16089
return DISAS_NEXT;
16090
}
16091
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_clfdb(DisasContext *s, DisasOps *o)
16092
if (!m34) {
16093
return DISAS_NORETURN;
16094
}
16095
- gen_helper_clfdb(o->out, cpu_env, o->in2, m34);
16096
+ gen_helper_clfdb(o->out, tcg_env, o->in2, m34);
16097
set_cc_static(s);
16098
return DISAS_NEXT;
16099
}
16100
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_clfxb(DisasContext *s, DisasOps *o)
16101
if (!m34) {
16102
return DISAS_NORETURN;
16103
}
16104
- gen_helper_clfxb(o->out, cpu_env, o->in2_128, m34);
16105
+ gen_helper_clfxb(o->out, tcg_env, o->in2_128, m34);
16106
set_cc_static(s);
16107
return DISAS_NEXT;
16108
}
16109
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_clgeb(DisasContext *s, DisasOps *o)
16110
if (!m34) {
16111
return DISAS_NORETURN;
16112
}
16113
- gen_helper_clgeb(o->out, cpu_env, o->in2, m34);
16114
+ gen_helper_clgeb(o->out, tcg_env, o->in2, m34);
16115
set_cc_static(s);
16116
return DISAS_NEXT;
16117
}
16118
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_clgdb(DisasContext *s, DisasOps *o)
16119
if (!m34) {
16120
return DISAS_NORETURN;
16121
}
16122
- gen_helper_clgdb(o->out, cpu_env, o->in2, m34);
16123
+ gen_helper_clgdb(o->out, tcg_env, o->in2, m34);
16124
set_cc_static(s);
16125
return DISAS_NEXT;
16126
}
16127
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_clgxb(DisasContext *s, DisasOps *o)
16128
if (!m34) {
16129
return DISAS_NORETURN;
16130
}
16131
- gen_helper_clgxb(o->out, cpu_env, o->in2_128, m34);
16132
+ gen_helper_clgxb(o->out, tcg_env, o->in2_128, m34);
16133
set_cc_static(s);
16134
return DISAS_NEXT;
16135
}
16136
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_cegb(DisasContext *s, DisasOps *o)
16137
if (!m34) {
16138
return DISAS_NORETURN;
16139
}
16140
- gen_helper_cegb(o->out, cpu_env, o->in2, m34);
16141
+ gen_helper_cegb(o->out, tcg_env, o->in2, m34);
16142
return DISAS_NEXT;
16143
}
16144
16145
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_cdgb(DisasContext *s, DisasOps *o)
16146
if (!m34) {
16147
return DISAS_NORETURN;
16148
}
16149
- gen_helper_cdgb(o->out, cpu_env, o->in2, m34);
16150
+ gen_helper_cdgb(o->out, tcg_env, o->in2, m34);
16151
return DISAS_NEXT;
16152
}
16153
16154
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_cxgb(DisasContext *s, DisasOps *o)
16155
if (!m34) {
16156
return DISAS_NORETURN;
16157
}
16158
- gen_helper_cxgb(o->out_128, cpu_env, o->in2, m34);
16159
+ gen_helper_cxgb(o->out_128, tcg_env, o->in2, m34);
16160
return DISAS_NEXT;
16161
}
16162
16163
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_celgb(DisasContext *s, DisasOps *o)
16164
if (!m34) {
16165
return DISAS_NORETURN;
16166
}
16167
- gen_helper_celgb(o->out, cpu_env, o->in2, m34);
16168
+ gen_helper_celgb(o->out, tcg_env, o->in2, m34);
16169
return DISAS_NEXT;
16170
}
16171
16172
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_cdlgb(DisasContext *s, DisasOps *o)
16173
if (!m34) {
16174
return DISAS_NORETURN;
16175
}
16176
- gen_helper_cdlgb(o->out, cpu_env, o->in2, m34);
16177
+ gen_helper_cdlgb(o->out, tcg_env, o->in2, m34);
16178
return DISAS_NEXT;
16179
}
16180
16181
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_cxlgb(DisasContext *s, DisasOps *o)
16182
if (!m34) {
16183
return DISAS_NORETURN;
16184
}
16185
- gen_helper_cxlgb(o->out_128, cpu_env, o->in2, m34);
16186
+ gen_helper_cxlgb(o->out_128, tcg_env, o->in2, m34);
16187
return DISAS_NEXT;
16188
}
16189
16190
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_cksm(DisasContext *s, DisasOps *o)
16191
TCGv_i128 pair = tcg_temp_new_i128();
16192
TCGv_i64 len = tcg_temp_new_i64();
16193
16194
- gen_helper_cksm(pair, cpu_env, o->in1, o->in2, regs[r2 + 1]);
16195
+ gen_helper_cksm(pair, tcg_env, o->in1, o->in2, regs[r2 + 1]);
16196
set_cc_static(s);
16197
tcg_gen_extr_i128_i64(o->out, len, pair);
16198
16199
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_clc(DisasContext *s, DisasOps *o)
16200
return DISAS_NEXT;
16201
default:
16202
vl = tcg_constant_i32(l);
16203
- gen_helper_clc(cc_op, cpu_env, vl, o->addr1, o->in2);
16204
+ gen_helper_clc(cc_op, tcg_env, vl, o->addr1, o->in2);
16205
set_cc_static(s);
16206
return DISAS_NEXT;
16207
}
16208
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_clcl(DisasContext *s, DisasOps *o)
16209
16210
t1 = tcg_constant_i32(r1);
16211
t2 = tcg_constant_i32(r2);
16212
- gen_helper_clcl(cc_op, cpu_env, t1, t2);
16213
+ gen_helper_clcl(cc_op, tcg_env, t1, t2);
16214
set_cc_static(s);
16215
return DISAS_NEXT;
16216
}
16217
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_clcle(DisasContext *s, DisasOps *o)
16218
16219
t1 = tcg_constant_i32(r1);
16220
t3 = tcg_constant_i32(r3);
16221
- gen_helper_clcle(cc_op, cpu_env, t1, o->in2, t3);
16222
+ gen_helper_clcle(cc_op, tcg_env, t1, o->in2, t3);
16223
set_cc_static(s);
16224
return DISAS_NEXT;
16225
}
16226
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_clclu(DisasContext *s, DisasOps *o)
16227
16228
t1 = tcg_constant_i32(r1);
16229
t3 = tcg_constant_i32(r3);
16230
- gen_helper_clclu(cc_op, cpu_env, t1, o->in2, t3);
16231
+ gen_helper_clclu(cc_op, tcg_env, t1, o->in2, t3);
16232
set_cc_static(s);
16233
return DISAS_NEXT;
16234
}
16235
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_clm(DisasContext *s, DisasOps *o)
16236
TCGv_i32 t1 = tcg_temp_new_i32();
16237
16238
tcg_gen_extrl_i64_i32(t1, o->in1);
16239
- gen_helper_clm(cc_op, cpu_env, t1, m3, o->in2);
16240
+ gen_helper_clm(cc_op, tcg_env, t1, m3, o->in2);
16241
set_cc_static(s);
16242
return DISAS_NEXT;
16243
}
16244
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_clst(DisasContext *s, DisasOps *o)
16245
{
16246
TCGv_i128 pair = tcg_temp_new_i128();
16247
16248
- gen_helper_clst(pair, cpu_env, regs[0], o->in1, o->in2);
16249
+ gen_helper_clst(pair, tcg_env, regs[0], o->in1, o->in2);
16250
tcg_gen_extr_i128_i64(o->in2, o->in1, pair);
16251
16252
set_cc_static(s);
16253
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_csst(DisasContext *s, DisasOps *o)
16254
TCGv_i32 t_r3 = tcg_constant_i32(r3);
16255
16256
if (tb_cflags(s->base.tb) & CF_PARALLEL) {
16257
- gen_helper_csst_parallel(cc_op, cpu_env, t_r3, o->addr1, o->in2);
16258
+ gen_helper_csst_parallel(cc_op, tcg_env, t_r3, o->addr1, o->in2);
16259
} else {
16260
- gen_helper_csst(cc_op, cpu_env, t_r3, o->addr1, o->in2);
16261
+ gen_helper_csst(cc_op, tcg_env, t_r3, o->addr1, o->in2);
16262
}
16263
16264
set_cc_static(s);
16265
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_csp(DisasContext *s, DisasOps *o)
16266
tcg_gen_and_i64(cc, cc, o->in2);
16267
tcg_gen_brcondi_i64(TCG_COND_EQ, cc, 0, lab);
16268
16269
- gen_helper_purge(cpu_env);
16270
+ gen_helper_purge(tcg_env);
16271
gen_set_label(lab);
16272
16273
return DISAS_NEXT;
16274
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_cuXX(DisasContext *s, DisasOps *o)
16275
16276
switch (s->insn->data) {
16277
case 12:
16278
- gen_helper_cu12(cc_op, cpu_env, tr1, tr2, chk);
16279
+ gen_helper_cu12(cc_op, tcg_env, tr1, tr2, chk);
16280
break;
16281
case 14:
16282
- gen_helper_cu14(cc_op, cpu_env, tr1, tr2, chk);
16283
+ gen_helper_cu14(cc_op, tcg_env, tr1, tr2, chk);
16284
break;
16285
case 21:
16286
- gen_helper_cu21(cc_op, cpu_env, tr1, tr2, chk);
16287
+ gen_helper_cu21(cc_op, tcg_env, tr1, tr2, chk);
16288
break;
16289
case 24:
16290
- gen_helper_cu24(cc_op, cpu_env, tr1, tr2, chk);
16291
+ gen_helper_cu24(cc_op, tcg_env, tr1, tr2, chk);
16292
break;
16293
case 41:
16294
- gen_helper_cu41(cc_op, cpu_env, tr1, tr2, chk);
16295
+ gen_helper_cu41(cc_op, tcg_env, tr1, tr2, chk);
16296
break;
16297
case 42:
16298
- gen_helper_cu42(cc_op, cpu_env, tr1, tr2, chk);
16299
+ gen_helper_cu42(cc_op, tcg_env, tr1, tr2, chk);
16300
break;
16301
default:
16302
g_assert_not_reached();
16303
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_diag(DisasContext *s, DisasOps *o)
16304
TCGv_i32 r3 = tcg_constant_i32(get_field(s, r3));
16305
TCGv_i32 func_code = tcg_constant_i32(get_field(s, i2));
16306
16307
- gen_helper_diag(cpu_env, r1, r3, func_code);
16308
+ gen_helper_diag(tcg_env, r1, r3, func_code);
16309
return DISAS_NEXT;
16310
}
16311
#endif
16312
16313
static DisasJumpType op_divs32(DisasContext *s, DisasOps *o)
16314
{
16315
- gen_helper_divs32(o->out, cpu_env, o->in1, o->in2);
16316
+ gen_helper_divs32(o->out, tcg_env, o->in1, o->in2);
16317
tcg_gen_extr32_i64(o->out2, o->out, o->out);
16318
return DISAS_NEXT;
16319
}
16320
16321
static DisasJumpType op_divu32(DisasContext *s, DisasOps *o)
16322
{
16323
- gen_helper_divu32(o->out, cpu_env, o->in1, o->in2);
16324
+ gen_helper_divu32(o->out, tcg_env, o->in1, o->in2);
16325
tcg_gen_extr32_i64(o->out2, o->out, o->out);
16326
return DISAS_NEXT;
16327
}
16328
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_divs64(DisasContext *s, DisasOps *o)
16329
{
16330
TCGv_i128 t = tcg_temp_new_i128();
16331
16332
- gen_helper_divs64(t, cpu_env, o->in1, o->in2);
16333
+ gen_helper_divs64(t, tcg_env, o->in1, o->in2);
16334
tcg_gen_extr_i128_i64(o->out2, o->out, t);
16335
return DISAS_NEXT;
16336
}
16337
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_divu64(DisasContext *s, DisasOps *o)
16338
{
16339
TCGv_i128 t = tcg_temp_new_i128();
16340
16341
- gen_helper_divu64(t, cpu_env, o->out, o->out2, o->in2);
16342
+ gen_helper_divu64(t, tcg_env, o->out, o->out2, o->in2);
16343
tcg_gen_extr_i128_i64(o->out2, o->out, t);
16344
return DISAS_NEXT;
16345
}
16346
16347
static DisasJumpType op_deb(DisasContext *s, DisasOps *o)
16348
{
16349
- gen_helper_deb(o->out, cpu_env, o->in1, o->in2);
16350
+ gen_helper_deb(o->out, tcg_env, o->in1, o->in2);
16351
return DISAS_NEXT;
16352
}
16353
16354
static DisasJumpType op_ddb(DisasContext *s, DisasOps *o)
16355
{
16356
- gen_helper_ddb(o->out, cpu_env, o->in1, o->in2);
16357
+ gen_helper_ddb(o->out, tcg_env, o->in1, o->in2);
16358
return DISAS_NEXT;
16359
}
16360
16361
static DisasJumpType op_dxb(DisasContext *s, DisasOps *o)
16362
{
16363
- gen_helper_dxb(o->out_128, cpu_env, o->in1_128, o->in2_128);
16364
+ gen_helper_dxb(o->out_128, tcg_env, o->in1_128, o->in2_128);
16365
return DISAS_NEXT;
16366
}
16367
16368
static DisasJumpType op_ear(DisasContext *s, DisasOps *o)
16369
{
16370
int r2 = get_field(s, r2);
16371
- tcg_gen_ld32u_i64(o->out, cpu_env, offsetof(CPUS390XState, aregs[r2]));
16372
+ tcg_gen_ld32u_i64(o->out, tcg_env, offsetof(CPUS390XState, aregs[r2]));
16373
return DISAS_NEXT;
16374
}
16375
16376
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_ecag(DisasContext *s, DisasOps *o)
16377
16378
static DisasJumpType op_efpc(DisasContext *s, DisasOps *o)
16379
{
16380
- tcg_gen_ld32u_i64(o->out, cpu_env, offsetof(CPUS390XState, fpc));
16381
+ tcg_gen_ld32u_i64(o->out, tcg_env, offsetof(CPUS390XState, fpc));
16382
return DISAS_NEXT;
16383
}
16384
16385
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_ex(DisasContext *s, DisasOps *o)
16386
}
16387
16388
ilen = tcg_constant_i32(s->ilen);
16389
- gen_helper_ex(cpu_env, ilen, v1, o->in2);
16390
+ gen_helper_ex(tcg_env, ilen, v1, o->in2);
16391
16392
return DISAS_PC_CC_UPDATED;
16393
}
16394
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_fieb(DisasContext *s, DisasOps *o)
16395
if (!m34) {
16396
return DISAS_NORETURN;
16397
}
16398
- gen_helper_fieb(o->out, cpu_env, o->in2, m34);
16399
+ gen_helper_fieb(o->out, tcg_env, o->in2, m34);
16400
return DISAS_NEXT;
16401
}
16402
16403
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_fidb(DisasContext *s, DisasOps *o)
16404
if (!m34) {
16405
return DISAS_NORETURN;
16406
}
16407
- gen_helper_fidb(o->out, cpu_env, o->in2, m34);
16408
+ gen_helper_fidb(o->out, tcg_env, o->in2, m34);
16409
return DISAS_NEXT;
16410
}
16411
16412
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_fixb(DisasContext *s, DisasOps *o)
16413
if (!m34) {
16414
return DISAS_NORETURN;
16415
}
16416
- gen_helper_fixb(o->out_128, cpu_env, o->in2_128, m34);
16417
+ gen_helper_fixb(o->out_128, tcg_env, o->in2_128, m34);
16418
return DISAS_NEXT;
16419
}
16420
16421
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_idte(DisasContext *s, DisasOps *o)
16422
} else {
16423
m4 = tcg_constant_i32(0);
16424
}
16425
- gen_helper_idte(cpu_env, o->in1, o->in2, m4);
16426
+ gen_helper_idte(tcg_env, o->in1, o->in2, m4);
16427
return DISAS_NEXT;
16428
}
16429
16430
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_ipte(DisasContext *s, DisasOps *o)
16431
} else {
16432
m4 = tcg_constant_i32(0);
16433
}
16434
- gen_helper_ipte(cpu_env, o->in1, o->in2, m4);
16435
+ gen_helper_ipte(tcg_env, o->in1, o->in2, m4);
16436
return DISAS_NEXT;
16437
}
16438
16439
static DisasJumpType op_iske(DisasContext *s, DisasOps *o)
16440
{
16441
- gen_helper_iske(o->out, cpu_env, o->in2);
16442
+ gen_helper_iske(o->out, tcg_env, o->in2);
16443
return DISAS_NEXT;
16444
}
16445
#endif
16446
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_msa(DisasContext *s, DisasOps *o)
16447
t_r2 = tcg_constant_i32(r2);
16448
t_r3 = tcg_constant_i32(r3);
16449
type = tcg_constant_i32(s->insn->data);
16450
- gen_helper_msa(cc_op, cpu_env, t_r1, t_r2, t_r3, type);
16451
+ gen_helper_msa(cc_op, tcg_env, t_r1, t_r2, t_r3, type);
16452
set_cc_static(s);
16453
return DISAS_NEXT;
16454
}
16455
16456
static DisasJumpType op_keb(DisasContext *s, DisasOps *o)
16457
{
16458
- gen_helper_keb(cc_op, cpu_env, o->in1, o->in2);
16459
+ gen_helper_keb(cc_op, tcg_env, o->in1, o->in2);
16460
set_cc_static(s);
16461
return DISAS_NEXT;
16462
}
16463
16464
static DisasJumpType op_kdb(DisasContext *s, DisasOps *o)
16465
{
16466
- gen_helper_kdb(cc_op, cpu_env, o->in1, o->in2);
16467
+ gen_helper_kdb(cc_op, tcg_env, o->in1, o->in2);
16468
set_cc_static(s);
16469
return DISAS_NEXT;
16470
}
16471
16472
static DisasJumpType op_kxb(DisasContext *s, DisasOps *o)
16473
{
16474
- gen_helper_kxb(cc_op, cpu_env, o->in1_128, o->in2_128);
16475
+ gen_helper_kxb(cc_op, tcg_env, o->in1_128, o->in2_128);
16476
set_cc_static(s);
16477
return DISAS_NEXT;
16478
}
16479
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_lax(DisasContext *s, DisasOps *o)
16480
16481
static DisasJumpType op_ldeb(DisasContext *s, DisasOps *o)
16482
{
16483
- gen_helper_ldeb(o->out, cpu_env, o->in2);
16484
+ gen_helper_ldeb(o->out, tcg_env, o->in2);
16485
return DISAS_NEXT;
16486
}
16487
16488
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_ledb(DisasContext *s, DisasOps *o)
16489
if (!m34) {
16490
return DISAS_NORETURN;
16491
}
16492
- gen_helper_ledb(o->out, cpu_env, o->in2, m34);
16493
+ gen_helper_ledb(o->out, tcg_env, o->in2, m34);
16494
return DISAS_NEXT;
16495
}
16496
16497
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_ldxb(DisasContext *s, DisasOps *o)
16498
if (!m34) {
16499
return DISAS_NORETURN;
16500
}
16501
- gen_helper_ldxb(o->out, cpu_env, o->in2_128, m34);
16502
+ gen_helper_ldxb(o->out, tcg_env, o->in2_128, m34);
16503
return DISAS_NEXT;
16504
}
16505
16506
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_lexb(DisasContext *s, DisasOps *o)
16507
if (!m34) {
16508
return DISAS_NORETURN;
16509
}
16510
- gen_helper_lexb(o->out, cpu_env, o->in2_128, m34);
16511
+ gen_helper_lexb(o->out, tcg_env, o->in2_128, m34);
16512
return DISAS_NEXT;
16513
}
16514
16515
static DisasJumpType op_lxdb(DisasContext *s, DisasOps *o)
16516
{
16517
- gen_helper_lxdb(o->out_128, cpu_env, o->in2);
16518
+ gen_helper_lxdb(o->out_128, tcg_env, o->in2);
16519
return DISAS_NEXT;
16520
}
16521
16522
static DisasJumpType op_lxeb(DisasContext *s, DisasOps *o)
16523
{
16524
- gen_helper_lxeb(o->out_128, cpu_env, o->in2);
16525
+ gen_helper_lxeb(o->out_128, tcg_env, o->in2);
16526
return DISAS_NEXT;
16527
}
16528
16529
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_lctl(DisasContext *s, DisasOps *o)
16530
TCGv_i32 r1 = tcg_constant_i32(get_field(s, r1));
16531
TCGv_i32 r3 = tcg_constant_i32(get_field(s, r3));
16532
16533
- gen_helper_lctl(cpu_env, r1, o->in2, r3);
16534
+ gen_helper_lctl(tcg_env, r1, o->in2, r3);
16535
/* Exit to main loop to reevaluate s390_cpu_exec_interrupt. */
16536
s->exit_to_mainloop = true;
16537
return DISAS_TOO_MANY;
16538
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_lctlg(DisasContext *s, DisasOps *o)
16539
TCGv_i32 r1 = tcg_constant_i32(get_field(s, r1));
16540
TCGv_i32 r3 = tcg_constant_i32(get_field(s, r3));
16541
16542
- gen_helper_lctlg(cpu_env, r1, o->in2, r3);
16543
+ gen_helper_lctlg(tcg_env, r1, o->in2, r3);
16544
/* Exit to main loop to reevaluate s390_cpu_exec_interrupt. */
16545
s->exit_to_mainloop = true;
16546
return DISAS_TOO_MANY;
16547
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_lctlg(DisasContext *s, DisasOps *o)
16548
16549
static DisasJumpType op_lra(DisasContext *s, DisasOps *o)
16550
{
16551
- gen_helper_lra(o->out, cpu_env, o->out, o->in2);
16552
+ gen_helper_lra(o->out, tcg_env, o->out, o->in2);
16553
set_cc_static(s);
16554
return DISAS_NEXT;
16555
}
16556
16557
static DisasJumpType op_lpp(DisasContext *s, DisasOps *o)
16558
{
16559
- tcg_gen_st_i64(o->in2, cpu_env, offsetof(CPUS390XState, pp));
16560
+ tcg_gen_st_i64(o->in2, tcg_env, offsetof(CPUS390XState, pp));
16561
return DISAS_NEXT;
16562
}
16563
16564
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_lpsw(DisasContext *s, DisasOps *o)
16565
tcg_gen_andi_i64(addr, mask, PSW_MASK_SHORT_ADDR);
16566
tcg_gen_andi_i64(mask, mask, PSW_MASK_SHORT_CTRL);
16567
tcg_gen_xori_i64(mask, mask, PSW_MASK_SHORTPSW);
16568
- gen_helper_load_psw(cpu_env, mask, addr);
16569
+ gen_helper_load_psw(tcg_env, mask, addr);
16570
return DISAS_NORETURN;
16571
}
16572
16573
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_lpswe(DisasContext *s, DisasOps *o)
16574
MO_TEUQ | MO_ALIGN_8);
16575
tcg_gen_addi_i64(o->in2, o->in2, 8);
16576
tcg_gen_qemu_ld_i64(t2, o->in2, get_mem_index(s), MO_TEUQ);
16577
- gen_helper_load_psw(cpu_env, t1, t2);
16578
+ gen_helper_load_psw(tcg_env, t1, t2);
16579
return DISAS_NORETURN;
16580
}
16581
#endif
16582
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_lam(DisasContext *s, DisasOps *o)
16583
TCGv_i32 r1 = tcg_constant_i32(get_field(s, r1));
16584
TCGv_i32 r3 = tcg_constant_i32(get_field(s, r3));
16585
16586
- gen_helper_lam(cpu_env, r1, o->in2, r3);
16587
+ gen_helper_lam(tcg_env, r1, o->in2, r3);
16588
return DISAS_NEXT;
16589
}
16590
16591
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_mc(DisasContext *s, DisasOps *o)
16592
}
16593
16594
#if !defined(CONFIG_USER_ONLY)
16595
- gen_helper_monitor_call(cpu_env, o->addr1,
16596
+ gen_helper_monitor_call(tcg_env, o->addr1,
16597
tcg_constant_i32(monitor_class));
16598
#endif
16599
/* Defaults to a NOP. */
16600
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_mov2e(DisasContext *s, DisasOps *o)
16601
break;
16602
case PSW_ASC_SECONDARY >> FLAG_MASK_PSW_SHIFT:
16603
if (b2) {
16604
- tcg_gen_ld32u_i64(ar1, cpu_env, offsetof(CPUS390XState, aregs[b2]));
16605
+ tcg_gen_ld32u_i64(ar1, tcg_env, offsetof(CPUS390XState, aregs[b2]));
16606
} else {
16607
tcg_gen_movi_i64(ar1, 0);
16608
}
16609
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_mov2e(DisasContext *s, DisasOps *o)
16610
break;
16611
}
16612
16613
- tcg_gen_st32_i64(ar1, cpu_env, offsetof(CPUS390XState, aregs[1]));
16614
+ tcg_gen_st32_i64(ar1, tcg_env, offsetof(CPUS390XState, aregs[1]));
16615
return DISAS_NEXT;
16616
}
16617
16618
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_mvc(DisasContext *s, DisasOps *o)
16619
{
16620
TCGv_i32 l = tcg_constant_i32(get_field(s, l1));
16621
16622
- gen_helper_mvc(cpu_env, l, o->addr1, o->in2);
16623
+ gen_helper_mvc(tcg_env, l, o->addr1, o->in2);
16624
return DISAS_NEXT;
16625
}
16626
16627
static DisasJumpType op_mvcrl(DisasContext *s, DisasOps *o)
16628
{
16629
- gen_helper_mvcrl(cpu_env, regs[0], o->addr1, o->in2);
16630
+ gen_helper_mvcrl(tcg_env, regs[0], o->addr1, o->in2);
16631
return DISAS_NEXT;
16632
}
16633
16634
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_mvcin(DisasContext *s, DisasOps *o)
16635
{
16636
TCGv_i32 l = tcg_constant_i32(get_field(s, l1));
16637
16638
- gen_helper_mvcin(cpu_env, l, o->addr1, o->in2);
16639
+ gen_helper_mvcin(tcg_env, l, o->addr1, o->in2);
16640
return DISAS_NEXT;
16641
}
16642
16643
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_mvcl(DisasContext *s, DisasOps *o)
16644
16645
t1 = tcg_constant_i32(r1);
16646
t2 = tcg_constant_i32(r2);
16647
- gen_helper_mvcl(cc_op, cpu_env, t1, t2);
16648
+ gen_helper_mvcl(cc_op, tcg_env, t1, t2);
16649
set_cc_static(s);
16650
return DISAS_NEXT;
16651
}
16652
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_mvcle(DisasContext *s, DisasOps *o)
16653
16654
t1 = tcg_constant_i32(r1);
16655
t3 = tcg_constant_i32(r3);
16656
- gen_helper_mvcle(cc_op, cpu_env, t1, o->in2, t3);
16657
+ gen_helper_mvcle(cc_op, tcg_env, t1, o->in2, t3);
16658
set_cc_static(s);
16659
return DISAS_NEXT;
16660
}
16661
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_mvclu(DisasContext *s, DisasOps *o)
16662
16663
t1 = tcg_constant_i32(r1);
16664
t3 = tcg_constant_i32(r3);
16665
- gen_helper_mvclu(cc_op, cpu_env, t1, o->in2, t3);
16666
+ gen_helper_mvclu(cc_op, tcg_env, t1, o->in2, t3);
16667
set_cc_static(s);
16668
return DISAS_NEXT;
16669
}
16670
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_mvclu(DisasContext *s, DisasOps *o)
16671
static DisasJumpType op_mvcos(DisasContext *s, DisasOps *o)
16672
{
16673
int r3 = get_field(s, r3);
16674
- gen_helper_mvcos(cc_op, cpu_env, o->addr1, o->in2, regs[r3]);
16675
+ gen_helper_mvcos(cc_op, tcg_env, o->addr1, o->in2, regs[r3]);
16676
set_cc_static(s);
16677
return DISAS_NEXT;
16678
}
16679
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_mvcp(DisasContext *s, DisasOps *o)
16680
{
16681
int r1 = get_field(s, l1);
16682
int r3 = get_field(s, r3);
16683
- gen_helper_mvcp(cc_op, cpu_env, regs[r1], o->addr1, o->in2, regs[r3]);
16684
+ gen_helper_mvcp(cc_op, tcg_env, regs[r1], o->addr1, o->in2, regs[r3]);
16685
set_cc_static(s);
16686
return DISAS_NEXT;
16687
}
16688
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_mvcs(DisasContext *s, DisasOps *o)
16689
{
16690
int r1 = get_field(s, l1);
16691
int r3 = get_field(s, r3);
16692
- gen_helper_mvcs(cc_op, cpu_env, regs[r1], o->addr1, o->in2, regs[r3]);
16693
+ gen_helper_mvcs(cc_op, tcg_env, regs[r1], o->addr1, o->in2, regs[r3]);
16694
set_cc_static(s);
16695
return DISAS_NEXT;
16696
}
16697
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_mvn(DisasContext *s, DisasOps *o)
16698
{
16699
TCGv_i32 l = tcg_constant_i32(get_field(s, l1));
16700
16701
- gen_helper_mvn(cpu_env, l, o->addr1, o->in2);
16702
+ gen_helper_mvn(tcg_env, l, o->addr1, o->in2);
16703
return DISAS_NEXT;
16704
}
16705
16706
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_mvo(DisasContext *s, DisasOps *o)
16707
{
16708
TCGv_i32 l = tcg_constant_i32(get_field(s, l1));
16709
16710
- gen_helper_mvo(cpu_env, l, o->addr1, o->in2);
16711
+ gen_helper_mvo(tcg_env, l, o->addr1, o->in2);
16712
return DISAS_NEXT;
16713
}
16714
16715
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_mvpg(DisasContext *s, DisasOps *o)
16716
TCGv_i32 t1 = tcg_constant_i32(get_field(s, r1));
16717
TCGv_i32 t2 = tcg_constant_i32(get_field(s, r2));
16718
16719
- gen_helper_mvpg(cc_op, cpu_env, regs[0], t1, t2);
16720
+ gen_helper_mvpg(cc_op, tcg_env, regs[0], t1, t2);
16721
set_cc_static(s);
16722
return DISAS_NEXT;
16723
}
16724
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_mvst(DisasContext *s, DisasOps *o)
16725
TCGv_i32 t1 = tcg_constant_i32(get_field(s, r1));
16726
TCGv_i32 t2 = tcg_constant_i32(get_field(s, r2));
16727
16728
- gen_helper_mvst(cc_op, cpu_env, t1, t2);
16729
+ gen_helper_mvst(cc_op, tcg_env, t1, t2);
16730
set_cc_static(s);
16731
return DISAS_NEXT;
16732
}
16733
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_mvz(DisasContext *s, DisasOps *o)
16734
{
16735
TCGv_i32 l = tcg_constant_i32(get_field(s, l1));
16736
16737
- gen_helper_mvz(cpu_env, l, o->addr1, o->in2);
16738
+ gen_helper_mvz(tcg_env, l, o->addr1, o->in2);
16739
return DISAS_NEXT;
16740
}
16741
16742
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_muls128(DisasContext *s, DisasOps *o)
16743
16744
static DisasJumpType op_meeb(DisasContext *s, DisasOps *o)
16745
{
16746
- gen_helper_meeb(o->out, cpu_env, o->in1, o->in2);
16747
+ gen_helper_meeb(o->out, tcg_env, o->in1, o->in2);
16748
return DISAS_NEXT;
16749
}
16750
16751
static DisasJumpType op_mdeb(DisasContext *s, DisasOps *o)
16752
{
16753
- gen_helper_mdeb(o->out, cpu_env, o->in1, o->in2);
16754
+ gen_helper_mdeb(o->out, tcg_env, o->in1, o->in2);
16755
return DISAS_NEXT;
16756
}
16757
16758
static DisasJumpType op_mdb(DisasContext *s, DisasOps *o)
16759
{
16760
- gen_helper_mdb(o->out, cpu_env, o->in1, o->in2);
16761
+ gen_helper_mdb(o->out, tcg_env, o->in1, o->in2);
16762
return DISAS_NEXT;
16763
}
16764
16765
static DisasJumpType op_mxb(DisasContext *s, DisasOps *o)
16766
{
16767
- gen_helper_mxb(o->out_128, cpu_env, o->in1_128, o->in2_128);
16768
+ gen_helper_mxb(o->out_128, tcg_env, o->in1_128, o->in2_128);
16769
return DISAS_NEXT;
16770
}
16771
16772
static DisasJumpType op_mxdb(DisasContext *s, DisasOps *o)
16773
{
16774
- gen_helper_mxdb(o->out_128, cpu_env, o->in1, o->in2);
16775
+ gen_helper_mxdb(o->out_128, tcg_env, o->in1, o->in2);
16776
return DISAS_NEXT;
16777
}
16778
16779
static DisasJumpType op_maeb(DisasContext *s, DisasOps *o)
16780
{
16781
TCGv_i64 r3 = load_freg32_i64(get_field(s, r3));
16782
- gen_helper_maeb(o->out, cpu_env, o->in1, o->in2, r3);
16783
+ gen_helper_maeb(o->out, tcg_env, o->in1, o->in2, r3);
16784
return DISAS_NEXT;
16785
}
16786
16787
static DisasJumpType op_madb(DisasContext *s, DisasOps *o)
16788
{
16789
TCGv_i64 r3 = load_freg(get_field(s, r3));
16790
- gen_helper_madb(o->out, cpu_env, o->in1, o->in2, r3);
16791
+ gen_helper_madb(o->out, tcg_env, o->in1, o->in2, r3);
16792
return DISAS_NEXT;
16793
}
16794
16795
static DisasJumpType op_mseb(DisasContext *s, DisasOps *o)
16796
{
16797
TCGv_i64 r3 = load_freg32_i64(get_field(s, r3));
16798
- gen_helper_mseb(o->out, cpu_env, o->in1, o->in2, r3);
16799
+ gen_helper_mseb(o->out, tcg_env, o->in1, o->in2, r3);
16800
return DISAS_NEXT;
16801
}
16802
16803
static DisasJumpType op_msdb(DisasContext *s, DisasOps *o)
16804
{
16805
TCGv_i64 r3 = load_freg(get_field(s, r3));
16806
- gen_helper_msdb(o->out, cpu_env, o->in1, o->in2, r3);
16807
+ gen_helper_msdb(o->out, tcg_env, o->in1, o->in2, r3);
16808
return DISAS_NEXT;
16809
}
16810
16811
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_nc(DisasContext *s, DisasOps *o)
16812
{
16813
TCGv_i32 l = tcg_constant_i32(get_field(s, l1));
16814
16815
- gen_helper_nc(cc_op, cpu_env, l, o->addr1, o->in2);
16816
+ gen_helper_nc(cc_op, tcg_env, l, o->addr1, o->in2);
16817
set_cc_static(s);
16818
return DISAS_NEXT;
16819
}
16820
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_oc(DisasContext *s, DisasOps *o)
16821
{
16822
TCGv_i32 l = tcg_constant_i32(get_field(s, l1));
16823
16824
- gen_helper_oc(cc_op, cpu_env, l, o->addr1, o->in2);
16825
+ gen_helper_oc(cc_op, tcg_env, l, o->addr1, o->in2);
16826
set_cc_static(s);
16827
return DISAS_NEXT;
16828
}
16829
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_pack(DisasContext *s, DisasOps *o)
16830
{
16831
TCGv_i32 l = tcg_constant_i32(get_field(s, l1));
16832
16833
- gen_helper_pack(cpu_env, l, o->addr1, o->in2);
16834
+ gen_helper_pack(tcg_env, l, o->addr1, o->in2);
16835
return DISAS_NEXT;
16836
}
16837
16838
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_pka(DisasContext *s, DisasOps *o)
16839
return DISAS_NORETURN;
16840
}
16841
l = tcg_constant_i32(l2);
16842
- gen_helper_pka(cpu_env, o->addr1, o->in2, l);
16843
+ gen_helper_pka(tcg_env, o->addr1, o->in2, l);
16844
return DISAS_NEXT;
16845
}
16846
16847
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_pku(DisasContext *s, DisasOps *o)
16848
return DISAS_NORETURN;
16849
}
16850
l = tcg_constant_i32(l2);
16851
- gen_helper_pku(cpu_env, o->addr1, o->in2, l);
16852
+ gen_helper_pku(tcg_env, o->addr1, o->in2, l);
16853
return DISAS_NEXT;
16854
}
16855
16856
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_popcnt(DisasContext *s, DisasOps *o)
16857
#ifndef CONFIG_USER_ONLY
16858
static DisasJumpType op_ptlb(DisasContext *s, DisasOps *o)
16859
{
16860
- gen_helper_ptlb(cpu_env);
16861
+ gen_helper_ptlb(tcg_env);
16862
return DISAS_NEXT;
16863
}
16864
#endif
16865
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_rll64(DisasContext *s, DisasOps *o)
16866
#ifndef CONFIG_USER_ONLY
16867
static DisasJumpType op_rrbe(DisasContext *s, DisasOps *o)
16868
{
16869
- gen_helper_rrbe(cc_op, cpu_env, o->in2);
16870
+ gen_helper_rrbe(cc_op, tcg_env, o->in2);
16871
set_cc_static(s);
16872
return DISAS_NEXT;
16873
}
16874
16875
static DisasJumpType op_sacf(DisasContext *s, DisasOps *o)
16876
{
16877
- gen_helper_sacf(cpu_env, o->in2);
16878
+ gen_helper_sacf(tcg_env, o->in2);
16879
/* Addressing mode has changed, so end the block. */
16880
return DISAS_TOO_MANY;
16881
}
16882
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_sam(DisasContext *s, DisasOps *o)
16883
static DisasJumpType op_sar(DisasContext *s, DisasOps *o)
16884
{
16885
int r1 = get_field(s, r1);
16886
- tcg_gen_st32_i64(o->in2, cpu_env, offsetof(CPUS390XState, aregs[r1]));
16887
+ tcg_gen_st32_i64(o->in2, tcg_env, offsetof(CPUS390XState, aregs[r1]));
16888
return DISAS_NEXT;
16889
}
16890
16891
static DisasJumpType op_seb(DisasContext *s, DisasOps *o)
16892
{
16893
- gen_helper_seb(o->out, cpu_env, o->in1, o->in2);
16894
+ gen_helper_seb(o->out, tcg_env, o->in1, o->in2);
16895
return DISAS_NEXT;
16896
}
16897
16898
static DisasJumpType op_sdb(DisasContext *s, DisasOps *o)
16899
{
16900
- gen_helper_sdb(o->out, cpu_env, o->in1, o->in2);
16901
+ gen_helper_sdb(o->out, tcg_env, o->in1, o->in2);
16902
return DISAS_NEXT;
16903
}
16904
16905
static DisasJumpType op_sxb(DisasContext *s, DisasOps *o)
16906
{
16907
- gen_helper_sxb(o->out_128, cpu_env, o->in1_128, o->in2_128);
16908
+ gen_helper_sxb(o->out_128, tcg_env, o->in1_128, o->in2_128);
16909
return DISAS_NEXT;
16910
}
16911
16912
static DisasJumpType op_sqeb(DisasContext *s, DisasOps *o)
16913
{
16914
- gen_helper_sqeb(o->out, cpu_env, o->in2);
16915
+ gen_helper_sqeb(o->out, tcg_env, o->in2);
16916
return DISAS_NEXT;
16917
}
16918
16919
static DisasJumpType op_sqdb(DisasContext *s, DisasOps *o)
16920
{
16921
- gen_helper_sqdb(o->out, cpu_env, o->in2);
16922
+ gen_helper_sqdb(o->out, tcg_env, o->in2);
16923
return DISAS_NEXT;
16924
}
16925
16926
static DisasJumpType op_sqxb(DisasContext *s, DisasOps *o)
16927
{
16928
- gen_helper_sqxb(o->out_128, cpu_env, o->in2_128);
16929
+ gen_helper_sqxb(o->out_128, tcg_env, o->in2_128);
16930
return DISAS_NEXT;
16931
}
16932
16933
#ifndef CONFIG_USER_ONLY
16934
static DisasJumpType op_servc(DisasContext *s, DisasOps *o)
16935
{
16936
- gen_helper_servc(cc_op, cpu_env, o->in2, o->in1);
16937
+ gen_helper_servc(cc_op, tcg_env, o->in2, o->in1);
16938
set_cc_static(s);
16939
return DISAS_NEXT;
16940
}
16941
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_sigp(DisasContext *s, DisasOps *o)
16942
TCGv_i32 r1 = tcg_constant_i32(get_field(s, r1));
16943
TCGv_i32 r3 = tcg_constant_i32(get_field(s, r3));
16944
16945
- gen_helper_sigp(cc_op, cpu_env, o->in2, r1, r3);
16946
+ gen_helper_sigp(cc_op, tcg_env, o->in2, r1, r3);
16947
set_cc_static(s);
16948
return DISAS_NEXT;
16949
}
16950
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_srl(DisasContext *s, DisasOps *o)
16951
16952
static DisasJumpType op_sfpc(DisasContext *s, DisasOps *o)
16953
{
16954
- gen_helper_sfpc(cpu_env, o->in2);
16955
+ gen_helper_sfpc(tcg_env, o->in2);
16956
return DISAS_NEXT;
16957
}
16958
16959
static DisasJumpType op_sfas(DisasContext *s, DisasOps *o)
16960
{
16961
- gen_helper_sfas(cpu_env, o->in2);
16962
+ gen_helper_sfas(tcg_env, o->in2);
16963
return DISAS_NEXT;
16964
}
16965
16966
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_srnm(DisasContext *s, DisasOps *o)
16967
{
16968
/* Bits other than 62 and 63 are ignored. Bit 29 is set to zero. */
16969
tcg_gen_andi_i64(o->addr1, o->addr1, 0x3ull);
16970
- gen_helper_srnm(cpu_env, o->addr1);
16971
+ gen_helper_srnm(tcg_env, o->addr1);
16972
return DISAS_NEXT;
16973
}
16974
16975
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_srnmb(DisasContext *s, DisasOps *o)
16976
{
16977
/* Bits 0-55 are are ignored. */
16978
tcg_gen_andi_i64(o->addr1, o->addr1, 0xffull);
16979
- gen_helper_srnm(cpu_env, o->addr1);
16980
+ gen_helper_srnm(tcg_env, o->addr1);
16981
return DISAS_NEXT;
16982
}
16983
16984
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_srnmt(DisasContext *s, DisasOps *o)
16985
tcg_gen_andi_i64(o->addr1, o->addr1, 0x7ull);
16986
16987
/* No need to call a helper, we don't implement dfp */
16988
- tcg_gen_ld32u_i64(tmp, cpu_env, offsetof(CPUS390XState, fpc));
16989
+ tcg_gen_ld32u_i64(tmp, tcg_env, offsetof(CPUS390XState, fpc));
16990
tcg_gen_deposit_i64(tmp, tmp, o->addr1, 4, 3);
16991
- tcg_gen_st32_i64(tmp, cpu_env, offsetof(CPUS390XState, fpc));
16992
+ tcg_gen_st32_i64(tmp, tcg_env, offsetof(CPUS390XState, fpc));
16993
return DISAS_NEXT;
16994
}
16995
16996
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_ectg(DisasContext *s, DisasOps *o)
16997
tcg_gen_qemu_ld_i64(regs[r3], o->addr1, get_mem_index(s), MO_TEUQ);
16998
16999
/* subtract CPU timer from first operand and store in GR0 */
17000
- gen_helper_stpt(tmp, cpu_env);
17001
+ gen_helper_stpt(tmp, tcg_env);
17002
tcg_gen_sub_i64(regs[0], o->in1, tmp);
17003
17004
/* store second operand in GR1 */
17005
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_spka(DisasContext *s, DisasOps *o)
17006
17007
static DisasJumpType op_sske(DisasContext *s, DisasOps *o)
17008
{
17009
- gen_helper_sske(cpu_env, o->in1, o->in2);
17010
+ gen_helper_sske(tcg_env, o->in1, o->in2);
17011
return DISAS_NEXT;
17012
}
17013
17014
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_ssm(DisasContext *s, DisasOps *o)
17015
17016
static DisasJumpType op_stap(DisasContext *s, DisasOps *o)
17017
{
17018
- tcg_gen_ld32u_i64(o->out, cpu_env, offsetof(CPUS390XState, core_id));
17019
+ tcg_gen_ld32u_i64(o->out, tcg_env, offsetof(CPUS390XState, core_id));
17020
return DISAS_NEXT;
17021
}
17022
#endif
17023
17024
static DisasJumpType op_stck(DisasContext *s, DisasOps *o)
17025
{
17026
- gen_helper_stck(o->out, cpu_env);
17027
+ gen_helper_stck(o->out, tcg_env);
17028
/* ??? We don't implement clock states. */
17029
gen_op_movi_cc(s, 0);
17030
return DISAS_NEXT;
17031
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_stcke(DisasContext *s, DisasOps *o)
17032
TCGv_i64 c1 = tcg_temp_new_i64();
17033
TCGv_i64 c2 = tcg_temp_new_i64();
17034
TCGv_i64 todpr = tcg_temp_new_i64();
17035
- gen_helper_stck(c1, cpu_env);
17036
+ gen_helper_stck(c1, tcg_env);
17037
/* 16 bit value store in an uint32_t (only valid bits set) */
17038
- tcg_gen_ld32u_i64(todpr, cpu_env, offsetof(CPUS390XState, todpr));
17039
+ tcg_gen_ld32u_i64(todpr, tcg_env, offsetof(CPUS390XState, todpr));
17040
/* Shift the 64-bit value into its place as a zero-extended
17041
104-bit value. Note that "bit positions 64-103 are always
17042
non-zero so that they compare differently to STCK"; we set
17043
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_stcke(DisasContext *s, DisasOps *o)
17044
#ifndef CONFIG_USER_ONLY
17045
static DisasJumpType op_sck(DisasContext *s, DisasOps *o)
17046
{
17047
- gen_helper_sck(cc_op, cpu_env, o->in2);
17048
+ gen_helper_sck(cc_op, tcg_env, o->in2);
17049
set_cc_static(s);
17050
return DISAS_NEXT;
17051
}
17052
17053
static DisasJumpType op_sckc(DisasContext *s, DisasOps *o)
17054
{
17055
- gen_helper_sckc(cpu_env, o->in2);
17056
+ gen_helper_sckc(tcg_env, o->in2);
17057
return DISAS_NEXT;
17058
}
17059
17060
static DisasJumpType op_sckpf(DisasContext *s, DisasOps *o)
17061
{
17062
- gen_helper_sckpf(cpu_env, regs[0]);
17063
+ gen_helper_sckpf(tcg_env, regs[0]);
17064
return DISAS_NEXT;
17065
}
17066
17067
static DisasJumpType op_stckc(DisasContext *s, DisasOps *o)
17068
{
17069
- gen_helper_stckc(o->out, cpu_env);
17070
+ gen_helper_stckc(o->out, tcg_env);
17071
return DISAS_NEXT;
17072
}
17073
17074
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_stctg(DisasContext *s, DisasOps *o)
17075
TCGv_i32 r1 = tcg_constant_i32(get_field(s, r1));
17076
TCGv_i32 r3 = tcg_constant_i32(get_field(s, r3));
17077
17078
- gen_helper_stctg(cpu_env, r1, o->in2, r3);
17079
+ gen_helper_stctg(tcg_env, r1, o->in2, r3);
17080
return DISAS_NEXT;
17081
}
17082
17083
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_stctl(DisasContext *s, DisasOps *o)
17084
TCGv_i32 r1 = tcg_constant_i32(get_field(s, r1));
17085
TCGv_i32 r3 = tcg_constant_i32(get_field(s, r3));
17086
17087
- gen_helper_stctl(cpu_env, r1, o->in2, r3);
17088
+ gen_helper_stctl(tcg_env, r1, o->in2, r3);
17089
return DISAS_NEXT;
17090
}
17091
17092
static DisasJumpType op_stidp(DisasContext *s, DisasOps *o)
17093
{
17094
- tcg_gen_ld_i64(o->out, cpu_env, offsetof(CPUS390XState, cpuid));
17095
+ tcg_gen_ld_i64(o->out, tcg_env, offsetof(CPUS390XState, cpuid));
17096
return DISAS_NEXT;
17097
}
17098
17099
static DisasJumpType op_spt(DisasContext *s, DisasOps *o)
17100
{
17101
- gen_helper_spt(cpu_env, o->in2);
17102
+ gen_helper_spt(tcg_env, o->in2);
17103
return DISAS_NEXT;
17104
}
17105
17106
static DisasJumpType op_stfl(DisasContext *s, DisasOps *o)
17107
{
17108
- gen_helper_stfl(cpu_env);
17109
+ gen_helper_stfl(tcg_env);
17110
return DISAS_NEXT;
17111
}
17112
17113
static DisasJumpType op_stpt(DisasContext *s, DisasOps *o)
17114
{
17115
- gen_helper_stpt(o->out, cpu_env);
17116
+ gen_helper_stpt(o->out, tcg_env);
17117
return DISAS_NEXT;
17118
}
17119
17120
static DisasJumpType op_stsi(DisasContext *s, DisasOps *o)
17121
{
17122
- gen_helper_stsi(cc_op, cpu_env, o->in2, regs[0], regs[1]);
17123
+ gen_helper_stsi(cc_op, tcg_env, o->in2, regs[0], regs[1]);
17124
set_cc_static(s);
17125
return DISAS_NEXT;
17126
}
17127
17128
static DisasJumpType op_spx(DisasContext *s, DisasOps *o)
17129
{
17130
- gen_helper_spx(cpu_env, o->in2);
17131
+ gen_helper_spx(tcg_env, o->in2);
17132
return DISAS_NEXT;
17133
}
17134
17135
static DisasJumpType op_xsch(DisasContext *s, DisasOps *o)
17136
{
17137
- gen_helper_xsch(cpu_env, regs[1]);
17138
+ gen_helper_xsch(tcg_env, regs[1]);
17139
set_cc_static(s);
17140
return DISAS_NEXT;
17141
}
17142
17143
static DisasJumpType op_csch(DisasContext *s, DisasOps *o)
17144
{
17145
- gen_helper_csch(cpu_env, regs[1]);
17146
+ gen_helper_csch(tcg_env, regs[1]);
17147
set_cc_static(s);
17148
return DISAS_NEXT;
17149
}
17150
17151
static DisasJumpType op_hsch(DisasContext *s, DisasOps *o)
17152
{
17153
- gen_helper_hsch(cpu_env, regs[1]);
17154
+ gen_helper_hsch(tcg_env, regs[1]);
17155
set_cc_static(s);
17156
return DISAS_NEXT;
17157
}
17158
17159
static DisasJumpType op_msch(DisasContext *s, DisasOps *o)
17160
{
17161
- gen_helper_msch(cpu_env, regs[1], o->in2);
17162
+ gen_helper_msch(tcg_env, regs[1], o->in2);
17163
set_cc_static(s);
17164
return DISAS_NEXT;
17165
}
17166
17167
static DisasJumpType op_rchp(DisasContext *s, DisasOps *o)
17168
{
17169
- gen_helper_rchp(cpu_env, regs[1]);
17170
+ gen_helper_rchp(tcg_env, regs[1]);
17171
set_cc_static(s);
17172
return DISAS_NEXT;
17173
}
17174
17175
static DisasJumpType op_rsch(DisasContext *s, DisasOps *o)
17176
{
17177
- gen_helper_rsch(cpu_env, regs[1]);
17178
+ gen_helper_rsch(tcg_env, regs[1]);
17179
set_cc_static(s);
17180
return DISAS_NEXT;
17181
}
17182
17183
static DisasJumpType op_sal(DisasContext *s, DisasOps *o)
17184
{
17185
- gen_helper_sal(cpu_env, regs[1]);
17186
+ gen_helper_sal(tcg_env, regs[1]);
17187
return DISAS_NEXT;
17188
}
17189
17190
static DisasJumpType op_schm(DisasContext *s, DisasOps *o)
17191
{
17192
- gen_helper_schm(cpu_env, regs[1], regs[2], o->in2);
17193
+ gen_helper_schm(tcg_env, regs[1], regs[2], o->in2);
17194
return DISAS_NEXT;
17195
}
17196
17197
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_stcps(DisasContext *s, DisasOps *o)
17198
17199
static DisasJumpType op_ssch(DisasContext *s, DisasOps *o)
17200
{
17201
- gen_helper_ssch(cpu_env, regs[1], o->in2);
17202
+ gen_helper_ssch(tcg_env, regs[1], o->in2);
17203
set_cc_static(s);
17204
return DISAS_NEXT;
17205
}
17206
17207
static DisasJumpType op_stsch(DisasContext *s, DisasOps *o)
17208
{
17209
- gen_helper_stsch(cpu_env, regs[1], o->in2);
17210
+ gen_helper_stsch(tcg_env, regs[1], o->in2);
17211
set_cc_static(s);
17212
return DISAS_NEXT;
17213
}
17214
17215
static DisasJumpType op_stcrw(DisasContext *s, DisasOps *o)
17216
{
17217
- gen_helper_stcrw(cpu_env, o->in2);
17218
+ gen_helper_stcrw(tcg_env, o->in2);
17219
set_cc_static(s);
17220
return DISAS_NEXT;
17221
}
17222
17223
static DisasJumpType op_tpi(DisasContext *s, DisasOps *o)
17224
{
17225
- gen_helper_tpi(cc_op, cpu_env, o->addr1);
17226
+ gen_helper_tpi(cc_op, tcg_env, o->addr1);
17227
set_cc_static(s);
17228
return DISAS_NEXT;
17229
}
17230
17231
static DisasJumpType op_tsch(DisasContext *s, DisasOps *o)
17232
{
17233
- gen_helper_tsch(cpu_env, regs[1], o->in2);
17234
+ gen_helper_tsch(tcg_env, regs[1], o->in2);
17235
set_cc_static(s);
17236
return DISAS_NEXT;
17237
}
17238
17239
static DisasJumpType op_chsc(DisasContext *s, DisasOps *o)
17240
{
17241
- gen_helper_chsc(cpu_env, o->in2);
17242
+ gen_helper_chsc(tcg_env, o->in2);
17243
set_cc_static(s);
17244
return DISAS_NEXT;
17245
}
17246
17247
static DisasJumpType op_stpx(DisasContext *s, DisasOps *o)
17248
{
17249
- tcg_gen_ld_i64(o->out, cpu_env, offsetof(CPUS390XState, psa));
17250
+ tcg_gen_ld_i64(o->out, tcg_env, offsetof(CPUS390XState, psa));
17251
tcg_gen_andi_i64(o->out, o->out, 0x7fffe000);
17252
return DISAS_NEXT;
17253
}
17254
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_stura(DisasContext *s, DisasOps *o)
17255
17256
if (s->base.tb->flags & FLAG_MASK_PER) {
17257
update_psw_addr(s);
17258
- gen_helper_per_store_real(cpu_env);
17259
+ gen_helper_per_store_real(tcg_env);
17260
}
17261
return DISAS_NEXT;
17262
}
17263
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_stura(DisasContext *s, DisasOps *o)
17264
17265
static DisasJumpType op_stfle(DisasContext *s, DisasOps *o)
17266
{
17267
- gen_helper_stfle(cc_op, cpu_env, o->in2);
17268
+ gen_helper_stfle(cc_op, tcg_env, o->in2);
17269
set_cc_static(s);
17270
return DISAS_NEXT;
17271
}
17272
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_stam(DisasContext *s, DisasOps *o)
17273
TCGv_i32 r1 = tcg_constant_i32(get_field(s, r1));
17274
TCGv_i32 r3 = tcg_constant_i32(get_field(s, r3));
17275
17276
- gen_helper_stam(cpu_env, r1, o->in2, r3);
17277
+ gen_helper_stam(tcg_env, r1, o->in2, r3);
17278
return DISAS_NEXT;
17279
}
17280
17281
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_srst(DisasContext *s, DisasOps *o)
17282
TCGv_i32 r1 = tcg_constant_i32(get_field(s, r1));
17283
TCGv_i32 r2 = tcg_constant_i32(get_field(s, r2));
17284
17285
- gen_helper_srst(cpu_env, r1, r2);
17286
+ gen_helper_srst(tcg_env, r1, r2);
17287
set_cc_static(s);
17288
return DISAS_NEXT;
17289
}
17290
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_srstu(DisasContext *s, DisasOps *o)
17291
TCGv_i32 r1 = tcg_constant_i32(get_field(s, r1));
17292
TCGv_i32 r2 = tcg_constant_i32(get_field(s, r2));
17293
17294
- gen_helper_srstu(cpu_env, r1, r2);
17295
+ gen_helper_srstu(tcg_env, r1, r2);
17296
set_cc_static(s);
17297
return DISAS_NEXT;
17298
}
17299
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_svc(DisasContext *s, DisasOps *o)
17300
update_cc_op(s);
17301
17302
t = tcg_constant_i32(get_field(s, i1) & 0xff);
17303
- tcg_gen_st_i32(t, cpu_env, offsetof(CPUS390XState, int_svc_code));
17304
+ tcg_gen_st_i32(t, tcg_env, offsetof(CPUS390XState, int_svc_code));
17305
17306
t = tcg_constant_i32(s->ilen);
17307
- tcg_gen_st_i32(t, cpu_env, offsetof(CPUS390XState, int_svc_ilen));
17308
+ tcg_gen_st_i32(t, tcg_env, offsetof(CPUS390XState, int_svc_ilen));
17309
17310
gen_exception(EXCP_SVC);
17311
return DISAS_NORETURN;
17312
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_tam(DisasContext *s, DisasOps *o)
17313
17314
static DisasJumpType op_tceb(DisasContext *s, DisasOps *o)
17315
{
17316
- gen_helper_tceb(cc_op, cpu_env, o->in1, o->in2);
17317
+ gen_helper_tceb(cc_op, tcg_env, o->in1, o->in2);
17318
set_cc_static(s);
17319
return DISAS_NEXT;
17320
}
17321
17322
static DisasJumpType op_tcdb(DisasContext *s, DisasOps *o)
17323
{
17324
- gen_helper_tcdb(cc_op, cpu_env, o->in1, o->in2);
17325
+ gen_helper_tcdb(cc_op, tcg_env, o->in1, o->in2);
17326
set_cc_static(s);
17327
return DISAS_NEXT;
17328
}
17329
17330
static DisasJumpType op_tcxb(DisasContext *s, DisasOps *o)
17331
{
17332
- gen_helper_tcxb(cc_op, cpu_env, o->in1_128, o->in2);
17333
+ gen_helper_tcxb(cc_op, tcg_env, o->in1_128, o->in2);
17334
set_cc_static(s);
17335
return DISAS_NEXT;
17336
}
17337
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_tcxb(DisasContext *s, DisasOps *o)
17338
17339
static DisasJumpType op_testblock(DisasContext *s, DisasOps *o)
17340
{
17341
- gen_helper_testblock(cc_op, cpu_env, o->in2);
17342
+ gen_helper_testblock(cc_op, tcg_env, o->in2);
17343
set_cc_static(s);
17344
return DISAS_NEXT;
17345
}
17346
17347
static DisasJumpType op_tprot(DisasContext *s, DisasOps *o)
17348
{
17349
- gen_helper_tprot(cc_op, cpu_env, o->addr1, o->in2);
17350
+ gen_helper_tprot(cc_op, tcg_env, o->addr1, o->in2);
17351
set_cc_static(s);
17352
return DISAS_NEXT;
17353
}
17354
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_tp(DisasContext *s, DisasOps *o)
17355
{
17356
TCGv_i32 l1 = tcg_constant_i32(get_field(s, l1) + 1);
17357
17358
- gen_helper_tp(cc_op, cpu_env, o->addr1, l1);
17359
+ gen_helper_tp(cc_op, tcg_env, o->addr1, l1);
17360
set_cc_static(s);
17361
return DISAS_NEXT;
17362
}
17363
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_tr(DisasContext *s, DisasOps *o)
17364
{
17365
TCGv_i32 l = tcg_constant_i32(get_field(s, l1));
17366
17367
- gen_helper_tr(cpu_env, l, o->addr1, o->in2);
17368
+ gen_helper_tr(tcg_env, l, o->addr1, o->in2);
17369
set_cc_static(s);
17370
return DISAS_NEXT;
17371
}
17372
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_tre(DisasContext *s, DisasOps *o)
17373
{
17374
TCGv_i128 pair = tcg_temp_new_i128();
17375
17376
- gen_helper_tre(pair, cpu_env, o->out, o->out2, o->in2);
17377
+ gen_helper_tre(pair, tcg_env, o->out, o->out2, o->in2);
17378
tcg_gen_extr_i128_i64(o->out2, o->out, pair);
17379
set_cc_static(s);
17380
return DISAS_NEXT;
17381
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_trt(DisasContext *s, DisasOps *o)
17382
{
17383
TCGv_i32 l = tcg_constant_i32(get_field(s, l1));
17384
17385
- gen_helper_trt(cc_op, cpu_env, l, o->addr1, o->in2);
17386
+ gen_helper_trt(cc_op, tcg_env, l, o->addr1, o->in2);
17387
set_cc_static(s);
17388
return DISAS_NEXT;
17389
}
17390
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_trtr(DisasContext *s, DisasOps *o)
17391
{
17392
TCGv_i32 l = tcg_constant_i32(get_field(s, l1));
17393
17394
- gen_helper_trtr(cc_op, cpu_env, l, o->addr1, o->in2);
17395
+ gen_helper_trtr(cc_op, tcg_env, l, o->addr1, o->in2);
17396
set_cc_static(s);
17397
return DISAS_NEXT;
17398
}
17399
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_trXX(DisasContext *s, DisasOps *o)
17400
tcg_gen_ext16u_i32(tst, tst);
17401
}
17402
}
17403
- gen_helper_trXX(cc_op, cpu_env, r1, r2, tst, sizes);
17404
+ gen_helper_trXX(cc_op, tcg_env, r1, r2, tst, sizes);
17405
17406
set_cc_static(s);
17407
return DISAS_NEXT;
17408
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_unpk(DisasContext *s, DisasOps *o)
17409
{
17410
TCGv_i32 l = tcg_constant_i32(get_field(s, l1));
17411
17412
- gen_helper_unpk(cpu_env, l, o->addr1, o->in2);
17413
+ gen_helper_unpk(tcg_env, l, o->addr1, o->in2);
17414
return DISAS_NEXT;
17415
}
17416
17417
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_unpka(DisasContext *s, DisasOps *o)
17418
return DISAS_NORETURN;
17419
}
17420
l = tcg_constant_i32(l1);
17421
- gen_helper_unpka(cc_op, cpu_env, o->addr1, l, o->in2);
17422
+ gen_helper_unpka(cc_op, tcg_env, o->addr1, l, o->in2);
17423
set_cc_static(s);
17424
return DISAS_NEXT;
17425
}
17426
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_unpku(DisasContext *s, DisasOps *o)
17427
return DISAS_NORETURN;
17428
}
17429
l = tcg_constant_i32(l1);
17430
- gen_helper_unpku(cc_op, cpu_env, o->addr1, l, o->in2);
17431
+ gen_helper_unpku(cc_op, tcg_env, o->addr1, l, o->in2);
17432
set_cc_static(s);
17433
return DISAS_NEXT;
17434
}
17435
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_xc(DisasContext *s, DisasOps *o)
17436
/* But in general we'll defer to a helper. */
17437
o->in2 = get_address(s, 0, b2, d2);
17438
t32 = tcg_constant_i32(l);
17439
- gen_helper_xc(cc_op, cpu_env, t32, o->addr1, o->in2);
17440
+ gen_helper_xc(cc_op, tcg_env, t32, o->addr1, o->in2);
17441
set_cc_static(s);
17442
return DISAS_NEXT;
17443
}
17444
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_clp(DisasContext *s, DisasOps *o)
17445
{
17446
TCGv_i32 r2 = tcg_constant_i32(get_field(s, r2));
17447
17448
- gen_helper_clp(cpu_env, r2);
17449
+ gen_helper_clp(tcg_env, r2);
17450
set_cc_static(s);
17451
return DISAS_NEXT;
17452
}
17453
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_pcilg(DisasContext *s, DisasOps *o)
17454
TCGv_i32 r1 = tcg_constant_i32(get_field(s, r1));
17455
TCGv_i32 r2 = tcg_constant_i32(get_field(s, r2));
17456
17457
- gen_helper_pcilg(cpu_env, r1, r2);
17458
+ gen_helper_pcilg(tcg_env, r1, r2);
17459
set_cc_static(s);
17460
return DISAS_NEXT;
17461
}
17462
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_pcistg(DisasContext *s, DisasOps *o)
17463
TCGv_i32 r1 = tcg_constant_i32(get_field(s, r1));
17464
TCGv_i32 r2 = tcg_constant_i32(get_field(s, r2));
17465
17466
- gen_helper_pcistg(cpu_env, r1, r2);
17467
+ gen_helper_pcistg(tcg_env, r1, r2);
17468
set_cc_static(s);
17469
return DISAS_NEXT;
17470
}
17471
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_stpcifc(DisasContext *s, DisasOps *o)
17472
TCGv_i32 r1 = tcg_constant_i32(get_field(s, r1));
17473
TCGv_i32 ar = tcg_constant_i32(get_field(s, b2));
17474
17475
- gen_helper_stpcifc(cpu_env, r1, o->addr1, ar);
17476
+ gen_helper_stpcifc(tcg_env, r1, o->addr1, ar);
17477
set_cc_static(s);
17478
return DISAS_NEXT;
17479
}
17480
17481
static DisasJumpType op_sic(DisasContext *s, DisasOps *o)
17482
{
17483
- gen_helper_sic(cpu_env, o->in1, o->in2);
17484
+ gen_helper_sic(tcg_env, o->in1, o->in2);
17485
return DISAS_NEXT;
17486
}
17487
17488
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_rpcit(DisasContext *s, DisasOps *o)
17489
TCGv_i32 r1 = tcg_constant_i32(get_field(s, r1));
17490
TCGv_i32 r2 = tcg_constant_i32(get_field(s, r2));
17491
17492
- gen_helper_rpcit(cpu_env, r1, r2);
17493
+ gen_helper_rpcit(tcg_env, r1, r2);
17494
set_cc_static(s);
17495
return DISAS_NEXT;
17496
}
17497
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_pcistb(DisasContext *s, DisasOps *o)
17498
TCGv_i32 r3 = tcg_constant_i32(get_field(s, r3));
17499
TCGv_i32 ar = tcg_constant_i32(get_field(s, b2));
17500
17501
- gen_helper_pcistb(cpu_env, r1, r3, o->addr1, ar);
17502
+ gen_helper_pcistb(tcg_env, r1, r3, o->addr1, ar);
17503
set_cc_static(s);
17504
return DISAS_NEXT;
17505
}
17506
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_mpcifc(DisasContext *s, DisasOps *o)
17507
TCGv_i32 r1 = tcg_constant_i32(get_field(s, r1));
17508
TCGv_i32 ar = tcg_constant_i32(get_field(s, b2));
17509
17510
- gen_helper_mpcifc(cpu_env, r1, o->addr1, ar);
17511
+ gen_helper_mpcifc(tcg_env, r1, o->addr1, ar);
17512
set_cc_static(s);
17513
return DISAS_NEXT;
17514
}
17515
@@ -XXX,XX +XXX,XX @@ static const DisasInsn *extract_insn(CPUS390XState *env, DisasContext *s)
17516
17517
if (unlikely(s->ex_value)) {
17518
/* Drop the EX data now, so that it's clear on exception paths. */
17519
- tcg_gen_st_i64(tcg_constant_i64(0), cpu_env,
17520
+ tcg_gen_st_i64(tcg_constant_i64(0), tcg_env,
17521
offsetof(CPUS390XState, ex_value));
17522
17523
/* Extract the values saved by EXECUTE. */
17524
@@ -XXX,XX +XXX,XX @@ static DisasJumpType translate_one(CPUS390XState *env, DisasContext *s)
17525
#ifndef CONFIG_USER_ONLY
17526
if (s->base.tb->flags & FLAG_MASK_PER) {
17527
TCGv_i64 addr = tcg_constant_i64(s->base.pc_next);
17528
- gen_helper_per_ifetch(cpu_env, addr);
17529
+ gen_helper_per_ifetch(tcg_env, addr);
17530
}
17531
#endif
17532
17533
@@ -XXX,XX +XXX,XX @@ static DisasJumpType translate_one(CPUS390XState *env, DisasContext *s)
17534
}
17535
17536
/* Call the helper to check for a possible PER exception. */
17537
- gen_helper_per_check_exception(cpu_env);
17538
+ gen_helper_per_check_exception(tcg_env);
17539
}
17540
#endif
17541
17542
diff --git a/target/sh4/translate.c b/target/sh4/translate.c
17543
index XXXXXXX..XXXXXXX 100644
17544
--- a/target/sh4/translate.c
17545
+++ b/target/sh4/translate.c
17546
@@ -XXX,XX +XXX,XX @@ void sh4_translate_init(void)
17547
};
17548
17549
for (i = 0; i < 24; i++) {
17550
- cpu_gregs[i] = tcg_global_mem_new_i32(cpu_env,
17551
+ cpu_gregs[i] = tcg_global_mem_new_i32(tcg_env,
17552
offsetof(CPUSH4State, gregs[i]),
17553
gregnames[i]);
17554
}
17555
memcpy(cpu_gregs + 24, cpu_gregs + 8, 8 * sizeof(TCGv));
17556
17557
- cpu_pc = tcg_global_mem_new_i32(cpu_env,
17558
+ cpu_pc = tcg_global_mem_new_i32(tcg_env,
17559
offsetof(CPUSH4State, pc), "PC");
17560
- cpu_sr = tcg_global_mem_new_i32(cpu_env,
17561
+ cpu_sr = tcg_global_mem_new_i32(tcg_env,
17562
offsetof(CPUSH4State, sr), "SR");
17563
- cpu_sr_m = tcg_global_mem_new_i32(cpu_env,
17564
+ cpu_sr_m = tcg_global_mem_new_i32(tcg_env,
17565
offsetof(CPUSH4State, sr_m), "SR_M");
17566
- cpu_sr_q = tcg_global_mem_new_i32(cpu_env,
17567
+ cpu_sr_q = tcg_global_mem_new_i32(tcg_env,
17568
offsetof(CPUSH4State, sr_q), "SR_Q");
17569
- cpu_sr_t = tcg_global_mem_new_i32(cpu_env,
17570
+ cpu_sr_t = tcg_global_mem_new_i32(tcg_env,
17571
offsetof(CPUSH4State, sr_t), "SR_T");
17572
- cpu_ssr = tcg_global_mem_new_i32(cpu_env,
17573
+ cpu_ssr = tcg_global_mem_new_i32(tcg_env,
17574
offsetof(CPUSH4State, ssr), "SSR");
17575
- cpu_spc = tcg_global_mem_new_i32(cpu_env,
17576
+ cpu_spc = tcg_global_mem_new_i32(tcg_env,
17577
offsetof(CPUSH4State, spc), "SPC");
17578
- cpu_gbr = tcg_global_mem_new_i32(cpu_env,
17579
+ cpu_gbr = tcg_global_mem_new_i32(tcg_env,
17580
offsetof(CPUSH4State, gbr), "GBR");
17581
- cpu_vbr = tcg_global_mem_new_i32(cpu_env,
17582
+ cpu_vbr = tcg_global_mem_new_i32(tcg_env,
17583
offsetof(CPUSH4State, vbr), "VBR");
17584
- cpu_sgr = tcg_global_mem_new_i32(cpu_env,
17585
+ cpu_sgr = tcg_global_mem_new_i32(tcg_env,
17586
offsetof(CPUSH4State, sgr), "SGR");
17587
- cpu_dbr = tcg_global_mem_new_i32(cpu_env,
17588
+ cpu_dbr = tcg_global_mem_new_i32(tcg_env,
17589
offsetof(CPUSH4State, dbr), "DBR");
17590
- cpu_mach = tcg_global_mem_new_i32(cpu_env,
17591
+ cpu_mach = tcg_global_mem_new_i32(tcg_env,
17592
offsetof(CPUSH4State, mach), "MACH");
17593
- cpu_macl = tcg_global_mem_new_i32(cpu_env,
17594
+ cpu_macl = tcg_global_mem_new_i32(tcg_env,
17595
offsetof(CPUSH4State, macl), "MACL");
17596
- cpu_pr = tcg_global_mem_new_i32(cpu_env,
17597
+ cpu_pr = tcg_global_mem_new_i32(tcg_env,
17598
offsetof(CPUSH4State, pr), "PR");
17599
- cpu_fpscr = tcg_global_mem_new_i32(cpu_env,
17600
+ cpu_fpscr = tcg_global_mem_new_i32(tcg_env,
17601
offsetof(CPUSH4State, fpscr), "FPSCR");
17602
- cpu_fpul = tcg_global_mem_new_i32(cpu_env,
17603
+ cpu_fpul = tcg_global_mem_new_i32(tcg_env,
17604
offsetof(CPUSH4State, fpul), "FPUL");
17605
17606
- cpu_flags = tcg_global_mem_new_i32(cpu_env,
17607
+ cpu_flags = tcg_global_mem_new_i32(tcg_env,
17608
                 offsetof(CPUSH4State, flags), "_flags_");
17609
- cpu_delayed_pc = tcg_global_mem_new_i32(cpu_env,
17610
+ cpu_delayed_pc = tcg_global_mem_new_i32(tcg_env,
17611
                     offsetof(CPUSH4State, delayed_pc),
17612
                     "_delayed_pc_");
17613
- cpu_delayed_cond = tcg_global_mem_new_i32(cpu_env,
17614
+ cpu_delayed_cond = tcg_global_mem_new_i32(tcg_env,
17615
offsetof(CPUSH4State,
17616
delayed_cond),
17617
"_delayed_cond_");
17618
- cpu_lock_addr = tcg_global_mem_new_i32(cpu_env,
17619
+ cpu_lock_addr = tcg_global_mem_new_i32(tcg_env,
17620
offsetof(CPUSH4State, lock_addr),
17621
"_lock_addr_");
17622
- cpu_lock_value = tcg_global_mem_new_i32(cpu_env,
17623
+ cpu_lock_value = tcg_global_mem_new_i32(tcg_env,
17624
offsetof(CPUSH4State, lock_value),
17625
"_lock_value_");
17626
17627
for (i = 0; i < 32; i++)
17628
- cpu_fregs[i] = tcg_global_mem_new_i32(cpu_env,
17629
+ cpu_fregs[i] = tcg_global_mem_new_i32(tcg_env,
17630
offsetof(CPUSH4State, fregs[i]),
17631
fregnames[i]);
17632
}
17633
@@ -XXX,XX +XXX,XX @@ static void _decode_opc(DisasContext * ctx)
17634
     if (opcode != 0x0093 /* ocbi */
17635
     && opcode != 0x00c3 /* movca.l */)
17636
     {
17637
- gen_helper_discard_movcal_backup(cpu_env);
17638
+ gen_helper_discard_movcal_backup(tcg_env);
17639
         ctx->has_movcal = 0;
17640
     }
17641
    }
17642
@@ -XXX,XX +XXX,XX @@ static void _decode_opc(DisasContext * ctx)
17643
    return;
17644
case 0x0038:        /* ldtlb */
17645
    CHECK_PRIVILEGED
17646
- gen_helper_ldtlb(cpu_env);
17647
+ gen_helper_ldtlb(tcg_env);
17648
    return;
17649
case 0x002b:        /* rte */
17650
    CHECK_PRIVILEGED
17651
@@ -XXX,XX +XXX,XX @@ static void _decode_opc(DisasContext * ctx)
17652
case 0x001b:        /* sleep */
17653
    CHECK_PRIVILEGED
17654
tcg_gen_movi_i32(cpu_pc, ctx->base.pc_next + 2);
17655
- gen_helper_sleep(cpu_env);
17656
+ gen_helper_sleep(tcg_env);
17657
    return;
17658
}
17659
17660
@@ -XXX,XX +XXX,XX @@ static void _decode_opc(DisasContext * ctx)
17661
     arg1 = tcg_temp_new();
17662
tcg_gen_qemu_ld_i32(arg1, REG(B11_8), ctx->memidx,
17663
MO_TESL | MO_ALIGN);
17664
- gen_helper_macl(cpu_env, arg0, arg1);
17665
+ gen_helper_macl(tcg_env, arg0, arg1);
17666
     tcg_gen_addi_i32(REG(B7_4), REG(B7_4), 4);
17667
     tcg_gen_addi_i32(REG(B11_8), REG(B11_8), 4);
17668
    }
17669
@@ -XXX,XX +XXX,XX @@ static void _decode_opc(DisasContext * ctx)
17670
     arg1 = tcg_temp_new();
17671
tcg_gen_qemu_ld_i32(arg1, REG(B11_8), ctx->memidx,
17672
MO_TESL | MO_ALIGN);
17673
- gen_helper_macw(cpu_env, arg0, arg1);
17674
+ gen_helper_macw(tcg_env, arg0, arg1);
17675
     tcg_gen_addi_i32(REG(B11_8), REG(B11_8), 2);
17676
     tcg_gen_addi_i32(REG(B7_4), REG(B7_4), 2);
17677
    }
17678
@@ -XXX,XX +XXX,XX @@ static void _decode_opc(DisasContext * ctx)
17679
gen_load_fpr64(ctx, fp1, B7_4);
17680
switch (ctx->opcode & 0xf00f) {
17681
case 0xf000:        /* fadd Rm,Rn */
17682
- gen_helper_fadd_DT(fp0, cpu_env, fp0, fp1);
17683
+ gen_helper_fadd_DT(fp0, tcg_env, fp0, fp1);
17684
break;
17685
case 0xf001:        /* fsub Rm,Rn */
17686
- gen_helper_fsub_DT(fp0, cpu_env, fp0, fp1);
17687
+ gen_helper_fsub_DT(fp0, tcg_env, fp0, fp1);
17688
break;
17689
case 0xf002:        /* fmul Rm,Rn */
17690
- gen_helper_fmul_DT(fp0, cpu_env, fp0, fp1);
17691
+ gen_helper_fmul_DT(fp0, tcg_env, fp0, fp1);
17692
break;
17693
case 0xf003:        /* fdiv Rm,Rn */
17694
- gen_helper_fdiv_DT(fp0, cpu_env, fp0, fp1);
17695
+ gen_helper_fdiv_DT(fp0, tcg_env, fp0, fp1);
17696
break;
17697
case 0xf004:        /* fcmp/eq Rm,Rn */
17698
- gen_helper_fcmp_eq_DT(cpu_sr_t, cpu_env, fp0, fp1);
17699
+ gen_helper_fcmp_eq_DT(cpu_sr_t, tcg_env, fp0, fp1);
17700
return;
17701
case 0xf005:        /* fcmp/gt Rm,Rn */
17702
- gen_helper_fcmp_gt_DT(cpu_sr_t, cpu_env, fp0, fp1);
17703
+ gen_helper_fcmp_gt_DT(cpu_sr_t, tcg_env, fp0, fp1);
17704
return;
17705
}
17706
gen_store_fpr64(ctx, fp0, B11_8);
17707
     } else {
17708
switch (ctx->opcode & 0xf00f) {
17709
case 0xf000:        /* fadd Rm,Rn */
17710
- gen_helper_fadd_FT(FREG(B11_8), cpu_env,
17711
+ gen_helper_fadd_FT(FREG(B11_8), tcg_env,
17712
FREG(B11_8), FREG(B7_4));
17713
break;
17714
case 0xf001:        /* fsub Rm,Rn */
17715
- gen_helper_fsub_FT(FREG(B11_8), cpu_env,
17716
+ gen_helper_fsub_FT(FREG(B11_8), tcg_env,
17717
FREG(B11_8), FREG(B7_4));
17718
break;
17719
case 0xf002:        /* fmul Rm,Rn */
17720
- gen_helper_fmul_FT(FREG(B11_8), cpu_env,
17721
+ gen_helper_fmul_FT(FREG(B11_8), tcg_env,
17722
FREG(B11_8), FREG(B7_4));
17723
break;
17724
case 0xf003:        /* fdiv Rm,Rn */
17725
- gen_helper_fdiv_FT(FREG(B11_8), cpu_env,
17726
+ gen_helper_fdiv_FT(FREG(B11_8), tcg_env,
17727
FREG(B11_8), FREG(B7_4));
17728
break;
17729
case 0xf004:        /* fcmp/eq Rm,Rn */
17730
- gen_helper_fcmp_eq_FT(cpu_sr_t, cpu_env,
17731
+ gen_helper_fcmp_eq_FT(cpu_sr_t, tcg_env,
17732
FREG(B11_8), FREG(B7_4));
17733
return;
17734
case 0xf005:        /* fcmp/gt Rm,Rn */
17735
- gen_helper_fcmp_gt_FT(cpu_sr_t, cpu_env,
17736
+ gen_helper_fcmp_gt_FT(cpu_sr_t, tcg_env,
17737
FREG(B11_8), FREG(B7_4));
17738
return;
17739
}
17740
@@ -XXX,XX +XXX,XX @@ static void _decode_opc(DisasContext * ctx)
17741
case 0xf00e: /* fmac FR0,RM,Rn */
17742
CHECK_FPU_ENABLED
17743
CHECK_FPSCR_PR_0
17744
- gen_helper_fmac_FT(FREG(B11_8), cpu_env,
17745
+ gen_helper_fmac_FT(FREG(B11_8), tcg_env,
17746
FREG(0), FREG(B7_4), FREG(B11_8));
17747
return;
17748
}
17749
@@ -XXX,XX +XXX,XX @@ static void _decode_opc(DisasContext * ctx)
17750
     CHECK_NOT_DELAY_SLOT
17751
gen_save_cpu_state(ctx, true);
17752
     imm = tcg_constant_i32(B7_0);
17753
- gen_helper_trapa(cpu_env, imm);
17754
+ gen_helper_trapa(tcg_env, imm);
17755
ctx->base.is_jmp = DISAS_NORETURN;
17756
    }
17757
    return;
17758
@@ -XXX,XX +XXX,XX @@ static void _decode_opc(DisasContext * ctx)
17759
    LDST(fpul, 0x405a, 0x4056, 0x005a, 0x4052, {CHECK_FPU_ENABLED})
17760
case 0x406a:        /* lds Rm,FPSCR */
17761
    CHECK_FPU_ENABLED
17762
- gen_helper_ld_fpscr(cpu_env, REG(B11_8));
17763
+ gen_helper_ld_fpscr(tcg_env, REG(B11_8));
17764
ctx->base.is_jmp = DISAS_STOP;
17765
    return;
17766
case 0x4066:        /* lds.l @Rm+,FPSCR */
17767
@@ -XXX,XX +XXX,XX @@ static void _decode_opc(DisasContext * ctx)
17768
tcg_gen_qemu_ld_i32(addr, REG(B11_8), ctx->memidx,
17769
MO_TESL | MO_ALIGN);
17770
     tcg_gen_addi_i32(REG(B11_8), REG(B11_8), 4);
17771
- gen_helper_ld_fpscr(cpu_env, addr);
17772
+ gen_helper_ld_fpscr(tcg_env, addr);
17773
ctx->base.is_jmp = DISAS_STOP;
17774
    }
17775
    return;
17776
@@ -XXX,XX +XXX,XX @@ static void _decode_opc(DisasContext * ctx)
17777
TCGv val = tcg_temp_new();
17778
tcg_gen_qemu_ld_i32(val, REG(B11_8), ctx->memidx,
17779
MO_TEUL | MO_ALIGN);
17780
- gen_helper_movcal(cpu_env, REG(B11_8), val);
17781
+ gen_helper_movcal(tcg_env, REG(B11_8), val);
17782
tcg_gen_qemu_st_i32(REG(0), REG(B11_8), ctx->memidx,
17783
MO_TEUL | MO_ALIGN);
17784
}
17785
@@ -XXX,XX +XXX,XX @@ static void _decode_opc(DisasContext * ctx)
17786
return;
17787
case 0x0093:        /* ocbi @Rn */
17788
    {
17789
- gen_helper_ocbi(cpu_env, REG(B11_8));
17790
+ gen_helper_ocbi(tcg_env, REG(B11_8));
17791
    }
17792
    return;
17793
case 0x00a3:        /* ocbp @Rn */
17794
@@ -XXX,XX +XXX,XX @@ static void _decode_opc(DisasContext * ctx)
17795
goto do_illegal;
17796
}
17797
     fp = tcg_temp_new_i64();
17798
- gen_helper_float_DT(fp, cpu_env, cpu_fpul);
17799
+ gen_helper_float_DT(fp, tcg_env, cpu_fpul);
17800
gen_store_fpr64(ctx, fp, B11_8);
17801
    }
17802
    else {
17803
- gen_helper_float_FT(FREG(B11_8), cpu_env, cpu_fpul);
17804
+ gen_helper_float_FT(FREG(B11_8), tcg_env, cpu_fpul);
17805
    }
17806
    return;
17807
case 0xf03d: /* ftrc FRm/DRm,FPUL - FPSCR: R[PR,Enable.V]/W[Cause,Flag] */
17808
@@ -XXX,XX +XXX,XX @@ static void _decode_opc(DisasContext * ctx)
17809
}
17810
     fp = tcg_temp_new_i64();
17811
gen_load_fpr64(ctx, fp, B11_8);
17812
- gen_helper_ftrc_DT(cpu_fpul, cpu_env, fp);
17813
+ gen_helper_ftrc_DT(cpu_fpul, tcg_env, fp);
17814
    }
17815
    else {
17816
- gen_helper_ftrc_FT(cpu_fpul, cpu_env, FREG(B11_8));
17817
+ gen_helper_ftrc_FT(cpu_fpul, tcg_env, FREG(B11_8));
17818
    }
17819
    return;
17820
case 0xf04d: /* fneg FRn/DRn - FPSCR: Nothing */
17821
@@ -XXX,XX +XXX,XX @@ static void _decode_opc(DisasContext * ctx)
17822
}
17823
     TCGv_i64 fp = tcg_temp_new_i64();
17824
gen_load_fpr64(ctx, fp, B11_8);
17825
- gen_helper_fsqrt_DT(fp, cpu_env, fp);
17826
+ gen_helper_fsqrt_DT(fp, tcg_env, fp);
17827
gen_store_fpr64(ctx, fp, B11_8);
17828
    } else {
17829
- gen_helper_fsqrt_FT(FREG(B11_8), cpu_env, FREG(B11_8));
17830
+ gen_helper_fsqrt_FT(FREG(B11_8), tcg_env, FREG(B11_8));
17831
    }
17832
    return;
17833
case 0xf07d: /* fsrra FRn */
17834
    CHECK_FPU_ENABLED
17835
CHECK_FPSCR_PR_0
17836
- gen_helper_fsrra_FT(FREG(B11_8), cpu_env, FREG(B11_8));
17837
+ gen_helper_fsrra_FT(FREG(B11_8), tcg_env, FREG(B11_8));
17838
    break;
17839
case 0xf08d: /* fldi0 FRn - FPSCR: R[PR] */
17840
    CHECK_FPU_ENABLED
17841
@@ -XXX,XX +XXX,XX @@ static void _decode_opc(DisasContext * ctx)
17842
    CHECK_FPU_ENABLED
17843
    {
17844
     TCGv_i64 fp = tcg_temp_new_i64();
17845
- gen_helper_fcnvsd_FT_DT(fp, cpu_env, cpu_fpul);
17846
+ gen_helper_fcnvsd_FT_DT(fp, tcg_env, cpu_fpul);
17847
gen_store_fpr64(ctx, fp, B11_8);
17848
    }
17849
    return;
17850
@@ -XXX,XX +XXX,XX @@ static void _decode_opc(DisasContext * ctx)
17851
    {
17852
     TCGv_i64 fp = tcg_temp_new_i64();
17853
gen_load_fpr64(ctx, fp, B11_8);
17854
- gen_helper_fcnvds_DT_FT(cpu_fpul, cpu_env, fp);
17855
+ gen_helper_fcnvds_DT_FT(cpu_fpul, tcg_env, fp);
17856
    }
17857
    return;
17858
case 0xf0ed: /* fipr FVm,FVn */
17859
@@ -XXX,XX +XXX,XX @@ static void _decode_opc(DisasContext * ctx)
17860
{
17861
TCGv m = tcg_constant_i32((ctx->opcode >> 8) & 3);
17862
TCGv n = tcg_constant_i32((ctx->opcode >> 10) & 3);
17863
- gen_helper_fipr(cpu_env, m, n);
17864
+ gen_helper_fipr(tcg_env, m, n);
17865
return;
17866
}
17867
break;
17868
@@ -XXX,XX +XXX,XX @@ static void _decode_opc(DisasContext * ctx)
17869
goto do_illegal;
17870
}
17871
TCGv n = tcg_constant_i32((ctx->opcode >> 10) & 3);
17872
- gen_helper_ftrv(cpu_env, n);
17873
+ gen_helper_ftrv(tcg_env, n);
17874
return;
17875
}
17876
break;
17877
@@ -XXX,XX +XXX,XX @@ static void _decode_opc(DisasContext * ctx)
17878
if (ctx->envflags & TB_FLAG_DELAY_SLOT_MASK) {
17879
do_illegal_slot:
17880
gen_save_cpu_state(ctx, true);
17881
- gen_helper_raise_slot_illegal_instruction(cpu_env);
17882
+ gen_helper_raise_slot_illegal_instruction(tcg_env);
17883
} else {
17884
gen_save_cpu_state(ctx, true);
17885
- gen_helper_raise_illegal_instruction(cpu_env);
17886
+ gen_helper_raise_illegal_instruction(tcg_env);
17887
}
17888
ctx->base.is_jmp = DISAS_NORETURN;
17889
return;
17890
@@ -XXX,XX +XXX,XX @@ static void _decode_opc(DisasContext * ctx)
17891
do_fpu_disabled:
17892
gen_save_cpu_state(ctx, true);
17893
if (ctx->envflags & TB_FLAG_DELAY_SLOT_MASK) {
17894
- gen_helper_raise_slot_fpu_disable(cpu_env);
17895
+ gen_helper_raise_slot_fpu_disable(tcg_env);
17896
} else {
17897
- gen_helper_raise_fpu_disable(cpu_env);
17898
+ gen_helper_raise_fpu_disable(tcg_env);
17899
}
17900
ctx->base.is_jmp = DISAS_NORETURN;
17901
return;
17902
@@ -XXX,XX +XXX,XX @@ static void decode_gusa(DisasContext *ctx, CPUSH4State *env)
17903
cpu_exec_step_atomic holding the exclusive lock. */
17904
ctx->envflags |= TB_FLAG_GUSA_EXCLUSIVE;
17905
gen_save_cpu_state(ctx, false);
17906
- gen_helper_exclusive(cpu_env);
17907
+ gen_helper_exclusive(tcg_env);
17908
ctx->base.is_jmp = DISAS_NORETURN;
17909
17910
/* We're not executing an instruction, but we must report one for the
17911
diff --git a/target/sparc/translate.c b/target/sparc/translate.c
17912
index XXXXXXX..XXXXXXX 100644
17913
--- a/target/sparc/translate.c
17914
+++ b/target/sparc/translate.c
17915
@@ -XXX,XX +XXX,XX @@ static TCGv_i64 gen_dest_fpr_D(DisasContext *dc, unsigned int dst)
17916
17917
static void gen_op_load_fpr_QT0(unsigned int src)
17918
{
17919
- tcg_gen_st_i64(cpu_fpr[src / 2], cpu_env, offsetof(CPUSPARCState, qt0) +
17920
+ tcg_gen_st_i64(cpu_fpr[src / 2], tcg_env, offsetof(CPUSPARCState, qt0) +
17921
offsetof(CPU_QuadU, ll.upper));
17922
- tcg_gen_st_i64(cpu_fpr[src/2 + 1], cpu_env, offsetof(CPUSPARCState, qt0) +
17923
+ tcg_gen_st_i64(cpu_fpr[src/2 + 1], tcg_env, offsetof(CPUSPARCState, qt0) +
17924
offsetof(CPU_QuadU, ll.lower));
17925
}
17926
17927
static void gen_op_load_fpr_QT1(unsigned int src)
17928
{
17929
- tcg_gen_st_i64(cpu_fpr[src / 2], cpu_env, offsetof(CPUSPARCState, qt1) +
17930
+ tcg_gen_st_i64(cpu_fpr[src / 2], tcg_env, offsetof(CPUSPARCState, qt1) +
17931
offsetof(CPU_QuadU, ll.upper));
17932
- tcg_gen_st_i64(cpu_fpr[src/2 + 1], cpu_env, offsetof(CPUSPARCState, qt1) +
17933
+ tcg_gen_st_i64(cpu_fpr[src/2 + 1], tcg_env, offsetof(CPUSPARCState, qt1) +
17934
offsetof(CPU_QuadU, ll.lower));
17935
}
17936
17937
static void gen_op_store_QT0_fpr(unsigned int dst)
17938
{
17939
- tcg_gen_ld_i64(cpu_fpr[dst / 2], cpu_env, offsetof(CPUSPARCState, qt0) +
17940
+ tcg_gen_ld_i64(cpu_fpr[dst / 2], tcg_env, offsetof(CPUSPARCState, qt0) +
17941
offsetof(CPU_QuadU, ll.upper));
17942
- tcg_gen_ld_i64(cpu_fpr[dst/2 + 1], cpu_env, offsetof(CPUSPARCState, qt0) +
17943
+ tcg_gen_ld_i64(cpu_fpr[dst/2 + 1], tcg_env, offsetof(CPUSPARCState, qt0) +
17944
offsetof(CPU_QuadU, ll.lower));
17945
}
17946
17947
@@ -XXX,XX +XXX,XX @@ static void gen_op_addx_int(DisasContext *dc, TCGv dst, TCGv src1,
17948
default:
17949
/* We need external help to produce the carry. */
17950
carry_32 = tcg_temp_new_i32();
17951
- gen_helper_compute_C_icc(carry_32, cpu_env);
17952
+ gen_helper_compute_C_icc(carry_32, tcg_env);
17953
break;
17954
}
17955
17956
@@ -XXX,XX +XXX,XX @@ static void gen_op_subx_int(DisasContext *dc, TCGv dst, TCGv src1,
17957
default:
17958
/* We need external help to produce the carry. */
17959
carry_32 = tcg_temp_new_i32();
17960
- gen_helper_compute_C_icc(carry_32, cpu_env);
17961
+ gen_helper_compute_C_icc(carry_32, tcg_env);
17962
break;
17963
}
17964
17965
@@ -XXX,XX +XXX,XX @@ static void update_psr(DisasContext *dc)
17966
{
17967
if (dc->cc_op != CC_OP_FLAGS) {
17968
dc->cc_op = CC_OP_FLAGS;
17969
- gen_helper_compute_psr(cpu_env);
17970
+ gen_helper_compute_psr(tcg_env);
17971
}
17972
}
17973
17974
@@ -XXX,XX +XXX,XX @@ static void save_state(DisasContext *dc)
17975
static void gen_exception(DisasContext *dc, int which)
17976
{
17977
save_state(dc);
17978
- gen_helper_raise_exception(cpu_env, tcg_constant_i32(which));
17979
+ gen_helper_raise_exception(tcg_env, tcg_constant_i32(which));
17980
dc->base.is_jmp = DISAS_NORETURN;
17981
}
17982
17983
static void gen_check_align(TCGv addr, int mask)
17984
{
17985
- gen_helper_check_align(cpu_env, addr, tcg_constant_i32(mask));
17986
+ gen_helper_check_align(tcg_env, addr, tcg_constant_i32(mask));
17987
}
17988
17989
static void gen_mov_pc_npc(DisasContext *dc)
17990
@@ -XXX,XX +XXX,XX @@ static void gen_compare(DisasCompare *cmp, bool xcc, unsigned int cond,
17991
17992
default:
17993
do_dynamic:
17994
- gen_helper_compute_psr(cpu_env);
17995
+ gen_helper_compute_psr(tcg_env);
17996
dc->cc_op = CC_OP_FLAGS;
17997
/* FALLTHRU */
17998
17999
@@ -XXX,XX +XXX,XX @@ static void gen_op_fcmps(int fccno, TCGv_i32 r_rs1, TCGv_i32 r_rs2)
18000
{
18001
switch (fccno) {
18002
case 0:
18003
- gen_helper_fcmps(cpu_fsr, cpu_env, r_rs1, r_rs2);
18004
+ gen_helper_fcmps(cpu_fsr, tcg_env, r_rs1, r_rs2);
18005
break;
18006
case 1:
18007
- gen_helper_fcmps_fcc1(cpu_fsr, cpu_env, r_rs1, r_rs2);
18008
+ gen_helper_fcmps_fcc1(cpu_fsr, tcg_env, r_rs1, r_rs2);
18009
break;
18010
case 2:
18011
- gen_helper_fcmps_fcc2(cpu_fsr, cpu_env, r_rs1, r_rs2);
18012
+ gen_helper_fcmps_fcc2(cpu_fsr, tcg_env, r_rs1, r_rs2);
18013
break;
18014
case 3:
18015
- gen_helper_fcmps_fcc3(cpu_fsr, cpu_env, r_rs1, r_rs2);
18016
+ gen_helper_fcmps_fcc3(cpu_fsr, tcg_env, r_rs1, r_rs2);
18017
break;
18018
}
18019
}
18020
@@ -XXX,XX +XXX,XX @@ static void gen_op_fcmpd(int fccno, TCGv_i64 r_rs1, TCGv_i64 r_rs2)
18021
{
18022
switch (fccno) {
18023
case 0:
18024
- gen_helper_fcmpd(cpu_fsr, cpu_env, r_rs1, r_rs2);
18025
+ gen_helper_fcmpd(cpu_fsr, tcg_env, r_rs1, r_rs2);
18026
break;
18027
case 1:
18028
- gen_helper_fcmpd_fcc1(cpu_fsr, cpu_env, r_rs1, r_rs2);
18029
+ gen_helper_fcmpd_fcc1(cpu_fsr, tcg_env, r_rs1, r_rs2);
18030
break;
18031
case 2:
18032
- gen_helper_fcmpd_fcc2(cpu_fsr, cpu_env, r_rs1, r_rs2);
18033
+ gen_helper_fcmpd_fcc2(cpu_fsr, tcg_env, r_rs1, r_rs2);
18034
break;
18035
case 3:
18036
- gen_helper_fcmpd_fcc3(cpu_fsr, cpu_env, r_rs1, r_rs2);
18037
+ gen_helper_fcmpd_fcc3(cpu_fsr, tcg_env, r_rs1, r_rs2);
18038
break;
18039
}
18040
}
18041
@@ -XXX,XX +XXX,XX @@ static void gen_op_fcmpq(int fccno)
18042
{
18043
switch (fccno) {
18044
case 0:
18045
- gen_helper_fcmpq(cpu_fsr, cpu_env);
18046
+ gen_helper_fcmpq(cpu_fsr, tcg_env);
18047
break;
18048
case 1:
18049
- gen_helper_fcmpq_fcc1(cpu_fsr, cpu_env);
18050
+ gen_helper_fcmpq_fcc1(cpu_fsr, tcg_env);
18051
break;
18052
case 2:
18053
- gen_helper_fcmpq_fcc2(cpu_fsr, cpu_env);
18054
+ gen_helper_fcmpq_fcc2(cpu_fsr, tcg_env);
18055
break;
18056
case 3:
18057
- gen_helper_fcmpq_fcc3(cpu_fsr, cpu_env);
18058
+ gen_helper_fcmpq_fcc3(cpu_fsr, tcg_env);
18059
break;
18060
}
18061
}
18062
@@ -XXX,XX +XXX,XX @@ static void gen_op_fcmpes(int fccno, TCGv_i32 r_rs1, TCGv_i32 r_rs2)
18063
{
18064
switch (fccno) {
18065
case 0:
18066
- gen_helper_fcmpes(cpu_fsr, cpu_env, r_rs1, r_rs2);
18067
+ gen_helper_fcmpes(cpu_fsr, tcg_env, r_rs1, r_rs2);
18068
break;
18069
case 1:
18070
- gen_helper_fcmpes_fcc1(cpu_fsr, cpu_env, r_rs1, r_rs2);
18071
+ gen_helper_fcmpes_fcc1(cpu_fsr, tcg_env, r_rs1, r_rs2);
18072
break;
18073
case 2:
18074
- gen_helper_fcmpes_fcc2(cpu_fsr, cpu_env, r_rs1, r_rs2);
18075
+ gen_helper_fcmpes_fcc2(cpu_fsr, tcg_env, r_rs1, r_rs2);
18076
break;
18077
case 3:
18078
- gen_helper_fcmpes_fcc3(cpu_fsr, cpu_env, r_rs1, r_rs2);
18079
+ gen_helper_fcmpes_fcc3(cpu_fsr, tcg_env, r_rs1, r_rs2);
18080
break;
18081
}
18082
}
18083
@@ -XXX,XX +XXX,XX @@ static void gen_op_fcmped(int fccno, TCGv_i64 r_rs1, TCGv_i64 r_rs2)
18084
{
18085
switch (fccno) {
18086
case 0:
18087
- gen_helper_fcmped(cpu_fsr, cpu_env, r_rs1, r_rs2);
18088
+ gen_helper_fcmped(cpu_fsr, tcg_env, r_rs1, r_rs2);
18089
break;
18090
case 1:
18091
- gen_helper_fcmped_fcc1(cpu_fsr, cpu_env, r_rs1, r_rs2);
18092
+ gen_helper_fcmped_fcc1(cpu_fsr, tcg_env, r_rs1, r_rs2);
18093
break;
18094
case 2:
18095
- gen_helper_fcmped_fcc2(cpu_fsr, cpu_env, r_rs1, r_rs2);
18096
+ gen_helper_fcmped_fcc2(cpu_fsr, tcg_env, r_rs1, r_rs2);
18097
break;
18098
case 3:
18099
- gen_helper_fcmped_fcc3(cpu_fsr, cpu_env, r_rs1, r_rs2);
18100
+ gen_helper_fcmped_fcc3(cpu_fsr, tcg_env, r_rs1, r_rs2);
18101
break;
18102
}
18103
}
18104
@@ -XXX,XX +XXX,XX @@ static void gen_op_fcmpeq(int fccno)
18105
{
18106
switch (fccno) {
18107
case 0:
18108
- gen_helper_fcmpeq(cpu_fsr, cpu_env);
18109
+ gen_helper_fcmpeq(cpu_fsr, tcg_env);
18110
break;
18111
case 1:
18112
- gen_helper_fcmpeq_fcc1(cpu_fsr, cpu_env);
18113
+ gen_helper_fcmpeq_fcc1(cpu_fsr, tcg_env);
18114
break;
18115
case 2:
18116
- gen_helper_fcmpeq_fcc2(cpu_fsr, cpu_env);
18117
+ gen_helper_fcmpeq_fcc2(cpu_fsr, tcg_env);
18118
break;
18119
case 3:
18120
- gen_helper_fcmpeq_fcc3(cpu_fsr, cpu_env);
18121
+ gen_helper_fcmpeq_fcc3(cpu_fsr, tcg_env);
18122
break;
18123
}
18124
}
18125
@@ -XXX,XX +XXX,XX @@ static void gen_op_fcmpeq(int fccno)
18126
18127
static void gen_op_fcmps(int fccno, TCGv r_rs1, TCGv r_rs2)
18128
{
18129
- gen_helper_fcmps(cpu_fsr, cpu_env, r_rs1, r_rs2);
18130
+ gen_helper_fcmps(cpu_fsr, tcg_env, r_rs1, r_rs2);
18131
}
18132
18133
static void gen_op_fcmpd(int fccno, TCGv_i64 r_rs1, TCGv_i64 r_rs2)
18134
{
18135
- gen_helper_fcmpd(cpu_fsr, cpu_env, r_rs1, r_rs2);
18136
+ gen_helper_fcmpd(cpu_fsr, tcg_env, r_rs1, r_rs2);
18137
}
18138
18139
static void gen_op_fcmpq(int fccno)
18140
{
18141
- gen_helper_fcmpq(cpu_fsr, cpu_env);
18142
+ gen_helper_fcmpq(cpu_fsr, tcg_env);
18143
}
18144
18145
static void gen_op_fcmpes(int fccno, TCGv r_rs1, TCGv r_rs2)
18146
{
18147
- gen_helper_fcmpes(cpu_fsr, cpu_env, r_rs1, r_rs2);
18148
+ gen_helper_fcmpes(cpu_fsr, tcg_env, r_rs1, r_rs2);
18149
}
18150
18151
static void gen_op_fcmped(int fccno, TCGv_i64 r_rs1, TCGv_i64 r_rs2)
18152
{
18153
- gen_helper_fcmped(cpu_fsr, cpu_env, r_rs1, r_rs2);
18154
+ gen_helper_fcmped(cpu_fsr, tcg_env, r_rs1, r_rs2);
18155
}
18156
18157
static void gen_op_fcmpeq(int fccno)
18158
{
18159
- gen_helper_fcmpeq(cpu_fsr, cpu_env);
18160
+ gen_helper_fcmpeq(cpu_fsr, tcg_env);
18161
}
18162
#endif
18163
18164
@@ -XXX,XX +XXX,XX @@ static void gen_fop_FF(DisasContext *dc, int rd, int rs,
18165
src = gen_load_fpr_F(dc, rs);
18166
dst = gen_dest_fpr_F(dc);
18167
18168
- gen(dst, cpu_env, src);
18169
- gen_helper_check_ieee_exceptions(cpu_fsr, cpu_env);
18170
+ gen(dst, tcg_env, src);
18171
+ gen_helper_check_ieee_exceptions(cpu_fsr, tcg_env);
18172
18173
gen_store_fpr_F(dc, rd, dst);
18174
}
18175
@@ -XXX,XX +XXX,XX @@ static void gen_fop_FFF(DisasContext *dc, int rd, int rs1, int rs2,
18176
src2 = gen_load_fpr_F(dc, rs2);
18177
dst = gen_dest_fpr_F(dc);
18178
18179
- gen(dst, cpu_env, src1, src2);
18180
- gen_helper_check_ieee_exceptions(cpu_fsr, cpu_env);
18181
+ gen(dst, tcg_env, src1, src2);
18182
+ gen_helper_check_ieee_exceptions(cpu_fsr, tcg_env);
18183
18184
gen_store_fpr_F(dc, rd, dst);
18185
}
18186
@@ -XXX,XX +XXX,XX @@ static void gen_fop_DD(DisasContext *dc, int rd, int rs,
18187
src = gen_load_fpr_D(dc, rs);
18188
dst = gen_dest_fpr_D(dc, rd);
18189
18190
- gen(dst, cpu_env, src);
18191
- gen_helper_check_ieee_exceptions(cpu_fsr, cpu_env);
18192
+ gen(dst, tcg_env, src);
18193
+ gen_helper_check_ieee_exceptions(cpu_fsr, tcg_env);
18194
18195
gen_store_fpr_D(dc, rd, dst);
18196
}
18197
@@ -XXX,XX +XXX,XX @@ static void gen_fop_DDD(DisasContext *dc, int rd, int rs1, int rs2,
18198
src2 = gen_load_fpr_D(dc, rs2);
18199
dst = gen_dest_fpr_D(dc, rd);
18200
18201
- gen(dst, cpu_env, src1, src2);
18202
- gen_helper_check_ieee_exceptions(cpu_fsr, cpu_env);
18203
+ gen(dst, tcg_env, src1, src2);
18204
+ gen_helper_check_ieee_exceptions(cpu_fsr, tcg_env);
18205
18206
gen_store_fpr_D(dc, rd, dst);
18207
}
18208
@@ -XXX,XX +XXX,XX @@ static void gen_fop_QQ(DisasContext *dc, int rd, int rs,
18209
{
18210
gen_op_load_fpr_QT1(QFPREG(rs));
18211
18212
- gen(cpu_env);
18213
- gen_helper_check_ieee_exceptions(cpu_fsr, cpu_env);
18214
+ gen(tcg_env);
18215
+ gen_helper_check_ieee_exceptions(cpu_fsr, tcg_env);
18216
18217
gen_op_store_QT0_fpr(QFPREG(rd));
18218
gen_update_fprs_dirty(dc, QFPREG(rd));
18219
@@ -XXX,XX +XXX,XX @@ static void gen_ne_fop_QQ(DisasContext *dc, int rd, int rs,
18220
{
18221
gen_op_load_fpr_QT1(QFPREG(rs));
18222
18223
- gen(cpu_env);
18224
+ gen(tcg_env);
18225
18226
gen_op_store_QT0_fpr(QFPREG(rd));
18227
gen_update_fprs_dirty(dc, QFPREG(rd));
18228
@@ -XXX,XX +XXX,XX @@ static void gen_fop_QQQ(DisasContext *dc, int rd, int rs1, int rs2,
18229
gen_op_load_fpr_QT0(QFPREG(rs1));
18230
gen_op_load_fpr_QT1(QFPREG(rs2));
18231
18232
- gen(cpu_env);
18233
- gen_helper_check_ieee_exceptions(cpu_fsr, cpu_env);
18234
+ gen(tcg_env);
18235
+ gen_helper_check_ieee_exceptions(cpu_fsr, tcg_env);
18236
18237
gen_op_store_QT0_fpr(QFPREG(rd));
18238
gen_update_fprs_dirty(dc, QFPREG(rd));
18239
@@ -XXX,XX +XXX,XX @@ static void gen_fop_DFF(DisasContext *dc, int rd, int rs1, int rs2,
18240
src2 = gen_load_fpr_F(dc, rs2);
18241
dst = gen_dest_fpr_D(dc, rd);
18242
18243
- gen(dst, cpu_env, src1, src2);
18244
- gen_helper_check_ieee_exceptions(cpu_fsr, cpu_env);
18245
+ gen(dst, tcg_env, src1, src2);
18246
+ gen_helper_check_ieee_exceptions(cpu_fsr, tcg_env);
18247
18248
gen_store_fpr_D(dc, rd, dst);
18249
}
18250
@@ -XXX,XX +XXX,XX @@ static void gen_fop_QDD(DisasContext *dc, int rd, int rs1, int rs2,
18251
src1 = gen_load_fpr_D(dc, rs1);
18252
src2 = gen_load_fpr_D(dc, rs2);
18253
18254
- gen(cpu_env, src1, src2);
18255
- gen_helper_check_ieee_exceptions(cpu_fsr, cpu_env);
18256
+ gen(tcg_env, src1, src2);
18257
+ gen_helper_check_ieee_exceptions(cpu_fsr, tcg_env);
18258
18259
gen_op_store_QT0_fpr(QFPREG(rd));
18260
gen_update_fprs_dirty(dc, QFPREG(rd));
18261
@@ -XXX,XX +XXX,XX @@ static void gen_fop_DF(DisasContext *dc, int rd, int rs,
18262
src = gen_load_fpr_F(dc, rs);
18263
dst = gen_dest_fpr_D(dc, rd);
18264
18265
- gen(dst, cpu_env, src);
18266
- gen_helper_check_ieee_exceptions(cpu_fsr, cpu_env);
18267
+ gen(dst, tcg_env, src);
18268
+ gen_helper_check_ieee_exceptions(cpu_fsr, tcg_env);
18269
18270
gen_store_fpr_D(dc, rd, dst);
18271
}
18272
@@ -XXX,XX +XXX,XX @@ static void gen_ne_fop_DF(DisasContext *dc, int rd, int rs,
18273
src = gen_load_fpr_F(dc, rs);
18274
dst = gen_dest_fpr_D(dc, rd);
18275
18276
- gen(dst, cpu_env, src);
18277
+ gen(dst, tcg_env, src);
18278
18279
gen_store_fpr_D(dc, rd, dst);
18280
}
18281
@@ -XXX,XX +XXX,XX @@ static void gen_fop_FD(DisasContext *dc, int rd, int rs,
18282
src = gen_load_fpr_D(dc, rs);
18283
dst = gen_dest_fpr_F(dc);
18284
18285
- gen(dst, cpu_env, src);
18286
- gen_helper_check_ieee_exceptions(cpu_fsr, cpu_env);
18287
+ gen(dst, tcg_env, src);
18288
+ gen_helper_check_ieee_exceptions(cpu_fsr, tcg_env);
18289
18290
gen_store_fpr_F(dc, rd, dst);
18291
}
18292
@@ -XXX,XX +XXX,XX @@ static void gen_fop_FQ(DisasContext *dc, int rd, int rs,
18293
gen_op_load_fpr_QT1(QFPREG(rs));
18294
dst = gen_dest_fpr_F(dc);
18295
18296
- gen(dst, cpu_env);
18297
- gen_helper_check_ieee_exceptions(cpu_fsr, cpu_env);
18298
+ gen(dst, tcg_env);
18299
+ gen_helper_check_ieee_exceptions(cpu_fsr, tcg_env);
18300
18301
gen_store_fpr_F(dc, rd, dst);
18302
}
18303
@@ -XXX,XX +XXX,XX @@ static void gen_fop_DQ(DisasContext *dc, int rd, int rs,
18304
gen_op_load_fpr_QT1(QFPREG(rs));
18305
dst = gen_dest_fpr_D(dc, rd);
18306
18307
- gen(dst, cpu_env);
18308
- gen_helper_check_ieee_exceptions(cpu_fsr, cpu_env);
18309
+ gen(dst, tcg_env);
18310
+ gen_helper_check_ieee_exceptions(cpu_fsr, tcg_env);
18311
18312
gen_store_fpr_D(dc, rd, dst);
18313
}
18314
@@ -XXX,XX +XXX,XX @@ static void gen_ne_fop_QF(DisasContext *dc, int rd, int rs,
18315
18316
src = gen_load_fpr_F(dc, rs);
18317
18318
- gen(cpu_env, src);
18319
+ gen(tcg_env, src);
18320
18321
gen_op_store_QT0_fpr(QFPREG(rd));
18322
gen_update_fprs_dirty(dc, QFPREG(rd));
18323
@@ -XXX,XX +XXX,XX @@ static void gen_ne_fop_QD(DisasContext *dc, int rd, int rs,
18324
18325
src = gen_load_fpr_D(dc, rs);
18326
18327
- gen(cpu_env, src);
18328
+ gen(tcg_env, src);
18329
18330
gen_op_store_QT0_fpr(QFPREG(rd));
18331
gen_update_fprs_dirty(dc, QFPREG(rd));
18332
@@ -XXX,XX +XXX,XX @@ static void gen_ld_asi(DisasContext *dc, TCGv dst, TCGv addr,
18333
18334
save_state(dc);
18335
#ifdef TARGET_SPARC64
18336
- gen_helper_ld_asi(dst, cpu_env, addr, r_asi, r_mop);
18337
+ gen_helper_ld_asi(dst, tcg_env, addr, r_asi, r_mop);
18338
#else
18339
{
18340
TCGv_i64 t64 = tcg_temp_new_i64();
18341
- gen_helper_ld_asi(t64, cpu_env, addr, r_asi, r_mop);
18342
+ gen_helper_ld_asi(t64, tcg_env, addr, r_asi, r_mop);
18343
tcg_gen_trunc_i64_tl(dst, t64);
18344
}
18345
#endif
18346
@@ -XXX,XX +XXX,XX @@ static void gen_st_asi(DisasContext *dc, TCGv src, TCGv addr,
18347
18348
save_state(dc);
18349
#ifdef TARGET_SPARC64
18350
- gen_helper_st_asi(cpu_env, addr, src, r_asi, r_mop);
18351
+ gen_helper_st_asi(tcg_env, addr, src, r_asi, r_mop);
18352
#else
18353
{
18354
TCGv_i64 t64 = tcg_temp_new_i64();
18355
tcg_gen_extu_tl_i64(t64, src);
18356
- gen_helper_st_asi(cpu_env, addr, t64, r_asi, r_mop);
18357
+ gen_helper_st_asi(tcg_env, addr, t64, r_asi, r_mop);
18358
}
18359
#endif
18360
18361
@@ -XXX,XX +XXX,XX @@ static void gen_ldstub_asi(DisasContext *dc, TCGv dst, TCGv addr, int insn)
18362
/* ??? In theory, this should be raise DAE_invalid_asi.
18363
But the SS-20 roms do ldstuba [%l0] #ASI_M_CTL, %o1. */
18364
if (tb_cflags(dc->base.tb) & CF_PARALLEL) {
18365
- gen_helper_exit_atomic(cpu_env);
18366
+ gen_helper_exit_atomic(tcg_env);
18367
} else {
18368
TCGv_i32 r_asi = tcg_constant_i32(da.asi);
18369
TCGv_i32 r_mop = tcg_constant_i32(MO_UB);
18370
@@ -XXX,XX +XXX,XX @@ static void gen_ldstub_asi(DisasContext *dc, TCGv dst, TCGv addr, int insn)
18371
18372
save_state(dc);
18373
t64 = tcg_temp_new_i64();
18374
- gen_helper_ld_asi(t64, cpu_env, addr, r_asi, r_mop);
18375
+ gen_helper_ld_asi(t64, tcg_env, addr, r_asi, r_mop);
18376
18377
s64 = tcg_constant_i64(0xff);
18378
- gen_helper_st_asi(cpu_env, addr, s64, r_asi, r_mop);
18379
+ gen_helper_st_asi(tcg_env, addr, s64, r_asi, r_mop);
18380
18381
tcg_gen_trunc_i64_tl(dst, t64);
18382
18383
@@ -XXX,XX +XXX,XX @@ static void gen_ldf_asi(DisasContext *dc, TCGv addr,
18384
switch (size) {
18385
case 4:
18386
d64 = tcg_temp_new_i64();
18387
- gen_helper_ld_asi(d64, cpu_env, addr, r_asi, r_mop);
18388
+ gen_helper_ld_asi(d64, tcg_env, addr, r_asi, r_mop);
18389
d32 = gen_dest_fpr_F(dc);
18390
tcg_gen_extrl_i64_i32(d32, d64);
18391
gen_store_fpr_F(dc, rd, d32);
18392
break;
18393
case 8:
18394
- gen_helper_ld_asi(cpu_fpr[rd / 2], cpu_env, addr, r_asi, r_mop);
18395
+ gen_helper_ld_asi(cpu_fpr[rd / 2], tcg_env, addr, r_asi, r_mop);
18396
break;
18397
case 16:
18398
d64 = tcg_temp_new_i64();
18399
- gen_helper_ld_asi(d64, cpu_env, addr, r_asi, r_mop);
18400
+ gen_helper_ld_asi(d64, tcg_env, addr, r_asi, r_mop);
18401
tcg_gen_addi_tl(addr, addr, 8);
18402
- gen_helper_ld_asi(cpu_fpr[rd/2+1], cpu_env, addr, r_asi, r_mop);
18403
+ gen_helper_ld_asi(cpu_fpr[rd/2+1], tcg_env, addr, r_asi, r_mop);
18404
tcg_gen_mov_i64(cpu_fpr[rd / 2], d64);
18405
break;
18406
default:
18407
@@ -XXX,XX +XXX,XX @@ static void gen_ldda_asi(DisasContext *dc, TCGv addr, int insn, int rd)
18408
TCGv_i64 tmp = tcg_temp_new_i64();
18409
18410
save_state(dc);
18411
- gen_helper_ld_asi(tmp, cpu_env, addr, r_asi, r_mop);
18412
+ gen_helper_ld_asi(tmp, tcg_env, addr, r_asi, r_mop);
18413
18414
/* See above. */
18415
if ((da.memop & MO_BSWAP) == MO_TE) {
18416
@@ -XXX,XX +XXX,XX @@ static void gen_stda_asi(DisasContext *dc, TCGv hi, TCGv addr,
18417
}
18418
18419
save_state(dc);
18420
- gen_helper_st_asi(cpu_env, addr, t64, r_asi, r_mop);
18421
+ gen_helper_st_asi(tcg_env, addr, t64, r_asi, r_mop);
18422
}
18423
break;
18424
}
18425
@@ -XXX,XX +XXX,XX @@ static void gen_ldda_asi(DisasContext *dc, TCGv addr, int insn, int rd)
18426
TCGv_i32 r_mop = tcg_constant_i32(MO_UQ);
18427
18428
save_state(dc);
18429
- gen_helper_ld_asi(t64, cpu_env, addr, r_asi, r_mop);
18430
+ gen_helper_ld_asi(t64, tcg_env, addr, r_asi, r_mop);
18431
}
18432
break;
18433
}
18434
@@ -XXX,XX +XXX,XX @@ static void gen_stda_asi(DisasContext *dc, TCGv hi, TCGv addr,
18435
TCGv_i32 r_mop = tcg_constant_i32(MO_UQ);
18436
18437
save_state(dc);
18438
- gen_helper_st_asi(cpu_env, addr, t64, r_asi, r_mop);
18439
+ gen_helper_st_asi(tcg_env, addr, t64, r_asi, r_mop);
18440
}
18441
break;
18442
}
18443
@@ -XXX,XX +XXX,XX @@ static void gen_fmovq(DisasContext *dc, DisasCompare *cmp, int rd, int rs)
18444
}
18445
18446
#ifndef CONFIG_USER_ONLY
18447
-static void gen_load_trap_state_at_tl(TCGv_ptr r_tsptr, TCGv_env cpu_env)
18448
+static void gen_load_trap_state_at_tl(TCGv_ptr r_tsptr, TCGv_env tcg_env)
18449
{
18450
TCGv_i32 r_tl = tcg_temp_new_i32();
18451
18452
/* load env->tl into r_tl */
18453
- tcg_gen_ld_i32(r_tl, cpu_env, offsetof(CPUSPARCState, tl));
18454
+ tcg_gen_ld_i32(r_tl, tcg_env, offsetof(CPUSPARCState, tl));
18455
18456
/* tl = [0 ... MAXTL_MASK] where MAXTL_MASK must be power of 2 */
18457
tcg_gen_andi_i32(r_tl, r_tl, MAXTL_MASK);
18458
18459
/* calculate offset to current trap state from env->ts, reuse r_tl */
18460
tcg_gen_muli_i32(r_tl, r_tl, sizeof (trap_state));
18461
- tcg_gen_addi_ptr(r_tsptr, cpu_env, offsetof(CPUSPARCState, ts));
18462
+ tcg_gen_addi_ptr(r_tsptr, tcg_env, offsetof(CPUSPARCState, ts));
18463
18464
/* tsptr = env->ts[env->tl & MAXTL_MASK] */
18465
{
18466
@@ -XXX,XX +XXX,XX @@ static void disas_sparc_insn(DisasContext * dc, unsigned int insn)
18467
tcg_gen_addi_i32(trap, trap, TT_TRAP);
18468
}
18469
18470
- gen_helper_raise_exception(cpu_env, trap);
18471
+ gen_helper_raise_exception(tcg_env, trap);
18472
18473
if (cond == 8) {
18474
/* An unconditional trap ends the TB. */
18475
@@ -XXX,XX +XXX,XX @@ static void disas_sparc_insn(DisasContext * dc, unsigned int insn)
18476
#ifdef TARGET_SPARC64
18477
case 0x2: /* V9 rdccr */
18478
update_psr(dc);
18479
- gen_helper_rdccr(cpu_dst, cpu_env);
18480
+ gen_helper_rdccr(cpu_dst, tcg_env);
18481
gen_store_gpr(dc, rd, cpu_dst);
18482
break;
18483
case 0x3: /* V9 rdasi */
18484
@@ -XXX,XX +XXX,XX @@ static void disas_sparc_insn(DisasContext * dc, unsigned int insn)
18485
18486
r_tickptr = tcg_temp_new_ptr();
18487
r_const = tcg_constant_i32(dc->mem_idx);
18488
- tcg_gen_ld_ptr(r_tickptr, cpu_env,
18489
+ tcg_gen_ld_ptr(r_tickptr, tcg_env,
18490
offsetof(CPUSPARCState, tick));
18491
if (translator_io_start(&dc->base)) {
18492
dc->base.is_jmp = DISAS_EXIT;
18493
}
18494
- gen_helper_tick_get_count(cpu_dst, cpu_env, r_tickptr,
18495
+ gen_helper_tick_get_count(cpu_dst, tcg_env, r_tickptr,
18496
r_const);
18497
gen_store_gpr(dc, rd, cpu_dst);
18498
}
18499
@@ -XXX,XX +XXX,XX @@ static void disas_sparc_insn(DisasContext * dc, unsigned int insn)
18500
gen_store_gpr(dc, rd, cpu_gsr);
18501
break;
18502
case 0x16: /* Softint */
18503
- tcg_gen_ld32s_tl(cpu_dst, cpu_env,
18504
+ tcg_gen_ld32s_tl(cpu_dst, tcg_env,
18505
offsetof(CPUSPARCState, softint));
18506
gen_store_gpr(dc, rd, cpu_dst);
18507
break;
18508
@@ -XXX,XX +XXX,XX @@ static void disas_sparc_insn(DisasContext * dc, unsigned int insn)
18509
18510
r_tickptr = tcg_temp_new_ptr();
18511
r_const = tcg_constant_i32(dc->mem_idx);
18512
- tcg_gen_ld_ptr(r_tickptr, cpu_env,
18513
+ tcg_gen_ld_ptr(r_tickptr, tcg_env,
18514
offsetof(CPUSPARCState, stick));
18515
if (translator_io_start(&dc->base)) {
18516
dc->base.is_jmp = DISAS_EXIT;
18517
}
18518
- gen_helper_tick_get_count(cpu_dst, cpu_env, r_tickptr,
18519
+ gen_helper_tick_get_count(cpu_dst, tcg_env, r_tickptr,
18520
r_const);
18521
gen_store_gpr(dc, rd, cpu_dst);
18522
}
18523
@@ -XXX,XX +XXX,XX @@ static void disas_sparc_insn(DisasContext * dc, unsigned int insn)
18524
goto priv_insn;
18525
}
18526
update_psr(dc);
18527
- gen_helper_rdpsr(cpu_dst, cpu_env);
18528
+ gen_helper_rdpsr(cpu_dst, tcg_env);
18529
#else
18530
CHECK_IU_FEATURE(dc, HYPV);
18531
if (!hypervisor(dc))
18532
@@ -XXX,XX +XXX,XX @@ static void disas_sparc_insn(DisasContext * dc, unsigned int insn)
18533
rs1 = GET_FIELD(insn, 13, 17);
18534
switch (rs1) {
18535
case 0: // hpstate
18536
- tcg_gen_ld_i64(cpu_dst, cpu_env,
18537
+ tcg_gen_ld_i64(cpu_dst, tcg_env,
18538
offsetof(CPUSPARCState, hpstate));
18539
break;
18540
case 1: // htstate
18541
@@ -XXX,XX +XXX,XX @@ static void disas_sparc_insn(DisasContext * dc, unsigned int insn)
18542
TCGv_ptr r_tsptr;
18543
18544
r_tsptr = tcg_temp_new_ptr();
18545
- gen_load_trap_state_at_tl(r_tsptr, cpu_env);
18546
+ gen_load_trap_state_at_tl(r_tsptr, tcg_env);
18547
tcg_gen_ld_tl(cpu_tmp0, r_tsptr,
18548
offsetof(trap_state, tpc));
18549
}
18550
@@ -XXX,XX +XXX,XX @@ static void disas_sparc_insn(DisasContext * dc, unsigned int insn)
18551
TCGv_ptr r_tsptr;
18552
18553
r_tsptr = tcg_temp_new_ptr();
18554
- gen_load_trap_state_at_tl(r_tsptr, cpu_env);
18555
+ gen_load_trap_state_at_tl(r_tsptr, tcg_env);
18556
tcg_gen_ld_tl(cpu_tmp0, r_tsptr,
18557
offsetof(trap_state, tnpc));
18558
}
18559
@@ -XXX,XX +XXX,XX @@ static void disas_sparc_insn(DisasContext * dc, unsigned int insn)
18560
TCGv_ptr r_tsptr;
18561
18562
r_tsptr = tcg_temp_new_ptr();
18563
- gen_load_trap_state_at_tl(r_tsptr, cpu_env);
18564
+ gen_load_trap_state_at_tl(r_tsptr, tcg_env);
18565
tcg_gen_ld_tl(cpu_tmp0, r_tsptr,
18566
offsetof(trap_state, tstate));
18567
}
18568
@@ -XXX,XX +XXX,XX @@ static void disas_sparc_insn(DisasContext * dc, unsigned int insn)
18569
{
18570
TCGv_ptr r_tsptr = tcg_temp_new_ptr();
18571
18572
- gen_load_trap_state_at_tl(r_tsptr, cpu_env);
18573
+ gen_load_trap_state_at_tl(r_tsptr, tcg_env);
18574
tcg_gen_ld32s_tl(cpu_tmp0, r_tsptr,
18575
offsetof(trap_state, tt));
18576
}
18577
@@ -XXX,XX +XXX,XX @@ static void disas_sparc_insn(DisasContext * dc, unsigned int insn)
18578
18579
r_tickptr = tcg_temp_new_ptr();
18580
r_const = tcg_constant_i32(dc->mem_idx);
18581
- tcg_gen_ld_ptr(r_tickptr, cpu_env,
18582
+ tcg_gen_ld_ptr(r_tickptr, tcg_env,
18583
offsetof(CPUSPARCState, tick));
18584
if (translator_io_start(&dc->base)) {
18585
dc->base.is_jmp = DISAS_EXIT;
18586
}
18587
- gen_helper_tick_get_count(cpu_tmp0, cpu_env,
18588
+ gen_helper_tick_get_count(cpu_tmp0, tcg_env,
18589
r_tickptr, r_const);
18590
}
18591
break;
18592
@@ -XXX,XX +XXX,XX @@ static void disas_sparc_insn(DisasContext * dc, unsigned int insn)
18593
tcg_gen_mov_tl(cpu_tmp0, cpu_tbr);
18594
break;
18595
case 6: // pstate
18596
- tcg_gen_ld32s_tl(cpu_tmp0, cpu_env,
18597
+ tcg_gen_ld32s_tl(cpu_tmp0, tcg_env,
18598
offsetof(CPUSPARCState, pstate));
18599
break;
18600
case 7: // tl
18601
- tcg_gen_ld32s_tl(cpu_tmp0, cpu_env,
18602
+ tcg_gen_ld32s_tl(cpu_tmp0, tcg_env,
18603
offsetof(CPUSPARCState, tl));
18604
break;
18605
case 8: // pil
18606
- tcg_gen_ld32s_tl(cpu_tmp0, cpu_env,
18607
+ tcg_gen_ld32s_tl(cpu_tmp0, tcg_env,
18608
offsetof(CPUSPARCState, psrpil));
18609
break;
18610
case 9: // cwp
18611
- gen_helper_rdcwp(cpu_tmp0, cpu_env);
18612
+ gen_helper_rdcwp(cpu_tmp0, tcg_env);
18613
break;
18614
case 10: // cansave
18615
- tcg_gen_ld32s_tl(cpu_tmp0, cpu_env,
18616
+ tcg_gen_ld32s_tl(cpu_tmp0, tcg_env,
18617
offsetof(CPUSPARCState, cansave));
18618
break;
18619
case 11: // canrestore
18620
- tcg_gen_ld32s_tl(cpu_tmp0, cpu_env,
18621
+ tcg_gen_ld32s_tl(cpu_tmp0, tcg_env,
18622
offsetof(CPUSPARCState, canrestore));
18623
break;
18624
case 12: // cleanwin
18625
- tcg_gen_ld32s_tl(cpu_tmp0, cpu_env,
18626
+ tcg_gen_ld32s_tl(cpu_tmp0, tcg_env,
18627
offsetof(CPUSPARCState, cleanwin));
18628
break;
18629
case 13: // otherwin
18630
- tcg_gen_ld32s_tl(cpu_tmp0, cpu_env,
18631
+ tcg_gen_ld32s_tl(cpu_tmp0, tcg_env,
18632
offsetof(CPUSPARCState, otherwin));
18633
break;
18634
case 14: // wstate
18635
- tcg_gen_ld32s_tl(cpu_tmp0, cpu_env,
18636
+ tcg_gen_ld32s_tl(cpu_tmp0, tcg_env,
18637
offsetof(CPUSPARCState, wstate));
18638
break;
18639
case 16: // UA2005 gl
18640
CHECK_IU_FEATURE(dc, GL);
18641
- tcg_gen_ld32s_tl(cpu_tmp0, cpu_env,
18642
+ tcg_gen_ld32s_tl(cpu_tmp0, tcg_env,
18643
offsetof(CPUSPARCState, gl));
18644
break;
18645
case 26: // UA2005 strand status
18646
@@ -XXX,XX +XXX,XX @@ static void disas_sparc_insn(DisasContext * dc, unsigned int insn)
18647
#if defined(TARGET_SPARC64) || !defined(CONFIG_USER_ONLY)
18648
} else if (xop == 0x2b) { /* rdtbr / V9 flushw */
18649
#ifdef TARGET_SPARC64
18650
- gen_helper_flushw(cpu_env);
18651
+ gen_helper_flushw(tcg_env);
18652
#else
18653
if (!supervisor(dc))
18654
goto priv_insn;
18655
@@ -XXX,XX +XXX,XX @@ static void disas_sparc_insn(DisasContext * dc, unsigned int insn)
18656
break;
18657
#ifdef TARGET_SPARC64
18658
case 0xd: /* V9 udivx */
18659
- gen_helper_udivx(cpu_dst, cpu_env, cpu_src1, cpu_src2);
18660
+ gen_helper_udivx(cpu_dst, tcg_env, cpu_src1, cpu_src2);
18661
break;
18662
#endif
18663
case 0xe: /* udiv */
18664
CHECK_IU_FEATURE(dc, DIV);
18665
if (xop & 0x10) {
18666
- gen_helper_udiv_cc(cpu_dst, cpu_env, cpu_src1,
18667
+ gen_helper_udiv_cc(cpu_dst, tcg_env, cpu_src1,
18668
cpu_src2);
18669
dc->cc_op = CC_OP_DIV;
18670
} else {
18671
- gen_helper_udiv(cpu_dst, cpu_env, cpu_src1,
18672
+ gen_helper_udiv(cpu_dst, tcg_env, cpu_src1,
18673
cpu_src2);
18674
}
18675
break;
18676
case 0xf: /* sdiv */
18677
CHECK_IU_FEATURE(dc, DIV);
18678
if (xop & 0x10) {
18679
- gen_helper_sdiv_cc(cpu_dst, cpu_env, cpu_src1,
18680
+ gen_helper_sdiv_cc(cpu_dst, tcg_env, cpu_src1,
18681
cpu_src2);
18682
dc->cc_op = CC_OP_DIV;
18683
} else {
18684
- gen_helper_sdiv(cpu_dst, cpu_env, cpu_src1,
18685
+ gen_helper_sdiv(cpu_dst, tcg_env, cpu_src1,
18686
cpu_src2);
18687
}
18688
break;
18689
@@ -XXX,XX +XXX,XX @@ static void disas_sparc_insn(DisasContext * dc, unsigned int insn)
18690
dc->cc_op = CC_OP_TSUB;
18691
break;
18692
case 0x22: /* taddcctv */
18693
- gen_helper_taddcctv(cpu_dst, cpu_env,
18694
+ gen_helper_taddcctv(cpu_dst, tcg_env,
18695
cpu_src1, cpu_src2);
18696
gen_store_gpr(dc, rd, cpu_dst);
18697
dc->cc_op = CC_OP_TADDTV;
18698
break;
18699
case 0x23: /* tsubcctv */
18700
- gen_helper_tsubcctv(cpu_dst, cpu_env,
18701
+ gen_helper_tsubcctv(cpu_dst, tcg_env,
18702
cpu_src1, cpu_src2);
18703
gen_store_gpr(dc, rd, cpu_dst);
18704
dc->cc_op = CC_OP_TSUBTV;
18705
@@ -XXX,XX +XXX,XX @@ static void disas_sparc_insn(DisasContext * dc, unsigned int insn)
18706
CPU_FEATURE_POWERDOWN)) {
18707
/* LEON3 power-down */
18708
save_state(dc);
18709
- gen_helper_power_down(cpu_env);
18710
+ gen_helper_power_down(tcg_env);
18711
}
18712
break;
18713
#else
18714
case 0x2: /* V9 wrccr */
18715
tcg_gen_xor_tl(cpu_tmp0, cpu_src1, cpu_src2);
18716
- gen_helper_wrccr(cpu_env, cpu_tmp0);
18717
+ gen_helper_wrccr(tcg_env, cpu_tmp0);
18718
tcg_gen_movi_i32(cpu_cc_op, CC_OP_FLAGS);
18719
dc->cc_op = CC_OP_FLAGS;
18720
break;
18721
case 0x3: /* V9 wrasi */
18722
tcg_gen_xor_tl(cpu_tmp0, cpu_src1, cpu_src2);
18723
tcg_gen_andi_tl(cpu_tmp0, cpu_tmp0, 0xff);
18724
- tcg_gen_st32_tl(cpu_tmp0, cpu_env,
18725
+ tcg_gen_st32_tl(cpu_tmp0, tcg_env,
18726
offsetof(CPUSPARCState, asi));
18727
/*
18728
* End TB to notice changed ASI.
18729
@@ -XXX,XX +XXX,XX @@ static void disas_sparc_insn(DisasContext * dc, unsigned int insn)
18730
if (!supervisor(dc))
18731
goto illegal_insn;
18732
tcg_gen_xor_tl(cpu_tmp0, cpu_src1, cpu_src2);
18733
- gen_helper_set_softint(cpu_env, cpu_tmp0);
18734
+ gen_helper_set_softint(tcg_env, cpu_tmp0);
18735
break;
18736
case 0x15: /* Softint clear */
18737
if (!supervisor(dc))
18738
goto illegal_insn;
18739
tcg_gen_xor_tl(cpu_tmp0, cpu_src1, cpu_src2);
18740
- gen_helper_clear_softint(cpu_env, cpu_tmp0);
18741
+ gen_helper_clear_softint(tcg_env, cpu_tmp0);
18742
break;
18743
case 0x16: /* Softint write */
18744
if (!supervisor(dc))
18745
goto illegal_insn;
18746
tcg_gen_xor_tl(cpu_tmp0, cpu_src1, cpu_src2);
18747
- gen_helper_write_softint(cpu_env, cpu_tmp0);
18748
+ gen_helper_write_softint(tcg_env, cpu_tmp0);
18749
break;
18750
case 0x17: /* Tick compare */
18751
#if !defined(CONFIG_USER_ONLY)
18752
@@ -XXX,XX +XXX,XX @@ static void disas_sparc_insn(DisasContext * dc, unsigned int insn)
18753
tcg_gen_xor_tl(cpu_tick_cmpr, cpu_src1,
18754
cpu_src2);
18755
r_tickptr = tcg_temp_new_ptr();
18756
- tcg_gen_ld_ptr(r_tickptr, cpu_env,
18757
+ tcg_gen_ld_ptr(r_tickptr, tcg_env,
18758
offsetof(CPUSPARCState, tick));
18759
translator_io_start(&dc->base);
18760
gen_helper_tick_set_limit(r_tickptr,
18761
@@ -XXX,XX +XXX,XX @@ static void disas_sparc_insn(DisasContext * dc, unsigned int insn)
18762
tcg_gen_xor_tl(cpu_tmp0, cpu_src1,
18763
cpu_src2);
18764
r_tickptr = tcg_temp_new_ptr();
18765
- tcg_gen_ld_ptr(r_tickptr, cpu_env,
18766
+ tcg_gen_ld_ptr(r_tickptr, tcg_env,
18767
offsetof(CPUSPARCState, stick));
18768
translator_io_start(&dc->base);
18769
gen_helper_tick_set_count(r_tickptr,
18770
@@ -XXX,XX +XXX,XX @@ static void disas_sparc_insn(DisasContext * dc, unsigned int insn)
18771
tcg_gen_xor_tl(cpu_stick_cmpr, cpu_src1,
18772
cpu_src2);
18773
r_tickptr = tcg_temp_new_ptr();
18774
- tcg_gen_ld_ptr(r_tickptr, cpu_env,
18775
+ tcg_gen_ld_ptr(r_tickptr, tcg_env,
18776
offsetof(CPUSPARCState, stick));
18777
translator_io_start(&dc->base);
18778
gen_helper_tick_set_limit(r_tickptr,
18779
@@ -XXX,XX +XXX,XX @@ static void disas_sparc_insn(DisasContext * dc, unsigned int insn)
18780
#ifdef TARGET_SPARC64
18781
switch (rd) {
18782
case 0:
18783
- gen_helper_saved(cpu_env);
18784
+ gen_helper_saved(tcg_env);
18785
break;
18786
case 1:
18787
- gen_helper_restored(cpu_env);
18788
+ gen_helper_restored(tcg_env);
18789
break;
18790
case 2: /* UA2005 allclean */
18791
case 3: /* UA2005 otherw */
18792
@@ -XXX,XX +XXX,XX @@ static void disas_sparc_insn(DisasContext * dc, unsigned int insn)
18793
#else
18794
cpu_tmp0 = tcg_temp_new();
18795
tcg_gen_xor_tl(cpu_tmp0, cpu_src1, cpu_src2);
18796
- gen_helper_wrpsr(cpu_env, cpu_tmp0);
18797
+ gen_helper_wrpsr(tcg_env, cpu_tmp0);
18798
tcg_gen_movi_i32(cpu_cc_op, CC_OP_FLAGS);
18799
dc->cc_op = CC_OP_FLAGS;
18800
save_state(dc);
18801
@@ -XXX,XX +XXX,XX @@ static void disas_sparc_insn(DisasContext * dc, unsigned int insn)
18802
TCGv_ptr r_tsptr;
18803
18804
r_tsptr = tcg_temp_new_ptr();
18805
- gen_load_trap_state_at_tl(r_tsptr, cpu_env);
18806
+ gen_load_trap_state_at_tl(r_tsptr, tcg_env);
18807
tcg_gen_st_tl(cpu_tmp0, r_tsptr,
18808
offsetof(trap_state, tpc));
18809
}
18810
@@ -XXX,XX +XXX,XX @@ static void disas_sparc_insn(DisasContext * dc, unsigned int insn)
18811
TCGv_ptr r_tsptr;
18812
18813
r_tsptr = tcg_temp_new_ptr();
18814
- gen_load_trap_state_at_tl(r_tsptr, cpu_env);
18815
+ gen_load_trap_state_at_tl(r_tsptr, tcg_env);
18816
tcg_gen_st_tl(cpu_tmp0, r_tsptr,
18817
offsetof(trap_state, tnpc));
18818
}
18819
@@ -XXX,XX +XXX,XX @@ static void disas_sparc_insn(DisasContext * dc, unsigned int insn)
18820
TCGv_ptr r_tsptr;
18821
18822
r_tsptr = tcg_temp_new_ptr();
18823
- gen_load_trap_state_at_tl(r_tsptr, cpu_env);
18824
+ gen_load_trap_state_at_tl(r_tsptr, tcg_env);
18825
tcg_gen_st_tl(cpu_tmp0, r_tsptr,
18826
offsetof(trap_state,
18827
tstate));
18828
@@ -XXX,XX +XXX,XX @@ static void disas_sparc_insn(DisasContext * dc, unsigned int insn)
18829
TCGv_ptr r_tsptr;
18830
18831
r_tsptr = tcg_temp_new_ptr();
18832
- gen_load_trap_state_at_tl(r_tsptr, cpu_env);
18833
+ gen_load_trap_state_at_tl(r_tsptr, tcg_env);
18834
tcg_gen_st32_tl(cpu_tmp0, r_tsptr,
18835
offsetof(trap_state, tt));
18836
}
18837
@@ -XXX,XX +XXX,XX @@ static void disas_sparc_insn(DisasContext * dc, unsigned int insn)
18838
TCGv_ptr r_tickptr;
18839
18840
r_tickptr = tcg_temp_new_ptr();
18841
- tcg_gen_ld_ptr(r_tickptr, cpu_env,
18842
+ tcg_gen_ld_ptr(r_tickptr, tcg_env,
18843
offsetof(CPUSPARCState, tick));
18844
translator_io_start(&dc->base);
18845
gen_helper_tick_set_count(r_tickptr,
18846
@@ -XXX,XX +XXX,XX @@ static void disas_sparc_insn(DisasContext * dc, unsigned int insn)
18847
if (translator_io_start(&dc->base)) {
18848
dc->base.is_jmp = DISAS_EXIT;
18849
}
18850
- gen_helper_wrpstate(cpu_env, cpu_tmp0);
18851
+ gen_helper_wrpstate(tcg_env, cpu_tmp0);
18852
dc->npc = DYNAMIC_PC;
18853
break;
18854
case 7: // tl
18855
save_state(dc);
18856
- tcg_gen_st32_tl(cpu_tmp0, cpu_env,
18857
+ tcg_gen_st32_tl(cpu_tmp0, tcg_env,
18858
offsetof(CPUSPARCState, tl));
18859
dc->npc = DYNAMIC_PC;
18860
break;
18861
@@ -XXX,XX +XXX,XX @@ static void disas_sparc_insn(DisasContext * dc, unsigned int insn)
18862
if (translator_io_start(&dc->base)) {
18863
dc->base.is_jmp = DISAS_EXIT;
18864
}
18865
- gen_helper_wrpil(cpu_env, cpu_tmp0);
18866
+ gen_helper_wrpil(tcg_env, cpu_tmp0);
18867
break;
18868
case 9: // cwp
18869
- gen_helper_wrcwp(cpu_env, cpu_tmp0);
18870
+ gen_helper_wrcwp(tcg_env, cpu_tmp0);
18871
break;
18872
case 10: // cansave
18873
- tcg_gen_st32_tl(cpu_tmp0, cpu_env,
18874
+ tcg_gen_st32_tl(cpu_tmp0, tcg_env,
18875
offsetof(CPUSPARCState,
18876
cansave));
18877
break;
18878
case 11: // canrestore
18879
- tcg_gen_st32_tl(cpu_tmp0, cpu_env,
18880
+ tcg_gen_st32_tl(cpu_tmp0, tcg_env,
18881
offsetof(CPUSPARCState,
18882
canrestore));
18883
break;
18884
case 12: // cleanwin
18885
- tcg_gen_st32_tl(cpu_tmp0, cpu_env,
18886
+ tcg_gen_st32_tl(cpu_tmp0, tcg_env,
18887
offsetof(CPUSPARCState,
18888
cleanwin));
18889
break;
18890
case 13: // otherwin
18891
- tcg_gen_st32_tl(cpu_tmp0, cpu_env,
18892
+ tcg_gen_st32_tl(cpu_tmp0, tcg_env,
18893
offsetof(CPUSPARCState,
18894
otherwin));
18895
break;
18896
case 14: // wstate
18897
- tcg_gen_st32_tl(cpu_tmp0, cpu_env,
18898
+ tcg_gen_st32_tl(cpu_tmp0, tcg_env,
18899
offsetof(CPUSPARCState,
18900
wstate));
18901
break;
18902
case 16: // UA2005 gl
18903
CHECK_IU_FEATURE(dc, GL);
18904
- gen_helper_wrgl(cpu_env, cpu_tmp0);
18905
+ gen_helper_wrgl(tcg_env, cpu_tmp0);
18906
break;
18907
case 26: // UA2005 strand status
18908
CHECK_IU_FEATURE(dc, HYPV);
18909
@@ -XXX,XX +XXX,XX @@ static void disas_sparc_insn(DisasContext * dc, unsigned int insn)
18910
tcg_gen_xor_tl(cpu_tmp0, cpu_src1, cpu_src2);
18911
switch (rd) {
18912
case 0: // hpstate
18913
- tcg_gen_st_i64(cpu_tmp0, cpu_env,
18914
+ tcg_gen_st_i64(cpu_tmp0, tcg_env,
18915
offsetof(CPUSPARCState,
18916
hpstate));
18917
save_state(dc);
18918
@@ -XXX,XX +XXX,XX @@ static void disas_sparc_insn(DisasContext * dc, unsigned int insn)
18919
18920
tcg_gen_mov_tl(cpu_hstick_cmpr, cpu_tmp0);
18921
r_tickptr = tcg_temp_new_ptr();
18922
- tcg_gen_ld_ptr(r_tickptr, cpu_env,
18923
+ tcg_gen_ld_ptr(r_tickptr, tcg_env,
18924
offsetof(CPUSPARCState, hstick));
18925
translator_io_start(&dc->base);
18926
gen_helper_tick_set_limit(r_tickptr,
18927
@@ -XXX,XX +XXX,XX @@ static void disas_sparc_insn(DisasContext * dc, unsigned int insn)
18928
break;
18929
}
18930
case 0x2d: /* V9 sdivx */
18931
- gen_helper_sdivx(cpu_dst, cpu_env, cpu_src1, cpu_src2);
18932
+ gen_helper_sdivx(cpu_dst, tcg_env, cpu_src1, cpu_src2);
18933
gen_store_gpr(dc, rd, cpu_dst);
18934
break;
18935
case 0x2e: /* V9 popc */
18936
@@ -XXX,XX +XXX,XX @@ static void disas_sparc_insn(DisasContext * dc, unsigned int insn)
18937
tcg_gen_mov_tl(cpu_tmp0, cpu_src1);
18938
}
18939
}
18940
- gen_helper_restore(cpu_env);
18941
+ gen_helper_restore(tcg_env);
18942
gen_mov_pc_npc(dc);
18943
gen_check_align(cpu_tmp0, 3);
18944
tcg_gen_mov_tl(cpu_npc, cpu_tmp0);
18945
@@ -XXX,XX +XXX,XX @@ static void disas_sparc_insn(DisasContext * dc, unsigned int insn)
18946
gen_check_align(cpu_tmp0, 3);
18947
tcg_gen_mov_tl(cpu_npc, cpu_tmp0);
18948
dc->npc = DYNAMIC_PC;
18949
- gen_helper_rett(cpu_env);
18950
+ gen_helper_rett(tcg_env);
18951
}
18952
goto jmp_insn;
18953
#endif
18954
@@ -XXX,XX +XXX,XX @@ static void disas_sparc_insn(DisasContext * dc, unsigned int insn)
18955
/* nop */
18956
break;
18957
case 0x3c: /* save */
18958
- gen_helper_save(cpu_env);
18959
+ gen_helper_save(tcg_env);
18960
gen_store_gpr(dc, rd, cpu_tmp0);
18961
break;
18962
case 0x3d: /* restore */
18963
- gen_helper_restore(cpu_env);
18964
+ gen_helper_restore(tcg_env);
18965
gen_store_gpr(dc, rd, cpu_tmp0);
18966
break;
18967
#if !defined(CONFIG_USER_ONLY) && defined(TARGET_SPARC64)
18968
@@ -XXX,XX +XXX,XX @@ static void disas_sparc_insn(DisasContext * dc, unsigned int insn)
18969
dc->npc = DYNAMIC_PC;
18970
dc->pc = DYNAMIC_PC;
18971
translator_io_start(&dc->base);
18972
- gen_helper_done(cpu_env);
18973
+ gen_helper_done(tcg_env);
18974
goto jmp_insn;
18975
case 1:
18976
if (!supervisor(dc))
18977
@@ -XXX,XX +XXX,XX @@ static void disas_sparc_insn(DisasContext * dc, unsigned int insn)
18978
dc->npc = DYNAMIC_PC;
18979
dc->pc = DYNAMIC_PC;
18980
translator_io_start(&dc->base);
18981
- gen_helper_retry(cpu_env);
18982
+ gen_helper_retry(tcg_env);
18983
goto jmp_insn;
18984
default:
18985
goto illegal_insn;
18986
@@ -XXX,XX +XXX,XX @@ static void disas_sparc_insn(DisasContext * dc, unsigned int insn)
18987
TCGv_i64 t64 = tcg_temp_new_i64();
18988
tcg_gen_qemu_ld_i64(t64, cpu_addr,
18989
dc->mem_idx, MO_TEUQ | MO_ALIGN);
18990
- gen_helper_ldxfsr(cpu_fsr, cpu_env, cpu_fsr, t64);
18991
+ gen_helper_ldxfsr(cpu_fsr, tcg_env, cpu_fsr, t64);
18992
break;
18993
}
18994
#endif
18995
cpu_dst_32 = tcg_temp_new_i32();
18996
tcg_gen_qemu_ld_i32(cpu_dst_32, cpu_addr,
18997
dc->mem_idx, MO_TEUL | MO_ALIGN);
18998
- gen_helper_ldfsr(cpu_fsr, cpu_env, cpu_fsr, cpu_dst_32);
18999
+ gen_helper_ldfsr(cpu_fsr, tcg_env, cpu_fsr, cpu_dst_32);
19000
break;
19001
case 0x22: /* ldqf, load quad fpreg */
19002
CHECK_FPU_FEATURE(dc, FLOAT128);
19003
@@ -XXX,XX +XXX,XX @@ void sparc_tcg_init(void)
19004
19005
unsigned int i;
19006
19007
- cpu_regwptr = tcg_global_mem_new_ptr(cpu_env,
19008
+ cpu_regwptr = tcg_global_mem_new_ptr(tcg_env,
19009
offsetof(CPUSPARCState, regwptr),
19010
"regwptr");
19011
19012
for (i = 0; i < ARRAY_SIZE(r32); ++i) {
19013
- *r32[i].ptr = tcg_global_mem_new_i32(cpu_env, r32[i].off, r32[i].name);
19014
+ *r32[i].ptr = tcg_global_mem_new_i32(tcg_env, r32[i].off, r32[i].name);
19015
}
19016
19017
for (i = 0; i < ARRAY_SIZE(rtl); ++i) {
19018
- *rtl[i].ptr = tcg_global_mem_new(cpu_env, rtl[i].off, rtl[i].name);
19019
+ *rtl[i].ptr = tcg_global_mem_new(tcg_env, rtl[i].off, rtl[i].name);
19020
}
19021
19022
cpu_regs[0] = NULL;
19023
for (i = 1; i < 8; ++i) {
19024
- cpu_regs[i] = tcg_global_mem_new(cpu_env,
19025
+ cpu_regs[i] = tcg_global_mem_new(tcg_env,
19026
offsetof(CPUSPARCState, gregs[i]),
19027
gregnames[i]);
19028
}
19029
@@ -XXX,XX +XXX,XX @@ void sparc_tcg_init(void)
19030
}
19031
19032
for (i = 0; i < TARGET_DPREGS; i++) {
19033
- cpu_fpr[i] = tcg_global_mem_new_i64(cpu_env,
19034
+ cpu_fpr[i] = tcg_global_mem_new_i64(tcg_env,
19035
offsetof(CPUSPARCState, fpr[i]),
19036
fregnames[i]);
19037
}
19038
diff --git a/target/tricore/translate.c b/target/tricore/translate.c
19039
index XXXXXXX..XXXXXXX 100644
19040
--- a/target/tricore/translate.c
19041
+++ b/target/tricore/translate.c
19042
@@ -XXX,XX +XXX,XX @@ void tricore_cpu_dump_state(CPUState *cs, FILE *f, int flags)
19043
19044
#define gen_helper_1arg(name, arg) do { \
19045
TCGv_i32 helper_tmp = tcg_constant_i32(arg); \
19046
- gen_helper_##name(cpu_env, helper_tmp); \
19047
+ gen_helper_##name(tcg_env, helper_tmp); \
19048
} while (0)
19049
19050
#define GEN_HELPER_LL(name, ret, arg0, arg1, n) do { \
19051
@@ -XXX,XX +XXX,XX @@ void tricore_cpu_dump_state(CPUState *cs, FILE *f, int flags)
19052
#define GEN_HELPER_RR(name, rl, rh, arg1, arg2) do { \
19053
TCGv_i64 ret = tcg_temp_new_i64(); \
19054
\
19055
- gen_helper_##name(ret, cpu_env, arg1, arg2); \
19056
+ gen_helper_##name(ret, tcg_env, arg1, arg2); \
19057
tcg_gen_extr_i64_i32(rl, rh, ret); \
19058
} while (0)
19059
19060
@@ -XXX,XX +XXX,XX @@ static void gen_swapmsk(DisasContext *ctx, int reg, TCGv ea)
19061
#define R(ADDRESS, REG, FEATURE) \
19062
case ADDRESS: \
19063
if (has_feature(ctx, FEATURE)) { \
19064
- tcg_gen_ld_tl(ret, cpu_env, offsetof(CPUTriCoreState, REG)); \
19065
+ tcg_gen_ld_tl(ret, tcg_env, offsetof(CPUTriCoreState, REG)); \
19066
} \
19067
break;
19068
#define A(ADDRESS, REG, FEATURE) R(ADDRESS, REG, FEATURE)
19069
@@ -XXX,XX +XXX,XX @@ static inline void gen_mfcr(DisasContext *ctx, TCGv ret, int32_t offset)
19070
{
19071
/* since we're caching PSW make this a special case */
19072
if (offset == 0xfe04) {
19073
- gen_helper_psw_read(ret, cpu_env);
19074
+ gen_helper_psw_read(ret, tcg_env);
19075
} else {
19076
switch (offset) {
19077
#include "csfr.h.inc"
19078
@@ -XXX,XX +XXX,XX @@ static inline void gen_mfcr(DisasContext *ctx, TCGv ret, int32_t offset)
19079
#define A(ADDRESS, REG, FEATURE) R(ADDRESS, REG, FEATURE) \
19080
case ADDRESS: \
19081
if (has_feature(ctx, FEATURE)) { \
19082
- tcg_gen_st_tl(r1, cpu_env, offsetof(CPUTriCoreState, REG)); \
19083
+ tcg_gen_st_tl(r1, tcg_env, offsetof(CPUTriCoreState, REG)); \
19084
} \
19085
break;
19086
/* Endinit protected registers
19087
@@ -XXX,XX +XXX,XX @@ static inline void gen_mtcr(DisasContext *ctx, TCGv r1,
19088
if (ctx->priv == TRICORE_PRIV_SM) {
19089
/* since we're caching PSW make this a special case */
19090
if (offset == 0xfe04) {
19091
- gen_helper_psw_write(cpu_env, r1);
19092
+ gen_helper_psw_write(tcg_env, r1);
19093
ctx->base.is_jmp = DISAS_EXIT_UPDATE;
19094
} else {
19095
switch (offset) {
19096
@@ -XXX,XX +XXX,XX @@ gen_maddsums_h(TCGv ret_low, TCGv ret_high, TCGv r1_low, TCGv r1_high, TCGv r2,
19097
tcg_gen_shli_i64(temp64, temp64, 16);
19098
tcg_gen_concat_i32_i64(temp64_2, r1_low, r1_high);
19099
19100
- gen_helper_add64_ssov(temp64, cpu_env, temp64_2, temp64);
19101
+ gen_helper_add64_ssov(temp64, tcg_env, temp64_2, temp64);
19102
tcg_gen_extr_i64_i32(ret_low, ret_high, temp64);
19103
}
19104
19105
@@ -XXX,XX +XXX,XX @@ gen_maddms_h(TCGv ret_low, TCGv ret_high, TCGv r1_low, TCGv r1_high, TCGv r2,
19106
break;
19107
}
19108
tcg_gen_concat_i32_i64(temp64_2, r1_low, r1_high);
19109
- gen_helper_add64_ssov(temp64, cpu_env, temp64_2, temp64);
19110
+ gen_helper_add64_ssov(temp64, tcg_env, temp64_2, temp64);
19111
tcg_gen_extr_i64_i32(ret_low, ret_high, temp64);
19112
}
19113
19114
@@ -XXX,XX +XXX,XX @@ gen_maddr64_h(TCGv ret, TCGv r1_low, TCGv r1_high, TCGv r2, TCGv r3, uint32_t n,
19115
GEN_HELPER_UU(mul_h, temp64, r2, r3, t_n);
19116
break;
19117
}
19118
- gen_helper_addr_h(ret, cpu_env, temp64, r1_low, r1_high);
19119
+ gen_helper_addr_h(ret, tcg_env, temp64, r1_low, r1_high);
19120
}
19121
19122
static inline void
19123
@@ -XXX,XX +XXX,XX @@ gen_maddsur32_h(TCGv ret, TCGv r1, TCGv r2, TCGv r3, uint32_t n, uint32_t mode)
19124
}
19125
tcg_gen_andi_tl(temp2, r1, 0xffff0000);
19126
tcg_gen_shli_tl(temp, r1, 16);
19127
- gen_helper_addsur_h(ret, cpu_env, temp64, temp, temp2);
19128
+ gen_helper_addsur_h(ret, tcg_env, temp64, temp, temp2);
19129
}
19130
19131
19132
@@ -XXX,XX +XXX,XX @@ gen_maddr64s_h(TCGv ret, TCGv r1_low, TCGv r1_high, TCGv r2, TCGv r3,
19133
GEN_HELPER_UU(mul_h, temp64, r2, r3, t_n);
19134
break;
19135
}
19136
- gen_helper_addr_h_ssov(ret, cpu_env, temp64, r1_low, r1_high);
19137
+ gen_helper_addr_h_ssov(ret, tcg_env, temp64, r1_low, r1_high);
19138
}
19139
19140
static inline void
19141
@@ -XXX,XX +XXX,XX @@ gen_maddsur32s_h(TCGv ret, TCGv r1, TCGv r2, TCGv r3, uint32_t n, uint32_t mode)
19142
}
19143
tcg_gen_andi_tl(temp2, r1, 0xffff0000);
19144
tcg_gen_shli_tl(temp, r1, 16);
19145
- gen_helper_addsur_h_ssov(ret, cpu_env, temp64, temp, temp2);
19146
+ gen_helper_addsur_h_ssov(ret, tcg_env, temp64, temp, temp2);
19147
}
19148
19149
static inline void
19150
gen_maddr_q(TCGv ret, TCGv r1, TCGv r2, TCGv r3, uint32_t n)
19151
{
19152
TCGv t_n = tcg_constant_i32(n);
19153
- gen_helper_maddr_q(ret, cpu_env, r1, r2, r3, t_n);
19154
+ gen_helper_maddr_q(ret, tcg_env, r1, r2, r3, t_n);
19155
}
19156
19157
static inline void
19158
gen_maddrs_q(TCGv ret, TCGv r1, TCGv r2, TCGv r3, uint32_t n)
19159
{
19160
TCGv t_n = tcg_constant_i32(n);
19161
- gen_helper_maddr_q_ssov(ret, cpu_env, r1, r2, r3, t_n);
19162
+ gen_helper_maddr_q_ssov(ret, tcg_env, r1, r2, r3, t_n);
19163
}
19164
19165
static inline void
19166
@@ -XXX,XX +XXX,XX @@ gen_m16adds64_q(TCGv rl, TCGv rh, TCGv arg1_low, TCGv arg1_high, TCGv arg2,
19167
tcg_gen_shli_i64(t2, t2, 16);
19168
tcg_gen_concat_i32_i64(t1, arg1_low, arg1_high);
19169
19170
- gen_helper_add64_ssov(t1, cpu_env, t1, t2);
19171
+ gen_helper_add64_ssov(t1, tcg_env, t1, t2);
19172
tcg_gen_extr_i64_i32(rl, rh, t1);
19173
}
19174
19175
@@ -XXX,XX +XXX,XX @@ gen_madds32_q(TCGv ret, TCGv arg1, TCGv arg2, TCGv arg3, uint32_t n,
19176
tcg_gen_mul_i64(t2, t2, t3);
19177
tcg_gen_sari_i64(t2, t2, up_shift - n);
19178
19179
- gen_helper_madd32_q_add_ssov(ret, cpu_env, t1, t2);
19180
+ gen_helper_madd32_q_add_ssov(ret, tcg_env, t1, t2);
19181
}
19182
19183
static inline void
19184
@@ -XXX,XX +XXX,XX @@ gen_madds64_q(TCGv rl, TCGv rh, TCGv arg1_low, TCGv arg1_high, TCGv arg2,
19185
TCGv t_n = tcg_constant_i32(n);
19186
19187
tcg_gen_concat_i32_i64(r1, arg1_low, arg1_high);
19188
- gen_helper_madd64_q_ssov(r1, cpu_env, r1, arg2, arg3, t_n);
19189
+ gen_helper_madd64_q_ssov(r1, tcg_env, r1, arg2, arg3, t_n);
19190
tcg_gen_extr_i64_i32(rl, rh, r1);
19191
}
19192
19193
@@ -XXX,XX +XXX,XX @@ gen_msubms_h(TCGv ret_low, TCGv ret_high, TCGv r1_low, TCGv r1_high, TCGv r2,
19194
break;
19195
}
19196
tcg_gen_concat_i32_i64(temp64_2, r1_low, r1_high);
19197
- gen_helper_sub64_ssov(temp64, cpu_env, temp64_2, temp64);
19198
+ gen_helper_sub64_ssov(temp64, tcg_env, temp64_2, temp64);
19199
tcg_gen_extr_i64_i32(ret_low, ret_high, temp64);
19200
}
19201
19202
@@ -XXX,XX +XXX,XX @@ gen_msubr64_h(TCGv ret, TCGv r1_low, TCGv r1_high, TCGv r2, TCGv r3, uint32_t n,
19203
GEN_HELPER_UU(mul_h, temp64, r2, r3, t_n);
19204
break;
19205
}
19206
- gen_helper_subr_h(ret, cpu_env, temp64, r1_low, r1_high);
19207
+ gen_helper_subr_h(ret, tcg_env, temp64, r1_low, r1_high);
19208
}
19209
19210
static inline void
19211
@@ -XXX,XX +XXX,XX @@ gen_msubr64s_h(TCGv ret, TCGv r1_low, TCGv r1_high, TCGv r2, TCGv r3,
19212
GEN_HELPER_UU(mul_h, temp64, r2, r3, t_n);
19213
break;
19214
}
19215
- gen_helper_subr_h_ssov(ret, cpu_env, temp64, r1_low, r1_high);
19216
+ gen_helper_subr_h_ssov(ret, tcg_env, temp64, r1_low, r1_high);
19217
}
19218
19219
static inline void
19220
@@ -XXX,XX +XXX,XX @@ static inline void
19221
gen_msubr_q(TCGv ret, TCGv r1, TCGv r2, TCGv r3, uint32_t n)
19222
{
19223
TCGv temp = tcg_constant_i32(n);
19224
- gen_helper_msubr_q(ret, cpu_env, r1, r2, r3, temp);
19225
+ gen_helper_msubr_q(ret, tcg_env, r1, r2, r3, temp);
19226
}
19227
19228
static inline void
19229
gen_msubrs_q(TCGv ret, TCGv r1, TCGv r2, TCGv r3, uint32_t n)
19230
{
19231
TCGv temp = tcg_constant_i32(n);
19232
- gen_helper_msubr_q_ssov(ret, cpu_env, r1, r2, r3, temp);
19233
+ gen_helper_msubr_q_ssov(ret, tcg_env, r1, r2, r3, temp);
19234
}
19235
19236
static inline void
19237
@@ -XXX,XX +XXX,XX @@ gen_m16subs64_q(TCGv rl, TCGv rh, TCGv arg1_low, TCGv arg1_high, TCGv arg2,
19238
tcg_gen_shli_i64(t2, t2, 16);
19239
tcg_gen_concat_i32_i64(t1, arg1_low, arg1_high);
19240
19241
- gen_helper_sub64_ssov(t1, cpu_env, t1, t2);
19242
+ gen_helper_sub64_ssov(t1, tcg_env, t1, t2);
19243
tcg_gen_extr_i64_i32(rl, rh, t1);
19244
}
19245
19246
@@ -XXX,XX +XXX,XX @@ gen_msubs32_q(TCGv ret, TCGv arg1, TCGv arg2, TCGv arg3, uint32_t n,
19247
tcg_gen_sari_i64(t3, t2, up_shift - n);
19248
tcg_gen_add_i64(t3, t3, t4);
19249
19250
- gen_helper_msub32_q_sub_ssov(ret, cpu_env, t1, t3);
19251
+ gen_helper_msub32_q_sub_ssov(ret, tcg_env, t1, t3);
19252
}
19253
19254
static inline void
19255
@@ -XXX,XX +XXX,XX @@ gen_msubs64_q(TCGv rl, TCGv rh, TCGv arg1_low, TCGv arg1_high, TCGv arg2,
19256
TCGv t_n = tcg_constant_i32(n);
19257
19258
tcg_gen_concat_i32_i64(r1, arg1_low, arg1_high);
19259
- gen_helper_msub64_q_ssov(r1, cpu_env, r1, arg2, arg3, t_n);
19260
+ gen_helper_msub64_q_ssov(r1, tcg_env, r1, arg2, arg3, t_n);
19261
tcg_gen_extr_i64_i32(rl, rh, r1);
19262
}
19263
19264
@@ -XXX,XX +XXX,XX @@ gen_msubadr32_h(TCGv ret, TCGv r1, TCGv r2, TCGv r3, uint32_t n, uint32_t mode)
19265
}
19266
tcg_gen_andi_tl(temp2, r1, 0xffff0000);
19267
tcg_gen_shli_tl(temp, r1, 16);
19268
- gen_helper_subadr_h(ret, cpu_env, temp64, temp, temp2);
19269
+ gen_helper_subadr_h(ret, tcg_env, temp64, temp, temp2);
19270
}
19271
19272
static inline void
19273
@@ -XXX,XX +XXX,XX @@ gen_msubadms_h(TCGv ret_low, TCGv ret_high, TCGv r1_low, TCGv r1_high, TCGv r2,
19274
tcg_gen_shli_i64(temp64, temp64, 16);
19275
tcg_gen_concat_i32_i64(temp64_2, r1_low, r1_high);
19276
19277
- gen_helper_sub64_ssov(temp64, cpu_env, temp64_2, temp64);
19278
+ gen_helper_sub64_ssov(temp64, tcg_env, temp64_2, temp64);
19279
tcg_gen_extr_i64_i32(ret_low, ret_high, temp64);
19280
}
19281
19282
@@ -XXX,XX +XXX,XX @@ gen_msubadr32s_h(TCGv ret, TCGv r1, TCGv r2, TCGv r3, uint32_t n, uint32_t mode)
19283
}
19284
tcg_gen_andi_tl(temp2, r1, 0xffff0000);
19285
tcg_gen_shli_tl(temp, r1, 16);
19286
- gen_helper_subadr_h_ssov(ret, cpu_env, temp64, temp, temp2);
19287
+ gen_helper_subadr_h_ssov(ret, tcg_env, temp64, temp, temp2);
19288
}
19289
19290
static inline void gen_abs(TCGv ret, TCGv r1)
19291
@@ -XXX,XX +XXX,XX @@ static inline void gen_absdifi(TCGv ret, TCGv r1, int32_t con)
19292
static inline void gen_absdifsi(TCGv ret, TCGv r1, int32_t con)
19293
{
19294
TCGv temp = tcg_constant_i32(con);
19295
- gen_helper_absdif_ssov(ret, cpu_env, r1, temp);
19296
+ gen_helper_absdif_ssov(ret, tcg_env, r1, temp);
19297
}
19298
19299
static inline void gen_mul_i32s(TCGv ret, TCGv r1, TCGv r2)
19300
@@ -XXX,XX +XXX,XX @@ static inline void gen_muli_i64u(TCGv ret_low, TCGv ret_high, TCGv r1,
19301
static inline void gen_mulsi_i32(TCGv ret, TCGv r1, int32_t con)
19302
{
19303
TCGv temp = tcg_constant_i32(con);
19304
- gen_helper_mul_ssov(ret, cpu_env, r1, temp);
19305
+ gen_helper_mul_ssov(ret, tcg_env, r1, temp);
19306
}
19307
19308
static inline void gen_mulsui_i32(TCGv ret, TCGv r1, int32_t con)
19309
{
19310
TCGv temp = tcg_constant_i32(con);
19311
- gen_helper_mul_suov(ret, cpu_env, r1, temp);
19312
+ gen_helper_mul_suov(ret, tcg_env, r1, temp);
19313
}
19314
19315
/* gen_maddsi_32(cpu_gpr_d[r4], cpu_gpr_d[r1], cpu_gpr_d[r3], const9); */
19316
static inline void gen_maddsi_32(TCGv ret, TCGv r1, TCGv r2, int32_t con)
19317
{
19318
TCGv temp = tcg_constant_i32(con);
19319
- gen_helper_madd32_ssov(ret, cpu_env, r1, r2, temp);
19320
+ gen_helper_madd32_ssov(ret, tcg_env, r1, r2, temp);
19321
}
19322
19323
static inline void gen_maddsui_32(TCGv ret, TCGv r1, TCGv r2, int32_t con)
19324
{
19325
TCGv temp = tcg_constant_i32(con);
19326
- gen_helper_madd32_suov(ret, cpu_env, r1, r2, temp);
19327
+ gen_helper_madd32_suov(ret, tcg_env, r1, r2, temp);
19328
}
19329
19330
static void
19331
@@ -XXX,XX +XXX,XX @@ gen_madds_64(TCGv ret_low, TCGv ret_high, TCGv r1, TCGv r2_low, TCGv r2_high,
19332
{
19333
TCGv_i64 temp64 = tcg_temp_new_i64();
19334
tcg_gen_concat_i32_i64(temp64, r2_low, r2_high);
19335
- gen_helper_madd64_ssov(temp64, cpu_env, r1, temp64, r3);
19336
+ gen_helper_madd64_ssov(temp64, tcg_env, r1, temp64, r3);
19337
tcg_gen_extr_i64_i32(ret_low, ret_high, temp64);
19338
}
19339
19340
@@ -XXX,XX +XXX,XX @@ gen_maddsu_64(TCGv ret_low, TCGv ret_high, TCGv r1, TCGv r2_low, TCGv r2_high,
19341
{
19342
TCGv_i64 temp64 = tcg_temp_new_i64();
19343
tcg_gen_concat_i32_i64(temp64, r2_low, r2_high);
19344
- gen_helper_madd64_suov(temp64, cpu_env, r1, temp64, r3);
19345
+ gen_helper_madd64_suov(temp64, tcg_env, r1, temp64, r3);
19346
tcg_gen_extr_i64_i32(ret_low, ret_high, temp64);
19347
}
19348
19349
@@ -XXX,XX +XXX,XX @@ gen_maddsui_64(TCGv ret_low, TCGv ret_high, TCGv r1, TCGv r2_low, TCGv r2_high,
19350
static inline void gen_msubsi_32(TCGv ret, TCGv r1, TCGv r2, int32_t con)
19351
{
19352
TCGv temp = tcg_constant_i32(con);
19353
- gen_helper_msub32_ssov(ret, cpu_env, r1, r2, temp);
19354
+ gen_helper_msub32_ssov(ret, tcg_env, r1, r2, temp);
19355
}
19356
19357
static inline void gen_msubsui_32(TCGv ret, TCGv r1, TCGv r2, int32_t con)
19358
{
19359
TCGv temp = tcg_constant_i32(con);
19360
- gen_helper_msub32_suov(ret, cpu_env, r1, r2, temp);
19361
+ gen_helper_msub32_suov(ret, tcg_env, r1, r2, temp);
19362
}
19363
19364
static inline void
19365
@@ -XXX,XX +XXX,XX @@ gen_msubs_64(TCGv ret_low, TCGv ret_high, TCGv r1, TCGv r2_low, TCGv r2_high,
19366
{
19367
TCGv_i64 temp64 = tcg_temp_new_i64();
19368
tcg_gen_concat_i32_i64(temp64, r2_low, r2_high);
19369
- gen_helper_msub64_ssov(temp64, cpu_env, r1, temp64, r3);
19370
+ gen_helper_msub64_ssov(temp64, tcg_env, r1, temp64, r3);
19371
tcg_gen_extr_i64_i32(ret_low, ret_high, temp64);
19372
}
19373
19374
@@ -XXX,XX +XXX,XX @@ gen_msubsu_64(TCGv ret_low, TCGv ret_high, TCGv r1, TCGv r2_low, TCGv r2_high,
19375
{
19376
TCGv_i64 temp64 = tcg_temp_new_i64();
19377
tcg_gen_concat_i32_i64(temp64, r2_low, r2_high);
19378
- gen_helper_msub64_suov(temp64, cpu_env, r1, temp64, r3);
19379
+ gen_helper_msub64_suov(temp64, tcg_env, r1, temp64, r3);
19380
tcg_gen_extr_i64_i32(ret_low, ret_high, temp64);
19381
}
19382
19383
@@ -XXX,XX +XXX,XX @@ static void gen_shaci(TCGv ret, TCGv r1, int32_t shift_count)
19384
19385
static void gen_shas(TCGv ret, TCGv r1, TCGv r2)
19386
{
19387
- gen_helper_sha_ssov(ret, cpu_env, r1, r2);
19388
+ gen_helper_sha_ssov(ret, tcg_env, r1, r2);
19389
}
19390
19391
static void gen_shasi(TCGv ret, TCGv r1, int32_t con)
19392
@@ -XXX,XX +XXX,XX @@ static void gen_sh_condi(int cond, TCGv ret, TCGv r1, int32_t con)
19393
19394
static inline void gen_adds(TCGv ret, TCGv r1, TCGv r2)
19395
{
19396
- gen_helper_add_ssov(ret, cpu_env, r1, r2);
19397
+ gen_helper_add_ssov(ret, tcg_env, r1, r2);
19398
}
19399
19400
static inline void gen_addsi(TCGv ret, TCGv r1, int32_t con)
19401
{
19402
TCGv temp = tcg_constant_i32(con);
19403
- gen_helper_add_ssov(ret, cpu_env, r1, temp);
19404
+ gen_helper_add_ssov(ret, tcg_env, r1, temp);
19405
}
19406
19407
static inline void gen_addsui(TCGv ret, TCGv r1, int32_t con)
19408
{
19409
TCGv temp = tcg_constant_i32(con);
19410
- gen_helper_add_suov(ret, cpu_env, r1, temp);
19411
+ gen_helper_add_suov(ret, tcg_env, r1, temp);
19412
}
19413
19414
static inline void gen_subs(TCGv ret, TCGv r1, TCGv r2)
19415
{
19416
- gen_helper_sub_ssov(ret, cpu_env, r1, r2);
19417
+ gen_helper_sub_ssov(ret, tcg_env, r1, r2);
19418
}
19419
19420
static inline void gen_subsu(TCGv ret, TCGv r1, TCGv r2)
19421
{
19422
- gen_helper_sub_suov(ret, cpu_env, r1, r2);
19423
+ gen_helper_sub_suov(ret, tcg_env, r1, r2);
19424
}
19425
19426
static inline void gen_bit_2op(TCGv ret, TCGv r1, TCGv r2,
19427
@@ -XXX,XX +XXX,XX @@ gen_dvinit_b(DisasContext *ctx, TCGv rl, TCGv rh, TCGv r1, TCGv r2)
19428
TCGv_i64 ret = tcg_temp_new_i64();
19429
19430
if (!has_feature(ctx, TRICORE_FEATURE_131)) {
19431
- gen_helper_dvinit_b_13(ret, cpu_env, r1, r2);
19432
+ gen_helper_dvinit_b_13(ret, tcg_env, r1, r2);
19433
} else {
19434
- gen_helper_dvinit_b_131(ret, cpu_env, r1, r2);
19435
+ gen_helper_dvinit_b_131(ret, tcg_env, r1, r2);
19436
}
19437
tcg_gen_extr_i64_i32(rl, rh, ret);
19438
}
19439
@@ -XXX,XX +XXX,XX @@ gen_dvinit_h(DisasContext *ctx, TCGv rl, TCGv rh, TCGv r1, TCGv r2)
19440
TCGv_i64 ret = tcg_temp_new_i64();
19441
19442
if (!has_feature(ctx, TRICORE_FEATURE_131)) {
19443
- gen_helper_dvinit_h_13(ret, cpu_env, r1, r2);
19444
+ gen_helper_dvinit_h_13(ret, tcg_env, r1, r2);
19445
} else {
19446
- gen_helper_dvinit_h_131(ret, cpu_env, r1, r2);
19447
+ gen_helper_dvinit_h_131(ret, tcg_env, r1, r2);
19448
}
19449
tcg_gen_extr_i64_i32(rl, rh, ret);
19450
}
19451
@@ -XXX,XX +XXX,XX @@ static void generate_trap(DisasContext *ctx, int class, int tin)
19452
TCGv_i32 tintemp = tcg_constant_i32(tin);
19453
19454
gen_save_pc(ctx->base.pc_next);
19455
- gen_helper_raise_exception_sync(cpu_env, classtemp, tintemp);
19456
+ gen_helper_raise_exception_sync(tcg_env, classtemp, tintemp);
19457
ctx->base.is_jmp = DISAS_NORETURN;
19458
}
19459
19460
@@ -XXX,XX +XXX,XX @@ static void gen_compute_branch(DisasContext *ctx, uint32_t opc, int r1,
19461
break;
19462
case OPC2_32_SYS_RET:
19463
case OPC2_16_SR_RET:
19464
- gen_helper_ret(cpu_env);
19465
+ gen_helper_ret(tcg_env);
19466
ctx->base.is_jmp = DISAS_EXIT;
19467
break;
19468
/* B-format */
19469
@@ -XXX,XX +XXX,XX @@ static void decode_sr_system(DisasContext *ctx)
19470
gen_compute_branch(ctx, op2, 0, 0, 0, 0);
19471
break;
19472
case OPC2_16_SR_RFE:
19473
- gen_helper_rfe(cpu_env);
19474
+ gen_helper_rfe(tcg_env);
19475
ctx->base.is_jmp = DISAS_EXIT;
19476
break;
19477
case OPC2_16_SR_DEBUG:
19478
@@ -XXX,XX +XXX,XX @@ static void decode_bo_addrmode_stctx_post_pre_base(DisasContext *ctx)
19479
switch (op2) {
19480
case OPC2_32_BO_LDLCX_SHORTOFF:
19481
tcg_gen_addi_tl(temp, cpu_gpr_a[r2], off10);
19482
- gen_helper_ldlcx(cpu_env, temp);
19483
+ gen_helper_ldlcx(tcg_env, temp);
19484
break;
19485
case OPC2_32_BO_LDMST_SHORTOFF:
19486
tcg_gen_addi_tl(temp, cpu_gpr_a[r2], off10);
19487
@@ -XXX,XX +XXX,XX @@ static void decode_bo_addrmode_stctx_post_pre_base(DisasContext *ctx)
19488
break;
19489
case OPC2_32_BO_LDUCX_SHORTOFF:
19490
tcg_gen_addi_tl(temp, cpu_gpr_a[r2], off10);
19491
- gen_helper_lducx(cpu_env, temp);
19492
+ gen_helper_lducx(tcg_env, temp);
19493
break;
19494
case OPC2_32_BO_LEA_SHORTOFF:
19495
tcg_gen_addi_tl(cpu_gpr_a[r1], cpu_gpr_a[r2], off10);
19496
break;
19497
case OPC2_32_BO_STLCX_SHORTOFF:
19498
tcg_gen_addi_tl(temp, cpu_gpr_a[r2], off10);
19499
- gen_helper_stlcx(cpu_env, temp);
19500
+ gen_helper_stlcx(tcg_env, temp);
19501
break;
19502
case OPC2_32_BO_STUCX_SHORTOFF:
19503
tcg_gen_addi_tl(temp, cpu_gpr_a[r2], off10);
19504
- gen_helper_stucx(cpu_env, temp);
19505
+ gen_helper_stucx(tcg_env, temp);
19506
break;
19507
case OPC2_32_BO_SWAP_W_SHORTOFF:
19508
tcg_gen_addi_tl(temp, cpu_gpr_a[r2], off10);
19509
@@ -XXX,XX +XXX,XX @@ static void decode_rr_accumulator(DisasContext *ctx)
19510
gen_abs(cpu_gpr_d[r3], cpu_gpr_d[r2]);
19511
break;
19512
case OPC2_32_RR_ABS_B:
19513
- gen_helper_abs_b(cpu_gpr_d[r3], cpu_env, cpu_gpr_d[r2]);
19514
+ gen_helper_abs_b(cpu_gpr_d[r3], tcg_env, cpu_gpr_d[r2]);
19515
break;
19516
case OPC2_32_RR_ABS_H:
19517
- gen_helper_abs_h(cpu_gpr_d[r3], cpu_env, cpu_gpr_d[r2]);
19518
+ gen_helper_abs_h(cpu_gpr_d[r3], tcg_env, cpu_gpr_d[r2]);
19519
break;
19520
case OPC2_32_RR_ABSDIF:
19521
gen_absdif(cpu_gpr_d[r3], cpu_gpr_d[r1], cpu_gpr_d[r2]);
19522
break;
19523
case OPC2_32_RR_ABSDIF_B:
19524
- gen_helper_absdif_b(cpu_gpr_d[r3], cpu_env, cpu_gpr_d[r1],
19525
+ gen_helper_absdif_b(cpu_gpr_d[r3], tcg_env, cpu_gpr_d[r1],
19526
cpu_gpr_d[r2]);
19527
break;
19528
case OPC2_32_RR_ABSDIF_H:
19529
- gen_helper_absdif_h(cpu_gpr_d[r3], cpu_env, cpu_gpr_d[r1],
19530
+ gen_helper_absdif_h(cpu_gpr_d[r3], tcg_env, cpu_gpr_d[r1],
19531
cpu_gpr_d[r2]);
19532
break;
19533
case OPC2_32_RR_ABSDIFS:
19534
- gen_helper_absdif_ssov(cpu_gpr_d[r3], cpu_env, cpu_gpr_d[r1],
19535
+ gen_helper_absdif_ssov(cpu_gpr_d[r3], tcg_env, cpu_gpr_d[r1],
19536
cpu_gpr_d[r2]);
19537
break;
19538
case OPC2_32_RR_ABSDIFS_H:
19539
- gen_helper_absdif_h_ssov(cpu_gpr_d[r3], cpu_env, cpu_gpr_d[r1],
19540
+ gen_helper_absdif_h_ssov(cpu_gpr_d[r3], tcg_env, cpu_gpr_d[r1],
19541
cpu_gpr_d[r2]);
19542
break;
19543
case OPC2_32_RR_ABSS:
19544
- gen_helper_abs_ssov(cpu_gpr_d[r3], cpu_env, cpu_gpr_d[r2]);
19545
+ gen_helper_abs_ssov(cpu_gpr_d[r3], tcg_env, cpu_gpr_d[r2]);
19546
break;
19547
case OPC2_32_RR_ABSS_H:
19548
- gen_helper_abs_h_ssov(cpu_gpr_d[r3], cpu_env, cpu_gpr_d[r2]);
19549
+ gen_helper_abs_h_ssov(cpu_gpr_d[r3], tcg_env, cpu_gpr_d[r2]);
19550
break;
19551
case OPC2_32_RR_ADD:
19552
gen_add_d(cpu_gpr_d[r3], cpu_gpr_d[r1], cpu_gpr_d[r2]);
19553
break;
19554
case OPC2_32_RR_ADD_B:
19555
- gen_helper_add_b(cpu_gpr_d[r3], cpu_env, cpu_gpr_d[r1], cpu_gpr_d[r2]);
19556
+ gen_helper_add_b(cpu_gpr_d[r3], tcg_env, cpu_gpr_d[r1], cpu_gpr_d[r2]);
19557
break;
19558
case OPC2_32_RR_ADD_H:
19559
- gen_helper_add_h(cpu_gpr_d[r3], cpu_env, cpu_gpr_d[r1], cpu_gpr_d[r2]);
19560
+ gen_helper_add_h(cpu_gpr_d[r3], tcg_env, cpu_gpr_d[r1], cpu_gpr_d[r2]);
19561
break;
19562
case OPC2_32_RR_ADDC:
19563
gen_addc_CC(cpu_gpr_d[r3], cpu_gpr_d[r1], cpu_gpr_d[r2]);
19564
@@ -XXX,XX +XXX,XX @@ static void decode_rr_accumulator(DisasContext *ctx)
19565
gen_adds(cpu_gpr_d[r3], cpu_gpr_d[r1], cpu_gpr_d[r2]);
19566
break;
19567
case OPC2_32_RR_ADDS_H:
19568
- gen_helper_add_h_ssov(cpu_gpr_d[r3], cpu_env, cpu_gpr_d[r1],
19569
+ gen_helper_add_h_ssov(cpu_gpr_d[r3], tcg_env, cpu_gpr_d[r1],
19570
cpu_gpr_d[r2]);
19571
break;
19572
case OPC2_32_RR_ADDS_HU:
19573
- gen_helper_add_h_suov(cpu_gpr_d[r3], cpu_env, cpu_gpr_d[r1],
19574
+ gen_helper_add_h_suov(cpu_gpr_d[r3], tcg_env, cpu_gpr_d[r1],
19575
cpu_gpr_d[r2]);
19576
break;
19577
case OPC2_32_RR_ADDS_U:
19578
- gen_helper_add_suov(cpu_gpr_d[r3], cpu_env, cpu_gpr_d[r1],
19579
+ gen_helper_add_suov(cpu_gpr_d[r3], tcg_env, cpu_gpr_d[r1],
19580
cpu_gpr_d[r2]);
19581
break;
19582
case OPC2_32_RR_ADDX:
19583
@@ -XXX,XX +XXX,XX @@ static void decode_rr_accumulator(DisasContext *ctx)
19584
gen_sub_d(cpu_gpr_d[r3], cpu_gpr_d[r1], cpu_gpr_d[r2]);
19585
break;
19586
case OPC2_32_RR_SUB_B:
19587
- gen_helper_sub_b(cpu_gpr_d[r3], cpu_env, cpu_gpr_d[r1], cpu_gpr_d[r2]);
19588
+ gen_helper_sub_b(cpu_gpr_d[r3], tcg_env, cpu_gpr_d[r1], cpu_gpr_d[r2]);
19589
break;
19590
case OPC2_32_RR_SUB_H:
19591
- gen_helper_sub_h(cpu_gpr_d[r3], cpu_env, cpu_gpr_d[r1], cpu_gpr_d[r2]);
19592
+ gen_helper_sub_h(cpu_gpr_d[r3], tcg_env, cpu_gpr_d[r1], cpu_gpr_d[r2]);
19593
break;
19594
case OPC2_32_RR_SUBC:
19595
gen_subc_CC(cpu_gpr_d[r3], cpu_gpr_d[r1], cpu_gpr_d[r2]);
19596
@@ -XXX,XX +XXX,XX @@ static void decode_rr_accumulator(DisasContext *ctx)
19597
gen_subsu(cpu_gpr_d[r3], cpu_gpr_d[r1], cpu_gpr_d[r2]);
19598
break;
19599
case OPC2_32_RR_SUBS_H:
19600
- gen_helper_sub_h_ssov(cpu_gpr_d[r3], cpu_env, cpu_gpr_d[r1],
19601
+ gen_helper_sub_h_ssov(cpu_gpr_d[r3], tcg_env, cpu_gpr_d[r1],
19602
cpu_gpr_d[r2]);
19603
break;
19604
case OPC2_32_RR_SUBS_HU:
19605
- gen_helper_sub_h_suov(cpu_gpr_d[r3], cpu_env, cpu_gpr_d[r1],
19606
+ gen_helper_sub_h_suov(cpu_gpr_d[r3], tcg_env, cpu_gpr_d[r1],
19607
cpu_gpr_d[r2]);
19608
break;
19609
case OPC2_32_RR_SUBX:
19610
@@ -XXX,XX +XXX,XX @@ static void decode_rr_logical_shift(DisasContext *ctx)
19611
gen_helper_sh_h(cpu_gpr_d[r3], cpu_gpr_d[r1], cpu_gpr_d[r2]);
19612
break;
19613
case OPC2_32_RR_SHA:
19614
- gen_helper_sha(cpu_gpr_d[r3], cpu_env, cpu_gpr_d[r1], cpu_gpr_d[r2]);
19615
+ gen_helper_sha(cpu_gpr_d[r3], tcg_env, cpu_gpr_d[r1], cpu_gpr_d[r2]);
19616
break;
19617
case OPC2_32_RR_SHA_H:
19618
gen_helper_sha_h(cpu_gpr_d[r3], cpu_gpr_d[r1], cpu_gpr_d[r2]);
19619
@@ -XXX,XX +XXX,XX @@ static void decode_rr_divide(DisasContext *ctx)
19620
}
19621
break;
19622
case OPC2_32_RR_MUL_F:
19623
- gen_helper_fmul(cpu_gpr_d[r3], cpu_env, cpu_gpr_d[r1], cpu_gpr_d[r2]);
19624
+ gen_helper_fmul(cpu_gpr_d[r3], tcg_env, cpu_gpr_d[r1], cpu_gpr_d[r2]);
19625
break;
19626
case OPC2_32_RR_DIV_F:
19627
- gen_helper_fdiv(cpu_gpr_d[r3], cpu_env, cpu_gpr_d[r1], cpu_gpr_d[r2]);
19628
+ gen_helper_fdiv(cpu_gpr_d[r3], tcg_env, cpu_gpr_d[r1], cpu_gpr_d[r2]);
19629
break;
19630
case OPC2_32_RR_FTOHP:
19631
if (has_feature(ctx, TRICORE_FEATURE_162)) {
19632
- gen_helper_ftohp(cpu_gpr_d[r3], cpu_env, cpu_gpr_d[r1]);
19633
+ gen_helper_ftohp(cpu_gpr_d[r3], tcg_env, cpu_gpr_d[r1]);
19634
} else {
19635
generate_trap(ctx, TRAPC_INSN_ERR, TIN2_IOPC);
19636
}
19637
break;
19638
case OPC2_32_RR_HPTOF:
19639
if (has_feature(ctx, TRICORE_FEATURE_162)) {
19640
- gen_helper_hptof(cpu_gpr_d[r3], cpu_env, cpu_gpr_d[r1]);
19641
+ gen_helper_hptof(cpu_gpr_d[r3], tcg_env, cpu_gpr_d[r1]);
19642
} else {
19643
generate_trap(ctx, TRAPC_INSN_ERR, TIN2_IOPC);
19644
}
19645
break;
19646
case OPC2_32_RR_CMP_F:
19647
- gen_helper_fcmp(cpu_gpr_d[r3], cpu_env, cpu_gpr_d[r1], cpu_gpr_d[r2]);
19648
+ gen_helper_fcmp(cpu_gpr_d[r3], tcg_env, cpu_gpr_d[r1], cpu_gpr_d[r2]);
19649
break;
19650
case OPC2_32_RR_FTOI:
19651
- gen_helper_ftoi(cpu_gpr_d[r3], cpu_env, cpu_gpr_d[r1]);
19652
+ gen_helper_ftoi(cpu_gpr_d[r3], tcg_env, cpu_gpr_d[r1]);
19653
break;
19654
case OPC2_32_RR_ITOF:
19655
- gen_helper_itof(cpu_gpr_d[r3], cpu_env, cpu_gpr_d[r1]);
19656
+ gen_helper_itof(cpu_gpr_d[r3], tcg_env, cpu_gpr_d[r1]);
19657
break;
19658
case OPC2_32_RR_FTOU:
19659
- gen_helper_ftou(cpu_gpr_d[r3], cpu_env, cpu_gpr_d[r1]);
19660
+ gen_helper_ftou(cpu_gpr_d[r3], tcg_env, cpu_gpr_d[r1]);
19661
break;
19662
case OPC2_32_RR_FTOUZ:
19663
if (has_feature(ctx, TRICORE_FEATURE_131)) {
19664
- gen_helper_ftouz(cpu_gpr_d[r3], cpu_env, cpu_gpr_d[r1]);
19665
+ gen_helper_ftouz(cpu_gpr_d[r3], tcg_env, cpu_gpr_d[r1]);
19666
} else {
19667
generate_trap(ctx, TRAPC_INSN_ERR, TIN2_IOPC);
19668
}
19669
break;
19670
case OPC2_32_RR_UPDFL:
19671
- gen_helper_updfl(cpu_env, cpu_gpr_d[r1]);
19672
+ gen_helper_updfl(tcg_env, cpu_gpr_d[r1]);
19673
break;
19674
case OPC2_32_RR_UTOF:
19675
- gen_helper_utof(cpu_gpr_d[r3], cpu_env, cpu_gpr_d[r1]);
19676
+ gen_helper_utof(cpu_gpr_d[r3], tcg_env, cpu_gpr_d[r1]);
19677
break;
19678
case OPC2_32_RR_FTOIZ:
19679
- gen_helper_ftoiz(cpu_gpr_d[r3], cpu_env, cpu_gpr_d[r1]);
19680
+ gen_helper_ftoiz(cpu_gpr_d[r3], tcg_env, cpu_gpr_d[r1]);
19681
break;
19682
case OPC2_32_RR_QSEED_F:
19683
- gen_helper_qseed(cpu_gpr_d[r3], cpu_env, cpu_gpr_d[r1]);
19684
+ gen_helper_qseed(cpu_gpr_d[r3], tcg_env, cpu_gpr_d[r1]);
19685
break;
19686
default:
19687
generate_trap(ctx, TRAPC_INSN_ERR, TIN2_IOPC);
19688
@@ -XXX,XX +XXX,XX @@ static void decode_rr2_mul(DisasContext *ctx)
19689
cpu_gpr_d[r2]);
19690
break;
19691
case OPC2_32_RR2_MULS_32:
19692
- gen_helper_mul_ssov(cpu_gpr_d[r3], cpu_env, cpu_gpr_d[r1],
19693
+ gen_helper_mul_ssov(cpu_gpr_d[r3], tcg_env, cpu_gpr_d[r1],
19694
cpu_gpr_d[r2]);
19695
break;
19696
case OPC2_32_RR2_MUL_U_64:
19697
@@ -XXX,XX +XXX,XX @@ static void decode_rr2_mul(DisasContext *ctx)
19698
cpu_gpr_d[r2]);
19699
break;
19700
case OPC2_32_RR2_MULS_U_32:
19701
- gen_helper_mul_suov(cpu_gpr_d[r3], cpu_env, cpu_gpr_d[r1],
19702
+ gen_helper_mul_suov(cpu_gpr_d[r3], tcg_env, cpu_gpr_d[r1],
19703
cpu_gpr_d[r2]);
19704
break;
19705
default:
19706
@@ -XXX,XX +XXX,XX @@ static void decode_rrr_divide(DisasContext *ctx)
19707
}
19708
break;
19709
case OPC2_32_RRR_ADD_F:
19710
- gen_helper_fadd(cpu_gpr_d[r4], cpu_env, cpu_gpr_d[r1], cpu_gpr_d[r3]);
19711
+ gen_helper_fadd(cpu_gpr_d[r4], tcg_env, cpu_gpr_d[r1], cpu_gpr_d[r3]);
19712
break;
19713
case OPC2_32_RRR_SUB_F:
19714
- gen_helper_fsub(cpu_gpr_d[r4], cpu_env, cpu_gpr_d[r1], cpu_gpr_d[r3]);
19715
+ gen_helper_fsub(cpu_gpr_d[r4], tcg_env, cpu_gpr_d[r1], cpu_gpr_d[r3]);
19716
break;
19717
case OPC2_32_RRR_MADD_F:
19718
- gen_helper_fmadd(cpu_gpr_d[r4], cpu_env, cpu_gpr_d[r1],
19719
+ gen_helper_fmadd(cpu_gpr_d[r4], tcg_env, cpu_gpr_d[r1],
19720
cpu_gpr_d[r2], cpu_gpr_d[r3]);
19721
break;
19722
case OPC2_32_RRR_MSUB_F:
19723
- gen_helper_fmsub(cpu_gpr_d[r4], cpu_env, cpu_gpr_d[r1],
19724
+ gen_helper_fmsub(cpu_gpr_d[r4], tcg_env, cpu_gpr_d[r1],
19725
cpu_gpr_d[r2], cpu_gpr_d[r3]);
19726
break;
19727
default:
19728
@@ -XXX,XX +XXX,XX @@ static void decode_rrr2_madd(DisasContext *ctx)
19729
cpu_gpr_d[r3], cpu_gpr_d[r3+1], cpu_gpr_d[r2]);
19730
break;
19731
case OPC2_32_RRR2_MADDS_32:
19732
- gen_helper_madd32_ssov(cpu_gpr_d[r4], cpu_env, cpu_gpr_d[r1],
19733
+ gen_helper_madd32_ssov(cpu_gpr_d[r4], tcg_env, cpu_gpr_d[r1],
19734
cpu_gpr_d[r3], cpu_gpr_d[r2]);
19735
break;
19736
case OPC2_32_RRR2_MADDS_64:
19737
@@ -XXX,XX +XXX,XX @@ static void decode_rrr2_madd(DisasContext *ctx)
19738
cpu_gpr_d[r3], cpu_gpr_d[r3+1], cpu_gpr_d[r2]);
19739
break;
19740
case OPC2_32_RRR2_MADDS_U_32:
19741
- gen_helper_madd32_suov(cpu_gpr_d[r4], cpu_env, cpu_gpr_d[r1],
19742
+ gen_helper_madd32_suov(cpu_gpr_d[r4], tcg_env, cpu_gpr_d[r1],
19743
cpu_gpr_d[r3], cpu_gpr_d[r2]);
19744
break;
19745
case OPC2_32_RRR2_MADDS_U_64:
19746
@@ -XXX,XX +XXX,XX @@ static void decode_rrr2_msub(DisasContext *ctx)
19747
cpu_gpr_d[r3], cpu_gpr_d[r3+1], cpu_gpr_d[r2]);
19748
break;
19749
case OPC2_32_RRR2_MSUBS_32:
19750
- gen_helper_msub32_ssov(cpu_gpr_d[r4], cpu_env, cpu_gpr_d[r1],
19751
+ gen_helper_msub32_ssov(cpu_gpr_d[r4], tcg_env, cpu_gpr_d[r1],
19752
cpu_gpr_d[r3], cpu_gpr_d[r2]);
19753
break;
19754
case OPC2_32_RRR2_MSUBS_64:
19755
@@ -XXX,XX +XXX,XX @@ static void decode_rrr2_msub(DisasContext *ctx)
19756
cpu_gpr_d[r3], cpu_gpr_d[r3+1], cpu_gpr_d[r2]);
19757
break;
19758
case OPC2_32_RRR2_MSUBS_U_32:
19759
- gen_helper_msub32_suov(cpu_gpr_d[r4], cpu_env, cpu_gpr_d[r1],
19760
+ gen_helper_msub32_suov(cpu_gpr_d[r4], tcg_env, cpu_gpr_d[r1],
19761
cpu_gpr_d[r3], cpu_gpr_d[r2]);
19762
break;
19763
case OPC2_32_RRR2_MSUBS_U_64:
19764
@@ -XXX,XX +XXX,XX @@ static void decode_sys_interrupts(DisasContext *ctx)
19765
gen_fret(ctx);
19766
break;
19767
case OPC2_32_SYS_RFE:
19768
- gen_helper_rfe(cpu_env);
19769
+ gen_helper_rfe(tcg_env);
19770
ctx->base.is_jmp = DISAS_EXIT;
19771
break;
19772
case OPC2_32_SYS_RFM:
19773
@@ -XXX,XX +XXX,XX @@ static void decode_sys_interrupts(DisasContext *ctx)
19774
tmp = tcg_temp_new();
19775
l1 = gen_new_label();
19776
19777
- tcg_gen_ld32u_tl(tmp, cpu_env, offsetof(CPUTriCoreState, DBGSR));
19778
+ tcg_gen_ld32u_tl(tmp, tcg_env, offsetof(CPUTriCoreState, DBGSR));
19779
tcg_gen_andi_tl(tmp, tmp, MASK_DBGSR_DE);
19780
tcg_gen_brcondi_tl(TCG_COND_NE, tmp, 1, l1);
19781
- gen_helper_rfm(cpu_env);
19782
+ gen_helper_rfm(tcg_env);
19783
gen_set_label(l1);
19784
ctx->base.is_jmp = DISAS_EXIT;
19785
} else {
19786
@@ -XXX,XX +XXX,XX @@ static void decode_sys_interrupts(DisasContext *ctx)
19787
}
19788
break;
19789
case OPC2_32_SYS_RSLCX:
19790
- gen_helper_rslcx(cpu_env);
19791
+ gen_helper_rslcx(tcg_env);
19792
break;
19793
case OPC2_32_SYS_SVLCX:
19794
- gen_helper_svlcx(cpu_env);
19795
+ gen_helper_svlcx(tcg_env);
19796
break;
19797
case OPC2_32_SYS_RESTORE:
19798
if (has_feature(ctx, TRICORE_FEATURE_16)) {
19799
@@ -XXX,XX +XXX,XX @@ void cpu_state_reset(CPUTriCoreState *env)
19800
19801
static void tricore_tcg_init_csfr(void)
19802
{
19803
- cpu_PCXI = tcg_global_mem_new(cpu_env,
19804
+ cpu_PCXI = tcg_global_mem_new(tcg_env,
19805
offsetof(CPUTriCoreState, PCXI), "PCXI");
19806
- cpu_PSW = tcg_global_mem_new(cpu_env,
19807
+ cpu_PSW = tcg_global_mem_new(tcg_env,
19808
offsetof(CPUTriCoreState, PSW), "PSW");
19809
- cpu_PC = tcg_global_mem_new(cpu_env,
19810
+ cpu_PC = tcg_global_mem_new(tcg_env,
19811
offsetof(CPUTriCoreState, PC), "PC");
19812
- cpu_ICR = tcg_global_mem_new(cpu_env,
19813
+ cpu_ICR = tcg_global_mem_new(tcg_env,
19814
offsetof(CPUTriCoreState, ICR), "ICR");
19815
}
19816
19817
@@ -XXX,XX +XXX,XX @@ void tricore_tcg_init(void)
19818
19819
/* reg init */
19820
for (i = 0 ; i < 16 ; i++) {
19821
- cpu_gpr_a[i] = tcg_global_mem_new(cpu_env,
19822
+ cpu_gpr_a[i] = tcg_global_mem_new(tcg_env,
19823
offsetof(CPUTriCoreState, gpr_a[i]),
19824
regnames_a[i]);
19825
}
19826
for (i = 0 ; i < 16 ; i++) {
19827
- cpu_gpr_d[i] = tcg_global_mem_new(cpu_env,
19828
+ cpu_gpr_d[i] = tcg_global_mem_new(tcg_env,
19829
offsetof(CPUTriCoreState, gpr_d[i]),
19830
regnames_d[i]);
19831
}
19832
tricore_tcg_init_csfr();
19833
/* init PSW flag cache */
19834
- cpu_PSW_C = tcg_global_mem_new(cpu_env,
19835
+ cpu_PSW_C = tcg_global_mem_new(tcg_env,
19836
offsetof(CPUTriCoreState, PSW_USB_C),
19837
"PSW_C");
19838
- cpu_PSW_V = tcg_global_mem_new(cpu_env,
19839
+ cpu_PSW_V = tcg_global_mem_new(tcg_env,
19840
offsetof(CPUTriCoreState, PSW_USB_V),
19841
"PSW_V");
19842
- cpu_PSW_SV = tcg_global_mem_new(cpu_env,
19843
+ cpu_PSW_SV = tcg_global_mem_new(tcg_env,
19844
offsetof(CPUTriCoreState, PSW_USB_SV),
19845
"PSW_SV");
19846
- cpu_PSW_AV = tcg_global_mem_new(cpu_env,
19847
+ cpu_PSW_AV = tcg_global_mem_new(tcg_env,
19848
offsetof(CPUTriCoreState, PSW_USB_AV),
19849
"PSW_AV");
19850
- cpu_PSW_SAV = tcg_global_mem_new(cpu_env,
19851
+ cpu_PSW_SAV = tcg_global_mem_new(tcg_env,
19852
offsetof(CPUTriCoreState, PSW_USB_SAV),
19853
"PSW_SAV");
19854
}
19855
diff --git a/target/xtensa/translate.c b/target/xtensa/translate.c
19856
index XXXXXXX..XXXXXXX 100644
19857
--- a/target/xtensa/translate.c
19858
+++ b/target/xtensa/translate.c
19859
@@ -XXX,XX +XXX,XX @@ void xtensa_translate_init(void)
19860
};
19861
int i;
19862
19863
- cpu_pc = tcg_global_mem_new_i32(cpu_env,
19864
+ cpu_pc = tcg_global_mem_new_i32(tcg_env,
19865
offsetof(CPUXtensaState, pc), "pc");
19866
19867
for (i = 0; i < 16; i++) {
19868
- cpu_R[i] = tcg_global_mem_new_i32(cpu_env,
19869
+ cpu_R[i] = tcg_global_mem_new_i32(tcg_env,
19870
offsetof(CPUXtensaState, regs[i]),
19871
regnames[i]);
19872
}
19873
19874
for (i = 0; i < 16; i++) {
19875
- cpu_FR[i] = tcg_global_mem_new_i32(cpu_env,
19876
+ cpu_FR[i] = tcg_global_mem_new_i32(tcg_env,
19877
offsetof(CPUXtensaState,
19878
fregs[i].f32[FP_F32_LOW]),
19879
fregnames[i]);
19880
}
19881
19882
for (i = 0; i < 16; i++) {
19883
- cpu_FRD[i] = tcg_global_mem_new_i64(cpu_env,
19884
+ cpu_FRD[i] = tcg_global_mem_new_i64(tcg_env,
19885
offsetof(CPUXtensaState,
19886
fregs[i].f64),
19887
fregnames[i]);
19888
}
19889
19890
for (i = 0; i < 4; i++) {
19891
- cpu_MR[i] = tcg_global_mem_new_i32(cpu_env,
19892
+ cpu_MR[i] = tcg_global_mem_new_i32(tcg_env,
19893
offsetof(CPUXtensaState,
19894
sregs[MR + i]),
19895
mregnames[i]);
19896
}
19897
19898
for (i = 0; i < 16; i++) {
19899
- cpu_BR[i] = tcg_global_mem_new_i32(cpu_env,
19900
+ cpu_BR[i] = tcg_global_mem_new_i32(tcg_env,
19901
offsetof(CPUXtensaState,
19902
sregs[BR]),
19903
bregnames[i]);
19904
if (i % 4 == 0) {
19905
- cpu_BR4[i / 4] = tcg_global_mem_new_i32(cpu_env,
19906
+ cpu_BR4[i / 4] = tcg_global_mem_new_i32(tcg_env,
19907
offsetof(CPUXtensaState,
19908
sregs[BR]),
19909
bregnames[i]);
19910
}
19911
if (i % 8 == 0) {
19912
- cpu_BR8[i / 8] = tcg_global_mem_new_i32(cpu_env,
19913
+ cpu_BR8[i / 8] = tcg_global_mem_new_i32(tcg_env,
19914
offsetof(CPUXtensaState,
19915
sregs[BR]),
19916
bregnames[i]);
19917
@@ -XXX,XX +XXX,XX @@ void xtensa_translate_init(void)
19918
19919
for (i = 0; i < 256; ++i) {
19920
if (sr_name[i]) {
19921
- cpu_SR[i] = tcg_global_mem_new_i32(cpu_env,
19922
+ cpu_SR[i] = tcg_global_mem_new_i32(tcg_env,
19923
offsetof(CPUXtensaState,
19924
sregs[i]),
19925
sr_name[i]);
19926
@@ -XXX,XX +XXX,XX @@ void xtensa_translate_init(void)
19927
19928
for (i = 0; i < 256; ++i) {
19929
if (ur_name[i]) {
19930
- cpu_UR[i] = tcg_global_mem_new_i32(cpu_env,
19931
+ cpu_UR[i] = tcg_global_mem_new_i32(tcg_env,
19932
offsetof(CPUXtensaState,
19933
uregs[i]),
19934
ur_name[i]);
19935
@@ -XXX,XX +XXX,XX @@ void xtensa_translate_init(void)
19936
}
19937
19938
cpu_windowbase_next =
19939
- tcg_global_mem_new_i32(cpu_env,
19940
+ tcg_global_mem_new_i32(tcg_env,
19941
offsetof(CPUXtensaState, windowbase_next),
19942
"windowbase_next");
19943
cpu_exclusive_addr =
19944
- tcg_global_mem_new_i32(cpu_env,
19945
+ tcg_global_mem_new_i32(tcg_env,
19946
offsetof(CPUXtensaState, exclusive_addr),
19947
"exclusive_addr");
19948
cpu_exclusive_val =
19949
- tcg_global_mem_new_i32(cpu_env,
19950
+ tcg_global_mem_new_i32(tcg_env,
19951
offsetof(CPUXtensaState, exclusive_val),
19952
"exclusive_val");
19953
}
19954
@@ -XXX,XX +XXX,XX @@ static void gen_left_shift_sar(DisasContext *dc, TCGv_i32 sa)
19955
19956
static void gen_exception(DisasContext *dc, int excp)
19957
{
19958
- gen_helper_exception(cpu_env, tcg_constant_i32(excp));
19959
+ gen_helper_exception(tcg_env, tcg_constant_i32(excp));
19960
}
19961
19962
static void gen_exception_cause(DisasContext *dc, uint32_t cause)
19963
{
19964
TCGv_i32 pc = tcg_constant_i32(dc->pc);
19965
- gen_helper_exception_cause(cpu_env, pc, tcg_constant_i32(cause));
19966
+ gen_helper_exception_cause(tcg_env, pc, tcg_constant_i32(cause));
19967
if (cause == ILLEGAL_INSTRUCTION_CAUSE ||
19968
cause == SYSCALL_CAUSE) {
19969
dc->base.is_jmp = DISAS_NORETURN;
19970
@@ -XXX,XX +XXX,XX @@ static void gen_exception_cause(DisasContext *dc, uint32_t cause)
19971
static void gen_debug_exception(DisasContext *dc, uint32_t cause)
19972
{
19973
TCGv_i32 pc = tcg_constant_i32(dc->pc);
19974
- gen_helper_debug_exception(cpu_env, pc, tcg_constant_i32(cause));
19975
+ gen_helper_debug_exception(tcg_env, pc, tcg_constant_i32(cause));
19976
if (cause & (DEBUGCAUSE_IB | DEBUGCAUSE_BI | DEBUGCAUSE_BN)) {
19977
dc->base.is_jmp = DISAS_NORETURN;
19978
}
19979
@@ -XXX,XX +XXX,XX @@ static bool gen_window_check(DisasContext *dc, uint32_t mask)
19980
TCGv_i32 pc = tcg_constant_i32(dc->pc);
19981
TCGv_i32 w = tcg_constant_i32(r / 4);
19982
19983
- gen_helper_window_check(cpu_env, pc, w);
19984
+ gen_helper_window_check(tcg_env, pc, w);
19985
dc->base.is_jmp = DISAS_NORETURN;
19986
return false;
19987
}
19988
@@ -XXX,XX +XXX,XX @@ static int gen_postprocess(DisasContext *dc, int slot)
19989
#ifndef CONFIG_USER_ONLY
19990
if (op_flags & XTENSA_OP_CHECK_INTERRUPTS) {
19991
translator_io_start(&dc->base);
19992
- gen_helper_check_interrupts(cpu_env);
19993
+ gen_helper_check_interrupts(tcg_env);
19994
}
19995
#endif
19996
if (op_flags & XTENSA_OP_SYNC_REGISTER_WINDOW) {
19997
- gen_helper_sync_windowbase(cpu_env);
19998
+ gen_helper_sync_windowbase(tcg_env);
19999
}
20000
if (op_flags & XTENSA_OP_EXIT_TB_M1) {
20001
slot = -1;
20002
@@ -XXX,XX +XXX,XX @@ static void disas_xtensa_insn(CPUXtensaState *env, DisasContext *dc)
20003
if (op_flags & XTENSA_OP_UNDERFLOW) {
20004
TCGv_i32 pc = tcg_constant_i32(dc->pc);
20005
20006
- gen_helper_test_underflow_retw(cpu_env, pc);
20007
+ gen_helper_test_underflow_retw(tcg_env, pc);
20008
}
20009
20010
if (op_flags & XTENSA_OP_ALLOCA) {
20011
TCGv_i32 pc = tcg_constant_i32(dc->pc);
20012
20013
- gen_helper_movsp(cpu_env, pc);
20014
+ gen_helper_movsp(tcg_env, pc);
20015
}
20016
20017
if (coprocessor && !gen_check_cpenable(dc, coprocessor)) {
20018
@@ -XXX,XX +XXX,XX @@ static void translate_entry(DisasContext *dc, const OpcodeArg arg[],
20019
TCGv_i32 pc = tcg_constant_i32(dc->pc);
20020
TCGv_i32 s = tcg_constant_i32(arg[0].imm);
20021
TCGv_i32 imm = tcg_constant_i32(arg[1].imm);
20022
- gen_helper_entry(cpu_env, pc, s, imm);
20023
+ gen_helper_entry(tcg_env, pc, s, imm);
20024
}
20025
20026
static void translate_extui(DisasContext *dc, const OpcodeArg arg[],
20027
@@ -XXX,XX +XXX,XX @@ static void translate_icache(DisasContext *dc, const OpcodeArg arg[],
20028
20029
tcg_gen_movi_i32(cpu_pc, dc->pc);
20030
tcg_gen_addi_i32(addr, arg[0].in, arg[1].imm);
20031
- gen_helper_itlb_hit_test(cpu_env, addr);
20032
+ gen_helper_itlb_hit_test(tcg_env, addr);
20033
#endif
20034
}
20035
20036
@@ -XXX,XX +XXX,XX @@ static void translate_itlb(DisasContext *dc, const OpcodeArg arg[],
20037
#ifndef CONFIG_USER_ONLY
20038
TCGv_i32 dtlb = tcg_constant_i32(par[0]);
20039
20040
- gen_helper_itlb(cpu_env, arg[0].in, dtlb);
20041
+ gen_helper_itlb(tcg_env, arg[0].in, dtlb);
20042
#endif
20043
}
20044
20045
@@ -XXX,XX +XXX,XX @@ static void gen_check_exclusive(DisasContext *dc, TCGv_i32 addr, bool is_write)
20046
if (!option_enabled(dc, XTENSA_OPTION_MPU)) {
20047
TCGv_i32 pc = tcg_constant_i32(dc->pc);
20048
20049
- gen_helper_check_exclusive(cpu_env, pc, addr,
20050
+ gen_helper_check_exclusive(tcg_env, pc, addr,
20051
tcg_constant_i32(is_write));
20052
}
20053
}
20054
@@ -XXX,XX +XXX,XX @@ static void translate_ptlb(DisasContext *dc, const OpcodeArg arg[],
20055
TCGv_i32 dtlb = tcg_constant_i32(par[0]);
20056
20057
tcg_gen_movi_i32(cpu_pc, dc->pc);
20058
- gen_helper_ptlb(arg[0].out, cpu_env, arg[1].in, dtlb);
20059
+ gen_helper_ptlb(arg[0].out, tcg_env, arg[1].in, dtlb);
20060
#endif
20061
}
20062
20063
@@ -XXX,XX +XXX,XX @@ static void translate_pptlb(DisasContext *dc, const OpcodeArg arg[],
20064
{
20065
#ifndef CONFIG_USER_ONLY
20066
tcg_gen_movi_i32(cpu_pc, dc->pc);
20067
- gen_helper_pptlb(arg[0].out, cpu_env, arg[1].in);
20068
+ gen_helper_pptlb(arg[0].out, tcg_env, arg[1].in);
20069
#endif
20070
}
20071
20072
@@ -XXX,XX +XXX,XX @@ static void translate_remu(DisasContext *dc, const OpcodeArg arg[],
20073
static void translate_rer(DisasContext *dc, const OpcodeArg arg[],
20074
const uint32_t par[])
20075
{
20076
- gen_helper_rer(arg[0].out, cpu_env, arg[1].in);
20077
+ gen_helper_rer(arg[0].out, tcg_env, arg[1].in);
20078
}
20079
20080
static void translate_ret(DisasContext *dc, const OpcodeArg arg[],
20081
@@ -XXX,XX +XXX,XX @@ static uint32_t test_exceptions_retw(DisasContext *dc, const OpcodeArg arg[],
20082
} else {
20083
TCGv_i32 pc = tcg_constant_i32(dc->pc);
20084
20085
- gen_helper_test_ill_retw(cpu_env, pc);
20086
+ gen_helper_test_ill_retw(tcg_env, pc);
20087
return 0;
20088
}
20089
}
20090
@@ -XXX,XX +XXX,XX @@ static void translate_retw(DisasContext *dc, const OpcodeArg arg[],
20091
cpu_SR[WINDOW_START], tmp);
20092
tcg_gen_movi_i32(tmp, dc->pc);
20093
tcg_gen_deposit_i32(tmp, tmp, cpu_R[0], 0, 30);
20094
- gen_helper_retw(cpu_env, cpu_R[0]);
20095
+ gen_helper_retw(tcg_env, cpu_R[0]);
20096
gen_jump(dc, tmp);
20097
}
20098
20099
@@ -XXX,XX +XXX,XX @@ static void translate_rfw(DisasContext *dc, const OpcodeArg arg[],
20100
cpu_SR[WINDOW_START], tmp);
20101
}
20102
20103
- gen_helper_restore_owb(cpu_env);
20104
+ gen_helper_restore_owb(tcg_env);
20105
gen_jump(dc, cpu_SR[EPC1]);
20106
}
20107
20108
@@ -XXX,XX +XXX,XX @@ static void translate_rsr_ccount(DisasContext *dc, const OpcodeArg arg[],
20109
{
20110
#ifndef CONFIG_USER_ONLY
20111
translator_io_start(&dc->base);
20112
- gen_helper_update_ccount(cpu_env);
20113
+ gen_helper_update_ccount(tcg_env);
20114
tcg_gen_mov_i32(arg[0].out, cpu_SR[par[0]]);
20115
#endif
20116
}
20117
@@ -XXX,XX +XXX,XX @@ static void translate_rtlb(DisasContext *dc, const OpcodeArg arg[],
20118
};
20119
TCGv_i32 dtlb = tcg_constant_i32(par[0]);
20120
20121
- helper[par[1]](arg[0].out, cpu_env, arg[1].in, dtlb);
20122
+ helper[par[1]](arg[0].out, tcg_env, arg[1].in, dtlb);
20123
#endif
20124
}
20125
20126
@@ -XXX,XX +XXX,XX @@ static void translate_rptlb0(DisasContext *dc, const OpcodeArg arg[],
20127
const uint32_t par[])
20128
{
20129
#ifndef CONFIG_USER_ONLY
20130
- gen_helper_rptlb0(arg[0].out, cpu_env, arg[1].in);
20131
+ gen_helper_rptlb0(arg[0].out, tcg_env, arg[1].in);
20132
#endif
20133
}
20134
20135
@@ -XXX,XX +XXX,XX @@ static void translate_rptlb1(DisasContext *dc, const OpcodeArg arg[],
20136
const uint32_t par[])
20137
{
20138
#ifndef CONFIG_USER_ONLY
20139
- gen_helper_rptlb1(arg[0].out, cpu_env, arg[1].in);
20140
+ gen_helper_rptlb1(arg[0].out, tcg_env, arg[1].in);
20141
#endif
20142
}
20143
20144
@@ -XXX,XX +XXX,XX @@ static void gen_check_atomctl(DisasContext *dc, TCGv_i32 addr)
20145
{
20146
TCGv_i32 pc = tcg_constant_i32(dc->pc);
20147
20148
- gen_helper_check_atomctl(cpu_env, pc, addr);
20149
+ gen_helper_check_atomctl(tcg_env, pc, addr);
20150
}
20151
#endif
20152
20153
@@ -XXX,XX +XXX,XX @@ static void translate_simcall(DisasContext *dc, const OpcodeArg arg[],
20154
{
20155
#ifndef CONFIG_USER_ONLY
20156
if (semihosting_enabled(dc->cring != 0)) {
20157
- gen_helper_simcall(cpu_env);
20158
+ gen_helper_simcall(tcg_env);
20159
}
20160
#endif
20161
}
20162
@@ -XXX,XX +XXX,XX @@ static void translate_waiti(DisasContext *dc, const OpcodeArg arg[],
20163
TCGv_i32 pc = tcg_constant_i32(dc->base.pc_next);
20164
20165
translator_io_start(&dc->base);
20166
- gen_helper_waiti(cpu_env, pc, tcg_constant_i32(arg[0].imm));
20167
+ gen_helper_waiti(tcg_env, pc, tcg_constant_i32(arg[0].imm));
20168
#endif
20169
}
20170
20171
@@ -XXX,XX +XXX,XX @@ static void translate_wtlb(DisasContext *dc, const OpcodeArg arg[],
20172
#ifndef CONFIG_USER_ONLY
20173
TCGv_i32 dtlb = tcg_constant_i32(par[0]);
20174
20175
- gen_helper_wtlb(cpu_env, arg[0].in, arg[1].in, dtlb);
20176
+ gen_helper_wtlb(tcg_env, arg[0].in, arg[1].in, dtlb);
20177
#endif
20178
}
20179
20180
@@ -XXX,XX +XXX,XX @@ static void translate_wptlb(DisasContext *dc, const OpcodeArg arg[],
20181
const uint32_t par[])
20182
{
20183
#ifndef CONFIG_USER_ONLY
20184
- gen_helper_wptlb(cpu_env, arg[0].in, arg[1].in);
20185
+ gen_helper_wptlb(tcg_env, arg[0].in, arg[1].in);
20186
#endif
20187
}
20188
20189
static void translate_wer(DisasContext *dc, const OpcodeArg arg[],
20190
const uint32_t par[])
20191
{
20192
- gen_helper_wer(cpu_env, arg[0].in, arg[1].in);
20193
+ gen_helper_wer(tcg_env, arg[0].in, arg[1].in);
20194
}
20195
20196
static void translate_wrmsk_expstate(DisasContext *dc, const OpcodeArg arg[],
20197
@@ -XXX,XX +XXX,XX @@ static void translate_wsr_ccompare(DisasContext *dc, const OpcodeArg arg[],
20198
assert(id < dc->config->nccompare);
20199
translator_io_start(&dc->base);
20200
tcg_gen_mov_i32(cpu_SR[par[0]], arg[0].in);
20201
- gen_helper_update_ccompare(cpu_env, tcg_constant_i32(id));
20202
+ gen_helper_update_ccompare(tcg_env, tcg_constant_i32(id));
20203
#endif
20204
}
20205
20206
@@ -XXX,XX +XXX,XX @@ static void translate_wsr_ccount(DisasContext *dc, const OpcodeArg arg[],
20207
{
20208
#ifndef CONFIG_USER_ONLY
20209
translator_io_start(&dc->base);
20210
- gen_helper_wsr_ccount(cpu_env, arg[0].in);
20211
+ gen_helper_wsr_ccount(tcg_env, arg[0].in);
20212
#endif
20213
}
20214
20215
@@ -XXX,XX +XXX,XX @@ static void translate_wsr_dbreaka(DisasContext *dc, const OpcodeArg arg[],
20216
unsigned id = par[0] - DBREAKA;
20217
20218
assert(id < dc->config->ndbreak);
20219
- gen_helper_wsr_dbreaka(cpu_env, tcg_constant_i32(id), arg[0].in);
20220
+ gen_helper_wsr_dbreaka(tcg_env, tcg_constant_i32(id), arg[0].in);
20221
#endif
20222
}
20223
20224
@@ -XXX,XX +XXX,XX @@ static void translate_wsr_dbreakc(DisasContext *dc, const OpcodeArg arg[],
20225
unsigned id = par[0] - DBREAKC;
20226
20227
assert(id < dc->config->ndbreak);
20228
- gen_helper_wsr_dbreakc(cpu_env, tcg_constant_i32(id), arg[0].in);
20229
+ gen_helper_wsr_dbreakc(tcg_env, tcg_constant_i32(id), arg[0].in);
20230
#endif
20231
}
20232
20233
@@ -XXX,XX +XXX,XX @@ static void translate_wsr_ibreaka(DisasContext *dc, const OpcodeArg arg[],
20234
unsigned id = par[0] - IBREAKA;
20235
20236
assert(id < dc->config->nibreak);
20237
- gen_helper_wsr_ibreaka(cpu_env, tcg_constant_i32(id), arg[0].in);
20238
+ gen_helper_wsr_ibreaka(tcg_env, tcg_constant_i32(id), arg[0].in);
20239
#endif
20240
}
20241
20242
@@ -XXX,XX +XXX,XX @@ static void translate_wsr_ibreakenable(DisasContext *dc, const OpcodeArg arg[],
20243
const uint32_t par[])
20244
{
20245
#ifndef CONFIG_USER_ONLY
20246
- gen_helper_wsr_ibreakenable(cpu_env, arg[0].in);
20247
+ gen_helper_wsr_ibreakenable(tcg_env, arg[0].in);
20248
#endif
20249
}
20250
20251
@@ -XXX,XX +XXX,XX @@ static void translate_wsr_intclear(DisasContext *dc, const OpcodeArg arg[],
20252
const uint32_t par[])
20253
{
20254
#ifndef CONFIG_USER_ONLY
20255
- gen_helper_intclear(cpu_env, arg[0].in);
20256
+ gen_helper_intclear(tcg_env, arg[0].in);
20257
#endif
20258
}
20259
20260
@@ -XXX,XX +XXX,XX @@ static void translate_wsr_intset(DisasContext *dc, const OpcodeArg arg[],
20261
const uint32_t par[])
20262
{
20263
#ifndef CONFIG_USER_ONLY
20264
- gen_helper_intset(cpu_env, arg[0].in);
20265
+ gen_helper_intset(tcg_env, arg[0].in);
20266
#endif
20267
}
20268
20269
@@ -XXX,XX +XXX,XX @@ static void translate_wsr_memctl(DisasContext *dc, const OpcodeArg arg[],
20270
const uint32_t par[])
20271
{
20272
#ifndef CONFIG_USER_ONLY
20273
- gen_helper_wsr_memctl(cpu_env, arg[0].in);
20274
+ gen_helper_wsr_memctl(tcg_env, arg[0].in);
20275
#endif
20276
}
20277
20278
@@ -XXX,XX +XXX,XX @@ static void translate_wsr_mpuenb(DisasContext *dc, const OpcodeArg arg[],
20279
const uint32_t par[])
20280
{
20281
#ifndef CONFIG_USER_ONLY
20282
- gen_helper_wsr_mpuenb(cpu_env, arg[0].in);
20283
+ gen_helper_wsr_mpuenb(tcg_env, arg[0].in);
20284
#endif
20285
}
20286
20287
@@ -XXX,XX +XXX,XX @@ static void translate_wsr_rasid(DisasContext *dc, const OpcodeArg arg[],
20288
const uint32_t par[])
20289
{
20290
#ifndef CONFIG_USER_ONLY
20291
- gen_helper_wsr_rasid(cpu_env, arg[0].in);
20292
+ gen_helper_wsr_rasid(tcg_env, arg[0].in);
20293
#endif
20294
}
20295
20296
@@ -XXX,XX +XXX,XX @@ static void translate_xsr_ccount(DisasContext *dc, const OpcodeArg arg[],
20297
TCGv_i32 tmp = tcg_temp_new_i32();
20298
20299
translator_io_start(&dc->base);
20300
- gen_helper_update_ccount(cpu_env);
20301
+ gen_helper_update_ccount(tcg_env);
20302
tcg_gen_mov_i32(tmp, cpu_SR[par[0]]);
20303
- gen_helper_wsr_ccount(cpu_env, arg[0].in);
20304
+ gen_helper_wsr_ccount(tcg_env, arg[0].in);
20305
tcg_gen_mov_i32(arg[0].out, tmp);
20306
20307
#endif
20308
@@ -XXX,XX +XXX,XX @@ static void translate_abs_s(DisasContext *dc, const OpcodeArg arg[],
20309
static void translate_fpu2k_add_s(DisasContext *dc, const OpcodeArg arg[],
20310
const uint32_t par[])
20311
{
20312
- gen_helper_fpu2k_add_s(arg[0].out, cpu_env,
20313
+ gen_helper_fpu2k_add_s(arg[0].out, tcg_env,
20314
arg[1].in, arg[2].in);
20315
}
20316
20317
@@ -XXX,XX +XXX,XX @@ static void translate_compare_d(DisasContext *dc, const OpcodeArg arg[],
20318
tcg_gen_ori_i32(set_br, arg[0].in, 1 << arg[0].imm);
20319
tcg_gen_andi_i32(clr_br, arg[0].in, ~(1 << arg[0].imm));
20320
20321
- helper[par[0]](res, cpu_env, arg[1].in, arg[2].in);
20322
+ helper[par[0]](res, tcg_env, arg[1].in, arg[2].in);
20323
tcg_gen_movcond_i32(TCG_COND_NE,
20324
arg[0].out, res, zero,
20325
set_br, clr_br);
20326
@@ -XXX,XX +XXX,XX @@ static void translate_compare_s(DisasContext *dc, const OpcodeArg arg[],
20327
tcg_gen_andi_i32(clr_br, arg[0].in, ~(1 << arg[0].imm));
20328
20329
get_f32_i2(arg, arg32, 1, 2);
20330
- helper[par[0]](res, cpu_env, arg32[1].in, arg32[2].in);
20331
+ helper[par[0]](res, tcg_env, arg32[1].in, arg32[2].in);
20332
tcg_gen_movcond_i32(TCG_COND_NE,
20333
arg[0].out, res, zero,
20334
set_br, clr_br);
20335
@@ -XXX,XX +XXX,XX @@ static void translate_float_d(DisasContext *dc, const OpcodeArg arg[],
20336
TCGv_i32 scale = tcg_constant_i32(-arg[2].imm);
20337
20338
if (par[0]) {
20339
- gen_helper_uitof_d(arg[0].out, cpu_env, arg[1].in, scale);
20340
+ gen_helper_uitof_d(arg[0].out, tcg_env, arg[1].in, scale);
20341
} else {
20342
- gen_helper_itof_d(arg[0].out, cpu_env, arg[1].in, scale);
20343
+ gen_helper_itof_d(arg[0].out, tcg_env, arg[1].in, scale);
20344
}
20345
}
20346
20347
@@ -XXX,XX +XXX,XX @@ static void translate_float_s(DisasContext *dc, const OpcodeArg arg[],
20348
20349
get_f32_o1(arg, arg32, 0);
20350
if (par[0]) {
20351
- gen_helper_uitof_s(arg32[0].out, cpu_env, arg[1].in, scale);
20352
+ gen_helper_uitof_s(arg32[0].out, tcg_env, arg[1].in, scale);
20353
} else {
20354
- gen_helper_itof_s(arg32[0].out, cpu_env, arg[1].in, scale);
20355
+ gen_helper_itof_s(arg32[0].out, tcg_env, arg[1].in, scale);
20356
}
20357
put_f32_o1(arg, arg32, 0);
20358
}
20359
@@ -XXX,XX +XXX,XX @@ static void translate_ftoi_d(DisasContext *dc, const OpcodeArg arg[],
20360
TCGv_i32 scale = tcg_constant_i32(arg[2].imm);
20361
20362
if (par[1]) {
20363
- gen_helper_ftoui_d(arg[0].out, cpu_env, arg[1].in,
20364
+ gen_helper_ftoui_d(arg[0].out, tcg_env, arg[1].in,
20365
rounding_mode, scale);
20366
} else {
20367
- gen_helper_ftoi_d(arg[0].out, cpu_env, arg[1].in,
20368
+ gen_helper_ftoi_d(arg[0].out, tcg_env, arg[1].in,
20369
rounding_mode, scale);
20370
}
20371
}
20372
@@ -XXX,XX +XXX,XX @@ static void translate_ftoi_s(DisasContext *dc, const OpcodeArg arg[],
20373
20374
get_f32_i1(arg, arg32, 1);
20375
if (par[1]) {
20376
- gen_helper_ftoui_s(arg[0].out, cpu_env, arg32[1].in,
20377
+ gen_helper_ftoui_s(arg[0].out, tcg_env, arg32[1].in,
20378
rounding_mode, scale);
20379
} else {
20380
- gen_helper_ftoi_s(arg[0].out, cpu_env, arg32[1].in,
20381
+ gen_helper_ftoi_s(arg[0].out, tcg_env, arg32[1].in,
20382
rounding_mode, scale);
20383
}
20384
put_f32_i1(arg, arg32, 1);
20385
@@ -XXX,XX +XXX,XX @@ static void translate_ldstx(DisasContext *dc, const OpcodeArg arg[],
20386
static void translate_fpu2k_madd_s(DisasContext *dc, const OpcodeArg arg[],
20387
const uint32_t par[])
20388
{
20389
- gen_helper_fpu2k_madd_s(arg[0].out, cpu_env,
20390
+ gen_helper_fpu2k_madd_s(arg[0].out, tcg_env,
20391
arg[0].in, arg[1].in, arg[2].in);
20392
}
20393
20394
@@ -XXX,XX +XXX,XX @@ static void translate_movp_s(DisasContext *dc, const OpcodeArg arg[],
20395
static void translate_fpu2k_mul_s(DisasContext *dc, const OpcodeArg arg[],
20396
const uint32_t par[])
20397
{
20398
- gen_helper_fpu2k_mul_s(arg[0].out, cpu_env,
20399
+ gen_helper_fpu2k_mul_s(arg[0].out, tcg_env,
20400
arg[1].in, arg[2].in);
20401
}
20402
20403
static void translate_fpu2k_msub_s(DisasContext *dc, const OpcodeArg arg[],
20404
const uint32_t par[])
20405
{
20406
- gen_helper_fpu2k_msub_s(arg[0].out, cpu_env,
20407
+ gen_helper_fpu2k_msub_s(arg[0].out, tcg_env,
20408
arg[0].in, arg[1].in, arg[2].in);
20409
}
20410
20411
@@ -XXX,XX +XXX,XX @@ static void translate_rfr_s(DisasContext *dc, const OpcodeArg arg[],
20412
static void translate_fpu2k_sub_s(DisasContext *dc, const OpcodeArg arg[],
20413
const uint32_t par[])
20414
{
20415
- gen_helper_fpu2k_sub_s(arg[0].out, cpu_env,
20416
+ gen_helper_fpu2k_sub_s(arg[0].out, tcg_env,
20417
arg[1].in, arg[2].in);
20418
}
20419
20420
@@ -XXX,XX +XXX,XX @@ static void translate_wfr_s(DisasContext *dc, const OpcodeArg arg[],
20421
static void translate_wur_fpu2k_fcr(DisasContext *dc, const OpcodeArg arg[],
20422
const uint32_t par[])
20423
{
20424
- gen_helper_wur_fpu2k_fcr(cpu_env, arg[0].in);
20425
+ gen_helper_wur_fpu2k_fcr(tcg_env, arg[0].in);
20426
}
20427
20428
static void translate_wur_fpu2k_fsr(DisasContext *dc, const OpcodeArg arg[],
20429
@@ -XXX,XX +XXX,XX @@ const XtensaOpcodeTranslators xtensa_fpu2000_opcodes = {
20430
static void translate_add_d(DisasContext *dc, const OpcodeArg arg[],
20431
const uint32_t par[])
20432
{
20433
- gen_helper_add_d(arg[0].out, cpu_env, arg[1].in, arg[2].in);
20434
+ gen_helper_add_d(arg[0].out, tcg_env, arg[1].in, arg[2].in);
20435
}
20436
20437
static void translate_add_s(DisasContext *dc, const OpcodeArg arg[],
20438
const uint32_t par[])
20439
{
20440
if (option_enabled(dc, XTENSA_OPTION_DFPU_SINGLE_ONLY)) {
20441
- gen_helper_fpu2k_add_s(arg[0].out, cpu_env,
20442
+ gen_helper_fpu2k_add_s(arg[0].out, tcg_env,
20443
arg[1].in, arg[2].in);
20444
} else {
20445
OpcodeArg arg32[3];
20446
20447
get_f32_o1_i2(arg, arg32, 0, 1, 2);
20448
- gen_helper_add_s(arg32[0].out, cpu_env, arg32[1].in, arg32[2].in);
20449
+ gen_helper_add_s(arg32[0].out, tcg_env, arg32[1].in, arg32[2].in);
20450
put_f32_o1_i2(arg, arg32, 0, 1, 2);
20451
}
20452
}
20453
@@ -XXX,XX +XXX,XX @@ static void translate_cvtd_s(DisasContext *dc, const OpcodeArg arg[],
20454
TCGv_i32 v = tcg_temp_new_i32();
20455
20456
tcg_gen_extrl_i64_i32(v, arg[1].in);
20457
- gen_helper_cvtd_s(arg[0].out, cpu_env, v);
20458
+ gen_helper_cvtd_s(arg[0].out, tcg_env, v);
20459
}
20460
20461
static void translate_cvts_d(DisasContext *dc, const OpcodeArg arg[],
20462
@@ -XXX,XX +XXX,XX @@ static void translate_cvts_d(DisasContext *dc, const OpcodeArg arg[],
20463
{
20464
TCGv_i32 v = tcg_temp_new_i32();
20465
20466
- gen_helper_cvts_d(v, cpu_env, arg[1].in);
20467
+ gen_helper_cvts_d(v, tcg_env, arg[1].in);
20468
tcg_gen_extu_i32_i64(arg[0].out, v);
20469
}
20470
20471
@@ -XXX,XX +XXX,XX @@ static void translate_ldstx_s(DisasContext *dc, const OpcodeArg arg[],
20472
static void translate_madd_d(DisasContext *dc, const OpcodeArg arg[],
20473
const uint32_t par[])
20474
{
20475
- gen_helper_madd_d(arg[0].out, cpu_env,
20476
+ gen_helper_madd_d(arg[0].out, tcg_env,
20477
arg[0].in, arg[1].in, arg[2].in);
20478
}
20479
20480
@@ -XXX,XX +XXX,XX @@ static void translate_madd_s(DisasContext *dc, const OpcodeArg arg[],
20481
const uint32_t par[])
20482
{
20483
if (option_enabled(dc, XTENSA_OPTION_DFPU_SINGLE_ONLY)) {
20484
- gen_helper_fpu2k_madd_s(arg[0].out, cpu_env,
20485
+ gen_helper_fpu2k_madd_s(arg[0].out, tcg_env,
20486
arg[0].in, arg[1].in, arg[2].in);
20487
} else {
20488
OpcodeArg arg32[3];
20489
20490
get_f32_o1_i3(arg, arg32, 0, 0, 1, 2);
20491
- gen_helper_madd_s(arg32[0].out, cpu_env,
20492
+ gen_helper_madd_s(arg32[0].out, tcg_env,
20493
arg32[0].in, arg32[1].in, arg32[2].in);
20494
put_f32_o1_i3(arg, arg32, 0, 0, 1, 2);
20495
}
20496
@@ -XXX,XX +XXX,XX @@ static void translate_madd_s(DisasContext *dc, const OpcodeArg arg[],
20497
static void translate_mul_d(DisasContext *dc, const OpcodeArg arg[],
20498
const uint32_t par[])
20499
{
20500
- gen_helper_mul_d(arg[0].out, cpu_env, arg[1].in, arg[2].in);
20501
+ gen_helper_mul_d(arg[0].out, tcg_env, arg[1].in, arg[2].in);
20502
}
20503
20504
static void translate_mul_s(DisasContext *dc, const OpcodeArg arg[],
20505
const uint32_t par[])
20506
{
20507
if (option_enabled(dc, XTENSA_OPTION_DFPU_SINGLE_ONLY)) {
20508
- gen_helper_fpu2k_mul_s(arg[0].out, cpu_env,
20509
+ gen_helper_fpu2k_mul_s(arg[0].out, tcg_env,
20510
arg[1].in, arg[2].in);
20511
} else {
20512
OpcodeArg arg32[3];
20513
20514
get_f32_o1_i2(arg, arg32, 0, 1, 2);
20515
- gen_helper_mul_s(arg32[0].out, cpu_env, arg32[1].in, arg32[2].in);
20516
+ gen_helper_mul_s(arg32[0].out, tcg_env, arg32[1].in, arg32[2].in);
20517
put_f32_o1_i2(arg, arg32, 0, 1, 2);
20518
}
20519
}
20520
@@ -XXX,XX +XXX,XX @@ static void translate_mul_s(DisasContext *dc, const OpcodeArg arg[],
20521
static void translate_msub_d(DisasContext *dc, const OpcodeArg arg[],
20522
const uint32_t par[])
20523
{
20524
- gen_helper_msub_d(arg[0].out, cpu_env,
20525
+ gen_helper_msub_d(arg[0].out, tcg_env,
20526
arg[0].in, arg[1].in, arg[2].in);
20527
}
20528
20529
@@ -XXX,XX +XXX,XX @@ static void translate_msub_s(DisasContext *dc, const OpcodeArg arg[],
20530
const uint32_t par[])
20531
{
20532
if (option_enabled(dc, XTENSA_OPTION_DFPU_SINGLE_ONLY)) {
20533
- gen_helper_fpu2k_msub_s(arg[0].out, cpu_env,
20534
+ gen_helper_fpu2k_msub_s(arg[0].out, tcg_env,
20535
arg[0].in, arg[1].in, arg[2].in);
20536
} else {
20537
OpcodeArg arg32[3];
20538
20539
get_f32_o1_i3(arg, arg32, 0, 0, 1, 2);
20540
- gen_helper_msub_s(arg32[0].out, cpu_env,
20541
+ gen_helper_msub_s(arg32[0].out, tcg_env,
20542
arg32[0].in, arg32[1].in, arg32[2].in);
20543
put_f32_o1_i3(arg, arg32, 0, 0, 1, 2);
20544
}
20545
@@ -XXX,XX +XXX,XX @@ static void translate_msub_s(DisasContext *dc, const OpcodeArg arg[],
20546
static void translate_sub_d(DisasContext *dc, const OpcodeArg arg[],
20547
const uint32_t par[])
20548
{
20549
- gen_helper_sub_d(arg[0].out, cpu_env, arg[1].in, arg[2].in);
20550
+ gen_helper_sub_d(arg[0].out, tcg_env, arg[1].in, arg[2].in);
20551
}
20552
20553
static void translate_sub_s(DisasContext *dc, const OpcodeArg arg[],
20554
const uint32_t par[])
20555
{
20556
if (option_enabled(dc, XTENSA_OPTION_DFPU_SINGLE_ONLY)) {
20557
- gen_helper_fpu2k_sub_s(arg[0].out, cpu_env,
20558
+ gen_helper_fpu2k_sub_s(arg[0].out, tcg_env,
20559
arg[1].in, arg[2].in);
20560
} else {
20561
OpcodeArg arg32[3];
20562
20563
get_f32_o1_i2(arg, arg32, 0, 1, 2);
20564
- gen_helper_sub_s(arg32[0].out, cpu_env, arg32[1].in, arg32[2].in);
20565
+ gen_helper_sub_s(arg32[0].out, tcg_env, arg32[1].in, arg32[2].in);
20566
put_f32_o1_i2(arg, arg32, 0, 1, 2);
20567
}
20568
}
20569
@@ -XXX,XX +XXX,XX @@ static void translate_sub_s(DisasContext *dc, const OpcodeArg arg[],
20570
static void translate_mkdadj_d(DisasContext *dc, const OpcodeArg arg[],
20571
const uint32_t par[])
20572
{
20573
- gen_helper_mkdadj_d(arg[0].out, cpu_env, arg[0].in, arg[1].in);
20574
+ gen_helper_mkdadj_d(arg[0].out, tcg_env, arg[0].in, arg[1].in);
20575
}
20576
20577
static void translate_mkdadj_s(DisasContext *dc, const OpcodeArg arg[],
20578
@@ -XXX,XX +XXX,XX @@ static void translate_mkdadj_s(DisasContext *dc, const OpcodeArg arg[],
20579
OpcodeArg arg32[2];
20580
20581
get_f32_o1_i2(arg, arg32, 0, 0, 1);
20582
- gen_helper_mkdadj_s(arg32[0].out, cpu_env, arg32[0].in, arg32[1].in);
20583
+ gen_helper_mkdadj_s(arg32[0].out, tcg_env, arg32[0].in, arg32[1].in);
20584
put_f32_o1_i2(arg, arg32, 0, 0, 1);
20585
}
20586
20587
static void translate_mksadj_d(DisasContext *dc, const OpcodeArg arg[],
20588
const uint32_t par[])
20589
{
20590
- gen_helper_mksadj_d(arg[0].out, cpu_env, arg[1].in);
20591
+ gen_helper_mksadj_d(arg[0].out, tcg_env, arg[1].in);
20592
}
20593
20594
static void translate_mksadj_s(DisasContext *dc, const OpcodeArg arg[],
20595
@@ -XXX,XX +XXX,XX @@ static void translate_mksadj_s(DisasContext *dc, const OpcodeArg arg[],
20596
OpcodeArg arg32[2];
20597
20598
get_f32_o1_i1(arg, arg32, 0, 1);
20599
- gen_helper_mksadj_s(arg32[0].out, cpu_env, arg32[1].in);
20600
+ gen_helper_mksadj_s(arg32[0].out, tcg_env, arg32[1].in);
20601
put_f32_o1_i1(arg, arg32, 0, 1);
20602
}
20603
20604
static void translate_wur_fpu_fcr(DisasContext *dc, const OpcodeArg arg[],
20605
const uint32_t par[])
20606
{
20607
- gen_helper_wur_fpu_fcr(cpu_env, arg[0].in);
20608
+ gen_helper_wur_fpu_fcr(tcg_env, arg[0].in);
20609
}
20610
20611
static void translate_rur_fpu_fsr(DisasContext *dc, const OpcodeArg arg[],
20612
const uint32_t par[])
20613
{
20614
- gen_helper_rur_fpu_fsr(arg[0].out, cpu_env);
20615
+ gen_helper_rur_fpu_fsr(arg[0].out, tcg_env);
20616
}
20617
20618
static void translate_wur_fpu_fsr(DisasContext *dc, const OpcodeArg arg[],
20619
const uint32_t par[])
20620
{
20621
- gen_helper_wur_fpu_fsr(cpu_env, arg[0].in);
20622
+ gen_helper_wur_fpu_fsr(tcg_env, arg[0].in);
20623
}
20624
20625
static const XtensaOpcodeOps fpu_ops[] = {
20626
diff --git a/tcg/tcg-op-gvec.c b/tcg/tcg-op-gvec.c
20627
index XXXXXXX..XXXXXXX 100644
20628
--- a/tcg/tcg-op-gvec.c
20629
+++ b/tcg/tcg-op-gvec.c
20630
@@ -XXX,XX +XXX,XX @@ void tcg_gen_gvec_2_ool(uint32_t dofs, uint32_t aofs,
20631
a0 = tcg_temp_ebb_new_ptr();
20632
a1 = tcg_temp_ebb_new_ptr();
20633
20634
- tcg_gen_addi_ptr(a0, cpu_env, dofs);
20635
- tcg_gen_addi_ptr(a1, cpu_env, aofs);
20636
+ tcg_gen_addi_ptr(a0, tcg_env, dofs);
20637
+ tcg_gen_addi_ptr(a1, tcg_env, aofs);
20638
20639
fn(a0, a1, desc);
20640
20641
@@ -XXX,XX +XXX,XX @@ void tcg_gen_gvec_2i_ool(uint32_t dofs, uint32_t aofs, TCGv_i64 c,
20642
a0 = tcg_temp_ebb_new_ptr();
20643
a1 = tcg_temp_ebb_new_ptr();
20644
20645
- tcg_gen_addi_ptr(a0, cpu_env, dofs);
20646
- tcg_gen_addi_ptr(a1, cpu_env, aofs);
20647
+ tcg_gen_addi_ptr(a0, tcg_env, dofs);
20648
+ tcg_gen_addi_ptr(a1, tcg_env, aofs);
20649
20650
fn(a0, a1, c, desc);
20651
20652
@@ -XXX,XX +XXX,XX @@ void tcg_gen_gvec_3_ool(uint32_t dofs, uint32_t aofs, uint32_t bofs,
20653
a1 = tcg_temp_ebb_new_ptr();
20654
a2 = tcg_temp_ebb_new_ptr();
20655
20656
- tcg_gen_addi_ptr(a0, cpu_env, dofs);
20657
- tcg_gen_addi_ptr(a1, cpu_env, aofs);
20658
- tcg_gen_addi_ptr(a2, cpu_env, bofs);
20659
+ tcg_gen_addi_ptr(a0, tcg_env, dofs);
20660
+ tcg_gen_addi_ptr(a1, tcg_env, aofs);
20661
+ tcg_gen_addi_ptr(a2, tcg_env, bofs);
20662
20663
fn(a0, a1, a2, desc);
20664
20665
@@ -XXX,XX +XXX,XX @@ void tcg_gen_gvec_4_ool(uint32_t dofs, uint32_t aofs, uint32_t bofs,
20666
a2 = tcg_temp_ebb_new_ptr();
20667
a3 = tcg_temp_ebb_new_ptr();
20668
20669
- tcg_gen_addi_ptr(a0, cpu_env, dofs);
20670
- tcg_gen_addi_ptr(a1, cpu_env, aofs);
20671
- tcg_gen_addi_ptr(a2, cpu_env, bofs);
20672
- tcg_gen_addi_ptr(a3, cpu_env, cofs);
20673
+ tcg_gen_addi_ptr(a0, tcg_env, dofs);
20674
+ tcg_gen_addi_ptr(a1, tcg_env, aofs);
20675
+ tcg_gen_addi_ptr(a2, tcg_env, bofs);
20676
+ tcg_gen_addi_ptr(a3, tcg_env, cofs);
20677
20678
fn(a0, a1, a2, a3, desc);
20679
20680
@@ -XXX,XX +XXX,XX @@ void tcg_gen_gvec_5_ool(uint32_t dofs, uint32_t aofs, uint32_t bofs,
20681
a3 = tcg_temp_ebb_new_ptr();
20682
a4 = tcg_temp_ebb_new_ptr();
20683
20684
- tcg_gen_addi_ptr(a0, cpu_env, dofs);
20685
- tcg_gen_addi_ptr(a1, cpu_env, aofs);
20686
- tcg_gen_addi_ptr(a2, cpu_env, bofs);
20687
- tcg_gen_addi_ptr(a3, cpu_env, cofs);
20688
- tcg_gen_addi_ptr(a4, cpu_env, xofs);
20689
+ tcg_gen_addi_ptr(a0, tcg_env, dofs);
20690
+ tcg_gen_addi_ptr(a1, tcg_env, aofs);
20691
+ tcg_gen_addi_ptr(a2, tcg_env, bofs);
20692
+ tcg_gen_addi_ptr(a3, tcg_env, cofs);
20693
+ tcg_gen_addi_ptr(a4, tcg_env, xofs);
20694
20695
fn(a0, a1, a2, a3, a4, desc);
20696
20697
@@ -XXX,XX +XXX,XX @@ void tcg_gen_gvec_2_ptr(uint32_t dofs, uint32_t aofs,
20698
a0 = tcg_temp_ebb_new_ptr();
20699
a1 = tcg_temp_ebb_new_ptr();
20700
20701
- tcg_gen_addi_ptr(a0, cpu_env, dofs);
20702
- tcg_gen_addi_ptr(a1, cpu_env, aofs);
20703
+ tcg_gen_addi_ptr(a0, tcg_env, dofs);
20704
+ tcg_gen_addi_ptr(a1, tcg_env, aofs);
20705
20706
fn(a0, a1, ptr, desc);
20707
20708
@@ -XXX,XX +XXX,XX @@ void tcg_gen_gvec_3_ptr(uint32_t dofs, uint32_t aofs, uint32_t bofs,
20709
a1 = tcg_temp_ebb_new_ptr();
20710
a2 = tcg_temp_ebb_new_ptr();
20711
20712
- tcg_gen_addi_ptr(a0, cpu_env, dofs);
20713
- tcg_gen_addi_ptr(a1, cpu_env, aofs);
20714
- tcg_gen_addi_ptr(a2, cpu_env, bofs);
20715
+ tcg_gen_addi_ptr(a0, tcg_env, dofs);
20716
+ tcg_gen_addi_ptr(a1, tcg_env, aofs);
20717
+ tcg_gen_addi_ptr(a2, tcg_env, bofs);
20718
20719
fn(a0, a1, a2, ptr, desc);
20720
20721
@@ -XXX,XX +XXX,XX @@ void tcg_gen_gvec_4_ptr(uint32_t dofs, uint32_t aofs, uint32_t bofs,
20722
a2 = tcg_temp_ebb_new_ptr();
20723
a3 = tcg_temp_ebb_new_ptr();
20724
20725
- tcg_gen_addi_ptr(a0, cpu_env, dofs);
20726
- tcg_gen_addi_ptr(a1, cpu_env, aofs);
20727
- tcg_gen_addi_ptr(a2, cpu_env, bofs);
20728
- tcg_gen_addi_ptr(a3, cpu_env, cofs);
20729
+ tcg_gen_addi_ptr(a0, tcg_env, dofs);
20730
+ tcg_gen_addi_ptr(a1, tcg_env, aofs);
20731
+ tcg_gen_addi_ptr(a2, tcg_env, bofs);
20732
+ tcg_gen_addi_ptr(a3, tcg_env, cofs);
20733
20734
fn(a0, a1, a2, a3, ptr, desc);
20735
20736
@@ -XXX,XX +XXX,XX @@ void tcg_gen_gvec_5_ptr(uint32_t dofs, uint32_t aofs, uint32_t bofs,
20737
a3 = tcg_temp_ebb_new_ptr();
20738
a4 = tcg_temp_ebb_new_ptr();
20739
20740
- tcg_gen_addi_ptr(a0, cpu_env, dofs);
20741
- tcg_gen_addi_ptr(a1, cpu_env, aofs);
20742
- tcg_gen_addi_ptr(a2, cpu_env, bofs);
20743
- tcg_gen_addi_ptr(a3, cpu_env, cofs);
20744
- tcg_gen_addi_ptr(a4, cpu_env, eofs);
20745
+ tcg_gen_addi_ptr(a0, tcg_env, dofs);
20746
+ tcg_gen_addi_ptr(a1, tcg_env, aofs);
20747
+ tcg_gen_addi_ptr(a2, tcg_env, bofs);
20748
+ tcg_gen_addi_ptr(a3, tcg_env, cofs);
20749
+ tcg_gen_addi_ptr(a4, tcg_env, eofs);
20750
20751
fn(a0, a1, a2, a3, a4, ptr, desc);
20752
20753
@@ -XXX,XX +XXX,XX @@ static void do_dup_store(TCGType type, uint32_t dofs, uint32_t oprsz,
20754
* are misaligned wrt the maximum vector size, so do that first.
20755
*/
20756
if (dofs & 8) {
20757
- tcg_gen_stl_vec(t_vec, cpu_env, dofs + i, TCG_TYPE_V64);
20758
+ tcg_gen_stl_vec(t_vec, tcg_env, dofs + i, TCG_TYPE_V64);
20759
i += 8;
20760
}
20761
20762
@@ -XXX,XX +XXX,XX @@ static void do_dup_store(TCGType type, uint32_t dofs, uint32_t oprsz,
20763
* that e.g. size == 80 would be expanded with 2x32 + 1x16.
20764
*/
20765
for (; i + 32 <= oprsz; i += 32) {
20766
- tcg_gen_stl_vec(t_vec, cpu_env, dofs + i, TCG_TYPE_V256);
20767
+ tcg_gen_stl_vec(t_vec, tcg_env, dofs + i, TCG_TYPE_V256);
20768
}
20769
/* fallthru */
20770
case TCG_TYPE_V128:
20771
for (; i + 16 <= oprsz; i += 16) {
20772
- tcg_gen_stl_vec(t_vec, cpu_env, dofs + i, TCG_TYPE_V128);
20773
+ tcg_gen_stl_vec(t_vec, tcg_env, dofs + i, TCG_TYPE_V128);
20774
}
20775
break;
20776
case TCG_TYPE_V64:
20777
for (; i < oprsz; i += 8) {
20778
- tcg_gen_stl_vec(t_vec, cpu_env, dofs + i, TCG_TYPE_V64);
20779
+ tcg_gen_stl_vec(t_vec, tcg_env, dofs + i, TCG_TYPE_V64);
20780
}
20781
break;
20782
default:
20783
@@ -XXX,XX +XXX,XX @@ static void do_dup(unsigned vece, uint32_t dofs, uint32_t oprsz,
20784
/* Implement inline if we picked an implementation size above. */
20785
if (t_32) {
20786
for (i = 0; i < oprsz; i += 4) {
20787
- tcg_gen_st_i32(t_32, cpu_env, dofs + i);
20788
+ tcg_gen_st_i32(t_32, tcg_env, dofs + i);
20789
}
20790
tcg_temp_free_i32(t_32);
20791
goto done;
20792
}
20793
if (t_64) {
20794
for (i = 0; i < oprsz; i += 8) {
20795
- tcg_gen_st_i64(t_64, cpu_env, dofs + i);
20796
+ tcg_gen_st_i64(t_64, tcg_env, dofs + i);
20797
}
20798
tcg_temp_free_i64(t_64);
20799
goto done;
20800
@@ -XXX,XX +XXX,XX @@ static void do_dup(unsigned vece, uint32_t dofs, uint32_t oprsz,
20801
20802
/* Otherwise implement out of line. */
20803
t_ptr = tcg_temp_ebb_new_ptr();
20804
- tcg_gen_addi_ptr(t_ptr, cpu_env, dofs);
20805
+ tcg_gen_addi_ptr(t_ptr, tcg_env, dofs);
20806
20807
/*
20808
* This may be expand_clr for the tail of an operation, e.g.
20809
@@ -XXX,XX +XXX,XX @@ static void expand_2_i32(uint32_t dofs, uint32_t aofs, uint32_t oprsz,
20810
uint32_t i;
20811
20812
for (i = 0; i < oprsz; i += 4) {
20813
- tcg_gen_ld_i32(t0, cpu_env, aofs + i);
20814
+ tcg_gen_ld_i32(t0, tcg_env, aofs + i);
20815
if (load_dest) {
20816
- tcg_gen_ld_i32(t1, cpu_env, dofs + i);
20817
+ tcg_gen_ld_i32(t1, tcg_env, dofs + i);
20818
}
20819
fni(t1, t0);
20820
- tcg_gen_st_i32(t1, cpu_env, dofs + i);
20821
+ tcg_gen_st_i32(t1, tcg_env, dofs + i);
20822
}
20823
tcg_temp_free_i32(t0);
20824
tcg_temp_free_i32(t1);
20825
@@ -XXX,XX +XXX,XX @@ static void expand_2i_i32(uint32_t dofs, uint32_t aofs, uint32_t oprsz,
20826
uint32_t i;
20827
20828
for (i = 0; i < oprsz; i += 4) {
20829
- tcg_gen_ld_i32(t0, cpu_env, aofs + i);
20830
+ tcg_gen_ld_i32(t0, tcg_env, aofs + i);
20831
if (load_dest) {
20832
- tcg_gen_ld_i32(t1, cpu_env, dofs + i);
20833
+ tcg_gen_ld_i32(t1, tcg_env, dofs + i);
20834
}
20835
fni(t1, t0, c);
20836
- tcg_gen_st_i32(t1, cpu_env, dofs + i);
20837
+ tcg_gen_st_i32(t1, tcg_env, dofs + i);
20838
}
20839
tcg_temp_free_i32(t0);
20840
tcg_temp_free_i32(t1);
20841
@@ -XXX,XX +XXX,XX @@ static void expand_2s_i32(uint32_t dofs, uint32_t aofs, uint32_t oprsz,
20842
uint32_t i;
20843
20844
for (i = 0; i < oprsz; i += 4) {
20845
- tcg_gen_ld_i32(t0, cpu_env, aofs + i);
20846
+ tcg_gen_ld_i32(t0, tcg_env, aofs + i);
20847
if (scalar_first) {
20848
fni(t1, c, t0);
20849
} else {
20850
fni(t1, t0, c);
20851
}
20852
- tcg_gen_st_i32(t1, cpu_env, dofs + i);
20853
+ tcg_gen_st_i32(t1, tcg_env, dofs + i);
20854
}
20855
tcg_temp_free_i32(t0);
20856
tcg_temp_free_i32(t1);
20857
@@ -XXX,XX +XXX,XX @@ static void expand_3_i32(uint32_t dofs, uint32_t aofs,
20858
uint32_t i;
20859
20860
for (i = 0; i < oprsz; i += 4) {
20861
- tcg_gen_ld_i32(t0, cpu_env, aofs + i);
20862
- tcg_gen_ld_i32(t1, cpu_env, bofs + i);
20863
+ tcg_gen_ld_i32(t0, tcg_env, aofs + i);
20864
+ tcg_gen_ld_i32(t1, tcg_env, bofs + i);
20865
if (load_dest) {
20866
- tcg_gen_ld_i32(t2, cpu_env, dofs + i);
20867
+ tcg_gen_ld_i32(t2, tcg_env, dofs + i);
20868
}
20869
fni(t2, t0, t1);
20870
- tcg_gen_st_i32(t2, cpu_env, dofs + i);
20871
+ tcg_gen_st_i32(t2, tcg_env, dofs + i);
20872
}
20873
tcg_temp_free_i32(t2);
20874
tcg_temp_free_i32(t1);
20875
@@ -XXX,XX +XXX,XX @@ static void expand_3i_i32(uint32_t dofs, uint32_t aofs, uint32_t bofs,
20876
uint32_t i;
20877
20878
for (i = 0; i < oprsz; i += 4) {
20879
- tcg_gen_ld_i32(t0, cpu_env, aofs + i);
20880
- tcg_gen_ld_i32(t1, cpu_env, bofs + i);
20881
+ tcg_gen_ld_i32(t0, tcg_env, aofs + i);
20882
+ tcg_gen_ld_i32(t1, tcg_env, bofs + i);
20883
if (load_dest) {
20884
- tcg_gen_ld_i32(t2, cpu_env, dofs + i);
20885
+ tcg_gen_ld_i32(t2, tcg_env, dofs + i);
20886
}
20887
fni(t2, t0, t1, c);
20888
- tcg_gen_st_i32(t2, cpu_env, dofs + i);
20889
+ tcg_gen_st_i32(t2, tcg_env, dofs + i);
20890
}
20891
tcg_temp_free_i32(t0);
20892
tcg_temp_free_i32(t1);
20893
@@ -XXX,XX +XXX,XX @@ static void expand_4_i32(uint32_t dofs, uint32_t aofs, uint32_t bofs,
20894
uint32_t i;
20895
20896
for (i = 0; i < oprsz; i += 4) {
20897
- tcg_gen_ld_i32(t1, cpu_env, aofs + i);
20898
- tcg_gen_ld_i32(t2, cpu_env, bofs + i);
20899
- tcg_gen_ld_i32(t3, cpu_env, cofs + i);
20900
+ tcg_gen_ld_i32(t1, tcg_env, aofs + i);
20901
+ tcg_gen_ld_i32(t2, tcg_env, bofs + i);
20902
+ tcg_gen_ld_i32(t3, tcg_env, cofs + i);
20903
fni(t0, t1, t2, t3);
20904
- tcg_gen_st_i32(t0, cpu_env, dofs + i);
20905
+ tcg_gen_st_i32(t0, tcg_env, dofs + i);
20906
if (write_aofs) {
20907
- tcg_gen_st_i32(t1, cpu_env, aofs + i);
20908
+ tcg_gen_st_i32(t1, tcg_env, aofs + i);
20909
}
20910
}
20911
tcg_temp_free_i32(t3);
20912
@@ -XXX,XX +XXX,XX @@ static void expand_4i_i32(uint32_t dofs, uint32_t aofs, uint32_t bofs,
20913
uint32_t i;
20914
20915
for (i = 0; i < oprsz; i += 4) {
20916
- tcg_gen_ld_i32(t1, cpu_env, aofs + i);
20917
- tcg_gen_ld_i32(t2, cpu_env, bofs + i);
20918
- tcg_gen_ld_i32(t3, cpu_env, cofs + i);
20919
+ tcg_gen_ld_i32(t1, tcg_env, aofs + i);
20920
+ tcg_gen_ld_i32(t2, tcg_env, bofs + i);
20921
+ tcg_gen_ld_i32(t3, tcg_env, cofs + i);
20922
fni(t0, t1, t2, t3, c);
20923
- tcg_gen_st_i32(t0, cpu_env, dofs + i);
20924
+ tcg_gen_st_i32(t0, tcg_env, dofs + i);
20925
}
20926
tcg_temp_free_i32(t3);
20927
tcg_temp_free_i32(t2);
20928
@@ -XXX,XX +XXX,XX @@ static void expand_2_i64(uint32_t dofs, uint32_t aofs, uint32_t oprsz,
20929
uint32_t i;
20930
20931
for (i = 0; i < oprsz; i += 8) {
20932
- tcg_gen_ld_i64(t0, cpu_env, aofs + i);
20933
+ tcg_gen_ld_i64(t0, tcg_env, aofs + i);
20934
if (load_dest) {
20935
- tcg_gen_ld_i64(t1, cpu_env, dofs + i);
20936
+ tcg_gen_ld_i64(t1, tcg_env, dofs + i);
20937
}
20938
fni(t1, t0);
20939
- tcg_gen_st_i64(t1, cpu_env, dofs + i);
20940
+ tcg_gen_st_i64(t1, tcg_env, dofs + i);
20941
}
20942
tcg_temp_free_i64(t0);
20943
tcg_temp_free_i64(t1);
20944
@@ -XXX,XX +XXX,XX @@ static void expand_2i_i64(uint32_t dofs, uint32_t aofs, uint32_t oprsz,
20945
uint32_t i;
20946
20947
for (i = 0; i < oprsz; i += 8) {
20948
- tcg_gen_ld_i64(t0, cpu_env, aofs + i);
20949
+ tcg_gen_ld_i64(t0, tcg_env, aofs + i);
20950
if (load_dest) {
20951
- tcg_gen_ld_i64(t1, cpu_env, dofs + i);
20952
+ tcg_gen_ld_i64(t1, tcg_env, dofs + i);
20953
}
20954
fni(t1, t0, c);
20955
- tcg_gen_st_i64(t1, cpu_env, dofs + i);
20956
+ tcg_gen_st_i64(t1, tcg_env, dofs + i);
20957
}
20958
tcg_temp_free_i64(t0);
20959
tcg_temp_free_i64(t1);
20960
@@ -XXX,XX +XXX,XX @@ static void expand_2s_i64(uint32_t dofs, uint32_t aofs, uint32_t oprsz,
20961
uint32_t i;
20962
20963
for (i = 0; i < oprsz; i += 8) {
20964
- tcg_gen_ld_i64(t0, cpu_env, aofs + i);
20965
+ tcg_gen_ld_i64(t0, tcg_env, aofs + i);
20966
if (scalar_first) {
20967
fni(t1, c, t0);
20968
} else {
20969
fni(t1, t0, c);
20970
}
20971
- tcg_gen_st_i64(t1, cpu_env, dofs + i);
20972
+ tcg_gen_st_i64(t1, tcg_env, dofs + i);
20973
}
20974
tcg_temp_free_i64(t0);
20975
tcg_temp_free_i64(t1);
20976
@@ -XXX,XX +XXX,XX @@ static void expand_3_i64(uint32_t dofs, uint32_t aofs,
20977
uint32_t i;
20978
20979
for (i = 0; i < oprsz; i += 8) {
20980
- tcg_gen_ld_i64(t0, cpu_env, aofs + i);
20981
- tcg_gen_ld_i64(t1, cpu_env, bofs + i);
20982
+ tcg_gen_ld_i64(t0, tcg_env, aofs + i);
20983
+ tcg_gen_ld_i64(t1, tcg_env, bofs + i);
20984
if (load_dest) {
20985
- tcg_gen_ld_i64(t2, cpu_env, dofs + i);
20986
+ tcg_gen_ld_i64(t2, tcg_env, dofs + i);
20987
}
20988
fni(t2, t0, t1);
20989
- tcg_gen_st_i64(t2, cpu_env, dofs + i);
20990
+ tcg_gen_st_i64(t2, tcg_env, dofs + i);
20991
}
20992
tcg_temp_free_i64(t2);
20993
tcg_temp_free_i64(t1);
20994
@@ -XXX,XX +XXX,XX @@ static void expand_3i_i64(uint32_t dofs, uint32_t aofs, uint32_t bofs,
20995
uint32_t i;
20996
20997
for (i = 0; i < oprsz; i += 8) {
20998
- tcg_gen_ld_i64(t0, cpu_env, aofs + i);
20999
- tcg_gen_ld_i64(t1, cpu_env, bofs + i);
21000
+ tcg_gen_ld_i64(t0, tcg_env, aofs + i);
21001
+ tcg_gen_ld_i64(t1, tcg_env, bofs + i);
21002
if (load_dest) {
21003
- tcg_gen_ld_i64(t2, cpu_env, dofs + i);
21004
+ tcg_gen_ld_i64(t2, tcg_env, dofs + i);
21005
}
21006
fni(t2, t0, t1, c);
21007
- tcg_gen_st_i64(t2, cpu_env, dofs + i);
21008
+ tcg_gen_st_i64(t2, tcg_env, dofs + i);
21009
}
21010
tcg_temp_free_i64(t0);
21011
tcg_temp_free_i64(t1);
21012
@@ -XXX,XX +XXX,XX @@ static void expand_4_i64(uint32_t dofs, uint32_t aofs, uint32_t bofs,
21013
uint32_t i;
21014
21015
for (i = 0; i < oprsz; i += 8) {
21016
- tcg_gen_ld_i64(t1, cpu_env, aofs + i);
21017
- tcg_gen_ld_i64(t2, cpu_env, bofs + i);
21018
- tcg_gen_ld_i64(t3, cpu_env, cofs + i);
21019
+ tcg_gen_ld_i64(t1, tcg_env, aofs + i);
21020
+ tcg_gen_ld_i64(t2, tcg_env, bofs + i);
21021
+ tcg_gen_ld_i64(t3, tcg_env, cofs + i);
21022
fni(t0, t1, t2, t3);
21023
- tcg_gen_st_i64(t0, cpu_env, dofs + i);
21024
+ tcg_gen_st_i64(t0, tcg_env, dofs + i);
21025
if (write_aofs) {
21026
- tcg_gen_st_i64(t1, cpu_env, aofs + i);
21027
+ tcg_gen_st_i64(t1, tcg_env, aofs + i);
21028
}
21029
}
21030
tcg_temp_free_i64(t3);
21031
@@ -XXX,XX +XXX,XX @@ static void expand_4i_i64(uint32_t dofs, uint32_t aofs, uint32_t bofs,
21032
uint32_t i;
21033
21034
for (i = 0; i < oprsz; i += 8) {
21035
- tcg_gen_ld_i64(t1, cpu_env, aofs + i);
21036
- tcg_gen_ld_i64(t2, cpu_env, bofs + i);
21037
- tcg_gen_ld_i64(t3, cpu_env, cofs + i);
21038
+ tcg_gen_ld_i64(t1, tcg_env, aofs + i);
21039
+ tcg_gen_ld_i64(t2, tcg_env, bofs + i);
21040
+ tcg_gen_ld_i64(t3, tcg_env, cofs + i);
21041
fni(t0, t1, t2, t3, c);
21042
- tcg_gen_st_i64(t0, cpu_env, dofs + i);
21043
+ tcg_gen_st_i64(t0, tcg_env, dofs + i);
21044
}
21045
tcg_temp_free_i64(t3);
21046
tcg_temp_free_i64(t2);
21047
@@ -XXX,XX +XXX,XX @@ static void expand_2_vec(unsigned vece, uint32_t dofs, uint32_t aofs,
21048
uint32_t i;
21049
21050
for (i = 0; i < oprsz; i += tysz) {
21051
- tcg_gen_ld_vec(t0, cpu_env, aofs + i);
21052
+ tcg_gen_ld_vec(t0, tcg_env, aofs + i);
21053
if (load_dest) {
21054
- tcg_gen_ld_vec(t1, cpu_env, dofs + i);
21055
+ tcg_gen_ld_vec(t1, tcg_env, dofs + i);
21056
}
21057
fni(vece, t1, t0);
21058
- tcg_gen_st_vec(t1, cpu_env, dofs + i);
21059
+ tcg_gen_st_vec(t1, tcg_env, dofs + i);
21060
}
21061
tcg_temp_free_vec(t0);
21062
tcg_temp_free_vec(t1);
21063
@@ -XXX,XX +XXX,XX @@ static void expand_2i_vec(unsigned vece, uint32_t dofs, uint32_t aofs,
21064
uint32_t i;
21065
21066
for (i = 0; i < oprsz; i += tysz) {
21067
- tcg_gen_ld_vec(t0, cpu_env, aofs + i);
21068
+ tcg_gen_ld_vec(t0, tcg_env, aofs + i);
21069
if (load_dest) {
21070
- tcg_gen_ld_vec(t1, cpu_env, dofs + i);
21071
+ tcg_gen_ld_vec(t1, tcg_env, dofs + i);
21072
}
21073
fni(vece, t1, t0, c);
21074
- tcg_gen_st_vec(t1, cpu_env, dofs + i);
21075
+ tcg_gen_st_vec(t1, tcg_env, dofs + i);
21076
}
21077
tcg_temp_free_vec(t0);
21078
tcg_temp_free_vec(t1);
21079
@@ -XXX,XX +XXX,XX @@ static void expand_2s_vec(unsigned vece, uint32_t dofs, uint32_t aofs,
21080
uint32_t i;
21081
21082
for (i = 0; i < oprsz; i += tysz) {
21083
- tcg_gen_ld_vec(t0, cpu_env, aofs + i);
21084
+ tcg_gen_ld_vec(t0, tcg_env, aofs + i);
21085
if (scalar_first) {
21086
fni(vece, t1, c, t0);
21087
} else {
21088
fni(vece, t1, t0, c);
21089
}
21090
- tcg_gen_st_vec(t1, cpu_env, dofs + i);
21091
+ tcg_gen_st_vec(t1, tcg_env, dofs + i);
21092
}
21093
tcg_temp_free_vec(t0);
21094
tcg_temp_free_vec(t1);
21095
@@ -XXX,XX +XXX,XX @@ static void expand_3_vec(unsigned vece, uint32_t dofs, uint32_t aofs,
21096
uint32_t i;
21097
21098
for (i = 0; i < oprsz; i += tysz) {
21099
- tcg_gen_ld_vec(t0, cpu_env, aofs + i);
21100
- tcg_gen_ld_vec(t1, cpu_env, bofs + i);
21101
+ tcg_gen_ld_vec(t0, tcg_env, aofs + i);
21102
+ tcg_gen_ld_vec(t1, tcg_env, bofs + i);
21103
if (load_dest) {
21104
- tcg_gen_ld_vec(t2, cpu_env, dofs + i);
21105
+ tcg_gen_ld_vec(t2, tcg_env, dofs + i);
21106
}
21107
fni(vece, t2, t0, t1);
21108
- tcg_gen_st_vec(t2, cpu_env, dofs + i);
21109
+ tcg_gen_st_vec(t2, tcg_env, dofs + i);
21110
}
21111
tcg_temp_free_vec(t2);
21112
tcg_temp_free_vec(t1);
21113
@@ -XXX,XX +XXX,XX @@ static void expand_3i_vec(unsigned vece, uint32_t dofs, uint32_t aofs,
21114
uint32_t i;
21115
21116
for (i = 0; i < oprsz; i += tysz) {
21117
- tcg_gen_ld_vec(t0, cpu_env, aofs + i);
21118
- tcg_gen_ld_vec(t1, cpu_env, bofs + i);
21119
+ tcg_gen_ld_vec(t0, tcg_env, aofs + i);
21120
+ tcg_gen_ld_vec(t1, tcg_env, bofs + i);
21121
if (load_dest) {
21122
- tcg_gen_ld_vec(t2, cpu_env, dofs + i);
21123
+ tcg_gen_ld_vec(t2, tcg_env, dofs + i);
21124
}
21125
fni(vece, t2, t0, t1, c);
21126
- tcg_gen_st_vec(t2, cpu_env, dofs + i);
21127
+ tcg_gen_st_vec(t2, tcg_env, dofs + i);
21128
}
21129
tcg_temp_free_vec(t0);
21130
tcg_temp_free_vec(t1);
21131
@@ -XXX,XX +XXX,XX @@ static void expand_4_vec(unsigned vece, uint32_t dofs, uint32_t aofs,
21132
uint32_t i;
21133
21134
for (i = 0; i < oprsz; i += tysz) {
21135
- tcg_gen_ld_vec(t1, cpu_env, aofs + i);
21136
- tcg_gen_ld_vec(t2, cpu_env, bofs + i);
21137
- tcg_gen_ld_vec(t3, cpu_env, cofs + i);
21138
+ tcg_gen_ld_vec(t1, tcg_env, aofs + i);
21139
+ tcg_gen_ld_vec(t2, tcg_env, bofs + i);
21140
+ tcg_gen_ld_vec(t3, tcg_env, cofs + i);
21141
fni(vece, t0, t1, t2, t3);
21142
- tcg_gen_st_vec(t0, cpu_env, dofs + i);
21143
+ tcg_gen_st_vec(t0, tcg_env, dofs + i);
21144
if (write_aofs) {
21145
- tcg_gen_st_vec(t1, cpu_env, aofs + i);
21146
+ tcg_gen_st_vec(t1, tcg_env, aofs + i);
21147
}
21148
}
21149
tcg_temp_free_vec(t3);
21150
@@ -XXX,XX +XXX,XX @@ static void expand_4i_vec(unsigned vece, uint32_t dofs, uint32_t aofs,
21151
uint32_t i;
21152
21153
for (i = 0; i < oprsz; i += tysz) {
21154
- tcg_gen_ld_vec(t1, cpu_env, aofs + i);
21155
- tcg_gen_ld_vec(t2, cpu_env, bofs + i);
21156
- tcg_gen_ld_vec(t3, cpu_env, cofs + i);
21157
+ tcg_gen_ld_vec(t1, tcg_env, aofs + i);
21158
+ tcg_gen_ld_vec(t2, tcg_env, bofs + i);
21159
+ tcg_gen_ld_vec(t3, tcg_env, cofs + i);
21160
fni(vece, t0, t1, t2, t3, c);
21161
- tcg_gen_st_vec(t0, cpu_env, dofs + i);
21162
+ tcg_gen_st_vec(t0, tcg_env, dofs + i);
21163
}
21164
tcg_temp_free_vec(t3);
21165
tcg_temp_free_vec(t2);
21166
@@ -XXX,XX +XXX,XX @@ void tcg_gen_gvec_dup_mem(unsigned vece, uint32_t dofs, uint32_t aofs,
21167
TCGType type = choose_vector_type(NULL, vece, oprsz, 0);
21168
if (type != 0) {
21169
TCGv_vec t_vec = tcg_temp_new_vec(type);
21170
- tcg_gen_dup_mem_vec(vece, t_vec, cpu_env, aofs);
21171
+ tcg_gen_dup_mem_vec(vece, t_vec, tcg_env, aofs);
21172
do_dup_store(type, dofs, oprsz, maxsz, t_vec);
21173
tcg_temp_free_vec(t_vec);
21174
} else if (vece <= MO_32) {
21175
TCGv_i32 in = tcg_temp_ebb_new_i32();
21176
switch (vece) {
21177
case MO_8:
21178
- tcg_gen_ld8u_i32(in, cpu_env, aofs);
21179
+ tcg_gen_ld8u_i32(in, tcg_env, aofs);
21180
break;
21181
case MO_16:
21182
- tcg_gen_ld16u_i32(in, cpu_env, aofs);
21183
+ tcg_gen_ld16u_i32(in, tcg_env, aofs);
21184
break;
21185
default:
21186
- tcg_gen_ld_i32(in, cpu_env, aofs);
21187
+ tcg_gen_ld_i32(in, tcg_env, aofs);
21188
break;
21189
}
21190
do_dup(vece, dofs, oprsz, maxsz, in, NULL, 0);
21191
tcg_temp_free_i32(in);
21192
} else {
21193
TCGv_i64 in = tcg_temp_ebb_new_i64();
21194
- tcg_gen_ld_i64(in, cpu_env, aofs);
21195
+ tcg_gen_ld_i64(in, tcg_env, aofs);
21196
do_dup(vece, dofs, oprsz, maxsz, NULL, in, 0);
21197
tcg_temp_free_i64(in);
21198
}
21199
@@ -XXX,XX +XXX,XX @@ void tcg_gen_gvec_dup_mem(unsigned vece, uint32_t dofs, uint32_t aofs,
21200
if (TCG_TARGET_HAS_v128) {
21201
TCGv_vec in = tcg_temp_new_vec(TCG_TYPE_V128);
21202
21203
- tcg_gen_ld_vec(in, cpu_env, aofs);
21204
+ tcg_gen_ld_vec(in, tcg_env, aofs);
21205
for (i = (aofs == dofs) * 16; i < oprsz; i += 16) {
21206
- tcg_gen_st_vec(in, cpu_env, dofs + i);
21207
+ tcg_gen_st_vec(in, tcg_env, dofs + i);
21208
}
21209
tcg_temp_free_vec(in);
21210
} else {
21211
TCGv_i64 in0 = tcg_temp_ebb_new_i64();
21212
TCGv_i64 in1 = tcg_temp_ebb_new_i64();
21213
21214
- tcg_gen_ld_i64(in0, cpu_env, aofs);
21215
- tcg_gen_ld_i64(in1, cpu_env, aofs + 8);
21216
+ tcg_gen_ld_i64(in0, tcg_env, aofs);
21217
+ tcg_gen_ld_i64(in1, tcg_env, aofs + 8);
21218
for (i = (aofs == dofs) * 16; i < oprsz; i += 16) {
21219
- tcg_gen_st_i64(in0, cpu_env, dofs + i);
21220
- tcg_gen_st_i64(in1, cpu_env, dofs + i + 8);
21221
+ tcg_gen_st_i64(in0, tcg_env, dofs + i);
21222
+ tcg_gen_st_i64(in1, tcg_env, dofs + i + 8);
21223
}
21224
tcg_temp_free_i64(in0);
21225
tcg_temp_free_i64(in1);
21226
@@ -XXX,XX +XXX,XX @@ void tcg_gen_gvec_dup_mem(unsigned vece, uint32_t dofs, uint32_t aofs,
21227
if (TCG_TARGET_HAS_v256) {
21228
TCGv_vec in = tcg_temp_new_vec(TCG_TYPE_V256);
21229
21230
- tcg_gen_ld_vec(in, cpu_env, aofs);
21231
+ tcg_gen_ld_vec(in, tcg_env, aofs);
21232
for (i = (aofs == dofs) * 32; i < oprsz; i += 32) {
21233
- tcg_gen_st_vec(in, cpu_env, dofs + i);
21234
+ tcg_gen_st_vec(in, tcg_env, dofs + i);
21235
}
21236
tcg_temp_free_vec(in);
21237
} else if (TCG_TARGET_HAS_v128) {
21238
TCGv_vec in0 = tcg_temp_new_vec(TCG_TYPE_V128);
21239
TCGv_vec in1 = tcg_temp_new_vec(TCG_TYPE_V128);
21240
21241
- tcg_gen_ld_vec(in0, cpu_env, aofs);
21242
- tcg_gen_ld_vec(in1, cpu_env, aofs + 16);
21243
+ tcg_gen_ld_vec(in0, tcg_env, aofs);
21244
+ tcg_gen_ld_vec(in1, tcg_env, aofs + 16);
21245
for (i = (aofs == dofs) * 32; i < oprsz; i += 32) {
21246
- tcg_gen_st_vec(in0, cpu_env, dofs + i);
21247
- tcg_gen_st_vec(in1, cpu_env, dofs + i + 16);
21248
+ tcg_gen_st_vec(in0, tcg_env, dofs + i);
21249
+ tcg_gen_st_vec(in1, tcg_env, dofs + i + 16);
21250
}
21251
tcg_temp_free_vec(in0);
21252
tcg_temp_free_vec(in1);
21253
@@ -XXX,XX +XXX,XX @@ void tcg_gen_gvec_dup_mem(unsigned vece, uint32_t dofs, uint32_t aofs,
21254
21255
for (j = 0; j < 4; ++j) {
21256
in[j] = tcg_temp_ebb_new_i64();
21257
- tcg_gen_ld_i64(in[j], cpu_env, aofs + j * 8);
21258
+ tcg_gen_ld_i64(in[j], tcg_env, aofs + j * 8);
21259
}
21260
for (i = (aofs == dofs) * 32; i < oprsz; i += 32) {
21261
for (j = 0; j < 4; ++j) {
21262
- tcg_gen_st_i64(in[j], cpu_env, dofs + i + j * 8);
21263
+ tcg_gen_st_i64(in[j], tcg_env, dofs + i + j * 8);
21264
}
21265
}
21266
for (j = 0; j < 4; ++j) {
21267
@@ -XXX,XX +XXX,XX @@ static void expand_2sh_vec(unsigned vece, uint32_t dofs, uint32_t aofs,
21268
uint32_t i;
21269
21270
for (i = 0; i < oprsz; i += tysz) {
21271
- tcg_gen_ld_vec(t0, cpu_env, aofs + i);
21272
+ tcg_gen_ld_vec(t0, tcg_env, aofs + i);
21273
fni(vece, t0, t0, shift);
21274
- tcg_gen_st_vec(t0, cpu_env, dofs + i);
21275
+ tcg_gen_st_vec(t0, tcg_env, dofs + i);
21276
}
21277
tcg_temp_free_vec(t0);
21278
}
21279
@@ -XXX,XX +XXX,XX @@ do_gvec_shifts(unsigned vece, uint32_t dofs, uint32_t aofs, TCGv_i32 shift,
21280
21281
tcg_gen_shli_i32(desc, shift, SIMD_DATA_SHIFT);
21282
tcg_gen_ori_i32(desc, desc, simd_desc(oprsz, maxsz, 0));
21283
- tcg_gen_addi_ptr(a0, cpu_env, dofs);
21284
- tcg_gen_addi_ptr(a1, cpu_env, aofs);
21285
+ tcg_gen_addi_ptr(a0, tcg_env, dofs);
21286
+ tcg_gen_addi_ptr(a1, tcg_env, aofs);
21287
21288
g->fno[vece](a0, a1, desc);
21289
21290
@@ -XXX,XX +XXX,XX @@ static void expand_cmp_i32(uint32_t dofs, uint32_t aofs, uint32_t bofs,
21291
uint32_t i;
21292
21293
for (i = 0; i < oprsz; i += 4) {
21294
- tcg_gen_ld_i32(t0, cpu_env, aofs + i);
21295
- tcg_gen_ld_i32(t1, cpu_env, bofs + i);
21296
+ tcg_gen_ld_i32(t0, tcg_env, aofs + i);
21297
+ tcg_gen_ld_i32(t1, tcg_env, bofs + i);
21298
tcg_gen_negsetcond_i32(cond, t0, t0, t1);
21299
- tcg_gen_st_i32(t0, cpu_env, dofs + i);
21300
+ tcg_gen_st_i32(t0, tcg_env, dofs + i);
21301
}
21302
tcg_temp_free_i32(t1);
21303
tcg_temp_free_i32(t0);
21304
@@ -XXX,XX +XXX,XX @@ static void expand_cmp_i64(uint32_t dofs, uint32_t aofs, uint32_t bofs,
21305
uint32_t i;
21306
21307
for (i = 0; i < oprsz; i += 8) {
21308
- tcg_gen_ld_i64(t0, cpu_env, aofs + i);
21309
- tcg_gen_ld_i64(t1, cpu_env, bofs + i);
21310
+ tcg_gen_ld_i64(t0, tcg_env, aofs + i);
21311
+ tcg_gen_ld_i64(t1, tcg_env, bofs + i);
21312
tcg_gen_negsetcond_i64(cond, t0, t0, t1);
21313
- tcg_gen_st_i64(t0, cpu_env, dofs + i);
21314
+ tcg_gen_st_i64(t0, tcg_env, dofs + i);
21315
}
21316
tcg_temp_free_i64(t1);
21317
tcg_temp_free_i64(t0);
21318
@@ -XXX,XX +XXX,XX @@ static void expand_cmp_vec(unsigned vece, uint32_t dofs, uint32_t aofs,
21319
uint32_t i;
21320
21321
for (i = 0; i < oprsz; i += tysz) {
21322
- tcg_gen_ld_vec(t0, cpu_env, aofs + i);
21323
- tcg_gen_ld_vec(t1, cpu_env, bofs + i);
21324
+ tcg_gen_ld_vec(t0, tcg_env, aofs + i);
21325
+ tcg_gen_ld_vec(t1, tcg_env, bofs + i);
21326
tcg_gen_cmp_vec(cond, vece, t0, t0, t1);
21327
- tcg_gen_st_vec(t0, cpu_env, dofs + i);
21328
+ tcg_gen_st_vec(t0, tcg_env, dofs + i);
21329
}
21330
tcg_temp_free_vec(t1);
21331
tcg_temp_free_vec(t0);
21332
@@ -XXX,XX +XXX,XX @@ static void expand_cmps_vec(unsigned vece, uint32_t dofs, uint32_t aofs,
21333
uint32_t i;
21334
21335
for (i = 0; i < oprsz; i += tysz) {
21336
- tcg_gen_ld_vec(t1, cpu_env, aofs + i);
21337
+ tcg_gen_ld_vec(t1, tcg_env, aofs + i);
21338
tcg_gen_cmp_vec(cond, vece, t0, t1, c);
21339
- tcg_gen_st_vec(t0, cpu_env, dofs + i);
21340
+ tcg_gen_st_vec(t0, tcg_env, dofs + i);
21341
}
21342
}
21343
21344
@@ -XXX,XX +XXX,XX @@ void tcg_gen_gvec_cmps(TCGCond cond, unsigned vece, uint32_t dofs,
21345
uint32_t i;
21346
21347
for (i = 0; i < oprsz; i += 8) {
21348
- tcg_gen_ld_i64(t0, cpu_env, aofs + i);
21349
+ tcg_gen_ld_i64(t0, tcg_env, aofs + i);
21350
tcg_gen_negsetcond_i64(cond, t0, t0, c);
21351
- tcg_gen_st_i64(t0, cpu_env, dofs + i);
21352
+ tcg_gen_st_i64(t0, tcg_env, dofs + i);
21353
}
21354
tcg_temp_free_i64(t0);
21355
} else if (vece == MO_32 && check_size_impl(oprsz, 4)) {
21356
@@ -XXX,XX +XXX,XX @@ void tcg_gen_gvec_cmps(TCGCond cond, unsigned vece, uint32_t dofs,
21357
21358
tcg_gen_extrl_i64_i32(t1, c);
21359
for (i = 0; i < oprsz; i += 8) {
21360
- tcg_gen_ld_i32(t0, cpu_env, aofs + i);
21361
+ tcg_gen_ld_i32(t0, tcg_env, aofs + i);
21362
tcg_gen_negsetcond_i32(cond, t0, t0, t1);
21363
- tcg_gen_st_i32(t0, cpu_env, dofs + i);
21364
+ tcg_gen_st_i32(t0, tcg_env, dofs + i);
21365
}
21366
tcg_temp_free_i32(t0);
21367
tcg_temp_free_i32(t1);
21368
diff --git a/tcg/tcg-op-ldst.c b/tcg/tcg-op-ldst.c
21369
index XXXXXXX..XXXXXXX 100644
21370
--- a/tcg/tcg-op-ldst.c
21371
+++ b/tcg/tcg-op-ldst.c
21372
@@ -XXX,XX +XXX,XX @@ static void tcg_gen_qemu_ld_i128_int(TCGv_i128 val, TCGTemp *addr,
21373
tcg_gen_extu_i32_i64(ext_addr, temp_tcgv_i32(addr));
21374
addr = tcgv_i64_temp(ext_addr);
21375
}
21376
- gen_helper_ld_i128(val, cpu_env, temp_tcgv_i64(addr),
21377
+ gen_helper_ld_i128(val, tcg_env, temp_tcgv_i64(addr),
21378
tcg_constant_i32(orig_oi));
21379
}
21380
21381
@@ -XXX,XX +XXX,XX @@ static void tcg_gen_qemu_st_i128_int(TCGv_i128 val, TCGTemp *addr,
21382
tcg_gen_extu_i32_i64(ext_addr, temp_tcgv_i32(addr));
21383
addr = tcgv_i64_temp(ext_addr);
21384
}
21385
- gen_helper_st_i128(cpu_env, temp_tcgv_i64(addr), val,
21386
+ gen_helper_st_i128(tcg_env, temp_tcgv_i64(addr), val,
21387
tcg_constant_i32(orig_oi));
21388
}
21389
21390
@@ -XXX,XX +XXX,XX @@ static void tcg_gen_atomic_cmpxchg_i32_int(TCGv_i32 retv, TCGTemp *addr,
21391
21392
oi = make_memop_idx(memop & ~MO_SIGN, idx);
21393
a64 = maybe_extend_addr64(addr);
21394
- gen(retv, cpu_env, a64, cmpv, newv, tcg_constant_i32(oi));
21395
+ gen(retv, tcg_env, a64, cmpv, newv, tcg_constant_i32(oi));
21396
maybe_free_addr64(a64);
21397
21398
if (memop & MO_SIGN) {
21399
@@ -XXX,XX +XXX,XX @@ static void tcg_gen_atomic_cmpxchg_i64_int(TCGv_i64 retv, TCGTemp *addr,
21400
if (gen) {
21401
MemOpIdx oi = make_memop_idx(memop, idx);
21402
TCGv_i64 a64 = maybe_extend_addr64(addr);
21403
- gen(retv, cpu_env, a64, cmpv, newv, tcg_constant_i32(oi));
21404
+ gen(retv, tcg_env, a64, cmpv, newv, tcg_constant_i32(oi));
21405
maybe_free_addr64(a64);
21406
return;
21407
}
21408
21409
- gen_helper_exit_atomic(cpu_env);
21410
+ gen_helper_exit_atomic(tcg_env);
21411
21412
/*
21413
* Produce a result for a well-formed opcode stream. This satisfies
21414
@@ -XXX,XX +XXX,XX @@ static void tcg_gen_nonatomic_cmpxchg_i128_int(TCGv_i128 retv, TCGTemp *addr,
21415
MemOpIdx oi = make_memop_idx(memop, idx);
21416
TCGv_i64 a64 = maybe_extend_addr64(addr);
21417
21418
- gen_helper_nonatomic_cmpxchgo(retv, cpu_env, a64, cmpv, newv,
21419
+ gen_helper_nonatomic_cmpxchgo(retv, tcg_env, a64, cmpv, newv,
21420
tcg_constant_i32(oi));
21421
maybe_free_addr64(a64);
21422
} else {
21423
@@ -XXX,XX +XXX,XX @@ static void tcg_gen_atomic_cmpxchg_i128_int(TCGv_i128 retv, TCGTemp *addr,
21424
if (gen) {
21425
MemOpIdx oi = make_memop_idx(memop, idx);
21426
TCGv_i64 a64 = maybe_extend_addr64(addr);
21427
- gen(retv, cpu_env, a64, cmpv, newv, tcg_constant_i32(oi));
21428
+ gen(retv, tcg_env, a64, cmpv, newv, tcg_constant_i32(oi));
21429
maybe_free_addr64(a64);
21430
return;
21431
}
21432
21433
- gen_helper_exit_atomic(cpu_env);
21434
+ gen_helper_exit_atomic(tcg_env);
21435
21436
/*
21437
* Produce a result for a well-formed opcode stream. This satisfies
21438
@@ -XXX,XX +XXX,XX @@ static void do_atomic_op_i32(TCGv_i32 ret, TCGTemp *addr, TCGv_i32 val,
21439
21440
oi = make_memop_idx(memop & ~MO_SIGN, idx);
21441
a64 = maybe_extend_addr64(addr);
21442
- gen(ret, cpu_env, a64, val, tcg_constant_i32(oi));
21443
+ gen(ret, tcg_env, a64, val, tcg_constant_i32(oi));
21444
maybe_free_addr64(a64);
21445
21446
if (memop & MO_SIGN) {
21447
@@ -XXX,XX +XXX,XX @@ static void do_atomic_op_i64(TCGv_i64 ret, TCGTemp *addr, TCGv_i64 val,
21448
if (gen) {
21449
MemOpIdx oi = make_memop_idx(memop & ~MO_SIGN, idx);
21450
TCGv_i64 a64 = maybe_extend_addr64(addr);
21451
- gen(ret, cpu_env, a64, val, tcg_constant_i32(oi));
21452
+ gen(ret, tcg_env, a64, val, tcg_constant_i32(oi));
21453
maybe_free_addr64(a64);
21454
return;
21455
}
21456
21457
- gen_helper_exit_atomic(cpu_env);
21458
+ gen_helper_exit_atomic(tcg_env);
21459
/* Produce a result, so that we have a well-formed opcode stream
21460
with respect to uses of the result in the (dead) code following. */
21461
tcg_gen_movi_i64(ret, 0);
21462
diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c
21463
index XXXXXXX..XXXXXXX 100644
21464
--- a/tcg/tcg-op.c
21465
+++ b/tcg/tcg-op.c
21466
@@ -XXX,XX +XXX,XX @@ void tcg_gen_lookup_and_goto_ptr(void)
21467
21468
plugin_gen_disable_mem_helpers();
21469
ptr = tcg_temp_ebb_new_ptr();
21470
- gen_helper_lookup_tb_ptr(ptr, cpu_env);
21471
+ gen_helper_lookup_tb_ptr(ptr, tcg_env);
21472
tcg_gen_op1i(INDEX_op_goto_ptr, tcgv_ptr_arg(ptr));
21473
tcg_temp_free_ptr(ptr);
21474
}
21475
diff --git a/tcg/tcg.c b/tcg/tcg.c
21476
index XXXXXXX..XXXXXXX 100644
21477
--- a/tcg/tcg.c
21478
+++ b/tcg/tcg.c
21479
@@ -XXX,XX +XXX,XX @@ __thread TCGContext *tcg_ctx;
21480
TCGContext **tcg_ctxs;
21481
unsigned int tcg_cur_ctxs;
21482
unsigned int tcg_max_ctxs;
21483
-TCGv_env cpu_env = 0;
21484
+TCGv_env tcg_env;
21485
const void *tcg_code_gen_epilogue;
21486
uintptr_t tcg_splitwx_diff;
21487
21488
@@ -XXX,XX +XXX,XX @@ static void tcg_context_init(unsigned max_cpus)
21489
21490
tcg_debug_assert(!tcg_regset_test_reg(s->reserved_regs, TCG_AREG0));
21491
ts = tcg_global_reg_new_internal(s, TCG_TYPE_PTR, TCG_AREG0, "env");
21492
- cpu_env = temp_tcgv_ptr(ts);
21493
+ tcg_env = temp_tcgv_ptr(ts);
21494
}
21495
21496
void tcg_init(size_t tb_size, int splitwx, unsigned max_cpus)
21497
diff --git a/target/cris/translate_v10.c.inc b/target/cris/translate_v10.c.inc
21498
index XXXXXXX..XXXXXXX 100644
21499
--- a/target/cris/translate_v10.c.inc
21500
+++ b/target/cris/translate_v10.c.inc
21501
@@ -XXX,XX +XXX,XX @@ static unsigned int dec10_quick_imm(DisasContext *dc)
21502
} else {
21503
/* BTST */
21504
cris_update_cc_op(dc, CC_OP_FLAGS, 4);
21505
- gen_helper_btst(cpu_PR[PR_CCS], cpu_env, cpu_R[dc->dst],
21506
+ gen_helper_btst(cpu_PR[PR_CCS], tcg_env, cpu_R[dc->dst],
21507
c, cpu_PR[PR_CCS]);
21508
}
21509
break;
21510
@@ -XXX,XX +XXX,XX @@ static unsigned int dec10_reg(DisasContext *dc)
21511
LOG_DIS("btst $r%d, $r%d sz=%d\n", dc->src, dc->dst, size);
21512
cris_cc_mask(dc, CC_MASK_NZVC);
21513
cris_update_cc_op(dc, CC_OP_FLAGS, 4);
21514
- gen_helper_btst(cpu_PR[PR_CCS], cpu_env, cpu_R[dc->dst],
21515
+ gen_helper_btst(cpu_PR[PR_CCS], tcg_env, cpu_R[dc->dst],
21516
cpu_R[dc->src], cpu_PR[PR_CCS]);
21517
break;
21518
case CRISV10_REG_DSTEP:
21519
@@ -XXX,XX +XXX,XX @@ void cris_initialize_crisv10_tcg(void)
21520
{
21521
int i;
21522
21523
- cc_x = tcg_global_mem_new(cpu_env,
21524
+ cc_x = tcg_global_mem_new(tcg_env,
21525
offsetof(CPUCRISState, cc_x), "cc_x");
21526
- cc_src = tcg_global_mem_new(cpu_env,
21527
+ cc_src = tcg_global_mem_new(tcg_env,
21528
offsetof(CPUCRISState, cc_src), "cc_src");
21529
- cc_dest = tcg_global_mem_new(cpu_env,
21530
+ cc_dest = tcg_global_mem_new(tcg_env,
21531
offsetof(CPUCRISState, cc_dest),
21532
"cc_dest");
21533
- cc_result = tcg_global_mem_new(cpu_env,
21534
+ cc_result = tcg_global_mem_new(tcg_env,
21535
offsetof(CPUCRISState, cc_result),
21536
"cc_result");
21537
- cc_op = tcg_global_mem_new(cpu_env,
21538
+ cc_op = tcg_global_mem_new(tcg_env,
21539
offsetof(CPUCRISState, cc_op), "cc_op");
21540
- cc_size = tcg_global_mem_new(cpu_env,
21541
+ cc_size = tcg_global_mem_new(tcg_env,
21542
offsetof(CPUCRISState, cc_size),
21543
"cc_size");
21544
- cc_mask = tcg_global_mem_new(cpu_env,
21545
+ cc_mask = tcg_global_mem_new(tcg_env,
21546
offsetof(CPUCRISState, cc_mask),
21547
"cc_mask");
21548
21549
- env_pc = tcg_global_mem_new(cpu_env,
21550
+ env_pc = tcg_global_mem_new(tcg_env,
21551
offsetof(CPUCRISState, pc),
21552
"pc");
21553
- env_btarget = tcg_global_mem_new(cpu_env,
21554
+ env_btarget = tcg_global_mem_new(tcg_env,
21555
offsetof(CPUCRISState, btarget),
21556
"btarget");
21557
- env_btaken = tcg_global_mem_new(cpu_env,
21558
+ env_btaken = tcg_global_mem_new(tcg_env,
21559
offsetof(CPUCRISState, btaken),
21560
"btaken");
21561
for (i = 0; i < 16; i++) {
21562
- cpu_R[i] = tcg_global_mem_new(cpu_env,
21563
+ cpu_R[i] = tcg_global_mem_new(tcg_env,
21564
offsetof(CPUCRISState, regs[i]),
21565
regnames_v10[i]);
21566
}
21567
for (i = 0; i < 16; i++) {
21568
- cpu_PR[i] = tcg_global_mem_new(cpu_env,
21569
+ cpu_PR[i] = tcg_global_mem_new(tcg_env,
21570
offsetof(CPUCRISState, pregs[i]),
21571
pregnames_v10[i]);
21572
}
21573
diff --git a/target/i386/tcg/decode-new.c.inc b/target/i386/tcg/decode-new.c.inc
21574
index XXXXXXX..XXXXXXX 100644
21575
--- a/target/i386/tcg/decode-new.c.inc
21576
+++ b/target/i386/tcg/decode-new.c.inc
21577
@@ -XXX,XX +XXX,XX @@ static void disas_insn_new(DisasContext *s, CPUState *cpu, int b)
21578
}
21579
if (decode.e.special == X86_SPECIAL_MMX &&
21580
!(s->prefix & (PREFIX_REPZ | PREFIX_REPNZ | PREFIX_DATA))) {
21581
- gen_helper_enter_mmx(cpu_env);
21582
+ gen_helper_enter_mmx(tcg_env);
21583
}
21584
21585
if (decode.op[0].has_ea || decode.op[1].has_ea || decode.op[2].has_ea) {
21586
diff --git a/target/i386/tcg/emit.c.inc b/target/i386/tcg/emit.c.inc
21587
index XXXXXXX..XXXXXXX 100644
21588
--- a/target/i386/tcg/emit.c.inc
21589
+++ b/target/i386/tcg/emit.c.inc
21590
@@ -XXX,XX +XXX,XX @@ static void gen_load_sse(DisasContext *s, TCGv temp, MemOp ot, int dest_ofs, boo
21591
switch(ot) {
21592
case MO_8:
21593
gen_op_ld_v(s, MO_8, temp, s->A0);
21594
- tcg_gen_st8_tl(temp, cpu_env, dest_ofs);
21595
+ tcg_gen_st8_tl(temp, tcg_env, dest_ofs);
21596
break;
21597
case MO_16:
21598
gen_op_ld_v(s, MO_16, temp, s->A0);
21599
- tcg_gen_st16_tl(temp, cpu_env, dest_ofs);
21600
+ tcg_gen_st16_tl(temp, tcg_env, dest_ofs);
21601
break;
21602
case MO_32:
21603
gen_op_ld_v(s, MO_32, temp, s->A0);
21604
- tcg_gen_st32_tl(temp, cpu_env, dest_ofs);
21605
+ tcg_gen_st32_tl(temp, tcg_env, dest_ofs);
21606
break;
21607
case MO_64:
21608
gen_ldq_env_A0(s, dest_ofs);
21609
@@ -XXX,XX +XXX,XX @@ static void gen_load(DisasContext *s, X86DecodedInsn *decode, int opn, TCGv v)
21610
case X86_OP_SKIP:
21611
return;
21612
case X86_OP_SEG:
21613
- tcg_gen_ld32u_tl(v, cpu_env,
21614
+ tcg_gen_ld32u_tl(v, tcg_env,
21615
offsetof(CPUX86State,segs[op->n].selector));
21616
break;
21617
case X86_OP_CR:
21618
- tcg_gen_ld_tl(v, cpu_env, offsetof(CPUX86State, cr[op->n]));
21619
+ tcg_gen_ld_tl(v, tcg_env, offsetof(CPUX86State, cr[op->n]));
21620
break;
21621
case X86_OP_DR:
21622
- tcg_gen_ld_tl(v, cpu_env, offsetof(CPUX86State, dr[op->n]));
21623
+ tcg_gen_ld_tl(v, tcg_env, offsetof(CPUX86State, dr[op->n]));
21624
break;
21625
case X86_OP_INT:
21626
if (op->has_ea) {
21627
@@ -XXX,XX +XXX,XX @@ static TCGv_ptr op_ptr(X86DecodedInsn *decode, int opn)
21628
op->v_ptr = tcg_temp_new_ptr();
21629
21630
/* The temporary points to the MMXReg or ZMMReg. */
21631
- tcg_gen_addi_ptr(op->v_ptr, cpu_env, vector_reg_offset(op));
21632
+ tcg_gen_addi_ptr(op->v_ptr, tcg_env, vector_reg_offset(op));
21633
return op->v_ptr;
21634
}
21635
21636
@@ -XXX,XX +XXX,XX @@ static void gen_3dnow(DisasContext *s, CPUX86State *env, X86DecodedInsn *decode)
21637
return;
21638
}
21639
21640
- gen_helper_enter_mmx(cpu_env);
21641
+ gen_helper_enter_mmx(tcg_env);
21642
if (fn == FN_3DNOW_MOVE) {
21643
- tcg_gen_ld_i64(s->tmp1_i64, cpu_env, decode->op[1].offset);
21644
- tcg_gen_st_i64(s->tmp1_i64, cpu_env, decode->op[0].offset);
21645
+ tcg_gen_ld_i64(s->tmp1_i64, tcg_env, decode->op[1].offset);
21646
+ tcg_gen_st_i64(s->tmp1_i64, tcg_env, decode->op[0].offset);
21647
} else {
21648
- fn(cpu_env, OP_PTR0, OP_PTR1);
21649
+ fn(tcg_env, OP_PTR0, OP_PTR1);
21650
}
21651
}
21652
21653
@@ -XXX,XX +XXX,XX @@ static inline void gen_unary_fp_sse(DisasContext *s, CPUX86State *env, X86Decode
21654
gen_illegal_opcode(s);
21655
return;
21656
}
21657
- fn(cpu_env, OP_PTR0, OP_PTR1, OP_PTR2);
21658
+ fn(tcg_env, OP_PTR0, OP_PTR1, OP_PTR2);
21659
} else {
21660
SSEFunc_0_epp ps, pd, fn;
21661
ps = s->vex_l ? ps_ymm : ps_xmm;
21662
@@ -XXX,XX +XXX,XX @@ static inline void gen_unary_fp_sse(DisasContext *s, CPUX86State *env, X86Decode
21663
gen_illegal_opcode(s);
21664
return;
21665
}
21666
- fn(cpu_env, OP_PTR0, OP_PTR2);
21667
+ fn(tcg_env, OP_PTR0, OP_PTR2);
21668
}
21669
}
21670
#define UNARY_FP_SSE(uname, lname) \
21671
@@ -XXX,XX +XXX,XX @@ static inline void gen_fp_sse(DisasContext *s, CPUX86State *env, X86DecodedInsn
21672
fn = s->prefix & PREFIX_DATA ? pd : ps;
21673
}
21674
if (fn) {
21675
- fn(cpu_env, OP_PTR0, OP_PTR1, OP_PTR2);
21676
+ fn(tcg_env, OP_PTR0, OP_PTR1, OP_PTR2);
21677
} else {
21678
gen_illegal_opcode(s);
21679
}
21680
@@ -XXX,XX +XXX,XX @@ static void gen_##uname##Px(DisasContext *s, CPUX86State *env, X86DecodedInsn *d
21681
SSEFunc_0_eppppii ymm = s->vex_w ? gen_helper_fma4pd_ymm : gen_helper_fma4ps_ymm; \
21682
SSEFunc_0_eppppii fn = s->vex_l ? ymm : xmm; \
21683
\
21684
- fn(cpu_env, OP_PTR0, ptr0, ptr1, ptr2, \
21685
+ fn(tcg_env, OP_PTR0, ptr0, ptr1, ptr2, \
21686
tcg_constant_i32(even), \
21687
tcg_constant_i32((even) ^ (odd))); \
21688
}
21689
@@ -XXX,XX +XXX,XX @@ static void gen_##uname##Sx(DisasContext *s, CPUX86State *env, X86DecodedInsn *d
21690
{ \
21691
SSEFunc_0_eppppi fn = s->vex_w ? gen_helper_fma4sd : gen_helper_fma4ss; \
21692
\
21693
- fn(cpu_env, OP_PTR0, ptr0, ptr1, ptr2, \
21694
+ fn(tcg_env, OP_PTR0, ptr0, ptr1, ptr2, \
21695
tcg_constant_i32(flags)); \
21696
} \
21697
21698
@@ -XXX,XX +XXX,XX @@ static inline void gen_unary_fp32_sse(DisasContext *s, CPUX86State *env, X86Deco
21699
if (!ss) {
21700
goto illegal_op;
21701
}
21702
- ss(cpu_env, OP_PTR0, OP_PTR1, OP_PTR2);
21703
+ ss(tcg_env, OP_PTR0, OP_PTR1, OP_PTR2);
21704
} else {
21705
SSEFunc_0_epp fn = s->vex_l ? ps_ymm : ps_xmm;
21706
if (!fn) {
21707
goto illegal_op;
21708
}
21709
- fn(cpu_env, OP_PTR0, OP_PTR2);
21710
+ fn(tcg_env, OP_PTR0, OP_PTR2);
21711
}
21712
return;
21713
21714
@@ -XXX,XX +XXX,XX @@ static inline void gen_horizontal_fp_sse(DisasContext *s, CPUX86State *env, X86D
21715
ps = s->vex_l ? ps_ymm : ps_xmm;
21716
pd = s->vex_l ? pd_ymm : pd_xmm;
21717
fn = s->prefix & PREFIX_DATA ? pd : ps;
21718
- fn(cpu_env, OP_PTR0, OP_PTR1, OP_PTR2);
21719
+ fn(tcg_env, OP_PTR0, OP_PTR1, OP_PTR2);
21720
}
21721
#define HORIZONTAL_FP_SSE(uname, lname) \
21722
static void gen_##uname(DisasContext *s, CPUX86State *env, X86DecodedInsn *decode) \
21723
@@ -XXX,XX +XXX,XX @@ static inline void gen_ternary_sse(DisasContext *s, CPUX86State *env, X86Decoded
21724
TCGv_ptr ptr3 = tcg_temp_new_ptr();
21725
21726
/* The format of the fourth input is Lx */
21727
- tcg_gen_addi_ptr(ptr3, cpu_env, ZMM_OFFSET(op3));
21728
- fn(cpu_env, OP_PTR0, OP_PTR1, OP_PTR2, ptr3);
21729
+ tcg_gen_addi_ptr(ptr3, tcg_env, ZMM_OFFSET(op3));
21730
+ fn(tcg_env, OP_PTR0, OP_PTR1, OP_PTR2, ptr3);
21731
}
21732
#define TERNARY_SSE(uname, uvname, lname) \
21733
static void gen_##uvname(DisasContext *s, CPUX86State *env, X86DecodedInsn *decode) \
21734
@@ -XXX,XX +XXX,XX @@ static inline void gen_binary_imm_sse(DisasContext *s, CPUX86State *env, X86Deco
21735
{
21736
TCGv_i32 imm = tcg_constant8u_i32(decode->immediate);
21737
if (!s->vex_l) {
21738
- xmm(cpu_env, OP_PTR0, OP_PTR1, OP_PTR2, imm);
21739
+ xmm(tcg_env, OP_PTR0, OP_PTR1, OP_PTR2, imm);
21740
} else {
21741
- ymm(cpu_env, OP_PTR0, OP_PTR1, OP_PTR2, imm);
21742
+ ymm(tcg_env, OP_PTR0, OP_PTR1, OP_PTR2, imm);
21743
}
21744
}
21745
21746
@@ -XXX,XX +XXX,XX @@ static inline void gen_binary_int_sse(DisasContext *s, CPUX86State *env, X86Deco
21747
return;
21748
}
21749
if (!(s->prefix & PREFIX_DATA)) {
21750
- mmx(cpu_env, OP_PTR0, OP_PTR1, OP_PTR2);
21751
+ mmx(tcg_env, OP_PTR0, OP_PTR1, OP_PTR2);
21752
} else if (!s->vex_l) {
21753
- xmm(cpu_env, OP_PTR0, OP_PTR1, OP_PTR2);
21754
+ xmm(tcg_env, OP_PTR0, OP_PTR1, OP_PTR2);
21755
} else {
21756
- ymm(cpu_env, OP_PTR0, OP_PTR1, OP_PTR2);
21757
+ ymm(tcg_env, OP_PTR0, OP_PTR1, OP_PTR2);
21758
}
21759
}
21760
21761
@@ -XXX,XX +XXX,XX @@ BINARY_INT_SSE(VAESENCLAST, aesenclast)
21762
static void gen_##uname(DisasContext *s, CPUX86State *env, X86DecodedInsn *decode) \
21763
{ \
21764
if (!s->vex_l) { \
21765
- gen_helper_##lname##_xmm(cpu_env, OP_PTR1, OP_PTR2); \
21766
+ gen_helper_##lname##_xmm(tcg_env, OP_PTR1, OP_PTR2); \
21767
} else { \
21768
- gen_helper_##lname##_ymm(cpu_env, OP_PTR1, OP_PTR2); \
21769
+ gen_helper_##lname##_ymm(tcg_env, OP_PTR1, OP_PTR2); \
21770
} \
21771
set_cc_op(s, CC_OP_EFLAGS); \
21772
}
21773
@@ -XXX,XX +XXX,XX @@ static inline void gen_unary_int_sse(DisasContext *s, CPUX86State *env, X86Decod
21774
SSEFunc_0_epp xmm, SSEFunc_0_epp ymm)
21775
{
21776
if (!s->vex_l) {
21777
- xmm(cpu_env, OP_PTR0, OP_PTR2);
21778
+ xmm(tcg_env, OP_PTR0, OP_PTR2);
21779
} else {
21780
- ymm(cpu_env, OP_PTR0, OP_PTR2);
21781
+ ymm(tcg_env, OP_PTR0, OP_PTR2);
21782
}
21783
}
21784
21785
@@ -XXX,XX +XXX,XX @@ static inline void gen_unary_imm_fp_sse(DisasContext *s, CPUX86State *env, X86De
21786
{
21787
TCGv_i32 imm = tcg_constant8u_i32(decode->immediate);
21788
if (!s->vex_l) {
21789
- xmm(cpu_env, OP_PTR0, OP_PTR1, imm);
21790
+ xmm(tcg_env, OP_PTR0, OP_PTR1, imm);
21791
} else {
21792
- ymm(cpu_env, OP_PTR0, OP_PTR1, imm);
21793
+ ymm(tcg_env, OP_PTR0, OP_PTR1, imm);
21794
}
21795
}
21796
21797
@@ -XXX,XX +XXX,XX @@ static inline void gen_vexw_avx(DisasContext *s, CPUX86State *env, X86DecodedIns
21798
SSEFunc_0_eppp d = s->vex_l ? d_ymm : d_xmm;
21799
SSEFunc_0_eppp q = s->vex_l ? q_ymm : q_xmm;
21800
SSEFunc_0_eppp fn = s->vex_w ? q : d;
21801
- fn(cpu_env, OP_PTR0, OP_PTR1, OP_PTR2);
21802
+ fn(tcg_env, OP_PTR0, OP_PTR1, OP_PTR2);
21803
}
21804
21805
/* VEX.W affects whether to operate on 32- or 64-bit elements. */
21806
@@ -XXX,XX +XXX,XX @@ static inline void gen_vsib_avx(DisasContext *s, CPUX86State *env, X86DecodedIns
21807
TCGv_ptr index = tcg_temp_new_ptr();
21808
21809
/* Pass third input as (index, base, scale) */
21810
- tcg_gen_addi_ptr(index, cpu_env, ZMM_OFFSET(decode->mem.index));
21811
- fn(cpu_env, OP_PTR0, OP_PTR1, index, s->A0, scale);
21812
+ tcg_gen_addi_ptr(index, tcg_env, ZMM_OFFSET(decode->mem.index));
21813
+ fn(tcg_env, OP_PTR0, OP_PTR1, index, s->A0, scale);
21814
21815
/*
21816
* There are two output operands, so zero OP1's high 128 bits
21817
@@ -XXX,XX +XXX,XX @@ static void gen_CRC32(DisasContext *s, CPUX86State *env, X86DecodedInsn *decode)
21818
21819
static void gen_CVTPI2Px(DisasContext *s, CPUX86State *env, X86DecodedInsn *decode)
21820
{
21821
- gen_helper_enter_mmx(cpu_env);
21822
+ gen_helper_enter_mmx(tcg_env);
21823
if (s->prefix & PREFIX_DATA) {
21824
- gen_helper_cvtpi2pd(cpu_env, OP_PTR0, OP_PTR2);
21825
+ gen_helper_cvtpi2pd(tcg_env, OP_PTR0, OP_PTR2);
21826
} else {
21827
- gen_helper_cvtpi2ps(cpu_env, OP_PTR0, OP_PTR2);
21828
+ gen_helper_cvtpi2ps(tcg_env, OP_PTR0, OP_PTR2);
21829
}
21830
}
21831
21832
static void gen_CVTPx2PI(DisasContext *s, CPUX86State *env, X86DecodedInsn *decode)
21833
{
21834
- gen_helper_enter_mmx(cpu_env);
21835
+ gen_helper_enter_mmx(tcg_env);
21836
if (s->prefix & PREFIX_DATA) {
21837
- gen_helper_cvtpd2pi(cpu_env, OP_PTR0, OP_PTR2);
21838
+ gen_helper_cvtpd2pi(tcg_env, OP_PTR0, OP_PTR2);
21839
} else {
21840
- gen_helper_cvtps2pi(cpu_env, OP_PTR0, OP_PTR2);
21841
+ gen_helper_cvtps2pi(tcg_env, OP_PTR0, OP_PTR2);
21842
}
21843
}
21844
21845
static void gen_CVTTPx2PI(DisasContext *s, CPUX86State *env, X86DecodedInsn *decode)
21846
{
21847
- gen_helper_enter_mmx(cpu_env);
21848
+ gen_helper_enter_mmx(tcg_env);
21849
if (s->prefix & PREFIX_DATA) {
21850
- gen_helper_cvttpd2pi(cpu_env, OP_PTR0, OP_PTR2);
21851
+ gen_helper_cvttpd2pi(tcg_env, OP_PTR0, OP_PTR2);
21852
} else {
21853
- gen_helper_cvttps2pi(cpu_env, OP_PTR0, OP_PTR2);
21854
+ gen_helper_cvttps2pi(tcg_env, OP_PTR0, OP_PTR2);
21855
}
21856
}
21857
21858
static void gen_EMMS(DisasContext *s, CPUX86State *env, X86DecodedInsn *decode)
21859
{
21860
- gen_helper_emms(cpu_env);
21861
+ gen_helper_emms(tcg_env);
21862
}
21863
21864
static void gen_EXTRQ_i(DisasContext *s, CPUX86State *env, X86DecodedInsn *decode)
21865
@@ -XXX,XX +XXX,XX @@ static void gen_EXTRQ_i(DisasContext *s, CPUX86State *env, X86DecodedInsn *decod
21866
TCGv_i32 length = tcg_constant_i32(decode->immediate & 63);
21867
TCGv_i32 index = tcg_constant_i32((decode->immediate >> 8) & 63);
21868
21869
- gen_helper_extrq_i(cpu_env, OP_PTR0, index, length);
21870
+ gen_helper_extrq_i(tcg_env, OP_PTR0, index, length);
21871
}
21872
21873
static void gen_EXTRQ_r(DisasContext *s, CPUX86State *env, X86DecodedInsn *decode)
21874
{
21875
- gen_helper_extrq_r(cpu_env, OP_PTR0, OP_PTR2);
21876
+ gen_helper_extrq_r(tcg_env, OP_PTR0, OP_PTR2);
21877
}
21878
21879
static void gen_INSERTQ_i(DisasContext *s, CPUX86State *env, X86DecodedInsn *decode)
21880
@@ -XXX,XX +XXX,XX @@ static void gen_INSERTQ_i(DisasContext *s, CPUX86State *env, X86DecodedInsn *dec
21881
TCGv_i32 length = tcg_constant_i32(decode->immediate & 63);
21882
TCGv_i32 index = tcg_constant_i32((decode->immediate >> 8) & 63);
21883
21884
- gen_helper_insertq_i(cpu_env, OP_PTR0, OP_PTR1, index, length);
21885
+ gen_helper_insertq_i(tcg_env, OP_PTR0, OP_PTR1, index, length);
21886
}
21887
21888
static void gen_INSERTQ_r(DisasContext *s, CPUX86State *env, X86DecodedInsn *decode)
21889
{
21890
- gen_helper_insertq_r(cpu_env, OP_PTR0, OP_PTR2);
21891
+ gen_helper_insertq_r(tcg_env, OP_PTR0, OP_PTR2);
21892
}
21893
21894
static void gen_LDMXCSR(DisasContext *s, CPUX86State *env, X86DecodedInsn *decode)
21895
@@ -XXX,XX +XXX,XX @@ static void gen_LDMXCSR(DisasContext *s, CPUX86State *env, X86DecodedInsn *decod
21896
return;
21897
}
21898
tcg_gen_trunc_tl_i32(s->tmp2_i32, s->T1);
21899
- gen_helper_ldmxcsr(cpu_env, s->tmp2_i32);
21900
+ gen_helper_ldmxcsr(tcg_env, s->tmp2_i32);
21901
}
21902
21903
static void gen_MASKMOV(DisasContext *s, CPUX86State *env, X86DecodedInsn *decode)
21904
@@ -XXX,XX +XXX,XX @@ static void gen_MASKMOV(DisasContext *s, CPUX86State *env, X86DecodedInsn *decod
21905
gen_add_A0_ds_seg(s);
21906
21907
if (s->prefix & PREFIX_DATA) {
21908
- gen_helper_maskmov_xmm(cpu_env, OP_PTR1, OP_PTR2, s->A0);
21909
+ gen_helper_maskmov_xmm(tcg_env, OP_PTR1, OP_PTR2, s->A0);
21910
} else {
21911
- gen_helper_maskmov_mmx(cpu_env, OP_PTR1, OP_PTR2, s->A0);
21912
+ gen_helper_maskmov_mmx(tcg_env, OP_PTR1, OP_PTR2, s->A0);
21913
}
21914
}
21915
21916
@@ -XXX,XX +XXX,XX @@ static void gen_MOVD_from(DisasContext *s, CPUX86State *env, X86DecodedInsn *dec
21917
switch (ot) {
21918
case MO_32:
21919
#ifdef TARGET_X86_64
21920
- tcg_gen_ld32u_tl(s->T0, cpu_env, decode->op[2].offset);
21921
+ tcg_gen_ld32u_tl(s->T0, tcg_env, decode->op[2].offset);
21922
break;
21923
case MO_64:
21924
#endif
21925
- tcg_gen_ld_tl(s->T0, cpu_env, decode->op[2].offset);
21926
+ tcg_gen_ld_tl(s->T0, tcg_env, decode->op[2].offset);
21927
break;
21928
default:
21929
abort();
21930
@@ -XXX,XX +XXX,XX @@ static void gen_MOVD_to(DisasContext *s, CPUX86State *env, X86DecodedInsn *decod
21931
switch (ot) {
21932
case MO_32:
21933
#ifdef TARGET_X86_64
21934
- tcg_gen_st32_tl(s->T1, cpu_env, lo_ofs);
21935
+ tcg_gen_st32_tl(s->T1, tcg_env, lo_ofs);
21936
break;
21937
case MO_64:
21938
#endif
21939
- tcg_gen_st_tl(s->T1, cpu_env, lo_ofs);
21940
+ tcg_gen_st_tl(s->T1, tcg_env, lo_ofs);
21941
break;
21942
default:
21943
g_assert_not_reached();
21944
@@ -XXX,XX +XXX,XX @@ static void gen_MOVMSK(DisasContext *s, CPUX86State *env, X86DecodedInsn *decode
21945
ps = s->vex_l ? gen_helper_movmskps_ymm : gen_helper_movmskps_xmm;
21946
pd = s->vex_l ? gen_helper_movmskpd_ymm : gen_helper_movmskpd_xmm;
21947
fn = s->prefix & PREFIX_DATA ? pd : ps;
21948
- fn(s->tmp2_i32, cpu_env, OP_PTR2);
21949
+ fn(s->tmp2_i32, tcg_env, OP_PTR2);
21950
tcg_gen_extu_i32_tl(s->T0, s->tmp2_i32);
21951
}
21952
21953
@@ -XXX,XX +XXX,XX @@ static void gen_MOVQ(DisasContext *s, CPUX86State *env, X86DecodedInsn *decode)
21954
int vec_len = vector_len(s, decode);
21955
int lo_ofs = vector_elem_offset(&decode->op[0], MO_64, 0);
21956
21957
- tcg_gen_ld_i64(s->tmp1_i64, cpu_env, decode->op[2].offset);
21958
+ tcg_gen_ld_i64(s->tmp1_i64, tcg_env, decode->op[2].offset);
21959
if (decode->op[0].has_ea) {
21960
tcg_gen_qemu_st_i64(s->tmp1_i64, s->A0, s->mem_index, MO_LEUQ);
21961
} else {
21962
@@ -XXX,XX +XXX,XX @@ static void gen_MOVQ(DisasContext *s, CPUX86State *env, X86DecodedInsn *decode)
21963
* it disqualifies using oprsz < maxsz to emulate VEX128.
21964
*/
21965
tcg_gen_gvec_dup_imm(MO_64, decode->op[0].offset, vec_len, vec_len, 0);
21966
- tcg_gen_st_i64(s->tmp1_i64, cpu_env, lo_ofs);
21967
+ tcg_gen_st_i64(s->tmp1_i64, tcg_env, lo_ofs);
21968
}
21969
}
21970
21971
static void gen_MOVq_dq(DisasContext *s, CPUX86State *env, X86DecodedInsn *decode)
21972
{
21973
- gen_helper_enter_mmx(cpu_env);
21974
+ gen_helper_enter_mmx(tcg_env);
21975
/* Otherwise the same as any other movq. */
21976
return gen_MOVQ(s, env, decode);
21977
}
21978
@@ -XXX,XX +XXX,XX @@ static void gen_PALIGNR(DisasContext *s, CPUX86State *env, X86DecodedInsn *decod
21979
{
21980
TCGv_i32 imm = tcg_constant8u_i32(decode->immediate);
21981
if (!(s->prefix & PREFIX_DATA)) {
21982
- gen_helper_palignr_mmx(cpu_env, OP_PTR0, OP_PTR1, OP_PTR2, imm);
21983
+ gen_helper_palignr_mmx(tcg_env, OP_PTR0, OP_PTR1, OP_PTR2, imm);
21984
} else if (!s->vex_l) {
21985
- gen_helper_palignr_xmm(cpu_env, OP_PTR0, OP_PTR1, OP_PTR2, imm);
21986
+ gen_helper_palignr_xmm(tcg_env, OP_PTR0, OP_PTR1, OP_PTR2, imm);
21987
} else {
21988
- gen_helper_palignr_ymm(cpu_env, OP_PTR0, OP_PTR1, OP_PTR2, imm);
21989
+ gen_helper_palignr_ymm(tcg_env, OP_PTR0, OP_PTR1, OP_PTR2, imm);
21990
}
21991
}
21992
21993
@@ -XXX,XX +XXX,XX @@ static void gen_PANDN(DisasContext *s, CPUX86State *env, X86DecodedInsn *decode)
21994
static void gen_PCMPESTRI(DisasContext *s, CPUX86State *env, X86DecodedInsn *decode)
21995
{
21996
TCGv_i32 imm = tcg_constant8u_i32(decode->immediate);
21997
- gen_helper_pcmpestri_xmm(cpu_env, OP_PTR1, OP_PTR2, imm);
21998
+ gen_helper_pcmpestri_xmm(tcg_env, OP_PTR1, OP_PTR2, imm);
21999
set_cc_op(s, CC_OP_EFLAGS);
22000
}
22001
22002
static void gen_PCMPESTRM(DisasContext *s, CPUX86State *env, X86DecodedInsn *decode)
22003
{
22004
TCGv_i32 imm = tcg_constant8u_i32(decode->immediate);
22005
- gen_helper_pcmpestrm_xmm(cpu_env, OP_PTR1, OP_PTR2, imm);
22006
+ gen_helper_pcmpestrm_xmm(tcg_env, OP_PTR1, OP_PTR2, imm);
22007
set_cc_op(s, CC_OP_EFLAGS);
22008
if ((s->prefix & PREFIX_VEX) && !s->vex_l) {
22009
tcg_gen_gvec_dup_imm(MO_64, offsetof(CPUX86State, xmm_regs[0].ZMM_X(1)),
22010
@@ -XXX,XX +XXX,XX @@ static void gen_PCMPESTRM(DisasContext *s, CPUX86State *env, X86DecodedInsn *dec
22011
static void gen_PCMPISTRI(DisasContext *s, CPUX86State *env, X86DecodedInsn *decode)
22012
{
22013
TCGv_i32 imm = tcg_constant8u_i32(decode->immediate);
22014
- gen_helper_pcmpistri_xmm(cpu_env, OP_PTR1, OP_PTR2, imm);
22015
+ gen_helper_pcmpistri_xmm(tcg_env, OP_PTR1, OP_PTR2, imm);
22016
set_cc_op(s, CC_OP_EFLAGS);
22017
}
22018
22019
static void gen_PCMPISTRM(DisasContext *s, CPUX86State *env, X86DecodedInsn *decode)
22020
{
22021
TCGv_i32 imm = tcg_constant8u_i32(decode->immediate);
22022
- gen_helper_pcmpistrm_xmm(cpu_env, OP_PTR1, OP_PTR2, imm);
22023
+ gen_helper_pcmpistrm_xmm(tcg_env, OP_PTR1, OP_PTR2, imm);
22024
set_cc_op(s, CC_OP_EFLAGS);
22025
if ((s->prefix & PREFIX_VEX) && !s->vex_l) {
22026
tcg_gen_gvec_dup_imm(MO_64, offsetof(CPUX86State, xmm_regs[0].ZMM_X(1)),
22027
@@ -XXX,XX +XXX,XX @@ static inline void gen_pextr(DisasContext *s, CPUX86State *env, X86DecodedInsn *
22028
22029
switch (ot) {
22030
case MO_8:
22031
- tcg_gen_ld8u_tl(s->T0, cpu_env, vector_elem_offset(&decode->op[1], ot, val));
22032
+ tcg_gen_ld8u_tl(s->T0, tcg_env, vector_elem_offset(&decode->op[1], ot, val));
22033
break;
22034
case MO_16:
22035
- tcg_gen_ld16u_tl(s->T0, cpu_env, vector_elem_offset(&decode->op[1], ot, val));
22036
+ tcg_gen_ld16u_tl(s->T0, tcg_env, vector_elem_offset(&decode->op[1], ot, val));
22037
break;
22038
case MO_32:
22039
#ifdef TARGET_X86_64
22040
- tcg_gen_ld32u_tl(s->T0, cpu_env, vector_elem_offset(&decode->op[1], ot, val));
22041
+ tcg_gen_ld32u_tl(s->T0, tcg_env, vector_elem_offset(&decode->op[1], ot, val));
22042
break;
22043
case MO_64:
22044
#endif
22045
- tcg_gen_ld_tl(s->T0, cpu_env, vector_elem_offset(&decode->op[1], ot, val));
22046
+ tcg_gen_ld_tl(s->T0, tcg_env, vector_elem_offset(&decode->op[1], ot, val));
22047
break;
22048
default:
22049
abort();
22050
@@ -XXX,XX +XXX,XX @@ static inline void gen_pinsr(DisasContext *s, CPUX86State *env, X86DecodedInsn *
22051
22052
switch (ot) {
22053
case MO_8:
22054
- tcg_gen_st8_tl(s->T1, cpu_env, vector_elem_offset(&decode->op[0], ot, val));
22055
+ tcg_gen_st8_tl(s->T1, tcg_env, vector_elem_offset(&decode->op[0], ot, val));
22056
break;
22057
case MO_16:
22058
- tcg_gen_st16_tl(s->T1, cpu_env, vector_elem_offset(&decode->op[0], ot, val));
22059
+ tcg_gen_st16_tl(s->T1, tcg_env, vector_elem_offset(&decode->op[0], ot, val));
22060
break;
22061
case MO_32:
22062
#ifdef TARGET_X86_64
22063
- tcg_gen_st32_tl(s->T1, cpu_env, vector_elem_offset(&decode->op[0], ot, val));
22064
+ tcg_gen_st32_tl(s->T1, tcg_env, vector_elem_offset(&decode->op[0], ot, val));
22065
break;
22066
case MO_64:
22067
#endif
22068
- tcg_gen_st_tl(s->T1, cpu_env, vector_elem_offset(&decode->op[0], ot, val));
22069
+ tcg_gen_st_tl(s->T1, tcg_env, vector_elem_offset(&decode->op[0], ot, val));
22070
break;
22071
default:
22072
abort();
22073
@@ -XXX,XX +XXX,XX @@ static void gen_PMOVMSKB(DisasContext *s, CPUX86State *env, X86DecodedInsn *deco
22074
22075
tcg_gen_gvec_2(offsetof(CPUX86State, xmm_t0) + xmm_offset(ot), decode->op[2].offset,
22076
vec_len, vec_len, &g);
22077
- tcg_gen_ld8u_tl(s->T0, cpu_env, offsetof(CPUX86State, xmm_t0.ZMM_B(vec_len - 1)));
22078
+ tcg_gen_ld8u_tl(s->T0, tcg_env, offsetof(CPUX86State, xmm_t0.ZMM_B(vec_len - 1)));
22079
while (vec_len > 8) {
22080
vec_len -= 8;
22081
if (TCG_TARGET_HAS_extract2_tl) {
22082
@@ -XXX,XX +XXX,XX @@ static void gen_PMOVMSKB(DisasContext *s, CPUX86State *env, X86DecodedInsn *deco
22083
* loading the whole word, the shift left is avoided.
22084
*/
22085
#ifdef TARGET_X86_64
22086
- tcg_gen_ld_tl(t, cpu_env, offsetof(CPUX86State, xmm_t0.ZMM_Q((vec_len - 1) / 8)));
22087
+ tcg_gen_ld_tl(t, tcg_env, offsetof(CPUX86State, xmm_t0.ZMM_Q((vec_len - 1) / 8)));
22088
#else
22089
- tcg_gen_ld_tl(t, cpu_env, offsetof(CPUX86State, xmm_t0.ZMM_L((vec_len - 1) / 4)));
22090
+ tcg_gen_ld_tl(t, tcg_env, offsetof(CPUX86State, xmm_t0.ZMM_L((vec_len - 1) / 4)));
22091
#endif
22092
22093
tcg_gen_extract2_tl(s->T0, t, s->T0, TARGET_LONG_BITS - 8);
22094
@@ -XXX,XX +XXX,XX @@ static void gen_PMOVMSKB(DisasContext *s, CPUX86State *env, X86DecodedInsn *deco
22095
* those bits are known to be zero after ld8u, this becomes a shift+or
22096
* if deposit is not available.
22097
*/
22098
- tcg_gen_ld8u_tl(t, cpu_env, offsetof(CPUX86State, xmm_t0.ZMM_B(vec_len - 1)));
22099
+ tcg_gen_ld8u_tl(t, tcg_env, offsetof(CPUX86State, xmm_t0.ZMM_B(vec_len - 1)));
22100
tcg_gen_deposit_tl(s->T0, t, s->T0, 8, TARGET_LONG_BITS - 8);
22101
}
22102
}
22103
@@ -XXX,XX +XXX,XX @@ static TCGv_ptr make_imm8u_xmm_vec(uint8_t imm, int vec_len)
22104
tcg_gen_gvec_dup_imm(MO_64, offsetof(CPUX86State, xmm_t0) + xmm_offset(ot),
22105
vec_len, vec_len, 0);
22106
22107
- tcg_gen_addi_ptr(ptr, cpu_env, offsetof(CPUX86State, xmm_t0));
22108
- tcg_gen_st_i32(imm_v, cpu_env, offsetof(CPUX86State, xmm_t0.ZMM_L(0)));
22109
+ tcg_gen_addi_ptr(ptr, tcg_env, offsetof(CPUX86State, xmm_t0));
22110
+ tcg_gen_st_i32(imm_v, tcg_env, offsetof(CPUX86State, xmm_t0.ZMM_L(0)));
22111
return ptr;
22112
}
22113
22114
@@ -XXX,XX +XXX,XX @@ static void gen_PSRLDQ_i(DisasContext *s, CPUX86State *env, X86DecodedInsn *deco
22115
TCGv_ptr imm_vec = make_imm8u_xmm_vec(decode->immediate, vec_len);
22116
22117
if (s->vex_l) {
22118
- gen_helper_psrldq_ymm(cpu_env, OP_PTR0, OP_PTR1, imm_vec);
22119
+ gen_helper_psrldq_ymm(tcg_env, OP_PTR0, OP_PTR1, imm_vec);
22120
} else {
22121
- gen_helper_psrldq_xmm(cpu_env, OP_PTR0, OP_PTR1, imm_vec);
22122
+ gen_helper_psrldq_xmm(tcg_env, OP_PTR0, OP_PTR1, imm_vec);
22123
}
22124
}
22125
22126
@@ -XXX,XX +XXX,XX @@ static void gen_PSLLDQ_i(DisasContext *s, CPUX86State *env, X86DecodedInsn *deco
22127
TCGv_ptr imm_vec = make_imm8u_xmm_vec(decode->immediate, vec_len);
22128
22129
if (s->vex_l) {
22130
- gen_helper_pslldq_ymm(cpu_env, OP_PTR0, OP_PTR1, imm_vec);
22131
+ gen_helper_pslldq_ymm(tcg_env, OP_PTR0, OP_PTR1, imm_vec);
22132
} else {
22133
- gen_helper_pslldq_xmm(cpu_env, OP_PTR0, OP_PTR1, imm_vec);
22134
+ gen_helper_pslldq_xmm(tcg_env, OP_PTR0, OP_PTR1, imm_vec);
22135
}
22136
}
22137
22138
@@ -XXX,XX +XXX,XX @@ static void gen_VAESKEYGEN(DisasContext *s, CPUX86State *env, X86DecodedInsn *de
22139
{
22140
TCGv_i32 imm = tcg_constant8u_i32(decode->immediate);
22141
assert(!s->vex_l);
22142
- gen_helper_aeskeygenassist_xmm(cpu_env, OP_PTR0, OP_PTR1, imm);
22143
+ gen_helper_aeskeygenassist_xmm(tcg_env, OP_PTR0, OP_PTR1, imm);
22144
}
22145
22146
static void gen_STMXCSR(DisasContext *s, CPUX86State *env, X86DecodedInsn *decode)
22147
@@ -XXX,XX +XXX,XX @@ static void gen_STMXCSR(DisasContext *s, CPUX86State *env, X86DecodedInsn *decod
22148
gen_illegal_opcode(s);
22149
return;
22150
}
22151
- gen_helper_update_mxcsr(cpu_env);
22152
- tcg_gen_ld32u_tl(s->T0, cpu_env, offsetof(CPUX86State, mxcsr));
22153
+ gen_helper_update_mxcsr(tcg_env);
22154
+ tcg_gen_ld32u_tl(s->T0, tcg_env, offsetof(CPUX86State, mxcsr));
22155
}
22156
22157
static void gen_VAESIMC(DisasContext *s, CPUX86State *env, X86DecodedInsn *decode)
22158
{
22159
assert(!s->vex_l);
22160
- gen_helper_aesimc_xmm(cpu_env, OP_PTR0, OP_PTR2);
22161
+ gen_helper_aesimc_xmm(tcg_env, OP_PTR0, OP_PTR2);
22162
}
22163
22164
/*
22165
@@ -XXX,XX +XXX,XX @@ static void gen_VCMP(DisasContext *s, CPUX86State *env, X86DecodedInsn *decode)
22166
s->prefix & PREFIX_REPNZ ? 3 /* sd */ :
22167
!!(s->prefix & PREFIX_DATA) /* pd */ + (s->vex_l << 2);
22168
22169
- gen_helper_cmp_funcs[index][b](cpu_env, OP_PTR0, OP_PTR1, OP_PTR2);
22170
+ gen_helper_cmp_funcs[index][b](tcg_env, OP_PTR0, OP_PTR1, OP_PTR2);
22171
}
22172
22173
static void gen_VCOMI(DisasContext *s, CPUX86State *env, X86DecodedInsn *decode)
22174
{
22175
SSEFunc_0_epp fn;
22176
fn = s->prefix & PREFIX_DATA ? gen_helper_comisd : gen_helper_comiss;
22177
- fn(cpu_env, OP_PTR1, OP_PTR2);
22178
+ fn(tcg_env, OP_PTR1, OP_PTR2);
22179
set_cc_op(s, CC_OP_EFLAGS);
22180
}
22181
22182
static void gen_VCVTPD2PS(DisasContext *s, CPUX86State *env, X86DecodedInsn *decode)
22183
{
22184
if (s->vex_l) {
22185
- gen_helper_cvtpd2ps_ymm(cpu_env, OP_PTR0, OP_PTR2);
22186
+ gen_helper_cvtpd2ps_ymm(tcg_env, OP_PTR0, OP_PTR2);
22187
} else {
22188
- gen_helper_cvtpd2ps_xmm(cpu_env, OP_PTR0, OP_PTR2);
22189
+ gen_helper_cvtpd2ps_xmm(tcg_env, OP_PTR0, OP_PTR2);
22190
}
22191
}
22192
22193
static void gen_VCVTPS2PD(DisasContext *s, CPUX86State *env, X86DecodedInsn *decode)
22194
{
22195
if (s->vex_l) {
22196
- gen_helper_cvtps2pd_ymm(cpu_env, OP_PTR0, OP_PTR2);
22197
+ gen_helper_cvtps2pd_ymm(tcg_env, OP_PTR0, OP_PTR2);
22198
} else {
22199
- gen_helper_cvtps2pd_xmm(cpu_env, OP_PTR0, OP_PTR2);
22200
+ gen_helper_cvtps2pd_xmm(tcg_env, OP_PTR0, OP_PTR2);
22201
}
22202
}
22203
22204
@@ -XXX,XX +XXX,XX @@ static void gen_VCVTPS2PH(DisasContext *s, CPUX86State *env, X86DecodedInsn *dec
22205
22206
static void gen_VCVTSD2SS(DisasContext *s, CPUX86State *env, X86DecodedInsn *decode)
22207
{
22208
- gen_helper_cvtsd2ss(cpu_env, OP_PTR0, OP_PTR1, OP_PTR2);
22209
+ gen_helper_cvtsd2ss(tcg_env, OP_PTR0, OP_PTR1, OP_PTR2);
22210
}
22211
22212
static void gen_VCVTSS2SD(DisasContext *s, CPUX86State *env, X86DecodedInsn *decode)
22213
{
22214
- gen_helper_cvtss2sd(cpu_env, OP_PTR0, OP_PTR1, OP_PTR2);
22215
+ gen_helper_cvtss2sd(tcg_env, OP_PTR0, OP_PTR1, OP_PTR2);
22216
}
22217
22218
static void gen_VCVTSI2Sx(DisasContext *s, CPUX86State *env, X86DecodedInsn *decode)
22219
@@ -XXX,XX +XXX,XX @@ static void gen_VCVTSI2Sx(DisasContext *s, CPUX86State *env, X86DecodedInsn *dec
22220
MemOp ot = decode->op[2].ot;
22221
if (ot == MO_64) {
22222
if (s->prefix & PREFIX_REPNZ) {
22223
- gen_helper_cvtsq2sd(cpu_env, OP_PTR0, s->T1);
22224
+ gen_helper_cvtsq2sd(tcg_env, OP_PTR0, s->T1);
22225
} else {
22226
- gen_helper_cvtsq2ss(cpu_env, OP_PTR0, s->T1);
22227
+ gen_helper_cvtsq2ss(tcg_env, OP_PTR0, s->T1);
22228
}
22229
return;
22230
}
22231
@@ -XXX,XX +XXX,XX @@ static void gen_VCVTSI2Sx(DisasContext *s, CPUX86State *env, X86DecodedInsn *dec
22232
#endif
22233
22234
if (s->prefix & PREFIX_REPNZ) {
22235
- gen_helper_cvtsi2sd(cpu_env, OP_PTR0, in);
22236
+ gen_helper_cvtsi2sd(tcg_env, OP_PTR0, in);
22237
} else {
22238
- gen_helper_cvtsi2ss(cpu_env, OP_PTR0, in);
22239
+ gen_helper_cvtsi2ss(tcg_env, OP_PTR0, in);
22240
}
22241
}
22242
22243
@@ -XXX,XX +XXX,XX @@ static inline void gen_VCVTtSx2SI(DisasContext *s, CPUX86State *env, X86DecodedI
22244
MemOp ot = decode->op[0].ot;
22245
if (ot == MO_64) {
22246
if (s->prefix & PREFIX_REPNZ) {
22247
- sd2sq(s->T0, cpu_env, OP_PTR2);
22248
+ sd2sq(s->T0, tcg_env, OP_PTR2);
22249
} else {
22250
- ss2sq(s->T0, cpu_env, OP_PTR2);
22251
+ ss2sq(s->T0, tcg_env, OP_PTR2);
22252
}
22253
return;
22254
}
22255
@@ -XXX,XX +XXX,XX @@ static inline void gen_VCVTtSx2SI(DisasContext *s, CPUX86State *env, X86DecodedI
22256
out = s->T0;
22257
#endif
22258
if (s->prefix & PREFIX_REPNZ) {
22259
- sd2si(out, cpu_env, OP_PTR2);
22260
+ sd2si(out, tcg_env, OP_PTR2);
22261
} else {
22262
- ss2si(out, cpu_env, OP_PTR2);
22263
+ ss2si(out, tcg_env, OP_PTR2);
22264
}
22265
#ifdef TARGET_X86_64
22266
tcg_gen_extu_i32_tl(s->T0, out);
22267
@@ -XXX,XX +XXX,XX @@ static void gen_vinsertps(DisasContext *s, CPUX86State *env, X86DecodedInsn *dec
22268
}
22269
22270
if (new_mask != (val & 15)) {
22271
- tcg_gen_st_i32(s->tmp2_i32, cpu_env,
22272
+ tcg_gen_st_i32(s->tmp2_i32, tcg_env,
22273
vector_elem_offset(&decode->op[0], MO_32, dest_word));
22274
}
22275
22276
@@ -XXX,XX +XXX,XX @@ static void gen_vinsertps(DisasContext *s, CPUX86State *env, X86DecodedInsn *dec
22277
int i;
22278
for (i = 0; i < 4; i++) {
22279
if ((val >> i) & 1) {
22280
- tcg_gen_st_i32(zero, cpu_env,
22281
+ tcg_gen_st_i32(zero, tcg_env,
22282
vector_elem_offset(&decode->op[0], MO_32, i));
22283
}
22284
}
22285
@@ -XXX,XX +XXX,XX @@ static void gen_vinsertps(DisasContext *s, CPUX86State *env, X86DecodedInsn *dec
22286
static void gen_VINSERTPS_r(DisasContext *s, CPUX86State *env, X86DecodedInsn *decode)
22287
{
22288
int val = decode->immediate;
22289
- tcg_gen_ld_i32(s->tmp2_i32, cpu_env,
22290
+ tcg_gen_ld_i32(s->tmp2_i32, tcg_env,
22291
vector_elem_offset(&decode->op[2], MO_32, (val >> 6) & 3));
22292
gen_vinsertps(s, env, decode);
22293
}
22294
@@ -XXX,XX +XXX,XX @@ static inline void gen_maskmov(DisasContext *s, CPUX86State *env, X86DecodedInsn
22295
SSEFunc_0_eppt xmm, SSEFunc_0_eppt ymm)
22296
{
22297
if (!s->vex_l) {
22298
- xmm(cpu_env, OP_PTR2, OP_PTR1, s->A0);
22299
+ xmm(tcg_env, OP_PTR2, OP_PTR1, s->A0);
22300
} else {
22301
- ymm(cpu_env, OP_PTR2, OP_PTR1, s->A0);
22302
+ ymm(tcg_env, OP_PTR2, OP_PTR1, s->A0);
22303
}
22304
}
22305
22306
@@ -XXX,XX +XXX,XX @@ static void gen_VMOVHPx_ld(DisasContext *s, CPUX86State *env, X86DecodedInsn *de
22307
{
22308
gen_ldq_env_A0(s, decode->op[0].offset + offsetof(XMMReg, XMM_Q(1)));
22309
if (decode->op[0].offset != decode->op[1].offset) {
22310
- tcg_gen_ld_i64(s->tmp1_i64, cpu_env, decode->op[1].offset + offsetof(XMMReg, XMM_Q(0)));
22311
- tcg_gen_st_i64(s->tmp1_i64, cpu_env, decode->op[0].offset + offsetof(XMMReg, XMM_Q(0)));
22312
+ tcg_gen_ld_i64(s->tmp1_i64, tcg_env, decode->op[1].offset + offsetof(XMMReg, XMM_Q(0)));
22313
+ tcg_gen_st_i64(s->tmp1_i64, tcg_env, decode->op[0].offset + offsetof(XMMReg, XMM_Q(0)));
22314
}
22315
}
22316
22317
@@ -XXX,XX +XXX,XX @@ static void gen_VMOVHPx_st(DisasContext *s, CPUX86State *env, X86DecodedInsn *de
22318
static void gen_VMOVHPx(DisasContext *s, CPUX86State *env, X86DecodedInsn *decode)
22319
{
22320
if (decode->op[0].offset != decode->op[2].offset) {
22321
- tcg_gen_ld_i64(s->tmp1_i64, cpu_env, decode->op[2].offset + offsetof(XMMReg, XMM_Q(1)));
22322
- tcg_gen_st_i64(s->tmp1_i64, cpu_env, decode->op[0].offset + offsetof(XMMReg, XMM_Q(1)));
22323
+ tcg_gen_ld_i64(s->tmp1_i64, tcg_env, decode->op[2].offset + offsetof(XMMReg, XMM_Q(1)));
22324
+ tcg_gen_st_i64(s->tmp1_i64, tcg_env, decode->op[0].offset + offsetof(XMMReg, XMM_Q(1)));
22325
}
22326
if (decode->op[0].offset != decode->op[1].offset) {
22327
- tcg_gen_ld_i64(s->tmp1_i64, cpu_env, decode->op[1].offset + offsetof(XMMReg, XMM_Q(0)));
22328
- tcg_gen_st_i64(s->tmp1_i64, cpu_env, decode->op[0].offset + offsetof(XMMReg, XMM_Q(0)));
22329
+ tcg_gen_ld_i64(s->tmp1_i64, tcg_env, decode->op[1].offset + offsetof(XMMReg, XMM_Q(0)));
22330
+ tcg_gen_st_i64(s->tmp1_i64, tcg_env, decode->op[0].offset + offsetof(XMMReg, XMM_Q(0)));
22331
}
22332
}
22333
22334
static void gen_VMOVHLPS(DisasContext *s, CPUX86State *env, X86DecodedInsn *decode)
22335
{
22336
- tcg_gen_ld_i64(s->tmp1_i64, cpu_env, decode->op[2].offset + offsetof(XMMReg, XMM_Q(1)));
22337
- tcg_gen_st_i64(s->tmp1_i64, cpu_env, decode->op[0].offset + offsetof(XMMReg, XMM_Q(0)));
22338
+ tcg_gen_ld_i64(s->tmp1_i64, tcg_env, decode->op[2].offset + offsetof(XMMReg, XMM_Q(1)));
22339
+ tcg_gen_st_i64(s->tmp1_i64, tcg_env, decode->op[0].offset + offsetof(XMMReg, XMM_Q(0)));
22340
if (decode->op[0].offset != decode->op[1].offset) {
22341
- tcg_gen_ld_i64(s->tmp1_i64, cpu_env, decode->op[1].offset + offsetof(XMMReg, XMM_Q(1)));
22342
- tcg_gen_st_i64(s->tmp1_i64, cpu_env, decode->op[0].offset + offsetof(XMMReg, XMM_Q(1)));
22343
+ tcg_gen_ld_i64(s->tmp1_i64, tcg_env, decode->op[1].offset + offsetof(XMMReg, XMM_Q(1)));
22344
+ tcg_gen_st_i64(s->tmp1_i64, tcg_env, decode->op[0].offset + offsetof(XMMReg, XMM_Q(1)));
22345
}
22346
}
22347
22348
static void gen_VMOVLHPS(DisasContext *s, CPUX86State *env, X86DecodedInsn *decode)
22349
{
22350
- tcg_gen_ld_i64(s->tmp1_i64, cpu_env, decode->op[2].offset);
22351
- tcg_gen_st_i64(s->tmp1_i64, cpu_env, decode->op[0].offset + offsetof(XMMReg, XMM_Q(1)));
22352
+ tcg_gen_ld_i64(s->tmp1_i64, tcg_env, decode->op[2].offset);
22353
+ tcg_gen_st_i64(s->tmp1_i64, tcg_env, decode->op[0].offset + offsetof(XMMReg, XMM_Q(1)));
22354
if (decode->op[0].offset != decode->op[1].offset) {
22355
- tcg_gen_ld_i64(s->tmp1_i64, cpu_env, decode->op[1].offset + offsetof(XMMReg, XMM_Q(0)));
22356
- tcg_gen_st_i64(s->tmp1_i64, cpu_env, decode->op[0].offset + offsetof(XMMReg, XMM_Q(0)));
22357
+ tcg_gen_ld_i64(s->tmp1_i64, tcg_env, decode->op[1].offset + offsetof(XMMReg, XMM_Q(0)));
22358
+ tcg_gen_st_i64(s->tmp1_i64, tcg_env, decode->op[0].offset + offsetof(XMMReg, XMM_Q(0)));
22359
}
22360
}
22361
22362
@@ -XXX,XX +XXX,XX @@ static void gen_VMOVLPx(DisasContext *s, CPUX86State *env, X86DecodedInsn *decod
22363
{
22364
int vec_len = vector_len(s, decode);
22365
22366
- tcg_gen_ld_i64(s->tmp1_i64, cpu_env, decode->op[2].offset + offsetof(XMMReg, XMM_Q(0)));
22367
+ tcg_gen_ld_i64(s->tmp1_i64, tcg_env, decode->op[2].offset + offsetof(XMMReg, XMM_Q(0)));
22368
tcg_gen_gvec_mov(MO_64, decode->op[0].offset, decode->op[1].offset, vec_len, vec_len);
22369
- tcg_gen_st_i64(s->tmp1_i64, cpu_env, decode->op[0].offset + offsetof(XMMReg, XMM_Q(0)));
22370
+ tcg_gen_st_i64(s->tmp1_i64, tcg_env, decode->op[0].offset + offsetof(XMMReg, XMM_Q(0)));
22371
}
22372
22373
static void gen_VMOVLPx_ld(DisasContext *s, CPUX86State *env, X86DecodedInsn *decode)
22374
@@ -XXX,XX +XXX,XX @@ static void gen_VPERM2x128(DisasContext *s, CPUX86State *env, X86DecodedInsn *de
22375
static void gen_VPHMINPOSUW(DisasContext *s, CPUX86State *env, X86DecodedInsn *decode)
22376
{
22377
assert(!s->vex_l);
22378
- gen_helper_phminposuw_xmm(cpu_env, OP_PTR0, OP_PTR2);
22379
+ gen_helper_phminposuw_xmm(tcg_env, OP_PTR0, OP_PTR2);
22380
}
22381
22382
static void gen_VROUNDSD(DisasContext *s, CPUX86State *env, X86DecodedInsn *decode)
22383
{
22384
TCGv_i32 imm = tcg_constant8u_i32(decode->immediate);
22385
assert(!s->vex_l);
22386
- gen_helper_roundsd_xmm(cpu_env, OP_PTR0, OP_PTR1, OP_PTR2, imm);
22387
+ gen_helper_roundsd_xmm(tcg_env, OP_PTR0, OP_PTR1, OP_PTR2, imm);
22388
}
22389
22390
static void gen_VROUNDSS(DisasContext *s, CPUX86State *env, X86DecodedInsn *decode)
22391
{
22392
TCGv_i32 imm = tcg_constant8u_i32(decode->immediate);
22393
assert(!s->vex_l);
22394
- gen_helper_roundss_xmm(cpu_env, OP_PTR0, OP_PTR1, OP_PTR2, imm);
22395
+ gen_helper_roundss_xmm(tcg_env, OP_PTR0, OP_PTR1, OP_PTR2, imm);
22396
}
22397
22398
static void gen_VSHUF(DisasContext *s, CPUX86State *env, X86DecodedInsn *decode)
22399
@@ -XXX,XX +XXX,XX @@ static void gen_VUCOMI(DisasContext *s, CPUX86State *env, X86DecodedInsn *decode
22400
{
22401
SSEFunc_0_epp fn;
22402
fn = s->prefix & PREFIX_DATA ? gen_helper_ucomisd : gen_helper_ucomiss;
22403
- fn(cpu_env, OP_PTR1, OP_PTR2);
22404
+ fn(tcg_env, OP_PTR1, OP_PTR2);
22405
set_cc_op(s, CC_OP_EFLAGS);
22406
}
22407
22408
@@ -XXX,XX +XXX,XX @@ static void gen_VZEROALL(DisasContext *s, CPUX86State *env, X86DecodedInsn *deco
22409
{
22410
TCGv_ptr ptr = tcg_temp_new_ptr();
22411
22412
- tcg_gen_addi_ptr(ptr, cpu_env, offsetof(CPUX86State, xmm_regs));
22413
+ tcg_gen_addi_ptr(ptr, tcg_env, offsetof(CPUX86State, xmm_regs));
22414
gen_helper_memset(ptr, ptr, tcg_constant_i32(0),
22415
tcg_constant_ptr(CPU_NB_REGS * sizeof(ZMMReg)));
22416
}
22417
diff --git a/target/loongarch/insn_trans/trans_atomic.c.inc b/target/loongarch/insn_trans/trans_atomic.c.inc
22418
index XXXXXXX..XXXXXXX 100644
22419
--- a/target/loongarch/insn_trans/trans_atomic.c.inc
22420
+++ b/target/loongarch/insn_trans/trans_atomic.c.inc
22421
@@ -XXX,XX +XXX,XX @@ static bool gen_ll(DisasContext *ctx, arg_rr_i *a, MemOp mop)
22422
TCGv t0 = make_address_i(ctx, src1, a->imm);
22423
22424
tcg_gen_qemu_ld_i64(dest, t0, ctx->mem_idx, mop);
22425
- tcg_gen_st_tl(t0, cpu_env, offsetof(CPULoongArchState, lladdr));
22426
- tcg_gen_st_tl(dest, cpu_env, offsetof(CPULoongArchState, llval));
22427
+ tcg_gen_st_tl(t0, tcg_env, offsetof(CPULoongArchState, lladdr));
22428
+ tcg_gen_st_tl(dest, tcg_env, offsetof(CPULoongArchState, llval));
22429
gen_set_gpr(a->rd, dest, EXT_NONE);
22430
22431
return true;
22432
diff --git a/target/loongarch/insn_trans/trans_branch.c.inc b/target/loongarch/insn_trans/trans_branch.c.inc
22433
index XXXXXXX..XXXXXXX 100644
22434
--- a/target/loongarch/insn_trans/trans_branch.c.inc
22435
+++ b/target/loongarch/insn_trans/trans_branch.c.inc
22436
@@ -XXX,XX +XXX,XX @@ static bool gen_cz_bc(DisasContext *ctx, arg_c_offs *a, TCGCond cond)
22437
TCGv src1 = tcg_temp_new();
22438
TCGv src2 = tcg_constant_tl(0);
22439
22440
- tcg_gen_ld8u_tl(src1, cpu_env,
22441
+ tcg_gen_ld8u_tl(src1, tcg_env,
22442
offsetof(CPULoongArchState, cf[a->cj]));
22443
gen_bc(ctx, src1, src2, a->offs, cond);
22444
return true;
22445
diff --git a/target/loongarch/insn_trans/trans_extra.c.inc b/target/loongarch/insn_trans/trans_extra.c.inc
22446
index XXXXXXX..XXXXXXX 100644
22447
--- a/target/loongarch/insn_trans/trans_extra.c.inc
22448
+++ b/target/loongarch/insn_trans/trans_extra.c.inc
22449
@@ -XXX,XX +XXX,XX @@ static bool trans_asrtle_d(DisasContext *ctx, arg_asrtle_d * a)
22450
return false;
22451
}
22452
22453
- gen_helper_asrtle_d(cpu_env, src1, src2);
22454
+ gen_helper_asrtle_d(tcg_env, src1, src2);
22455
return true;
22456
}
22457
22458
@@ -XXX,XX +XXX,XX @@ static bool trans_asrtgt_d(DisasContext *ctx, arg_asrtgt_d * a)
22459
return false;
22460
}
22461
22462
- gen_helper_asrtgt_d(cpu_env, src1, src2);
22463
+ gen_helper_asrtgt_d(tcg_env, src1, src2);
22464
return true;
22465
}
22466
22467
@@ -XXX,XX +XXX,XX @@ static bool gen_rdtime(DisasContext *ctx, arg_rr *a,
22468
TCGv dst2 = gpr_dst(ctx, a->rj, EXT_NONE);
22469
22470
translator_io_start(&ctx->base);
22471
- gen_helper_rdtime_d(dst1, cpu_env);
22472
+ gen_helper_rdtime_d(dst1, tcg_env);
22473
if (word) {
22474
tcg_gen_sextract_tl(dst1, dst1, high ? 32 : 0, 32);
22475
}
22476
- tcg_gen_ld_i64(dst2, cpu_env, offsetof(CPULoongArchState, CSR_TID));
22477
+ tcg_gen_ld_i64(dst2, tcg_env, offsetof(CPULoongArchState, CSR_TID));
22478
22479
return true;
22480
}
22481
@@ -XXX,XX +XXX,XX @@ static bool trans_cpucfg(DisasContext *ctx, arg_cpucfg *a)
22482
TCGv dest = gpr_dst(ctx, a->rd, EXT_NONE);
22483
TCGv src1 = gpr_src(ctx, a->rj, EXT_NONE);
22484
22485
- gen_helper_cpucfg(dest, cpu_env, src1);
22486
+ gen_helper_cpucfg(dest, tcg_env, src1);
22487
gen_set_gpr(a->rd, dest, EXT_NONE);
22488
22489
return true;
22490
diff --git a/target/loongarch/insn_trans/trans_farith.c.inc b/target/loongarch/insn_trans/trans_farith.c.inc
22491
index XXXXXXX..XXXXXXX 100644
22492
--- a/target/loongarch/insn_trans/trans_farith.c.inc
22493
+++ b/target/loongarch/insn_trans/trans_farith.c.inc
22494
@@ -XXX,XX +XXX,XX @@ static bool gen_fff(DisasContext *ctx, arg_fff *a,
22495
22496
CHECK_FPE;
22497
22498
- func(dest, cpu_env, src1, src2);
22499
+ func(dest, tcg_env, src1, src2);
22500
set_fpr(a->fd, dest);
22501
22502
return true;
22503
@@ -XXX,XX +XXX,XX @@ static bool gen_ff(DisasContext *ctx, arg_ff *a,
22504
22505
CHECK_FPE;
22506
22507
- func(dest, cpu_env, src);
22508
+ func(dest, tcg_env, src);
22509
set_fpr(a->fd, dest);
22510
22511
return true;
22512
@@ -XXX,XX +XXX,XX @@ static bool gen_muladd(DisasContext *ctx, arg_ffff *a,
22513
22514
CHECK_FPE;
22515
22516
- func(dest, cpu_env, src1, src2, src3, tflag);
22517
+ func(dest, tcg_env, src1, src2, src3, tflag);
22518
set_fpr(a->fd, dest);
22519
22520
return true;
22521
diff --git a/target/loongarch/insn_trans/trans_fcmp.c.inc b/target/loongarch/insn_trans/trans_fcmp.c.inc
22522
index XXXXXXX..XXXXXXX 100644
22523
--- a/target/loongarch/insn_trans/trans_fcmp.c.inc
22524
+++ b/target/loongarch/insn_trans/trans_fcmp.c.inc
22525
@@ -XXX,XX +XXX,XX @@ static bool trans_fcmp_cond_s(DisasContext *ctx, arg_fcmp_cond_s *a)
22526
fn = (a->fcond & 1 ? gen_helper_fcmp_s_s : gen_helper_fcmp_c_s);
22527
flags = get_fcmp_flags(a->fcond >> 1);
22528
22529
- fn(var, cpu_env, src1, src2, tcg_constant_i32(flags));
22530
+ fn(var, tcg_env, src1, src2, tcg_constant_i32(flags));
22531
22532
- tcg_gen_st8_tl(var, cpu_env, offsetof(CPULoongArchState, cf[a->cd]));
22533
+ tcg_gen_st8_tl(var, tcg_env, offsetof(CPULoongArchState, cf[a->cd]));
22534
return true;
22535
}
22536
22537
@@ -XXX,XX +XXX,XX @@ static bool trans_fcmp_cond_d(DisasContext *ctx, arg_fcmp_cond_d *a)
22538
fn = (a->fcond & 1 ? gen_helper_fcmp_s_d : gen_helper_fcmp_c_d);
22539
flags = get_fcmp_flags(a->fcond >> 1);
22540
22541
- fn(var, cpu_env, src1, src2, tcg_constant_i32(flags));
22542
+ fn(var, tcg_env, src1, src2, tcg_constant_i32(flags));
22543
22544
- tcg_gen_st8_tl(var, cpu_env, offsetof(CPULoongArchState, cf[a->cd]));
22545
+ tcg_gen_st8_tl(var, tcg_env, offsetof(CPULoongArchState, cf[a->cd]));
22546
return true;
22547
}
22548
diff --git a/target/loongarch/insn_trans/trans_fmemory.c.inc b/target/loongarch/insn_trans/trans_fmemory.c.inc
22549
index XXXXXXX..XXXXXXX 100644
22550
--- a/target/loongarch/insn_trans/trans_fmemory.c.inc
22551
+++ b/target/loongarch/insn_trans/trans_fmemory.c.inc
22552
@@ -XXX,XX +XXX,XX @@ static bool gen_fload_gt(DisasContext *ctx, arg_frr *a, MemOp mop)
22553
22554
CHECK_FPE;
22555
22556
- gen_helper_asrtgt_d(cpu_env, src1, src2);
22557
+ gen_helper_asrtgt_d(tcg_env, src1, src2);
22558
addr = make_address_x(ctx, src1, src2);
22559
tcg_gen_qemu_ld_tl(dest, addr, ctx->mem_idx, mop);
22560
maybe_nanbox_load(dest, mop);
22561
@@ -XXX,XX +XXX,XX @@ static bool gen_fstore_gt(DisasContext *ctx, arg_frr *a, MemOp mop)
22562
22563
CHECK_FPE;
22564
22565
- gen_helper_asrtgt_d(cpu_env, src1, src2);
22566
+ gen_helper_asrtgt_d(tcg_env, src1, src2);
22567
addr = make_address_x(ctx, src1, src2);
22568
tcg_gen_qemu_st_tl(src3, addr, ctx->mem_idx, mop);
22569
22570
@@ -XXX,XX +XXX,XX @@ static bool gen_fload_le(DisasContext *ctx, arg_frr *a, MemOp mop)
22571
22572
CHECK_FPE;
22573
22574
- gen_helper_asrtle_d(cpu_env, src1, src2);
22575
+ gen_helper_asrtle_d(tcg_env, src1, src2);
22576
addr = make_address_x(ctx, src1, src2);
22577
tcg_gen_qemu_ld_tl(dest, addr, ctx->mem_idx, mop);
22578
maybe_nanbox_load(dest, mop);
22579
@@ -XXX,XX +XXX,XX @@ static bool gen_fstore_le(DisasContext *ctx, arg_frr *a, MemOp mop)
22580
22581
CHECK_FPE;
22582
22583
- gen_helper_asrtle_d(cpu_env, src1, src2);
22584
+ gen_helper_asrtle_d(tcg_env, src1, src2);
22585
addr = make_address_x(ctx, src1, src2);
22586
tcg_gen_qemu_st_tl(src3, addr, ctx->mem_idx, mop);
22587
22588
diff --git a/target/loongarch/insn_trans/trans_fmov.c.inc b/target/loongarch/insn_trans/trans_fmov.c.inc
22589
index XXXXXXX..XXXXXXX 100644
22590
--- a/target/loongarch/insn_trans/trans_fmov.c.inc
22591
+++ b/target/loongarch/insn_trans/trans_fmov.c.inc
22592
@@ -XXX,XX +XXX,XX @@ static bool trans_fsel(DisasContext *ctx, arg_fsel *a)
22593
CHECK_FPE;
22594
22595
cond = tcg_temp_new();
22596
- tcg_gen_ld8u_tl(cond, cpu_env, offsetof(CPULoongArchState, cf[a->ca]));
22597
+ tcg_gen_ld8u_tl(cond, tcg_env, offsetof(CPULoongArchState, cf[a->ca]));
22598
tcg_gen_movcond_tl(TCG_COND_EQ, dest, cond, zero, src1, src2);
22599
set_fpr(a->fd, dest);
22600
22601
@@ -XXX,XX +XXX,XX @@ static bool trans_movgr2fcsr(DisasContext *ctx, arg_movgr2fcsr *a)
22602
CHECK_FPE;
22603
22604
if (mask == UINT32_MAX) {
22605
- tcg_gen_st32_i64(Rj, cpu_env, offsetof(CPULoongArchState, fcsr0));
22606
+ tcg_gen_st32_i64(Rj, tcg_env, offsetof(CPULoongArchState, fcsr0));
22607
} else {
22608
TCGv_i32 fcsr0 = tcg_temp_new_i32();
22609
TCGv_i32 temp = tcg_temp_new_i32();
22610
22611
- tcg_gen_ld_i32(fcsr0, cpu_env, offsetof(CPULoongArchState, fcsr0));
22612
+ tcg_gen_ld_i32(fcsr0, tcg_env, offsetof(CPULoongArchState, fcsr0));
22613
tcg_gen_extrl_i64_i32(temp, Rj);
22614
tcg_gen_andi_i32(temp, temp, mask);
22615
tcg_gen_andi_i32(fcsr0, fcsr0, ~mask);
22616
tcg_gen_or_i32(fcsr0, fcsr0, temp);
22617
- tcg_gen_st_i32(fcsr0, cpu_env, offsetof(CPULoongArchState, fcsr0));
22618
+ tcg_gen_st_i32(fcsr0, tcg_env, offsetof(CPULoongArchState, fcsr0));
22619
}
22620
22621
/*
22622
@@ -XXX,XX +XXX,XX @@ static bool trans_movgr2fcsr(DisasContext *ctx, arg_movgr2fcsr *a)
22623
* Note that FCSR3 is exactly the rounding mode field.
22624
*/
22625
if (mask & FCSR0_M3) {
22626
- gen_helper_set_rounding_mode(cpu_env);
22627
+ gen_helper_set_rounding_mode(tcg_env);
22628
}
22629
return true;
22630
}
22631
@@ -XXX,XX +XXX,XX @@ static bool trans_movfcsr2gr(DisasContext *ctx, arg_movfcsr2gr *a)
22632
22633
CHECK_FPE;
22634
22635
- tcg_gen_ld32u_i64(dest, cpu_env, offsetof(CPULoongArchState, fcsr0));
22636
+ tcg_gen_ld32u_i64(dest, tcg_env, offsetof(CPULoongArchState, fcsr0));
22637
tcg_gen_andi_i64(dest, dest, fcsr_mask[a->fcsrs]);
22638
gen_set_gpr(a->rd, dest, EXT_NONE);
22639
22640
@@ -XXX,XX +XXX,XX @@ static bool trans_movfr2cf(DisasContext *ctx, arg_movfr2cf *a)
22641
22642
t0 = tcg_temp_new();
22643
tcg_gen_andi_tl(t0, src, 0x1);
22644
- tcg_gen_st8_tl(t0, cpu_env, offsetof(CPULoongArchState, cf[a->cd & 0x7]));
22645
+ tcg_gen_st8_tl(t0, tcg_env, offsetof(CPULoongArchState, cf[a->cd & 0x7]));
22646
22647
return true;
22648
}
22649
@@ -XXX,XX +XXX,XX @@ static bool trans_movcf2fr(DisasContext *ctx, arg_movcf2fr *a)
22650
22651
CHECK_FPE;
22652
22653
- tcg_gen_ld8u_tl(dest, cpu_env,
22654
+ tcg_gen_ld8u_tl(dest, tcg_env,
22655
offsetof(CPULoongArchState, cf[a->cj & 0x7]));
22656
set_fpr(a->fd, dest);
22657
22658
@@ -XXX,XX +XXX,XX @@ static bool trans_movgr2cf(DisasContext *ctx, arg_movgr2cf *a)
22659
22660
t0 = tcg_temp_new();
22661
tcg_gen_andi_tl(t0, gpr_src(ctx, a->rj, EXT_NONE), 0x1);
22662
- tcg_gen_st8_tl(t0, cpu_env, offsetof(CPULoongArchState, cf[a->cd & 0x7]));
22663
+ tcg_gen_st8_tl(t0, tcg_env, offsetof(CPULoongArchState, cf[a->cd & 0x7]));
22664
22665
return true;
22666
}
22667
@@ -XXX,XX +XXX,XX @@ static bool trans_movcf2gr(DisasContext *ctx, arg_movcf2gr *a)
22668
22669
CHECK_FPE;
22670
22671
- tcg_gen_ld8u_tl(gpr_dst(ctx, a->rd, EXT_NONE), cpu_env,
22672
+ tcg_gen_ld8u_tl(gpr_dst(ctx, a->rd, EXT_NONE), tcg_env,
22673
offsetof(CPULoongArchState, cf[a->cj & 0x7]));
22674
return true;
22675
}
22676
diff --git a/target/loongarch/insn_trans/trans_memory.c.inc b/target/loongarch/insn_trans/trans_memory.c.inc
22677
index XXXXXXX..XXXXXXX 100644
22678
--- a/target/loongarch/insn_trans/trans_memory.c.inc
22679
+++ b/target/loongarch/insn_trans/trans_memory.c.inc
22680
@@ -XXX,XX +XXX,XX @@ static bool gen_load_gt(DisasContext *ctx, arg_rrr *a, MemOp mop)
22681
TCGv src1 = gpr_src(ctx, a->rj, EXT_NONE);
22682
TCGv src2 = gpr_src(ctx, a->rk, EXT_NONE);
22683
22684
- gen_helper_asrtgt_d(cpu_env, src1, src2);
22685
+ gen_helper_asrtgt_d(tcg_env, src1, src2);
22686
src1 = make_address_i(ctx, src1, 0);
22687
tcg_gen_qemu_ld_tl(dest, src1, ctx->mem_idx, mop);
22688
gen_set_gpr(a->rd, dest, EXT_NONE);
22689
@@ -XXX,XX +XXX,XX @@ static bool gen_load_le(DisasContext *ctx, arg_rrr *a, MemOp mop)
22690
TCGv src1 = gpr_src(ctx, a->rj, EXT_NONE);
22691
TCGv src2 = gpr_src(ctx, a->rk, EXT_NONE);
22692
22693
- gen_helper_asrtle_d(cpu_env, src1, src2);
22694
+ gen_helper_asrtle_d(tcg_env, src1, src2);
22695
src1 = make_address_i(ctx, src1, 0);
22696
tcg_gen_qemu_ld_tl(dest, src1, ctx->mem_idx, mop);
22697
gen_set_gpr(a->rd, dest, EXT_NONE);
22698
@@ -XXX,XX +XXX,XX @@ static bool gen_store_gt(DisasContext *ctx, arg_rrr *a, MemOp mop)
22699
TCGv src1 = gpr_src(ctx, a->rj, EXT_NONE);
22700
TCGv src2 = gpr_src(ctx, a->rk, EXT_NONE);
22701
22702
- gen_helper_asrtgt_d(cpu_env, src1, src2);
22703
+ gen_helper_asrtgt_d(tcg_env, src1, src2);
22704
src1 = make_address_i(ctx, src1, 0);
22705
tcg_gen_qemu_st_tl(data, src1, ctx->mem_idx, mop);
22706
22707
@@ -XXX,XX +XXX,XX @@ static bool gen_store_le(DisasContext *ctx, arg_rrr *a, MemOp mop)
22708
TCGv src1 = gpr_src(ctx, a->rj, EXT_NONE);
22709
TCGv src2 = gpr_src(ctx, a->rk, EXT_NONE);
22710
22711
- gen_helper_asrtle_d(cpu_env, src1, src2);
22712
+ gen_helper_asrtle_d(tcg_env, src1, src2);
22713
src1 = make_address_i(ctx, src1, 0);
22714
tcg_gen_qemu_st_tl(data, src1, ctx->mem_idx, mop);
22715
22716
diff --git a/target/loongarch/insn_trans/trans_privileged.c.inc b/target/loongarch/insn_trans/trans_privileged.c.inc
22717
index XXXXXXX..XXXXXXX 100644
22718
--- a/target/loongarch/insn_trans/trans_privileged.c.inc
22719
+++ b/target/loongarch/insn_trans/trans_privileged.c.inc
22720
@@ -XXX,XX +XXX,XX @@ static bool trans_csrrd(DisasContext *ctx, arg_csrrd *a)
22721
check_csr_flags(ctx, csr, false);
22722
dest = gpr_dst(ctx, a->rd, EXT_NONE);
22723
if (csr->readfn) {
22724
- csr->readfn(dest, cpu_env);
22725
+ csr->readfn(dest, tcg_env);
22726
} else {
22727
- tcg_gen_ld_tl(dest, cpu_env, csr->offset);
22728
+ tcg_gen_ld_tl(dest, tcg_env, csr->offset);
22729
}
22730
}
22731
gen_set_gpr(a->rd, dest, EXT_NONE);
22732
@@ -XXX,XX +XXX,XX @@ static bool trans_csrwr(DisasContext *ctx, arg_csrwr *a)
22733
src1 = gpr_src(ctx, a->rd, EXT_NONE);
22734
if (csr->writefn) {
22735
dest = gpr_dst(ctx, a->rd, EXT_NONE);
22736
- csr->writefn(dest, cpu_env, src1);
22737
+ csr->writefn(dest, tcg_env, src1);
22738
} else {
22739
dest = tcg_temp_new();
22740
- tcg_gen_ld_tl(dest, cpu_env, csr->offset);
22741
- tcg_gen_st_tl(src1, cpu_env, csr->offset);
22742
+ tcg_gen_ld_tl(dest, tcg_env, csr->offset);
22743
+ tcg_gen_st_tl(src1, tcg_env, csr->offset);
22744
}
22745
gen_set_gpr(a->rd, dest, EXT_NONE);
22746
return true;
22747
@@ -XXX,XX +XXX,XX @@ static bool trans_csrxchg(DisasContext *ctx, arg_csrxchg *a)
22748
newv = tcg_temp_new();
22749
temp = tcg_temp_new();
22750
22751
- tcg_gen_ld_tl(oldv, cpu_env, csr->offset);
22752
+ tcg_gen_ld_tl(oldv, tcg_env, csr->offset);
22753
tcg_gen_and_tl(newv, src1, mask);
22754
tcg_gen_andc_tl(temp, oldv, mask);
22755
tcg_gen_or_tl(newv, newv, temp);
22756
22757
if (csr->writefn) {
22758
- csr->writefn(oldv, cpu_env, newv);
22759
+ csr->writefn(oldv, tcg_env, newv);
22760
} else {
22761
- tcg_gen_st_tl(newv, cpu_env, csr->offset);
22762
+ tcg_gen_st_tl(newv, tcg_env, csr->offset);
22763
}
22764
gen_set_gpr(a->rd, oldv, EXT_NONE);
22765
return true;
22766
@@ -XXX,XX +XXX,XX @@ static bool gen_iocsrrd(DisasContext *ctx, arg_rr *a,
22767
if (check_plv(ctx)) {
22768
return false;
22769
}
22770
- func(dest, cpu_env, src1);
22771
+ func(dest, tcg_env, src1);
22772
return true;
22773
}
22774
22775
@@ -XXX,XX +XXX,XX @@ static bool gen_iocsrwr(DisasContext *ctx, arg_rr *a,
22776
if (check_plv(ctx)) {
22777
return false;
22778
}
22779
- func(cpu_env, addr, val);
22780
+ func(tcg_env, addr, val);
22781
return true;
22782
}
22783
22784
@@ -XXX,XX +XXX,XX @@ static bool trans_tlbsrch(DisasContext *ctx, arg_tlbsrch *a)
22785
if (check_plv(ctx)) {
22786
return false;
22787
}
22788
- gen_helper_tlbsrch(cpu_env);
22789
+ gen_helper_tlbsrch(tcg_env);
22790
return true;
22791
}
22792
22793
@@ -XXX,XX +XXX,XX @@ static bool trans_tlbrd(DisasContext *ctx, arg_tlbrd *a)
22794
if (check_plv(ctx)) {
22795
return false;
22796
}
22797
- gen_helper_tlbrd(cpu_env);
22798
+ gen_helper_tlbrd(tcg_env);
22799
return true;
22800
}
22801
22802
@@ -XXX,XX +XXX,XX @@ static bool trans_tlbwr(DisasContext *ctx, arg_tlbwr *a)
22803
if (check_plv(ctx)) {
22804
return false;
22805
}
22806
- gen_helper_tlbwr(cpu_env);
22807
+ gen_helper_tlbwr(tcg_env);
22808
check_mmu_idx(ctx);
22809
return true;
22810
}
22811
@@ -XXX,XX +XXX,XX @@ static bool trans_tlbfill(DisasContext *ctx, arg_tlbfill *a)
22812
if (check_plv(ctx)) {
22813
return false;
22814
}
22815
- gen_helper_tlbfill(cpu_env);
22816
+ gen_helper_tlbfill(tcg_env);
22817
check_mmu_idx(ctx);
22818
return true;
22819
}
22820
@@ -XXX,XX +XXX,XX @@ static bool trans_tlbclr(DisasContext *ctx, arg_tlbclr *a)
22821
if (check_plv(ctx)) {
22822
return false;
22823
}
22824
- gen_helper_tlbclr(cpu_env);
22825
+ gen_helper_tlbclr(tcg_env);
22826
check_mmu_idx(ctx);
22827
return true;
22828
}
22829
@@ -XXX,XX +XXX,XX @@ static bool trans_tlbflush(DisasContext *ctx, arg_tlbflush *a)
22830
if (check_plv(ctx)) {
22831
return false;
22832
}
22833
- gen_helper_tlbflush(cpu_env);
22834
+ gen_helper_tlbflush(tcg_env);
22835
check_mmu_idx(ctx);
22836
return true;
22837
}
22838
@@ -XXX,XX +XXX,XX @@ static bool trans_invtlb(DisasContext *ctx, arg_invtlb *a)
22839
switch (a->imm) {
22840
case 0:
22841
case 1:
22842
- gen_helper_invtlb_all(cpu_env);
22843
+ gen_helper_invtlb_all(tcg_env);
22844
break;
22845
case 2:
22846
- gen_helper_invtlb_all_g(cpu_env, tcg_constant_i32(1));
22847
+ gen_helper_invtlb_all_g(tcg_env, tcg_constant_i32(1));
22848
break;
22849
case 3:
22850
- gen_helper_invtlb_all_g(cpu_env, tcg_constant_i32(0));
22851
+ gen_helper_invtlb_all_g(tcg_env, tcg_constant_i32(0));
22852
break;
22853
case 4:
22854
- gen_helper_invtlb_all_asid(cpu_env, rj);
22855
+ gen_helper_invtlb_all_asid(tcg_env, rj);
22856
break;
22857
case 5:
22858
- gen_helper_invtlb_page_asid(cpu_env, rj, rk);
22859
+ gen_helper_invtlb_page_asid(tcg_env, rj, rk);
22860
break;
22861
case 6:
22862
- gen_helper_invtlb_page_asid_or_g(cpu_env, rj, rk);
22863
+ gen_helper_invtlb_page_asid_or_g(tcg_env, rj, rk);
22864
break;
22865
default:
22866
return false;
22867
@@ -XXX,XX +XXX,XX @@ static bool trans_ldpte(DisasContext *ctx, arg_ldpte *a)
22868
if (check_plv(ctx)) {
22869
return false;
22870
}
22871
- gen_helper_ldpte(cpu_env, src1, tcg_constant_tl(a->imm), mem_idx);
22872
+ gen_helper_ldpte(tcg_env, src1, tcg_constant_tl(a->imm), mem_idx);
22873
return true;
22874
}
22875
22876
@@ -XXX,XX +XXX,XX @@ static bool trans_lddir(DisasContext *ctx, arg_lddir *a)
22877
if (check_plv(ctx)) {
22878
return false;
22879
}
22880
- gen_helper_lddir(dest, cpu_env, src, tcg_constant_tl(a->imm), mem_idx);
22881
+ gen_helper_lddir(dest, tcg_env, src, tcg_constant_tl(a->imm), mem_idx);
22882
return true;
22883
}
22884
22885
@@ -XXX,XX +XXX,XX @@ static bool trans_ertn(DisasContext *ctx, arg_ertn *a)
22886
if (check_plv(ctx)) {
22887
return false;
22888
}
22889
- gen_helper_ertn(cpu_env);
22890
+ gen_helper_ertn(tcg_env);
22891
ctx->base.is_jmp = DISAS_EXIT;
22892
return true;
22893
}
22894
@@ -XXX,XX +XXX,XX @@ static bool trans_idle(DisasContext *ctx, arg_idle *a)
22895
}
22896
22897
tcg_gen_movi_tl(cpu_pc, ctx->base.pc_next + 4);
22898
- gen_helper_idle(cpu_env);
22899
+ gen_helper_idle(tcg_env);
22900
ctx->base.is_jmp = DISAS_NORETURN;
22901
return true;
22902
}
22903
diff --git a/target/loongarch/insn_trans/trans_vec.c.inc b/target/loongarch/insn_trans/trans_vec.c.inc
22904
index XXXXXXX..XXXXXXX 100644
22905
--- a/target/loongarch/insn_trans/trans_vec.c.inc
22906
+++ b/target/loongarch/insn_trans/trans_vec.c.inc
22907
@@ -XXX,XX +XXX,XX @@ static bool gen_vvvv_ptr_vl(DisasContext *ctx, arg_vvvv *a, uint32_t oprsz,
22908
vec_full_offset(a->vj),
22909
vec_full_offset(a->vk),
22910
vec_full_offset(a->va),
22911
- cpu_env,
22912
+ tcg_env,
22913
oprsz, ctx->vl / 8, 0, fn);
22914
return true;
22915
}
22916
@@ -XXX,XX +XXX,XX @@ static bool gen_vvv_ptr_vl(DisasContext *ctx, arg_vvv *a, uint32_t oprsz,
22917
tcg_gen_gvec_3_ptr(vec_full_offset(a->vd),
22918
vec_full_offset(a->vj),
22919
vec_full_offset(a->vk),
22920
- cpu_env,
22921
+ tcg_env,
22922
oprsz, ctx->vl / 8, 0, fn);
22923
return true;
22924
}
22925
@@ -XXX,XX +XXX,XX @@ static bool gen_vv_ptr_vl(DisasContext *ctx, arg_vv *a, uint32_t oprsz,
22926
22927
tcg_gen_gvec_2_ptr(vec_full_offset(a->vd),
22928
vec_full_offset(a->vj),
22929
- cpu_env,
22930
+ tcg_env,
22931
oprsz, ctx->vl / 8, 0, fn);
22932
return true;
22933
}
22934
@@ -XXX,XX +XXX,XX @@ static bool gen_cv_vl(DisasContext *ctx, arg_cv *a, uint32_t sz,
22935
TCGv_i32 cd = tcg_constant_i32(a->cd);
22936
TCGv_i32 oprsz = tcg_constant_i32(sz);
22937
22938
- func(cpu_env, oprsz, cd, vj);
22939
+ func(tcg_env, oprsz, cd, vj);
22940
return true;
22941
}
22942
22943
@@ -XXX,XX +XXX,XX @@ static bool do_vfcmp_cond_s(DisasContext *ctx, arg_vvv_fcond *a, uint32_t sz)
22944
22945
fn = (a->fcond & 1 ? gen_helper_vfcmp_s_s : gen_helper_vfcmp_c_s);
22946
flags = get_fcmp_flags(a->fcond >> 1);
22947
- fn(cpu_env, oprsz, vd, vj, vk, tcg_constant_i32(flags));
22948
+ fn(tcg_env, oprsz, vd, vj, vk, tcg_constant_i32(flags));
22949
22950
return true;
22951
}
22952
@@ -XXX,XX +XXX,XX @@ static bool do_vfcmp_cond_d(DisasContext *ctx, arg_vvv_fcond *a, uint32_t sz)
22953
22954
fn = (a->fcond & 1 ? gen_helper_vfcmp_s_d : gen_helper_vfcmp_c_d);
22955
flags = get_fcmp_flags(a->fcond >> 1);
22956
- fn(cpu_env, oprsz, vd, vj, vk, tcg_constant_i32(flags));
22957
+ fn(tcg_env, oprsz, vd, vj, vk, tcg_constant_i32(flags));
22958
22959
return true;
22960
}
22961
@@ -XXX,XX +XXX,XX @@ static bool trans_## NAME (DisasContext *ctx, arg_cv *a) \
22962
\
22963
tcg_gen_or_i64(t1, al, ah); \
22964
tcg_gen_setcondi_i64(COND, t1, t1, 0); \
22965
- tcg_gen_st8_tl(t1, cpu_env, offsetof(CPULoongArchState, cf[a->cd & 0x7])); \
22966
+ tcg_gen_st8_tl(t1, tcg_env, offsetof(CPULoongArchState, cf[a->cd & 0x7])); \
22967
\
22968
return true; \
22969
}
22970
@@ -XXX,XX +XXX,XX @@ static bool trans_## NAME(DisasContext *ctx, arg_cv * a) \
22971
tcg_gen_or_i64(t2, d[2], d[3]); \
22972
tcg_gen_or_i64(t1, t2, t1); \
22973
tcg_gen_setcondi_i64(COND, t1, t1, 0); \
22974
- tcg_gen_st8_tl(t1, cpu_env, offsetof(CPULoongArchState, cf[a->cd & 0x7])); \
22975
+ tcg_gen_st8_tl(t1, tcg_env, offsetof(CPULoongArchState, cf[a->cd & 0x7])); \
22976
\
22977
return true; \
22978
}
22979
@@ -XXX,XX +XXX,XX @@ static bool gen_g2v_vl(DisasContext *ctx, arg_vr_i *a, uint32_t oprsz, MemOp mop
22980
return true;
22981
}
22982
22983
- func(src, cpu_env, vec_reg_offset(a->vd, a->imm, mop));
22984
+ func(src, tcg_env, vec_reg_offset(a->vd, a->imm, mop));
22985
22986
return true;
22987
}
22988
@@ -XXX,XX +XXX,XX @@ static bool gen_v2g_vl(DisasContext *ctx, arg_rv_i *a, uint32_t oprsz, MemOp mop
22989
return true;
22990
}
22991
22992
- func(dst, cpu_env, vec_reg_offset(a->vj, a->imm, mop));
22993
+ func(dst, tcg_env, vec_reg_offset(a->vj, a->imm, mop));
22994
22995
return true;
22996
}
22997
@@ -XXX,XX +XXX,XX @@ static bool gen_vreplve_vl(DisasContext *ctx, arg_vvr *a,
22998
}
22999
23000
tcg_gen_trunc_i64_ptr(t1, t0);
23001
- tcg_gen_add_ptr(t1, t1, cpu_env);
23002
+ tcg_gen_add_ptr(t1, t1, tcg_env);
23003
23004
for (i = 0; i < oprsz; i += 16) {
23005
func(t2, t1, vec_full_offset(a->vj) + i);
23006
@@ -XXX,XX +XXX,XX @@ static bool do_vstelm_vl(DisasContext *ctx,
23007
val = tcg_temp_new_i64();
23008
23009
addr = make_address_i(ctx, addr, a->imm);
23010
- tcg_gen_ld_i64(val, cpu_env, vec_reg_offset(a->vd, a->imm2, mop));
23011
+ tcg_gen_ld_i64(val, tcg_env, vec_reg_offset(a->vd, a->imm2, mop));
23012
tcg_gen_qemu_st_i64(val, addr, ctx->mem_idx, mop);
23013
return true;
23014
}
23015
diff --git a/target/mips/tcg/micromips_translate.c.inc b/target/mips/tcg/micromips_translate.c.inc
23016
index XXXXXXX..XXXXXXX 100644
23017
--- a/target/mips/tcg/micromips_translate.c.inc
23018
+++ b/target/mips/tcg/micromips_translate.c.inc
23019
@@ -XXX,XX +XXX,XX @@ static void gen_ldst_multiple(DisasContext *ctx, uint32_t opc, int reglist,
23020
save_cpu_state(ctx, 1);
23021
switch (opc) {
23022
case LWM32:
23023
- gen_helper_lwm(cpu_env, t0, t1, t2);
23024
+ gen_helper_lwm(tcg_env, t0, t1, t2);
23025
break;
23026
case SWM32:
23027
- gen_helper_swm(cpu_env, t0, t1, t2);
23028
+ gen_helper_swm(tcg_env, t0, t1, t2);
23029
break;
23030
#ifdef TARGET_MIPS64
23031
case LDM:
23032
- gen_helper_ldm(cpu_env, t0, t1, t2);
23033
+ gen_helper_ldm(tcg_env, t0, t1, t2);
23034
break;
23035
case SDM:
23036
- gen_helper_sdm(cpu_env, t0, t1, t2);
23037
+ gen_helper_sdm(tcg_env, t0, t1, t2);
23038
break;
23039
#endif
23040
}
23041
@@ -XXX,XX +XXX,XX @@ static void gen_pool32axf(CPUMIPSState *env, DisasContext *ctx, int rt, int rs)
23042
TCGv t0 = tcg_temp_new();
23043
23044
save_cpu_state(ctx, 1);
23045
- gen_helper_di(t0, cpu_env);
23046
+ gen_helper_di(t0, tcg_env);
23047
gen_store_gpr(t0, rs);
23048
/*
23049
* Stop translation as we may have switched the execution
23050
@@ -XXX,XX +XXX,XX @@ static void gen_pool32axf(CPUMIPSState *env, DisasContext *ctx, int rt, int rs)
23051
TCGv t0 = tcg_temp_new();
23052
23053
save_cpu_state(ctx, 1);
23054
- gen_helper_ei(t0, cpu_env);
23055
+ gen_helper_ei(t0, tcg_env);
23056
gen_store_gpr(t0, rs);
23057
/*
23058
* DISAS_STOP isn't sufficient, we need to ensure we break out
23059
diff --git a/target/mips/tcg/nanomips_translate.c.inc b/target/mips/tcg/nanomips_translate.c.inc
23060
index XXXXXXX..XXXXXXX 100644
23061
--- a/target/mips/tcg/nanomips_translate.c.inc
23062
+++ b/target/mips/tcg/nanomips_translate.c.inc
23063
@@ -XXX,XX +XXX,XX @@ static void gen_llwp(DisasContext *ctx, uint32_t base, int16_t offset,
23064
}
23065
gen_store_gpr(tmp1, reg1);
23066
gen_store_gpr(tmp2, reg2);
23067
- tcg_gen_st_i64(tval, cpu_env, offsetof(CPUMIPSState, llval_wp));
23068
- tcg_gen_st_tl(taddr, cpu_env, offsetof(CPUMIPSState, lladdr));
23069
+ tcg_gen_st_i64(tval, tcg_env, offsetof(CPUMIPSState, llval_wp));
23070
+ tcg_gen_st_tl(taddr, tcg_env, offsetof(CPUMIPSState, lladdr));
23071
}
23072
23073
static void gen_scwp(DisasContext *ctx, uint32_t base, int16_t offset,
23074
@@ -XXX,XX +XXX,XX @@ static void gen_scwp(DisasContext *ctx, uint32_t base, int16_t offset,
23075
23076
gen_base_offset_addr(ctx, taddr, base, offset);
23077
23078
- tcg_gen_ld_tl(lladdr, cpu_env, offsetof(CPUMIPSState, lladdr));
23079
+ tcg_gen_ld_tl(lladdr, tcg_env, offsetof(CPUMIPSState, lladdr));
23080
tcg_gen_brcond_tl(TCG_COND_NE, taddr, lladdr, lab_fail);
23081
23082
gen_load_gpr(tmp1, reg1);
23083
@@ -XXX,XX +XXX,XX @@ static void gen_scwp(DisasContext *ctx, uint32_t base, int16_t offset,
23084
tcg_gen_concat_tl_i64(tval, tmp1, tmp2);
23085
}
23086
23087
- tcg_gen_ld_i64(llval, cpu_env, offsetof(CPUMIPSState, llval_wp));
23088
+ tcg_gen_ld_i64(llval, tcg_env, offsetof(CPUMIPSState, llval_wp));
23089
tcg_gen_atomic_cmpxchg_i64(val, taddr, llval, tval,
23090
eva ? MIPS_HFLAG_UM : ctx->mem_idx,
23091
MO_64 | MO_ALIGN);
23092
@@ -XXX,XX +XXX,XX @@ static void gen_scwp(DisasContext *ctx, uint32_t base, int16_t offset,
23093
}
23094
gen_set_label(lab_done);
23095
tcg_gen_movi_tl(lladdr, -1);
23096
- tcg_gen_st_tl(lladdr, cpu_env, offsetof(CPUMIPSState, lladdr));
23097
+ tcg_gen_st_tl(lladdr, tcg_env, offsetof(CPUMIPSState, lladdr));
23098
}
23099
23100
static void gen_adjust_sp(DisasContext *ctx, int u)
23101
@@ -XXX,XX +XXX,XX @@ static void gen_pool32a0_nanomips_insn(CPUMIPSState *env, DisasContext *ctx)
23102
case NM_DVP:
23103
if (ctx->vp) {
23104
check_cp0_enabled(ctx);
23105
- gen_helper_dvp(t0, cpu_env);
23106
+ gen_helper_dvp(t0, tcg_env);
23107
gen_store_gpr(t0, rt);
23108
}
23109
break;
23110
case NM_EVP:
23111
if (ctx->vp) {
23112
check_cp0_enabled(ctx);
23113
- gen_helper_evp(t0, cpu_env);
23114
+ gen_helper_evp(t0, tcg_env);
23115
gen_store_gpr(t0, rt);
23116
}
23117
break;
23118
@@ -XXX,XX +XXX,XX @@ static void gen_pool32a0_nanomips_insn(CPUMIPSState *env, DisasContext *ctx)
23119
} else if (rs == 0) {
23120
/* DVPE */
23121
check_cp0_mt(ctx);
23122
- gen_helper_dvpe(t0, cpu_env);
23123
+ gen_helper_dvpe(t0, tcg_env);
23124
gen_store_gpr(t0, rt);
23125
} else {
23126
gen_reserved_instruction(ctx);
23127
@@ -XXX,XX +XXX,XX @@ static void gen_pool32a0_nanomips_insn(CPUMIPSState *env, DisasContext *ctx)
23128
} else if (rs == 0) {
23129
/* EVPE */
23130
check_cp0_mt(ctx);
23131
- gen_helper_evpe(t0, cpu_env);
23132
+ gen_helper_evpe(t0, tcg_env);
23133
gen_store_gpr(t0, rt);
23134
} else {
23135
gen_reserved_instruction(ctx);
23136
@@ -XXX,XX +XXX,XX @@ static void gen_pool32a0_nanomips_insn(CPUMIPSState *env, DisasContext *ctx)
23137
TCGv t0 = tcg_temp_new();
23138
23139
gen_load_gpr(t0, rs);
23140
- gen_helper_yield(t0, cpu_env, t0);
23141
+ gen_helper_yield(t0, tcg_env, t0);
23142
gen_store_gpr(t0, rt);
23143
}
23144
break;
23145
@@ -XXX,XX +XXX,XX @@ static void gen_pool32axf_1_5_nanomips_insn(DisasContext *ctx, uint32_t opc,
23146
switch (opc) {
23147
case NM_MAQ_S_W_PHR:
23148
check_dsp(ctx);
23149
- gen_helper_maq_s_w_phr(t0, v1_t, v0_t, cpu_env);
23150
+ gen_helper_maq_s_w_phr(t0, v1_t, v0_t, tcg_env);
23151
break;
23152
case NM_MAQ_S_W_PHL:
23153
check_dsp(ctx);
23154
- gen_helper_maq_s_w_phl(t0, v1_t, v0_t, cpu_env);
23155
+ gen_helper_maq_s_w_phl(t0, v1_t, v0_t, tcg_env);
23156
break;
23157
case NM_MAQ_SA_W_PHR:
23158
check_dsp(ctx);
23159
- gen_helper_maq_sa_w_phr(t0, v1_t, v0_t, cpu_env);
23160
+ gen_helper_maq_sa_w_phr(t0, v1_t, v0_t, tcg_env);
23161
break;
23162
case NM_MAQ_SA_W_PHL:
23163
check_dsp(ctx);
23164
- gen_helper_maq_sa_w_phl(t0, v1_t, v0_t, cpu_env);
23165
+ gen_helper_maq_sa_w_phl(t0, v1_t, v0_t, tcg_env);
23166
break;
23167
default:
23168
gen_reserved_instruction(ctx);
23169
@@ -XXX,XX +XXX,XX @@ static void gen_pool32axf_1_nanomips_insn(DisasContext *ctx, uint32_t opc,
23170
switch (extract32(ctx->opcode, 12, 2)) {
23171
case NM_MTHLIP:
23172
tcg_gen_movi_tl(t0, v2 >> 3);
23173
- gen_helper_mthlip(t0, v0_t, cpu_env);
23174
+ gen_helper_mthlip(t0, v0_t, tcg_env);
23175
break;
23176
case NM_SHILOV:
23177
tcg_gen_movi_tl(t0, v2 >> 3);
23178
- gen_helper_shilo(t0, v0_t, cpu_env);
23179
+ gen_helper_shilo(t0, v0_t, tcg_env);
23180
break;
23181
default:
23182
gen_reserved_instruction(ctx);
23183
@@ -XXX,XX +XXX,XX @@ static void gen_pool32axf_1_nanomips_insn(DisasContext *ctx, uint32_t opc,
23184
switch (extract32(ctx->opcode, 12, 2)) {
23185
case NM_RDDSP:
23186
tcg_gen_movi_tl(t0, imm);
23187
- gen_helper_rddsp(t0, t0, cpu_env);
23188
+ gen_helper_rddsp(t0, t0, tcg_env);
23189
gen_store_gpr(t0, ret);
23190
break;
23191
case NM_WRDSP:
23192
gen_load_gpr(t0, ret);
23193
tcg_gen_movi_tl(t1, imm);
23194
- gen_helper_wrdsp(t0, t1, cpu_env);
23195
+ gen_helper_wrdsp(t0, t1, tcg_env);
23196
break;
23197
case NM_EXTP:
23198
tcg_gen_movi_tl(t0, v2 >> 3);
23199
tcg_gen_movi_tl(t1, v1);
23200
- gen_helper_extp(t0, t0, t1, cpu_env);
23201
+ gen_helper_extp(t0, t0, t1, tcg_env);
23202
gen_store_gpr(t0, ret);
23203
break;
23204
case NM_EXTPDP:
23205
tcg_gen_movi_tl(t0, v2 >> 3);
23206
tcg_gen_movi_tl(t1, v1);
23207
- gen_helper_extpdp(t0, t0, t1, cpu_env);
23208
+ gen_helper_extpdp(t0, t0, t1, tcg_env);
23209
gen_store_gpr(t0, ret);
23210
break;
23211
}
23212
@@ -XXX,XX +XXX,XX @@ static void gen_pool32axf_1_nanomips_insn(DisasContext *ctx, uint32_t opc,
23213
tcg_gen_movi_tl(t0, v2 >> 2);
23214
switch (extract32(ctx->opcode, 12, 1)) {
23215
case NM_SHLL_QB:
23216
- gen_helper_shll_qb(t0, t0, v0_t, cpu_env);
23217
+ gen_helper_shll_qb(t0, t0, v0_t, tcg_env);
23218
gen_store_gpr(t0, ret);
23219
break;
23220
case NM_SHRL_QB:
23221
@@ -XXX,XX +XXX,XX @@ static void gen_pool32axf_1_nanomips_insn(DisasContext *ctx, uint32_t opc,
23222
tcg_gen_movi_tl(t1, v1);
23223
switch (extract32(ctx->opcode, 12, 2)) {
23224
case NM_EXTR_W:
23225
- gen_helper_extr_w(t0, t0, t1, cpu_env);
23226
+ gen_helper_extr_w(t0, t0, t1, tcg_env);
23227
gen_store_gpr(t0, ret);
23228
break;
23229
case NM_EXTR_R_W:
23230
- gen_helper_extr_r_w(t0, t0, t1, cpu_env);
23231
+ gen_helper_extr_r_w(t0, t0, t1, tcg_env);
23232
gen_store_gpr(t0, ret);
23233
break;
23234
case NM_EXTR_RS_W:
23235
- gen_helper_extr_rs_w(t0, t0, t1, cpu_env);
23236
+ gen_helper_extr_rs_w(t0, t0, t1, tcg_env);
23237
gen_store_gpr(t0, ret);
23238
break;
23239
case NM_EXTR_S_H:
23240
- gen_helper_extr_s_h(t0, t0, t1, cpu_env);
23241
+ gen_helper_extr_s_h(t0, t0, t1, tcg_env);
23242
gen_store_gpr(t0, ret);
23243
break;
23244
}
23245
@@ -XXX,XX +XXX,XX @@ static void gen_pool32axf_2_multiply(DisasContext *ctx, uint32_t opc,
23246
switch (extract32(ctx->opcode, 9, 3)) {
23247
case NM_DPA_W_PH:
23248
check_dsp_r2(ctx);
23249
- gen_helper_dpa_w_ph(t0, v1, v0, cpu_env);
23250
+ gen_helper_dpa_w_ph(t0, v1, v0, tcg_env);
23251
break;
23252
case NM_DPAQ_S_W_PH:
23253
check_dsp(ctx);
23254
- gen_helper_dpaq_s_w_ph(t0, v1, v0, cpu_env);
23255
+ gen_helper_dpaq_s_w_ph(t0, v1, v0, tcg_env);
23256
break;
23257
case NM_DPS_W_PH:
23258
check_dsp_r2(ctx);
23259
- gen_helper_dps_w_ph(t0, v1, v0, cpu_env);
23260
+ gen_helper_dps_w_ph(t0, v1, v0, tcg_env);
23261
break;
23262
case NM_DPSQ_S_W_PH:
23263
check_dsp(ctx);
23264
- gen_helper_dpsq_s_w_ph(t0, v1, v0, cpu_env);
23265
+ gen_helper_dpsq_s_w_ph(t0, v1, v0, tcg_env);
23266
break;
23267
default:
23268
gen_reserved_instruction(ctx);
23269
@@ -XXX,XX +XXX,XX @@ static void gen_pool32axf_2_multiply(DisasContext *ctx, uint32_t opc,
23270
switch (extract32(ctx->opcode, 9, 3)) {
23271
case NM_DPAX_W_PH:
23272
check_dsp_r2(ctx);
23273
- gen_helper_dpax_w_ph(t0, v0, v1, cpu_env);
23274
+ gen_helper_dpax_w_ph(t0, v0, v1, tcg_env);
23275
break;
23276
case NM_DPAQ_SA_L_W:
23277
check_dsp(ctx);
23278
- gen_helper_dpaq_sa_l_w(t0, v0, v1, cpu_env);
23279
+ gen_helper_dpaq_sa_l_w(t0, v0, v1, tcg_env);
23280
break;
23281
case NM_DPSX_W_PH:
23282
check_dsp_r2(ctx);
23283
- gen_helper_dpsx_w_ph(t0, v0, v1, cpu_env);
23284
+ gen_helper_dpsx_w_ph(t0, v0, v1, tcg_env);
23285
break;
23286
case NM_DPSQ_SA_L_W:
23287
check_dsp(ctx);
23288
- gen_helper_dpsq_sa_l_w(t0, v0, v1, cpu_env);
23289
+ gen_helper_dpsq_sa_l_w(t0, v0, v1, tcg_env);
23290
break;
23291
default:
23292
gen_reserved_instruction(ctx);
23293
@@ -XXX,XX +XXX,XX @@ static void gen_pool32axf_2_multiply(DisasContext *ctx, uint32_t opc,
23294
switch (extract32(ctx->opcode, 9, 3)) {
23295
case NM_DPAU_H_QBL:
23296
check_dsp(ctx);
23297
- gen_helper_dpau_h_qbl(t0, v0, v1, cpu_env);
23298
+ gen_helper_dpau_h_qbl(t0, v0, v1, tcg_env);
23299
break;
23300
case NM_DPAQX_S_W_PH:
23301
check_dsp_r2(ctx);
23302
- gen_helper_dpaqx_s_w_ph(t0, v0, v1, cpu_env);
23303
+ gen_helper_dpaqx_s_w_ph(t0, v0, v1, tcg_env);
23304
break;
23305
case NM_DPSU_H_QBL:
23306
check_dsp(ctx);
23307
- gen_helper_dpsu_h_qbl(t0, v0, v1, cpu_env);
23308
+ gen_helper_dpsu_h_qbl(t0, v0, v1, tcg_env);
23309
break;
23310
case NM_DPSQX_S_W_PH:
23311
check_dsp_r2(ctx);
23312
- gen_helper_dpsqx_s_w_ph(t0, v0, v1, cpu_env);
23313
+ gen_helper_dpsqx_s_w_ph(t0, v0, v1, tcg_env);
23314
break;
23315
case NM_MULSA_W_PH:
23316
check_dsp_r2(ctx);
23317
- gen_helper_mulsa_w_ph(t0, v0, v1, cpu_env);
23318
+ gen_helper_mulsa_w_ph(t0, v0, v1, tcg_env);
23319
break;
23320
default:
23321
gen_reserved_instruction(ctx);
23322
@@ -XXX,XX +XXX,XX @@ static void gen_pool32axf_2_multiply(DisasContext *ctx, uint32_t opc,
23323
switch (extract32(ctx->opcode, 9, 3)) {
23324
case NM_DPAU_H_QBR:
23325
check_dsp(ctx);
23326
- gen_helper_dpau_h_qbr(t0, v1, v0, cpu_env);
23327
+ gen_helper_dpau_h_qbr(t0, v1, v0, tcg_env);
23328
break;
23329
case NM_DPAQX_SA_W_PH:
23330
check_dsp_r2(ctx);
23331
- gen_helper_dpaqx_sa_w_ph(t0, v1, v0, cpu_env);
23332
+ gen_helper_dpaqx_sa_w_ph(t0, v1, v0, tcg_env);
23333
break;
23334
case NM_DPSU_H_QBR:
23335
check_dsp(ctx);
23336
- gen_helper_dpsu_h_qbr(t0, v1, v0, cpu_env);
23337
+ gen_helper_dpsu_h_qbr(t0, v1, v0, tcg_env);
23338
break;
23339
case NM_DPSQX_SA_W_PH:
23340
check_dsp_r2(ctx);
23341
- gen_helper_dpsqx_sa_w_ph(t0, v1, v0, cpu_env);
23342
+ gen_helper_dpsqx_sa_w_ph(t0, v1, v0, tcg_env);
23343
break;
23344
case NM_MULSAQ_S_W_PH:
23345
check_dsp(ctx);
23346
- gen_helper_mulsaq_s_w_ph(t0, v1, v0, cpu_env);
23347
+ gen_helper_mulsaq_s_w_ph(t0, v1, v0, tcg_env);
23348
break;
23349
default:
23350
gen_reserved_instruction(ctx);
23351
@@ -XXX,XX +XXX,XX @@ static void gen_pool32axf_2_nanomips_insn(DisasContext *ctx, uint32_t opc,
23352
check_dsp(ctx);
23353
gen_load_gpr(v1_t, rs);
23354
tcg_gen_movi_tl(t0, rd >> 3);
23355
- gen_helper_extr_w(t0, t0, v1_t, cpu_env);
23356
+ gen_helper_extr_w(t0, t0, v1_t, tcg_env);
23357
gen_store_gpr(t0, ret);
23358
break;
23359
}
23360
@@ -XXX,XX +XXX,XX @@ static void gen_pool32axf_2_nanomips_insn(DisasContext *ctx, uint32_t opc,
23361
case NM_EXTRV_R_W:
23362
check_dsp(ctx);
23363
tcg_gen_movi_tl(t0, rd >> 3);
23364
- gen_helper_extr_r_w(t0, t0, v1_t, cpu_env);
23365
+ gen_helper_extr_r_w(t0, t0, v1_t, tcg_env);
23366
gen_store_gpr(t0, ret);
23367
break;
23368
default:
23369
@@ -XXX,XX +XXX,XX @@ static void gen_pool32axf_2_nanomips_insn(DisasContext *ctx, uint32_t opc,
23370
case NM_EXTPV:
23371
check_dsp(ctx);
23372
tcg_gen_movi_tl(t0, rd >> 3);
23373
- gen_helper_extp(t0, t0, v1_t, cpu_env);
23374
+ gen_helper_extp(t0, t0, v1_t, tcg_env);
23375
gen_store_gpr(t0, ret);
23376
break;
23377
case NM_MSUB:
23378
@@ -XXX,XX +XXX,XX @@ static void gen_pool32axf_2_nanomips_insn(DisasContext *ctx, uint32_t opc,
23379
case NM_EXTRV_RS_W:
23380
check_dsp(ctx);
23381
tcg_gen_movi_tl(t0, rd >> 3);
23382
- gen_helper_extr_rs_w(t0, t0, v1_t, cpu_env);
23383
+ gen_helper_extr_rs_w(t0, t0, v1_t, tcg_env);
23384
gen_store_gpr(t0, ret);
23385
break;
23386
}
23387
@@ -XXX,XX +XXX,XX @@ static void gen_pool32axf_2_nanomips_insn(DisasContext *ctx, uint32_t opc,
23388
case NM_EXTPDPV:
23389
check_dsp(ctx);
23390
tcg_gen_movi_tl(t0, rd >> 3);
23391
- gen_helper_extpdp(t0, t0, v1_t, cpu_env);
23392
+ gen_helper_extpdp(t0, t0, v1_t, tcg_env);
23393
gen_store_gpr(t0, ret);
23394
break;
23395
case NM_MSUBU:
23396
@@ -XXX,XX +XXX,XX @@ static void gen_pool32axf_2_nanomips_insn(DisasContext *ctx, uint32_t opc,
23397
case NM_EXTRV_S_H:
23398
check_dsp(ctx);
23399
tcg_gen_movi_tl(t0, rd >> 3);
23400
- gen_helper_extr_s_h(t0, t0, v1_t, cpu_env);
23401
+ gen_helper_extr_s_h(t0, t0, v1_t, tcg_env);
23402
gen_store_gpr(t0, ret);
23403
break;
23404
}
23405
@@ -XXX,XX +XXX,XX @@ static void gen_pool32axf_4_nanomips_insn(DisasContext *ctx, uint32_t opc,
23406
switch (opc) {
23407
case NM_ABSQ_S_QB:
23408
check_dsp_r2(ctx);
23409
- gen_helper_absq_s_qb(v0_t, v0_t, cpu_env);
23410
+ gen_helper_absq_s_qb(v0_t, v0_t, tcg_env);
23411
gen_store_gpr(v0_t, ret);
23412
break;
23413
case NM_ABSQ_S_PH:
23414
check_dsp(ctx);
23415
- gen_helper_absq_s_ph(v0_t, v0_t, cpu_env);
23416
+ gen_helper_absq_s_ph(v0_t, v0_t, tcg_env);
23417
gen_store_gpr(v0_t, ret);
23418
break;
23419
case NM_ABSQ_S_W:
23420
check_dsp(ctx);
23421
- gen_helper_absq_s_w(v0_t, v0_t, cpu_env);
23422
+ gen_helper_absq_s_w(v0_t, v0_t, tcg_env);
23423
gen_store_gpr(v0_t, ret);
23424
break;
23425
case NM_PRECEQ_W_PHL:
23426
@@ -XXX,XX +XXX,XX @@ static void gen_pool32axf_4_nanomips_insn(DisasContext *ctx, uint32_t opc,
23427
TCGv tv0 = tcg_temp_new();
23428
23429
gen_load_gpr(tv0, rt);
23430
- gen_helper_insv(v0_t, cpu_env, v0_t, tv0);
23431
+ gen_helper_insv(v0_t, tcg_env, v0_t, tv0);
23432
gen_store_gpr(v0_t, ret);
23433
}
23434
break;
23435
@@ -XXX,XX +XXX,XX @@ static void gen_pool32axf_nanomips_insn(CPUMIPSState *env, DisasContext *ctx)
23436
TCGv t0 = tcg_temp_new();
23437
23438
save_cpu_state(ctx, 1);
23439
- gen_helper_di(t0, cpu_env);
23440
+ gen_helper_di(t0, tcg_env);
23441
gen_store_gpr(t0, rt);
23442
/* Stop translation as we may have switched the execution mode */
23443
ctx->base.is_jmp = DISAS_STOP;
23444
@@ -XXX,XX +XXX,XX @@ static void gen_pool32axf_nanomips_insn(CPUMIPSState *env, DisasContext *ctx)
23445
TCGv t0 = tcg_temp_new();
23446
23447
save_cpu_state(ctx, 1);
23448
- gen_helper_ei(t0, cpu_env);
23449
+ gen_helper_ei(t0, tcg_env);
23450
gen_store_gpr(t0, rt);
23451
/* Stop translation as we may have switched the execution mode */
23452
ctx->base.is_jmp = DISAS_STOP;
23453
@@ -XXX,XX +XXX,XX @@ static void gen_pool32a5_nanomips_insn(DisasContext *ctx, int opc,
23454
switch (opc) {
23455
case NM_CMP_EQ_PH:
23456
check_dsp(ctx);
23457
- gen_helper_cmp_eq_ph(v1_t, v2_t, cpu_env);
23458
+ gen_helper_cmp_eq_ph(v1_t, v2_t, tcg_env);
23459
break;
23460
case NM_CMP_LT_PH:
23461
check_dsp(ctx);
23462
- gen_helper_cmp_lt_ph(v1_t, v2_t, cpu_env);
23463
+ gen_helper_cmp_lt_ph(v1_t, v2_t, tcg_env);
23464
break;
23465
case NM_CMP_LE_PH:
23466
check_dsp(ctx);
23467
- gen_helper_cmp_le_ph(v1_t, v2_t, cpu_env);
23468
+ gen_helper_cmp_le_ph(v1_t, v2_t, tcg_env);
23469
break;
23470
case NM_CMPU_EQ_QB:
23471
check_dsp(ctx);
23472
- gen_helper_cmpu_eq_qb(v1_t, v2_t, cpu_env);
23473
+ gen_helper_cmpu_eq_qb(v1_t, v2_t, tcg_env);
23474
break;
23475
case NM_CMPU_LT_QB:
23476
check_dsp(ctx);
23477
- gen_helper_cmpu_lt_qb(v1_t, v2_t, cpu_env);
23478
+ gen_helper_cmpu_lt_qb(v1_t, v2_t, tcg_env);
23479
break;
23480
case NM_CMPU_LE_QB:
23481
check_dsp(ctx);
23482
- gen_helper_cmpu_le_qb(v1_t, v2_t, cpu_env);
23483
+ gen_helper_cmpu_le_qb(v1_t, v2_t, tcg_env);
23484
break;
23485
case NM_CMPGU_EQ_QB:
23486
check_dsp(ctx);
23487
@@ -XXX,XX +XXX,XX @@ static void gen_pool32a5_nanomips_insn(DisasContext *ctx, int opc,
23488
break;
23489
case NM_PICK_QB:
23490
check_dsp(ctx);
23491
- gen_helper_pick_qb(v1_t, v1_t, v2_t, cpu_env);
23492
+ gen_helper_pick_qb(v1_t, v1_t, v2_t, tcg_env);
23493
gen_store_gpr(v1_t, ret);
23494
break;
23495
case NM_PICK_PH:
23496
check_dsp(ctx);
23497
- gen_helper_pick_ph(v1_t, v1_t, v2_t, cpu_env);
23498
+ gen_helper_pick_ph(v1_t, v1_t, v2_t, tcg_env);
23499
gen_store_gpr(v1_t, ret);
23500
break;
23501
case NM_ADDQ_S_W:
23502
check_dsp(ctx);
23503
- gen_helper_addq_s_w(v1_t, v1_t, v2_t, cpu_env);
23504
+ gen_helper_addq_s_w(v1_t, v1_t, v2_t, tcg_env);
23505
gen_store_gpr(v1_t, ret);
23506
break;
23507
case NM_SUBQ_S_W:
23508
check_dsp(ctx);
23509
- gen_helper_subq_s_w(v1_t, v1_t, v2_t, cpu_env);
23510
+ gen_helper_subq_s_w(v1_t, v1_t, v2_t, tcg_env);
23511
gen_store_gpr(v1_t, ret);
23512
break;
23513
case NM_ADDSC:
23514
check_dsp(ctx);
23515
- gen_helper_addsc(v1_t, v1_t, v2_t, cpu_env);
23516
+ gen_helper_addsc(v1_t, v1_t, v2_t, tcg_env);
23517
gen_store_gpr(v1_t, ret);
23518
break;
23519
case NM_ADDWC:
23520
check_dsp(ctx);
23521
- gen_helper_addwc(v1_t, v1_t, v2_t, cpu_env);
23522
+ gen_helper_addwc(v1_t, v1_t, v2_t, tcg_env);
23523
gen_store_gpr(v1_t, ret);
23524
break;
23525
case NM_ADDQ_S_PH:
23526
@@ -XXX,XX +XXX,XX @@ static void gen_pool32a5_nanomips_insn(DisasContext *ctx, int opc,
23527
switch (extract32(ctx->opcode, 10, 1)) {
23528
case 0:
23529
/* ADDQ_PH */
23530
- gen_helper_addq_ph(v1_t, v1_t, v2_t, cpu_env);
23531
+ gen_helper_addq_ph(v1_t, v1_t, v2_t, tcg_env);
23532
gen_store_gpr(v1_t, ret);
23533
break;
23534
case 1:
23535
/* ADDQ_S_PH */
23536
- gen_helper_addq_s_ph(v1_t, v1_t, v2_t, cpu_env);
23537
+ gen_helper_addq_s_ph(v1_t, v1_t, v2_t, tcg_env);
23538
gen_store_gpr(v1_t, ret);
23539
break;
23540
}
23541
@@ -XXX,XX +XXX,XX @@ static void gen_pool32a5_nanomips_insn(DisasContext *ctx, int opc,
23542
switch (extract32(ctx->opcode, 10, 1)) {
23543
case 0:
23544
/* ADDU_QB */
23545
- gen_helper_addu_qb(v1_t, v1_t, v2_t, cpu_env);
23546
+ gen_helper_addu_qb(v1_t, v1_t, v2_t, tcg_env);
23547
gen_store_gpr(v1_t, ret);
23548
break;
23549
case 1:
23550
/* ADDU_S_QB */
23551
- gen_helper_addu_s_qb(v1_t, v1_t, v2_t, cpu_env);
23552
+ gen_helper_addu_s_qb(v1_t, v1_t, v2_t, tcg_env);
23553
gen_store_gpr(v1_t, ret);
23554
break;
23555
}
23556
@@ -XXX,XX +XXX,XX @@ static void gen_pool32a5_nanomips_insn(DisasContext *ctx, int opc,
23557
switch (extract32(ctx->opcode, 10, 1)) {
23558
case 0:
23559
/* ADDU_PH */
23560
- gen_helper_addu_ph(v1_t, v1_t, v2_t, cpu_env);
23561
+ gen_helper_addu_ph(v1_t, v1_t, v2_t, tcg_env);
23562
gen_store_gpr(v1_t, ret);
23563
break;
23564
case 1:
23565
/* ADDU_S_PH */
23566
- gen_helper_addu_s_ph(v1_t, v1_t, v2_t, cpu_env);
23567
+ gen_helper_addu_s_ph(v1_t, v1_t, v2_t, tcg_env);
23568
gen_store_gpr(v1_t, ret);
23569
break;
23570
}
23571
@@ -XXX,XX +XXX,XX @@ static void gen_pool32a5_nanomips_insn(DisasContext *ctx, int opc,
23572
switch (extract32(ctx->opcode, 10, 1)) {
23573
case 0:
23574
/* SUBQ_PH */
23575
- gen_helper_subq_ph(v1_t, v1_t, v2_t, cpu_env);
23576
+ gen_helper_subq_ph(v1_t, v1_t, v2_t, tcg_env);
23577
gen_store_gpr(v1_t, ret);
23578
break;
23579
case 1:
23580
/* SUBQ_S_PH */
23581
- gen_helper_subq_s_ph(v1_t, v1_t, v2_t, cpu_env);
23582
+ gen_helper_subq_s_ph(v1_t, v1_t, v2_t, tcg_env);
23583
gen_store_gpr(v1_t, ret);
23584
break;
23585
}
23586
@@ -XXX,XX +XXX,XX @@ static void gen_pool32a5_nanomips_insn(DisasContext *ctx, int opc,
23587
switch (extract32(ctx->opcode, 10, 1)) {
23588
case 0:
23589
/* SUBU_QB */
23590
- gen_helper_subu_qb(v1_t, v1_t, v2_t, cpu_env);
23591
+ gen_helper_subu_qb(v1_t, v1_t, v2_t, tcg_env);
23592
gen_store_gpr(v1_t, ret);
23593
break;
23594
case 1:
23595
/* SUBU_S_QB */
23596
- gen_helper_subu_s_qb(v1_t, v1_t, v2_t, cpu_env);
23597
+ gen_helper_subu_s_qb(v1_t, v1_t, v2_t, tcg_env);
23598
gen_store_gpr(v1_t, ret);
23599
break;
23600
}
23601
@@ -XXX,XX +XXX,XX @@ static void gen_pool32a5_nanomips_insn(DisasContext *ctx, int opc,
23602
switch (extract32(ctx->opcode, 10, 1)) {
23603
case 0:
23604
/* SUBU_PH */
23605
- gen_helper_subu_ph(v1_t, v1_t, v2_t, cpu_env);
23606
+ gen_helper_subu_ph(v1_t, v1_t, v2_t, tcg_env);
23607
gen_store_gpr(v1_t, ret);
23608
break;
23609
case 1:
23610
/* SUBU_S_PH */
23611
- gen_helper_subu_s_ph(v1_t, v1_t, v2_t, cpu_env);
23612
+ gen_helper_subu_s_ph(v1_t, v1_t, v2_t, tcg_env);
23613
gen_store_gpr(v1_t, ret);
23614
break;
23615
}
23616
@@ -XXX,XX +XXX,XX @@ static void gen_pool32a5_nanomips_insn(DisasContext *ctx, int opc,
23617
switch (extract32(ctx->opcode, 10, 1)) {
23618
case 0:
23619
/* SHLLV_PH */
23620
- gen_helper_shll_ph(v1_t, v1_t, v2_t, cpu_env);
23621
+ gen_helper_shll_ph(v1_t, v1_t, v2_t, tcg_env);
23622
gen_store_gpr(v1_t, ret);
23623
break;
23624
case 1:
23625
/* SHLLV_S_PH */
23626
- gen_helper_shll_s_ph(v1_t, v1_t, v2_t, cpu_env);
23627
+ gen_helper_shll_s_ph(v1_t, v1_t, v2_t, tcg_env);
23628
gen_store_gpr(v1_t, ret);
23629
break;
23630
}
23631
@@ -XXX,XX +XXX,XX @@ static void gen_pool32a5_nanomips_insn(DisasContext *ctx, int opc,
23632
break;
23633
case NM_MULEU_S_PH_QBL:
23634
check_dsp(ctx);
23635
- gen_helper_muleu_s_ph_qbl(v1_t, v1_t, v2_t, cpu_env);
23636
+ gen_helper_muleu_s_ph_qbl(v1_t, v1_t, v2_t, tcg_env);
23637
gen_store_gpr(v1_t, ret);
23638
break;
23639
case NM_MULEU_S_PH_QBR:
23640
check_dsp(ctx);
23641
- gen_helper_muleu_s_ph_qbr(v1_t, v1_t, v2_t, cpu_env);
23642
+ gen_helper_muleu_s_ph_qbr(v1_t, v1_t, v2_t, tcg_env);
23643
gen_store_gpr(v1_t, ret);
23644
break;
23645
case NM_MULQ_RS_PH:
23646
check_dsp(ctx);
23647
- gen_helper_mulq_rs_ph(v1_t, v1_t, v2_t, cpu_env);
23648
+ gen_helper_mulq_rs_ph(v1_t, v1_t, v2_t, tcg_env);
23649
gen_store_gpr(v1_t, ret);
23650
break;
23651
case NM_MULQ_S_PH:
23652
check_dsp_r2(ctx);
23653
- gen_helper_mulq_s_ph(v1_t, v1_t, v2_t, cpu_env);
23654
+ gen_helper_mulq_s_ph(v1_t, v1_t, v2_t, tcg_env);
23655
gen_store_gpr(v1_t, ret);
23656
break;
23657
case NM_MULQ_RS_W:
23658
check_dsp_r2(ctx);
23659
- gen_helper_mulq_rs_w(v1_t, v1_t, v2_t, cpu_env);
23660
+ gen_helper_mulq_rs_w(v1_t, v1_t, v2_t, tcg_env);
23661
gen_store_gpr(v1_t, ret);
23662
break;
23663
case NM_MULQ_S_W:
23664
check_dsp_r2(ctx);
23665
- gen_helper_mulq_s_w(v1_t, v1_t, v2_t, cpu_env);
23666
+ gen_helper_mulq_s_w(v1_t, v1_t, v2_t, tcg_env);
23667
gen_store_gpr(v1_t, ret);
23668
break;
23669
case NM_APPEND:
23670
@@ -XXX,XX +XXX,XX @@ static void gen_pool32a5_nanomips_insn(DisasContext *ctx, int opc,
23671
break;
23672
case NM_SHLLV_QB:
23673
check_dsp(ctx);
23674
- gen_helper_shll_qb(v1_t, v1_t, v2_t, cpu_env);
23675
+ gen_helper_shll_qb(v1_t, v1_t, v2_t, tcg_env);
23676
gen_store_gpr(v1_t, ret);
23677
break;
23678
case NM_SHLLV_S_W:
23679
check_dsp(ctx);
23680
- gen_helper_shll_s_w(v1_t, v1_t, v2_t, cpu_env);
23681
+ gen_helper_shll_s_w(v1_t, v1_t, v2_t, tcg_env);
23682
gen_store_gpr(v1_t, ret);
23683
break;
23684
case NM_SHILO:
23685
@@ -XXX,XX +XXX,XX @@ static void gen_pool32a5_nanomips_insn(DisasContext *ctx, int opc,
23686
23687
tcg_gen_movi_tl(tv0, rd >> 3);
23688
tcg_gen_movi_tl(tv1, imm);
23689
- gen_helper_shilo(tv0, tv1, cpu_env);
23690
+ gen_helper_shilo(tv0, tv1, tcg_env);
23691
}
23692
break;
23693
case NM_MULEQ_S_W_PHL:
23694
check_dsp(ctx);
23695
- gen_helper_muleq_s_w_phl(v1_t, v1_t, v2_t, cpu_env);
23696
+ gen_helper_muleq_s_w_phl(v1_t, v1_t, v2_t, tcg_env);
23697
gen_store_gpr(v1_t, ret);
23698
break;
23699
case NM_MULEQ_S_W_PHR:
23700
check_dsp(ctx);
23701
- gen_helper_muleq_s_w_phr(v1_t, v1_t, v2_t, cpu_env);
23702
+ gen_helper_muleq_s_w_phr(v1_t, v1_t, v2_t, tcg_env);
23703
gen_store_gpr(v1_t, ret);
23704
break;
23705
case NM_MUL_S_PH:
23706
@@ -XXX,XX +XXX,XX @@ static void gen_pool32a5_nanomips_insn(DisasContext *ctx, int opc,
23707
switch (extract32(ctx->opcode, 10, 1)) {
23708
case 0:
23709
/* MUL_PH */
23710
- gen_helper_mul_ph(v1_t, v1_t, v2_t, cpu_env);
23711
+ gen_helper_mul_ph(v1_t, v1_t, v2_t, tcg_env);
23712
gen_store_gpr(v1_t, ret);
23713
break;
23714
case 1:
23715
/* MUL_S_PH */
23716
- gen_helper_mul_s_ph(v1_t, v1_t, v2_t, cpu_env);
23717
+ gen_helper_mul_s_ph(v1_t, v1_t, v2_t, tcg_env);
23718
gen_store_gpr(v1_t, ret);
23719
break;
23720
}
23721
@@ -XXX,XX +XXX,XX @@ static void gen_pool32a5_nanomips_insn(DisasContext *ctx, int opc,
23722
break;
23723
case NM_PRECRQ_RS_PH_W:
23724
check_dsp(ctx);
23725
- gen_helper_precrq_rs_ph_w(v1_t, v1_t, v2_t, cpu_env);
23726
+ gen_helper_precrq_rs_ph_w(v1_t, v1_t, v2_t, tcg_env);
23727
gen_store_gpr(v1_t, ret);
23728
break;
23729
case NM_PRECRQU_S_QB_PH:
23730
check_dsp(ctx);
23731
- gen_helper_precrqu_s_qb_ph(v1_t, v1_t, v2_t, cpu_env);
23732
+ gen_helper_precrqu_s_qb_ph(v1_t, v1_t, v2_t, tcg_env);
23733
gen_store_gpr(v1_t, ret);
23734
break;
23735
case NM_SHRA_R_W:
23736
@@ -XXX,XX +XXX,XX @@ static void gen_pool32a5_nanomips_insn(DisasContext *ctx, int opc,
23737
switch (extract32(ctx->opcode, 10, 2)) {
23738
case 0:
23739
/* SHLL_PH */
23740
- gen_helper_shll_ph(v1_t, t0, v1_t, cpu_env);
23741
+ gen_helper_shll_ph(v1_t, t0, v1_t, tcg_env);
23742
gen_store_gpr(v1_t, rt);
23743
break;
23744
case 2:
23745
/* SHLL_S_PH */
23746
- gen_helper_shll_s_ph(v1_t, t0, v1_t, cpu_env);
23747
+ gen_helper_shll_s_ph(v1_t, t0, v1_t, tcg_env);
23748
gen_store_gpr(v1_t, rt);
23749
break;
23750
default:
23751
@@ -XXX,XX +XXX,XX @@ static void gen_pool32a5_nanomips_insn(DisasContext *ctx, int opc,
23752
case NM_SHLL_S_W:
23753
check_dsp(ctx);
23754
tcg_gen_movi_tl(t0, rd);
23755
- gen_helper_shll_s_w(v1_t, t0, v1_t, cpu_env);
23756
+ gen_helper_shll_s_w(v1_t, t0, v1_t, tcg_env);
23757
gen_store_gpr(v1_t, rt);
23758
break;
23759
case NM_REPL_PH:
23760
@@ -XXX,XX +XXX,XX @@ static int decode_isa_nanomips(CPUMIPSState *env, DisasContext *ctx)
23761
/* make sure instructions are on a halfword boundary */
23762
if (ctx->base.pc_next & 0x1) {
23763
TCGv tmp = tcg_constant_tl(ctx->base.pc_next);
23764
- tcg_gen_st_tl(tmp, cpu_env, offsetof(CPUMIPSState, CP0_BadVAddr));
23765
+ tcg_gen_st_tl(tmp, tcg_env, offsetof(CPUMIPSState, CP0_BadVAddr));
23766
generate_exception_end(ctx, EXCP_AdEL);
23767
return 2;
23768
}
23769
diff --git a/target/ppc/power8-pmu-regs.c.inc b/target/ppc/power8-pmu-regs.c.inc
23770
index XXXXXXX..XXXXXXX 100644
23771
--- a/target/ppc/power8-pmu-regs.c.inc
23772
+++ b/target/ppc/power8-pmu-regs.c.inc
23773
@@ -XXX,XX +XXX,XX @@ static void write_MMCR0_common(DisasContext *ctx, TCGv val)
23774
* translator_io_start() beforehand.
23775
*/
23776
translator_io_start(&ctx->base);
23777
- gen_helper_store_mmcr0(cpu_env, val);
23778
+ gen_helper_store_mmcr0(tcg_env, val);
23779
23780
/*
23781
* End the translation block because MMCR0 writes can change
23782
@@ -XXX,XX +XXX,XX @@ void spr_read_PMC(DisasContext *ctx, int gprn, int sprn)
23783
TCGv_i32 t_sprn = tcg_constant_i32(sprn);
23784
23785
translator_io_start(&ctx->base);
23786
- gen_helper_read_pmc(cpu_gpr[gprn], cpu_env, t_sprn);
23787
+ gen_helper_read_pmc(cpu_gpr[gprn], tcg_env, t_sprn);
23788
}
23789
23790
void spr_read_PMC14_ureg(DisasContext *ctx, int gprn, int sprn)
23791
@@ -XXX,XX +XXX,XX @@ void spr_write_PMC(DisasContext *ctx, int sprn, int gprn)
23792
TCGv_i32 t_sprn = tcg_constant_i32(sprn);
23793
23794
translator_io_start(&ctx->base);
23795
- gen_helper_store_pmc(cpu_env, t_sprn, cpu_gpr[gprn]);
23796
+ gen_helper_store_pmc(tcg_env, t_sprn, cpu_gpr[gprn]);
23797
}
23798
23799
void spr_write_PMC14_ureg(DisasContext *ctx, int sprn, int gprn)
23800
@@ -XXX,XX +XXX,XX @@ void spr_write_MMCR0(DisasContext *ctx, int sprn, int gprn)
23801
void spr_write_MMCR1(DisasContext *ctx, int sprn, int gprn)
23802
{
23803
translator_io_start(&ctx->base);
23804
- gen_helper_store_mmcr1(cpu_env, cpu_gpr[gprn]);
23805
+ gen_helper_store_mmcr1(tcg_env, cpu_gpr[gprn]);
23806
}
23807
#else
23808
void spr_read_MMCR0_ureg(DisasContext *ctx, int gprn, int sprn)
23809
diff --git a/target/ppc/translate/branch-impl.c.inc b/target/ppc/translate/branch-impl.c.inc
23810
index XXXXXXX..XXXXXXX 100644
23811
--- a/target/ppc/translate/branch-impl.c.inc
23812
+++ b/target/ppc/translate/branch-impl.c.inc
23813
@@ -XXX,XX +XXX,XX @@ static bool trans_RFEBB(DisasContext *ctx, arg_XL_s *arg)
23814
23815
translator_io_start(&ctx->base);
23816
gen_update_cfar(ctx, ctx->cia);
23817
- gen_helper_rfebb(cpu_env, cpu_gpr[arg->s]);
23818
+ gen_helper_rfebb(tcg_env, cpu_gpr[arg->s]);
23819
23820
ctx->base.is_jmp = DISAS_CHAIN;
23821
23822
diff --git a/target/ppc/translate/dfp-impl.c.inc b/target/ppc/translate/dfp-impl.c.inc
23823
index XXXXXXX..XXXXXXX 100644
23824
--- a/target/ppc/translate/dfp-impl.c.inc
23825
+++ b/target/ppc/translate/dfp-impl.c.inc
23826
@@ -XXX,XX +XXX,XX @@
23827
static inline TCGv_ptr gen_fprp_ptr(int reg)
23828
{
23829
TCGv_ptr r = tcg_temp_new_ptr();
23830
- tcg_gen_addi_ptr(r, cpu_env, offsetof(CPUPPCState, vsr[reg].u64[0]));
23831
+ tcg_gen_addi_ptr(r, tcg_env, offsetof(CPUPPCState, vsr[reg].u64[0]));
23832
return r;
23833
}
23834
23835
@@ -XXX,XX +XXX,XX @@ static bool trans_##NAME(DisasContext *ctx, arg_##NAME *a) \
23836
rt = gen_fprp_ptr(a->rt); \
23837
ra = gen_fprp_ptr(a->ra); \
23838
rb = gen_fprp_ptr(a->rb); \
23839
- gen_helper_##NAME(cpu_env, rt, ra, rb); \
23840
+ gen_helper_##NAME(tcg_env, rt, ra, rb); \
23841
if (unlikely(a->rc)) { \
23842
gen_set_cr1_from_fpscr(ctx); \
23843
} \
23844
@@ -XXX,XX +XXX,XX @@ static bool trans_##NAME(DisasContext *ctx, arg_##NAME *a) \
23845
ra = gen_fprp_ptr(a->ra); \
23846
rb = gen_fprp_ptr(a->rb); \
23847
gen_helper_##NAME(cpu_crf[a->bf], \
23848
- cpu_env, ra, rb); \
23849
+ tcg_env, ra, rb); \
23850
return true; \
23851
}
23852
23853
@@ -XXX,XX +XXX,XX @@ static bool trans_##NAME(DisasContext *ctx, arg_##NAME *a) \
23854
REQUIRE_FPU(ctx); \
23855
rb = gen_fprp_ptr(a->rb); \
23856
gen_helper_##NAME(cpu_crf[a->bf], \
23857
- cpu_env, tcg_constant_i32(a->uim), rb);\
23858
+ tcg_env, tcg_constant_i32(a->uim), rb);\
23859
return true; \
23860
}
23861
23862
@@ -XXX,XX +XXX,XX @@ static bool trans_##NAME(DisasContext *ctx, arg_##NAME *a) \
23863
REQUIRE_FPU(ctx); \
23864
ra = gen_fprp_ptr(a->fra); \
23865
gen_helper_##NAME(cpu_crf[a->bf], \
23866
- cpu_env, ra, tcg_constant_i32(a->dm)); \
23867
+ tcg_env, ra, tcg_constant_i32(a->dm)); \
23868
return true; \
23869
}
23870
23871
@@ -XXX,XX +XXX,XX @@ static bool trans_##NAME(DisasContext *ctx, arg_##NAME *a) \
23872
REQUIRE_FPU(ctx); \
23873
rt = gen_fprp_ptr(a->frt); \
23874
rb = gen_fprp_ptr(a->frb); \
23875
- gen_helper_##NAME(cpu_env, rt, rb, \
23876
+ gen_helper_##NAME(tcg_env, rt, rb, \
23877
tcg_constant_i32(a->U32F1), \
23878
tcg_constant_i32(a->U32F2)); \
23879
if (unlikely(a->rc)) { \
23880
@@ -XXX,XX +XXX,XX @@ static bool trans_##NAME(DisasContext *ctx, arg_##NAME *a) \
23881
rt = gen_fprp_ptr(a->frt); \
23882
ra = gen_fprp_ptr(a->fra); \
23883
rb = gen_fprp_ptr(a->frb); \
23884
- gen_helper_##NAME(cpu_env, rt, ra, rb, \
23885
+ gen_helper_##NAME(tcg_env, rt, ra, rb, \
23886
tcg_constant_i32(a->I32FLD)); \
23887
if (unlikely(a->rc)) { \
23888
gen_set_cr1_from_fpscr(ctx); \
23889
@@ -XXX,XX +XXX,XX @@ static bool trans_##NAME(DisasContext *ctx, arg_##NAME *a) \
23890
REQUIRE_FPU(ctx); \
23891
rt = gen_fprp_ptr(a->rt); \
23892
rb = gen_fprp_ptr(a->rb); \
23893
- gen_helper_##NAME(cpu_env, rt, rb); \
23894
+ gen_helper_##NAME(tcg_env, rt, rb); \
23895
if (unlikely(a->rc)) { \
23896
gen_set_cr1_from_fpscr(ctx); \
23897
} \
23898
@@ -XXX,XX +XXX,XX @@ static bool trans_##NAME(DisasContext *ctx, arg_##NAME *a) \
23899
REQUIRE_FPU(ctx); \
23900
rt = gen_fprp_ptr(a->rt); \
23901
rx = gen_fprp_ptr(a->FPRFLD); \
23902
- gen_helper_##NAME(cpu_env, rt, rx, \
23903
+ gen_helper_##NAME(tcg_env, rt, rx, \
23904
tcg_constant_i32(a->I32FLD)); \
23905
if (unlikely(a->rc)) { \
23906
gen_set_cr1_from_fpscr(ctx); \
23907
@@ -XXX,XX +XXX,XX @@ static bool trans_DCFFIXQQ(DisasContext *ctx, arg_DCFFIXQQ *a)
23908
23909
rt = gen_fprp_ptr(a->frtp);
23910
rb = gen_avr_ptr(a->vrb);
23911
- gen_helper_DCFFIXQQ(cpu_env, rt, rb);
23912
+ gen_helper_DCFFIXQQ(tcg_env, rt, rb);
23913
23914
return true;
23915
}
23916
@@ -XXX,XX +XXX,XX @@ static bool trans_DCTFIXQQ(DisasContext *ctx, arg_DCTFIXQQ *a)
23917
23918
rt = gen_avr_ptr(a->vrt);
23919
rb = gen_fprp_ptr(a->frbp);
23920
- gen_helper_DCTFIXQQ(cpu_env, rt, rb);
23921
+ gen_helper_DCTFIXQQ(tcg_env, rt, rb);
23922
23923
return true;
23924
}
23925
diff --git a/target/ppc/translate/fixedpoint-impl.c.inc b/target/ppc/translate/fixedpoint-impl.c.inc
23926
index XXXXXXX..XXXXXXX 100644
23927
--- a/target/ppc/translate/fixedpoint-impl.c.inc
23928
+++ b/target/ppc/translate/fixedpoint-impl.c.inc
23929
@@ -XXX,XX +XXX,XX @@ static bool do_hash(DisasContext *ctx, arg_X *a, bool priv,
23930
}
23931
23932
ea = do_ea_calc(ctx, a->ra, tcg_constant_tl(a->rt));
23933
- helper(cpu_env, ea, cpu_gpr[a->ra], cpu_gpr[a->rb]);
23934
+ helper(tcg_env, ea, cpu_gpr[a->ra], cpu_gpr[a->rb]);
23935
return true;
23936
}
23937
23938
diff --git a/target/ppc/translate/fp-impl.c.inc b/target/ppc/translate/fp-impl.c.inc
23939
index XXXXXXX..XXXXXXX 100644
23940
--- a/target/ppc/translate/fp-impl.c.inc
23941
+++ b/target/ppc/translate/fp-impl.c.inc
23942
@@ -XXX,XX +XXX,XX @@
23943
23944
static inline void gen_reset_fpstatus(void)
23945
{
23946
- gen_helper_reset_fpstatus(cpu_env);
23947
+ gen_helper_reset_fpstatus(tcg_env);
23948
}
23949
23950
static inline void gen_compute_fprf_float64(TCGv_i64 arg)
23951
{
23952
- gen_helper_compute_fprf_float64(cpu_env, arg);
23953
- gen_helper_float_check_status(cpu_env);
23954
+ gen_helper_compute_fprf_float64(tcg_env, arg);
23955
+ gen_helper_float_check_status(tcg_env);
23956
}
23957
23958
#if defined(TARGET_PPC64)
23959
@@ -XXX,XX +XXX,XX @@ static void gen_f##name(DisasContext *ctx) \
23960
get_fpr(t0, rA(ctx->opcode)); \
23961
get_fpr(t1, rC(ctx->opcode)); \
23962
get_fpr(t2, rB(ctx->opcode)); \
23963
- gen_helper_f##name(t3, cpu_env, t0, t1, t2); \
23964
+ gen_helper_f##name(t3, tcg_env, t0, t1, t2); \
23965
set_fpr(rD(ctx->opcode), t3); \
23966
if (set_fprf) { \
23967
gen_compute_fprf_float64(t3); \
23968
@@ -XXX,XX +XXX,XX @@ static void gen_f##name(DisasContext *ctx) \
23969
gen_reset_fpstatus(); \
23970
get_fpr(t0, rA(ctx->opcode)); \
23971
get_fpr(t1, rB(ctx->opcode)); \
23972
- gen_helper_f##name(t2, cpu_env, t0, t1); \
23973
+ gen_helper_f##name(t2, tcg_env, t0, t1); \
23974
set_fpr(rD(ctx->opcode), t2); \
23975
if (set_fprf) { \
23976
gen_compute_fprf_float64(t2); \
23977
@@ -XXX,XX +XXX,XX @@ static void gen_f##name(DisasContext *ctx) \
23978
gen_reset_fpstatus(); \
23979
get_fpr(t0, rA(ctx->opcode)); \
23980
get_fpr(t1, rC(ctx->opcode)); \
23981
- gen_helper_f##name(t2, cpu_env, t0, t1); \
23982
+ gen_helper_f##name(t2, tcg_env, t0, t1); \
23983
set_fpr(rD(ctx->opcode), t2); \
23984
if (set_fprf) { \
23985
gen_compute_fprf_float64(t2); \
23986
@@ -XXX,XX +XXX,XX @@ static void gen_f##name(DisasContext *ctx) \
23987
t1 = tcg_temp_new_i64(); \
23988
gen_reset_fpstatus(); \
23989
get_fpr(t0, rB(ctx->opcode)); \
23990
- gen_helper_f##name(t1, cpu_env, t0); \
23991
+ gen_helper_f##name(t1, tcg_env, t0); \
23992
set_fpr(rD(ctx->opcode), t1); \
23993
if (set_fprf) { \
23994
- gen_helper_compute_fprf_float64(cpu_env, t1); \
23995
+ gen_helper_compute_fprf_float64(tcg_env, t1); \
23996
} \
23997
- gen_helper_float_check_status(cpu_env); \
23998
+ gen_helper_float_check_status(tcg_env); \
23999
if (unlikely(Rc(ctx->opcode) != 0)) { \
24000
gen_set_cr1_from_fpscr(ctx); \
24001
} \
24002
@@ -XXX,XX +XXX,XX @@ static void gen_f##name(DisasContext *ctx) \
24003
t1 = tcg_temp_new_i64(); \
24004
gen_reset_fpstatus(); \
24005
get_fpr(t0, rB(ctx->opcode)); \
24006
- gen_helper_f##name(t1, cpu_env, t0); \
24007
+ gen_helper_f##name(t1, tcg_env, t0); \
24008
set_fpr(rD(ctx->opcode), t1); \
24009
if (set_fprf) { \
24010
gen_compute_fprf_float64(t1); \
24011
@@ -XXX,XX +XXX,XX @@ static void gen_frsqrtes(DisasContext *ctx)
24012
t1 = tcg_temp_new_i64();
24013
gen_reset_fpstatus();
24014
get_fpr(t0, rB(ctx->opcode));
24015
- gen_helper_frsqrtes(t1, cpu_env, t0);
24016
+ gen_helper_frsqrtes(t1, tcg_env, t0);
24017
set_fpr(rD(ctx->opcode), t1);
24018
gen_compute_fprf_float64(t1);
24019
if (unlikely(Rc(ctx->opcode) != 0)) {
24020
@@ -XXX,XX +XXX,XX @@ static bool do_helper_fsqrt(DisasContext *ctx, arg_A_tb *a,
24021
24022
gen_reset_fpstatus();
24023
get_fpr(t0, a->frb);
24024
- helper(t1, cpu_env, t0);
24025
+ helper(t1, tcg_env, t0);
24026
set_fpr(a->frt, t1);
24027
gen_compute_fprf_float64(t1);
24028
if (unlikely(a->rc != 0)) {
24029
@@ -XXX,XX +XXX,XX @@ static void gen_fcmpo(DisasContext *ctx)
24030
crf = tcg_constant_i32(crfD(ctx->opcode));
24031
get_fpr(t0, rA(ctx->opcode));
24032
get_fpr(t1, rB(ctx->opcode));
24033
- gen_helper_fcmpo(cpu_env, t0, t1, crf);
24034
- gen_helper_float_check_status(cpu_env);
24035
+ gen_helper_fcmpo(tcg_env, t0, t1, crf);
24036
+ gen_helper_float_check_status(tcg_env);
24037
}
24038
24039
/* fcmpu */
24040
@@ -XXX,XX +XXX,XX @@ static void gen_fcmpu(DisasContext *ctx)
24041
crf = tcg_constant_i32(crfD(ctx->opcode));
24042
get_fpr(t0, rA(ctx->opcode));
24043
get_fpr(t1, rB(ctx->opcode));
24044
- gen_helper_fcmpu(cpu_env, t0, t1, crf);
24045
- gen_helper_float_check_status(cpu_env);
24046
+ gen_helper_fcmpu(tcg_env, t0, t1, crf);
24047
+ gen_helper_float_check_status(tcg_env);
24048
}
24049
24050
/*** Floating-point move ***/
24051
@@ -XXX,XX +XXX,XX @@ static void gen_mcrfs(DisasContext *ctx)
24052
~((0xF << shift) & FP_EX_CLEAR_BITS));
24053
/* FEX and VX need to be updated, so don't set fpscr directly */
24054
tmask = tcg_constant_i32(1 << nibble);
24055
- gen_helper_store_fpscr(cpu_env, tnew_fpscr, tmask);
24056
+ gen_helper_store_fpscr(tcg_env, tnew_fpscr, tmask);
24057
}
24058
24059
static TCGv_i64 place_from_fpscr(int rt, uint64_t mask)
24060
@@ -XXX,XX +XXX,XX @@ static void store_fpscr_masked(TCGv_i64 fpscr, uint64_t clear_mask,
24061
24062
tcg_gen_andi_i64(fpscr_masked, fpscr, ~clear_mask);
24063
tcg_gen_or_i64(fpscr_masked, fpscr_masked, set_mask);
24064
- gen_helper_store_fpscr(cpu_env, fpscr_masked, st_mask);
24065
+ gen_helper_store_fpscr(tcg_env, fpscr_masked, st_mask);
24066
}
24067
24068
static bool trans_MFFS_ISA207(DisasContext *ctx, arg_X_t_rc *a)
24069
@@ -XXX,XX +XXX,XX @@ static void gen_mtfsb0(DisasContext *ctx)
24070
crb = 31 - crbD(ctx->opcode);
24071
gen_reset_fpstatus();
24072
if (likely(crb != FPSCR_FEX && crb != FPSCR_VX)) {
24073
- gen_helper_fpscr_clrbit(cpu_env, tcg_constant_i32(crb));
24074
+ gen_helper_fpscr_clrbit(tcg_env, tcg_constant_i32(crb));
24075
}
24076
if (unlikely(Rc(ctx->opcode) != 0)) {
24077
tcg_gen_trunc_tl_i32(cpu_crf[1], cpu_fpscr);
24078
@@ -XXX,XX +XXX,XX @@ static void gen_mtfsb1(DisasContext *ctx)
24079
crb = 31 - crbD(ctx->opcode);
24080
/* XXX: we pretend we can only do IEEE floating-point computations */
24081
if (likely(crb != FPSCR_FEX && crb != FPSCR_VX && crb != FPSCR_NI)) {
24082
- gen_helper_fpscr_setbit(cpu_env, tcg_constant_i32(crb));
24083
+ gen_helper_fpscr_setbit(tcg_env, tcg_constant_i32(crb));
24084
}
24085
if (unlikely(Rc(ctx->opcode) != 0)) {
24086
tcg_gen_trunc_tl_i32(cpu_crf[1], cpu_fpscr);
24087
tcg_gen_shri_i32(cpu_crf[1], cpu_crf[1], FPSCR_OX);
24088
}
24089
/* We can raise a deferred exception */
24090
- gen_helper_fpscr_check_status(cpu_env);
24091
+ gen_helper_fpscr_check_status(tcg_env);
24092
}
24093
24094
/* mtfsf */
24095
@@ -XXX,XX +XXX,XX @@ static void gen_mtfsf(DisasContext *ctx)
24096
}
24097
t1 = tcg_temp_new_i64();
24098
get_fpr(t1, rB(ctx->opcode));
24099
- gen_helper_store_fpscr(cpu_env, t1, t0);
24100
+ gen_helper_store_fpscr(tcg_env, t1, t0);
24101
if (unlikely(Rc(ctx->opcode) != 0)) {
24102
tcg_gen_trunc_tl_i32(cpu_crf[1], cpu_fpscr);
24103
tcg_gen_shri_i32(cpu_crf[1], cpu_crf[1], FPSCR_OX);
24104
}
24105
/* We can raise a deferred exception */
24106
- gen_helper_fpscr_check_status(cpu_env);
24107
+ gen_helper_fpscr_check_status(tcg_env);
24108
}
24109
24110
/* mtfsfi */
24111
@@ -XXX,XX +XXX,XX @@ static void gen_mtfsfi(DisasContext *ctx)
24112
sh = (8 * w) + 7 - bf;
24113
t0 = tcg_constant_i64(((uint64_t)FPIMM(ctx->opcode)) << (4 * sh));
24114
t1 = tcg_constant_i32(1 << sh);
24115
- gen_helper_store_fpscr(cpu_env, t0, t1);
24116
+ gen_helper_store_fpscr(tcg_env, t0, t1);
24117
if (unlikely(Rc(ctx->opcode) != 0)) {
24118
tcg_gen_trunc_tl_i32(cpu_crf[1], cpu_fpscr);
24119
tcg_gen_shri_i32(cpu_crf[1], cpu_crf[1], FPSCR_OX);
24120
}
24121
/* We can raise a deferred exception */
24122
- gen_helper_fpscr_check_status(cpu_env);
24123
+ gen_helper_fpscr_check_status(tcg_env);
24124
}
24125
24126
static void gen_qemu_ld32fs(DisasContext *ctx, TCGv_i64 dest, TCGv addr)
24127
diff --git a/target/ppc/translate/processor-ctrl-impl.c.inc b/target/ppc/translate/processor-ctrl-impl.c.inc
24128
index XXXXXXX..XXXXXXX 100644
24129
--- a/target/ppc/translate/processor-ctrl-impl.c.inc
24130
+++ b/target/ppc/translate/processor-ctrl-impl.c.inc
24131
@@ -XXX,XX +XXX,XX @@ static bool trans_MSGCLR(DisasContext *ctx, arg_X_rb *a)
24132
24133
#if !defined(CONFIG_USER_ONLY)
24134
if (is_book3s_arch2x(ctx)) {
24135
- gen_helper_book3s_msgclr(cpu_env, cpu_gpr[a->rb]);
24136
+ gen_helper_book3s_msgclr(tcg_env, cpu_gpr[a->rb]);
24137
} else {
24138
- gen_helper_msgclr(cpu_env, cpu_gpr[a->rb]);
24139
+ gen_helper_msgclr(tcg_env, cpu_gpr[a->rb]);
24140
}
24141
#else
24142
qemu_build_not_reached();
24143
@@ -XXX,XX +XXX,XX @@ static bool trans_MSGCLRP(DisasContext *ctx, arg_X_rb *a)
24144
REQUIRE_INSNS_FLAGS2(ctx, ISA207S);
24145
REQUIRE_SV(ctx);
24146
#if !defined(CONFIG_USER_ONLY) && defined(TARGET_PPC64)
24147
- gen_helper_book3s_msgclrp(cpu_env, cpu_gpr[a->rb]);
24148
+ gen_helper_book3s_msgclrp(tcg_env, cpu_gpr[a->rb]);
24149
#else
24150
qemu_build_not_reached();
24151
#endif
24152
@@ -XXX,XX +XXX,XX @@ static bool trans_MSGSNDP(DisasContext *ctx, arg_X_rb *a)
24153
REQUIRE_INSNS_FLAGS2(ctx, ISA207S);
24154
REQUIRE_SV(ctx);
24155
#if !defined(CONFIG_USER_ONLY) && defined(TARGET_PPC64)
24156
- gen_helper_book3s_msgsndp(cpu_env, cpu_gpr[a->rb]);
24157
+ gen_helper_book3s_msgsndp(tcg_env, cpu_gpr[a->rb]);
24158
#else
24159
qemu_build_not_reached();
24160
#endif
24161
diff --git a/target/ppc/translate/spe-impl.c.inc b/target/ppc/translate/spe-impl.c.inc
24162
index XXXXXXX..XXXXXXX 100644
24163
--- a/target/ppc/translate/spe-impl.c.inc
24164
+++ b/target/ppc/translate/spe-impl.c.inc
24165
@@ -XXX,XX +XXX,XX @@ static inline void gen_evmra(DisasContext *ctx)
24166
cpu_gprh[rA(ctx->opcode)]);
24167
24168
/* spe_acc := tmp */
24169
- tcg_gen_st_i64(tmp, cpu_env, offsetof(CPUPPCState, spe_acc));
24170
+ tcg_gen_st_i64(tmp, tcg_env, offsetof(CPUPPCState, spe_acc));
24171
24172
/* rD := rA */
24173
tcg_gen_mov_tl(cpu_gpr[rD(ctx->opcode)], cpu_gpr[rA(ctx->opcode)]);
24174
@@ -XXX,XX +XXX,XX @@ static inline void gen_evmwumia(DisasContext *ctx)
24175
24176
/* acc := rD */
24177
gen_load_gpr64(tmp, rD(ctx->opcode));
24178
- tcg_gen_st_i64(tmp, cpu_env, offsetof(CPUPPCState, spe_acc));
24179
+ tcg_gen_st_i64(tmp, tcg_env, offsetof(CPUPPCState, spe_acc));
24180
}
24181
24182
static inline void gen_evmwumiaa(DisasContext *ctx)
24183
@@ -XXX,XX +XXX,XX @@ static inline void gen_evmwumiaa(DisasContext *ctx)
24184
gen_load_gpr64(tmp, rD(ctx->opcode));
24185
24186
/* Load acc */
24187
- tcg_gen_ld_i64(acc, cpu_env, offsetof(CPUPPCState, spe_acc));
24188
+ tcg_gen_ld_i64(acc, tcg_env, offsetof(CPUPPCState, spe_acc));
24189
24190
/* acc := tmp + acc */
24191
tcg_gen_add_i64(acc, acc, tmp);
24192
24193
/* Store acc */
24194
- tcg_gen_st_i64(acc, cpu_env, offsetof(CPUPPCState, spe_acc));
24195
+ tcg_gen_st_i64(acc, tcg_env, offsetof(CPUPPCState, spe_acc));
24196
24197
/* rD := acc */
24198
gen_store_gpr64(rD(ctx->opcode), acc);
24199
@@ -XXX,XX +XXX,XX @@ static inline void gen_evmwsmia(DisasContext *ctx)
24200
24201
/* acc := rD */
24202
gen_load_gpr64(tmp, rD(ctx->opcode));
24203
- tcg_gen_st_i64(tmp, cpu_env, offsetof(CPUPPCState, spe_acc));
24204
+ tcg_gen_st_i64(tmp, tcg_env, offsetof(CPUPPCState, spe_acc));
24205
}
24206
24207
static inline void gen_evmwsmiaa(DisasContext *ctx)
24208
@@ -XXX,XX +XXX,XX @@ static inline void gen_evmwsmiaa(DisasContext *ctx)
24209
gen_load_gpr64(tmp, rD(ctx->opcode));
24210
24211
/* Load acc */
24212
- tcg_gen_ld_i64(acc, cpu_env, offsetof(CPUPPCState, spe_acc));
24213
+ tcg_gen_ld_i64(acc, tcg_env, offsetof(CPUPPCState, spe_acc));
24214
24215
/* acc := tmp + acc */
24216
tcg_gen_add_i64(acc, acc, tmp);
24217
24218
/* Store acc */
24219
- tcg_gen_st_i64(acc, cpu_env, offsetof(CPUPPCState, spe_acc));
24220
+ tcg_gen_st_i64(acc, tcg_env, offsetof(CPUPPCState, spe_acc));
24221
24222
/* rD := acc */
24223
gen_store_gpr64(rD(ctx->opcode), acc);
24224
@@ -XXX,XX +XXX,XX @@ static inline void gen_##name(DisasContext *ctx) \
24225
{ \
24226
TCGv_i32 t0 = tcg_temp_new_i32(); \
24227
tcg_gen_trunc_tl_i32(t0, cpu_gpr[rB(ctx->opcode)]); \
24228
- gen_helper_##name(t0, cpu_env, t0); \
24229
+ gen_helper_##name(t0, tcg_env, t0); \
24230
tcg_gen_extu_i32_tl(cpu_gpr[rD(ctx->opcode)], t0); \
24231
}
24232
#define GEN_SPEFPUOP_CONV_32_64(name) \
24233
@@ -XXX,XX +XXX,XX @@ static inline void gen_##name(DisasContext *ctx) \
24234
t0 = tcg_temp_new_i64(); \
24235
t1 = tcg_temp_new_i32(); \
24236
gen_load_gpr64(t0, rB(ctx->opcode)); \
24237
- gen_helper_##name(t1, cpu_env, t0); \
24238
+ gen_helper_##name(t1, tcg_env, t0); \
24239
tcg_gen_extu_i32_tl(cpu_gpr[rD(ctx->opcode)], t1); \
24240
}
24241
#define GEN_SPEFPUOP_CONV_64_32(name) \
24242
@@ -XXX,XX +XXX,XX @@ static inline void gen_##name(DisasContext *ctx) \
24243
t0 = tcg_temp_new_i64(); \
24244
t1 = tcg_temp_new_i32(); \
24245
tcg_gen_trunc_tl_i32(t1, cpu_gpr[rB(ctx->opcode)]); \
24246
- gen_helper_##name(t0, cpu_env, t1); \
24247
+ gen_helper_##name(t0, tcg_env, t1); \
24248
gen_store_gpr64(rD(ctx->opcode), t0); \
24249
}
24250
#define GEN_SPEFPUOP_CONV_64_64(name) \
24251
@@ -XXX,XX +XXX,XX @@ static inline void gen_##name(DisasContext *ctx) \
24252
} \
24253
t0 = tcg_temp_new_i64(); \
24254
gen_load_gpr64(t0, rB(ctx->opcode)); \
24255
- gen_helper_##name(t0, cpu_env, t0); \
24256
+ gen_helper_##name(t0, tcg_env, t0); \
24257
gen_store_gpr64(rD(ctx->opcode), t0); \
24258
}
24259
#define GEN_SPEFPUOP_ARITH2_32_32(name) \
24260
@@ -XXX,XX +XXX,XX @@ static inline void gen_##name(DisasContext *ctx) \
24261
TCGv_i32 t1 = tcg_temp_new_i32(); \
24262
tcg_gen_trunc_tl_i32(t0, cpu_gpr[rA(ctx->opcode)]); \
24263
tcg_gen_trunc_tl_i32(t1, cpu_gpr[rB(ctx->opcode)]); \
24264
- gen_helper_##name(t0, cpu_env, t0, t1); \
24265
+ gen_helper_##name(t0, tcg_env, t0, t1); \
24266
tcg_gen_extu_i32_tl(cpu_gpr[rD(ctx->opcode)], t0); \
24267
}
24268
#define GEN_SPEFPUOP_ARITH2_64_64(name) \
24269
@@ -XXX,XX +XXX,XX @@ static inline void gen_##name(DisasContext *ctx) \
24270
t1 = tcg_temp_new_i64(); \
24271
gen_load_gpr64(t0, rA(ctx->opcode)); \
24272
gen_load_gpr64(t1, rB(ctx->opcode)); \
24273
- gen_helper_##name(t0, cpu_env, t0, t1); \
24274
+ gen_helper_##name(t0, tcg_env, t0, t1); \
24275
gen_store_gpr64(rD(ctx->opcode), t0); \
24276
}
24277
#define GEN_SPEFPUOP_COMP_32(name) \
24278
@@ -XXX,XX +XXX,XX @@ static inline void gen_##name(DisasContext *ctx) \
24279
\
24280
tcg_gen_trunc_tl_i32(t0, cpu_gpr[rA(ctx->opcode)]); \
24281
tcg_gen_trunc_tl_i32(t1, cpu_gpr[rB(ctx->opcode)]); \
24282
- gen_helper_##name(cpu_crf[crfD(ctx->opcode)], cpu_env, t0, t1); \
24283
+ gen_helper_##name(cpu_crf[crfD(ctx->opcode)], tcg_env, t0, t1); \
24284
}
24285
#define GEN_SPEFPUOP_COMP_64(name) \
24286
static inline void gen_##name(DisasContext *ctx) \
24287
@@ -XXX,XX +XXX,XX @@ static inline void gen_##name(DisasContext *ctx) \
24288
t1 = tcg_temp_new_i64(); \
24289
gen_load_gpr64(t0, rA(ctx->opcode)); \
24290
gen_load_gpr64(t1, rB(ctx->opcode)); \
24291
- gen_helper_##name(cpu_crf[crfD(ctx->opcode)], cpu_env, t0, t1); \
24292
+ gen_helper_##name(cpu_crf[crfD(ctx->opcode)], tcg_env, t0, t1); \
24293
}
24294
24295
/* Single precision floating-point vectors operations */
24296
diff --git a/target/ppc/translate/storage-ctrl-impl.c.inc b/target/ppc/translate/storage-ctrl-impl.c.inc
24297
index XXXXXXX..XXXXXXX 100644
24298
--- a/target/ppc/translate/storage-ctrl-impl.c.inc
24299
+++ b/target/ppc/translate/storage-ctrl-impl.c.inc
24300
@@ -XXX,XX +XXX,XX @@ static bool trans_SLBIE(DisasContext *ctx, arg_SLBIE *a)
24301
REQUIRE_SV(ctx);
24302
24303
#if !defined(CONFIG_USER_ONLY) && defined(TARGET_PPC64)
24304
- gen_helper_SLBIE(cpu_env, cpu_gpr[a->rb]);
24305
+ gen_helper_SLBIE(tcg_env, cpu_gpr[a->rb]);
24306
#else
24307
qemu_build_not_reached();
24308
#endif
24309
@@ -XXX,XX +XXX,XX @@ static bool trans_SLBIEG(DisasContext *ctx, arg_SLBIEG *a)
24310
REQUIRE_SV(ctx);
24311
24312
#if !defined(CONFIG_USER_ONLY) && defined(TARGET_PPC64)
24313
- gen_helper_SLBIEG(cpu_env, cpu_gpr[a->rb]);
24314
+ gen_helper_SLBIEG(tcg_env, cpu_gpr[a->rb]);
24315
#else
24316
qemu_build_not_reached();
24317
#endif
24318
@@ -XXX,XX +XXX,XX @@ static bool trans_SLBIA(DisasContext *ctx, arg_SLBIA *a)
24319
REQUIRE_SV(ctx);
24320
24321
#if !defined(CONFIG_USER_ONLY) && defined(TARGET_PPC64)
24322
- gen_helper_SLBIA(cpu_env, tcg_constant_i32(a->ih));
24323
+ gen_helper_SLBIA(tcg_env, tcg_constant_i32(a->ih));
24324
#else
24325
qemu_build_not_reached();
24326
#endif
24327
@@ -XXX,XX +XXX,XX @@ static bool trans_SLBIAG(DisasContext *ctx, arg_SLBIAG *a)
24328
REQUIRE_SV(ctx);
24329
24330
#if !defined(CONFIG_USER_ONLY) && defined(TARGET_PPC64)
24331
- gen_helper_SLBIAG(cpu_env, cpu_gpr[a->rs], tcg_constant_i32(a->l));
24332
+ gen_helper_SLBIAG(tcg_env, cpu_gpr[a->rs], tcg_constant_i32(a->l));
24333
#else
24334
qemu_build_not_reached();
24335
#endif
24336
@@ -XXX,XX +XXX,XX @@ static bool trans_SLBMTE(DisasContext *ctx, arg_SLBMTE *a)
24337
REQUIRE_SV(ctx);
24338
24339
#if !defined(CONFIG_USER_ONLY) && defined(TARGET_PPC64)
24340
- gen_helper_SLBMTE(cpu_env, cpu_gpr[a->rb], cpu_gpr[a->rt]);
24341
+ gen_helper_SLBMTE(tcg_env, cpu_gpr[a->rb], cpu_gpr[a->rt]);
24342
#else
24343
qemu_build_not_reached();
24344
#endif
24345
@@ -XXX,XX +XXX,XX @@ static bool trans_SLBMFEV(DisasContext *ctx, arg_SLBMFEV *a)
24346
REQUIRE_SV(ctx);
24347
24348
#if !defined(CONFIG_USER_ONLY) && defined(TARGET_PPC64)
24349
- gen_helper_SLBMFEV(cpu_gpr[a->rt], cpu_env, cpu_gpr[a->rb]);
24350
+ gen_helper_SLBMFEV(cpu_gpr[a->rt], tcg_env, cpu_gpr[a->rb]);
24351
#else
24352
qemu_build_not_reached();
24353
#endif
24354
@@ -XXX,XX +XXX,XX @@ static bool trans_SLBMFEE(DisasContext *ctx, arg_SLBMFEE *a)
24355
REQUIRE_SV(ctx);
24356
24357
#if !defined(CONFIG_USER_ONLY) && defined(TARGET_PPC64)
24358
- gen_helper_SLBMFEE(cpu_gpr[a->rt], cpu_env, cpu_gpr[a->rb]);
24359
+ gen_helper_SLBMFEE(cpu_gpr[a->rt], tcg_env, cpu_gpr[a->rb]);
24360
#else
24361
qemu_build_not_reached();
24362
#endif
24363
@@ -XXX,XX +XXX,XX @@ static bool trans_SLBFEE(DisasContext *ctx, arg_SLBFEE *a)
24364
gen_inval_exception(ctx, POWERPC_EXCP_PRIV_REG);
24365
return true;
24366
}
24367
- gen_helper_SLBFEE(cpu_gpr[a->rt], cpu_env,
24368
+ gen_helper_SLBFEE(cpu_gpr[a->rt], tcg_env,
24369
cpu_gpr[a->rb]);
24370
l1 = gen_new_label();
24371
l2 = gen_new_label();
24372
@@ -XXX,XX +XXX,XX @@ static bool do_tlbie(DisasContext *ctx, arg_X_tlbie *a, bool local)
24373
if (!local && NARROW_MODE(ctx)) {
24374
TCGv t0 = tcg_temp_new();
24375
tcg_gen_ext32u_tl(t0, cpu_gpr[rb]);
24376
- gen_helper_tlbie(cpu_env, t0);
24377
+ gen_helper_tlbie(tcg_env, t0);
24378
24379
#if defined(TARGET_PPC64)
24380
/*
24381
@@ -XXX,XX +XXX,XX @@ static bool do_tlbie(DisasContext *ctx, arg_X_tlbie *a, bool local)
24382
* otherwise the results are undefined.
24383
*/
24384
} else if (a->r) {
24385
- gen_helper_tlbie_isa300(cpu_env, cpu_gpr[rb], cpu_gpr[a->rs],
24386
+ gen_helper_tlbie_isa300(tcg_env, cpu_gpr[rb], cpu_gpr[a->rs],
24387
tcg_constant_i32(a->ric << TLBIE_F_RIC_SHIFT |
24388
a->prs << TLBIE_F_PRS_SHIFT |
24389
a->r << TLBIE_F_R_SHIFT |
24390
@@ -XXX,XX +XXX,XX @@ static bool do_tlbie(DisasContext *ctx, arg_X_tlbie *a, bool local)
24391
#endif
24392
24393
} else {
24394
- gen_helper_tlbie(cpu_env, cpu_gpr[rb]);
24395
+ gen_helper_tlbie(tcg_env, cpu_gpr[rb]);
24396
}
24397
24398
if (local) {
24399
@@ -XXX,XX +XXX,XX @@ static bool do_tlbie(DisasContext *ctx, arg_X_tlbie *a, bool local)
24400
}
24401
24402
t1 = tcg_temp_new_i32();
24403
- tcg_gen_ld_i32(t1, cpu_env, offsetof(CPUPPCState, tlb_need_flush));
24404
+ tcg_gen_ld_i32(t1, tcg_env, offsetof(CPUPPCState, tlb_need_flush));
24405
tcg_gen_ori_i32(t1, t1, TLB_NEED_GLOBAL_FLUSH);
24406
- tcg_gen_st_i32(t1, cpu_env, offsetof(CPUPPCState, tlb_need_flush));
24407
+ tcg_gen_st_i32(t1, tcg_env, offsetof(CPUPPCState, tlb_need_flush));
24408
24409
return true;
24410
#endif
24411
diff --git a/target/ppc/translate/vmx-impl.c.inc b/target/ppc/translate/vmx-impl.c.inc
24412
index XXXXXXX..XXXXXXX 100644
24413
--- a/target/ppc/translate/vmx-impl.c.inc
24414
+++ b/target/ppc/translate/vmx-impl.c.inc
24415
@@ -XXX,XX +XXX,XX @@
24416
static inline TCGv_ptr gen_avr_ptr(int reg)
24417
{
24418
TCGv_ptr r = tcg_temp_new_ptr();
24419
- tcg_gen_addi_ptr(r, cpu_env, avr_full_offset(reg));
24420
+ tcg_gen_addi_ptr(r, tcg_env, avr_full_offset(reg));
24421
return r;
24422
}
24423
24424
@@ -XXX,XX +XXX,XX @@ static void gen_lve##name(DisasContext *ctx) \
24425
tcg_gen_andi_tl(EA, EA, ~(size - 1)); \
24426
} \
24427
rs = gen_avr_ptr(rS(ctx->opcode)); \
24428
- gen_helper_lve##name(cpu_env, rs, EA); \
24429
+ gen_helper_lve##name(tcg_env, rs, EA); \
24430
}
24431
24432
#define GEN_VR_STVE(name, opc2, opc3, size) \
24433
@@ -XXX,XX +XXX,XX @@ static void gen_stve##name(DisasContext *ctx) \
24434
tcg_gen_andi_tl(EA, EA, ~(size - 1)); \
24435
} \
24436
rs = gen_avr_ptr(rS(ctx->opcode)); \
24437
- gen_helper_stve##name(cpu_env, rs, EA); \
24438
+ gen_helper_stve##name(tcg_env, rs, EA); \
24439
}
24440
24441
GEN_VR_LDX(lvx, 0x07, 0x03);
24442
@@ -XXX,XX +XXX,XX @@ static void gen_mfvscr(DisasContext *ctx)
24443
tcg_gen_movi_i64(avr, 0);
24444
set_avr64(rD(ctx->opcode), avr, true);
24445
t = tcg_temp_new_i32();
24446
- gen_helper_mfvscr(t, cpu_env);
24447
+ gen_helper_mfvscr(t, tcg_env);
24448
tcg_gen_extu_i32_i64(avr, t);
24449
set_avr64(rD(ctx->opcode), avr, false);
24450
}
24451
@@ -XXX,XX +XXX,XX @@ static void gen_mtvscr(DisasContext *ctx)
24452
bofs += 3 * 4;
24453
#endif
24454
24455
- tcg_gen_ld_i32(val, cpu_env, bofs);
24456
- gen_helper_mtvscr(cpu_env, val);
24457
+ tcg_gen_ld_i32(val, tcg_env, bofs);
24458
+ gen_helper_mtvscr(tcg_env, val);
24459
}
24460
24461
static void gen_vx_vmul10(DisasContext *ctx, bool add_cin, bool ret_carry)
24462
@@ -XXX,XX +XXX,XX @@ static void glue(gen_, name)(DisasContext *ctx) \
24463
ra = gen_avr_ptr(rA(ctx->opcode)); \
24464
rb = gen_avr_ptr(rB(ctx->opcode)); \
24465
rd = gen_avr_ptr(rD(ctx->opcode)); \
24466
- gen_helper_##name(cpu_env, rd, ra, rb); \
24467
+ gen_helper_##name(tcg_env, rd, ra, rb); \
24468
}
24469
24470
#define GEN_VXFORM3(name, opc2, opc3) \
24471
@@ -XXX,XX +XXX,XX @@ static void trans_vclzw(DisasContext *ctx)
24472
24473
/* Perform count for every word element using tcg_gen_clzi_i32. */
24474
for (i = 0; i < 4; i++) {
24475
- tcg_gen_ld_i32(tmp, cpu_env,
24476
+ tcg_gen_ld_i32(tmp, tcg_env,
24477
offsetof(CPUPPCState, vsr[32 + VB].u64[0]) + i * 4);
24478
tcg_gen_clzi_i32(tmp, tmp, 32);
24479
- tcg_gen_st_i32(tmp, cpu_env,
24480
+ tcg_gen_st_i32(tmp, tcg_env,
24481
offsetof(CPUPPCState, vsr[32 + VT].u64[0]) + i * 4);
24482
}
24483
}
24484
@@ -XXX,XX +XXX,XX @@ static void glue(gen_, name)(DisasContext *ctx) \
24485
ra = gen_avr_ptr(rA(ctx->opcode)); \
24486
rb = gen_avr_ptr(rB(ctx->opcode)); \
24487
rd = gen_avr_ptr(rD(ctx->opcode)); \
24488
- gen_helper_##opname(cpu_env, rd, ra, rb); \
24489
+ gen_helper_##opname(tcg_env, rd, ra, rb); \
24490
}
24491
24492
#define GEN_VXRFORM(name, opc2, opc3) \
24493
@@ -XXX,XX +XXX,XX @@ static void glue(gen_, name)(DisasContext *ctx) \
24494
} \
24495
rb = gen_avr_ptr(rB(ctx->opcode)); \
24496
rd = gen_avr_ptr(rD(ctx->opcode)); \
24497
- gen_helper_##name(cpu_env, rd, rb); \
24498
+ gen_helper_##name(tcg_env, rd, rb); \
24499
}
24500
24501
#define GEN_VXFORM_NOA_2(name, opc2, opc3, opc4) \
24502
@@ -XXX,XX +XXX,XX @@ static void glue(gen_, name)(DisasContext *ctx) \
24503
uimm = tcg_constant_i32(UIMM5(ctx->opcode)); \
24504
rb = gen_avr_ptr(rB(ctx->opcode)); \
24505
rd = gen_avr_ptr(rD(ctx->opcode)); \
24506
- gen_helper_##name(cpu_env, rd, rb, uimm); \
24507
+ gen_helper_##name(tcg_env, rd, rb, uimm); \
24508
}
24509
24510
#define GEN_VXFORM_UIMM_SPLAT(name, opc2, opc3, splat_max) \
24511
@@ -XXX,XX +XXX,XX @@ static bool do_vextdx(DisasContext *ctx, arg_VA *a, int size, bool right,
24512
if (right) {
24513
tcg_gen_subfi_tl(rc, 32 - size, rc);
24514
}
24515
- gen_helper(cpu_env, vrt, vra, vrb, rc);
24516
+ gen_helper(tcg_env, vrt, vra, vrb, rc);
24517
return true;
24518
}
24519
24520
@@ -XXX,XX +XXX,XX @@ static bool do_vinsx(DisasContext *ctx, int vrt, int size, bool right, TCGv ra,
24521
tcg_gen_subfi_tl(idx, 16 - size, idx);
24522
}
24523
24524
- gen_helper(cpu_env, t, rb, idx);
24525
+ gen_helper(tcg_env, t, rb, idx);
24526
return true;
24527
}
24528
24529
@@ -XXX,XX +XXX,XX @@ static void glue(gen_, name0##_##name1)(DisasContext *ctx) \
24530
rc = gen_avr_ptr(rC(ctx->opcode)); \
24531
rd = gen_avr_ptr(rD(ctx->opcode)); \
24532
if (Rc(ctx->opcode)) { \
24533
- gen_helper_##name1(cpu_env, rd, ra, rb, rc); \
24534
+ gen_helper_##name1(tcg_env, rd, ra, rb, rc); \
24535
} else { \
24536
- gen_helper_##name0(cpu_env, rd, ra, rb, rc); \
24537
+ gen_helper_##name0(tcg_env, rd, ra, rb, rc); \
24538
} \
24539
}
24540
24541
@@ -XXX,XX +XXX,XX @@ static bool do_va_env_helper(DisasContext *ctx, arg_VA *a,
24542
vra = gen_avr_ptr(a->vra);
24543
vrb = gen_avr_ptr(a->vrb);
24544
vrc = gen_avr_ptr(a->rc);
24545
- gen_helper(cpu_env, vrt, vra, vrb, vrc);
24546
+ gen_helper(tcg_env, vrt, vra, vrb, vrc);
24547
return true;
24548
}
24549
24550
diff --git a/target/ppc/translate/vsx-impl.c.inc b/target/ppc/translate/vsx-impl.c.inc
24551
index XXXXXXX..XXXXXXX 100644
24552
--- a/target/ppc/translate/vsx-impl.c.inc
24553
+++ b/target/ppc/translate/vsx-impl.c.inc
24554
@@ -XXX,XX +XXX,XX @@
24555
24556
static inline void get_cpu_vsr(TCGv_i64 dst, int n, bool high)
24557
{
24558
- tcg_gen_ld_i64(dst, cpu_env, vsr64_offset(n, high));
24559
+ tcg_gen_ld_i64(dst, tcg_env, vsr64_offset(n, high));
24560
}
24561
24562
static inline void set_cpu_vsr(int n, TCGv_i64 src, bool high)
24563
{
24564
- tcg_gen_st_i64(src, cpu_env, vsr64_offset(n, high));
24565
+ tcg_gen_st_i64(src, tcg_env, vsr64_offset(n, high));
24566
}
24567
24568
static inline TCGv_ptr gen_vsr_ptr(int reg)
24569
{
24570
TCGv_ptr r = tcg_temp_new_ptr();
24571
- tcg_gen_addi_ptr(r, cpu_env, vsr_full_offset(reg));
24572
+ tcg_gen_addi_ptr(r, tcg_env, vsr_full_offset(reg));
24573
return r;
24574
}
24575
24576
static inline TCGv_ptr gen_acc_ptr(int reg)
24577
{
24578
TCGv_ptr r = tcg_temp_new_ptr();
24579
- tcg_gen_addi_ptr(r, cpu_env, acc_full_offset(reg));
24580
+ tcg_gen_addi_ptr(r, tcg_env, acc_full_offset(reg));
24581
return r;
24582
}
24583
24584
@@ -XXX,XX +XXX,XX @@ static void gen_##name(DisasContext *ctx) \
24585
xt = gen_vsr_ptr(xT(ctx->opcode)); \
24586
gen_set_access_type(ctx, ACCESS_INT); \
24587
gen_addr_register(ctx, EA); \
24588
- gen_helper_##name(cpu_env, EA, xt, cpu_gpr[rB(ctx->opcode)]); \
24589
+ gen_helper_##name(tcg_env, EA, xt, cpu_gpr[rB(ctx->opcode)]); \
24590
}
24591
24592
VSX_VECTOR_LOAD_STORE_LENGTH(lxvl)
24593
@@ -XXX,XX +XXX,XX @@ static void gen_##name(DisasContext *ctx) \
24594
xa = gen_vsr_ptr(xA(ctx->opcode)); \
24595
xb = gen_vsr_ptr(xB(ctx->opcode)); \
24596
if ((ctx->opcode >> (31 - 21)) & 1) { \
24597
- gen_helper_##name(cpu_crf[6], cpu_env, xt, xa, xb); \
24598
+ gen_helper_##name(cpu_crf[6], tcg_env, xt, xa, xb); \
24599
} else { \
24600
ignored = tcg_temp_new_i32(); \
24601
- gen_helper_##name(ignored, cpu_env, xt, xa, xb); \
24602
+ gen_helper_##name(ignored, tcg_env, xt, xa, xb); \
24603
} \
24604
}
24605
24606
@@ -XXX,XX +XXX,XX @@ static bool trans_XSCVQPDP(DisasContext *ctx, arg_X_tb_rc *a)
24607
24608
xt = gen_avr_ptr(a->rt);
24609
xb = gen_avr_ptr(a->rb);
24610
- gen_helper_XSCVQPDP(cpu_env, ro, xt, xb);
24611
+ gen_helper_XSCVQPDP(tcg_env, ro, xt, xb);
24612
return true;
24613
}
24614
24615
@@ -XXX,XX +XXX,XX @@ static bool do_helper_env_X_tb(DisasContext *ctx, arg_X_tb *a,
24616
24617
xt = gen_avr_ptr(a->rt);
24618
xb = gen_avr_ptr(a->rb);
24619
- gen_helper(cpu_env, xt, xb);
24620
+ gen_helper(tcg_env, xt, xb);
24621
return true;
24622
}
24623
24624
@@ -XXX,XX +XXX,XX @@ static void gen_##name(DisasContext *ctx) \
24625
return; \
24626
} \
24627
opc = tcg_constant_i32(ctx->opcode); \
24628
- gen_helper_##name(cpu_env, opc); \
24629
+ gen_helper_##name(tcg_env, opc); \
24630
}
24631
24632
#define GEN_VSX_HELPER_X3(name, op1, op2, inval, type) \
24633
@@ -XXX,XX +XXX,XX @@ static void gen_##name(DisasContext *ctx) \
24634
xt = gen_vsr_ptr(xT(ctx->opcode)); \
24635
xa = gen_vsr_ptr(xA(ctx->opcode)); \
24636
xb = gen_vsr_ptr(xB(ctx->opcode)); \
24637
- gen_helper_##name(cpu_env, xt, xa, xb); \
24638
+ gen_helper_##name(tcg_env, xt, xa, xb); \
24639
}
24640
24641
#define GEN_VSX_HELPER_X2(name, op1, op2, inval, type) \
24642
@@ -XXX,XX +XXX,XX @@ static void gen_##name(DisasContext *ctx) \
24643
} \
24644
xt = gen_vsr_ptr(xT(ctx->opcode)); \
24645
xb = gen_vsr_ptr(xB(ctx->opcode)); \
24646
- gen_helper_##name(cpu_env, xt, xb); \
24647
+ gen_helper_##name(tcg_env, xt, xb); \
24648
}
24649
24650
#define GEN_VSX_HELPER_X2_AB(name, op1, op2, inval, type) \
24651
@@ -XXX,XX +XXX,XX @@ static void gen_##name(DisasContext *ctx) \
24652
opc = tcg_constant_i32(ctx->opcode); \
24653
xa = gen_vsr_ptr(xA(ctx->opcode)); \
24654
xb = gen_vsr_ptr(xB(ctx->opcode)); \
24655
- gen_helper_##name(cpu_env, opc, xa, xb); \
24656
+ gen_helper_##name(tcg_env, opc, xa, xb); \
24657
}
24658
24659
#define GEN_VSX_HELPER_X1(name, op1, op2, inval, type) \
24660
@@ -XXX,XX +XXX,XX @@ static void gen_##name(DisasContext *ctx) \
24661
} \
24662
opc = tcg_constant_i32(ctx->opcode); \
24663
xb = gen_vsr_ptr(xB(ctx->opcode)); \
24664
- gen_helper_##name(cpu_env, opc, xb); \
24665
+ gen_helper_##name(tcg_env, opc, xb); \
24666
}
24667
24668
#define GEN_VSX_HELPER_R3(name, op1, op2, inval, type) \
24669
@@ -XXX,XX +XXX,XX @@ static void gen_##name(DisasContext *ctx) \
24670
xt = gen_vsr_ptr(rD(ctx->opcode) + 32); \
24671
xa = gen_vsr_ptr(rA(ctx->opcode) + 32); \
24672
xb = gen_vsr_ptr(rB(ctx->opcode) + 32); \
24673
- gen_helper_##name(cpu_env, opc, xt, xa, xb); \
24674
+ gen_helper_##name(tcg_env, opc, xt, xa, xb); \
24675
}
24676
24677
#define GEN_VSX_HELPER_R2(name, op1, op2, inval, type) \
24678
@@ -XXX,XX +XXX,XX @@ static void gen_##name(DisasContext *ctx) \
24679
opc = tcg_constant_i32(ctx->opcode); \
24680
xt = gen_vsr_ptr(rD(ctx->opcode) + 32); \
24681
xb = gen_vsr_ptr(rB(ctx->opcode) + 32); \
24682
- gen_helper_##name(cpu_env, opc, xt, xb); \
24683
+ gen_helper_##name(tcg_env, opc, xt, xb); \
24684
}
24685
24686
#define GEN_VSX_HELPER_R2_AB(name, op1, op2, inval, type) \
24687
@@ -XXX,XX +XXX,XX @@ static void gen_##name(DisasContext *ctx) \
24688
opc = tcg_constant_i32(ctx->opcode); \
24689
xa = gen_vsr_ptr(rA(ctx->opcode) + 32); \
24690
xb = gen_vsr_ptr(rB(ctx->opcode) + 32); \
24691
- gen_helper_##name(cpu_env, opc, xa, xb); \
24692
+ gen_helper_##name(tcg_env, opc, xa, xb); \
24693
}
24694
24695
#define GEN_VSX_HELPER_XT_XB_ENV(name, op1, op2, inval, type) \
24696
@@ -XXX,XX +XXX,XX @@ static void gen_##name(DisasContext *ctx) \
24697
t0 = tcg_temp_new_i64(); \
24698
t1 = tcg_temp_new_i64(); \
24699
get_cpu_vsr(t0, xB(ctx->opcode), true); \
24700
- gen_helper_##name(t1, cpu_env, t0); \
24701
+ gen_helper_##name(t1, tcg_env, t0); \
24702
set_cpu_vsr(xT(ctx->opcode), t1, true); \
24703
set_cpu_vsr(xT(ctx->opcode), tcg_constant_i64(0), false); \
24704
}
24705
@@ -XXX,XX +XXX,XX @@ static bool do_XX2_bf_uim(DisasContext *ctx, arg_XX2_bf_uim *a, bool vsr,
24706
24707
REQUIRE_VSX(ctx);
24708
xb = vsr ? gen_vsr_ptr(a->xb) : gen_avr_ptr(a->xb);
24709
- gen_helper(cpu_env, tcg_constant_i32(a->bf), tcg_constant_i32(a->uim), xb);
24710
+ gen_helper(tcg_env, tcg_constant_i32(a->bf), tcg_constant_i32(a->uim), xb);
24711
return true;
24712
}
24713
24714
@@ -XXX,XX +XXX,XX @@ static bool do_xsmadd(DisasContext *ctx, int tgt, int src1, int src2, int src3,
24715
s2 = gen_vsr_ptr(src2);
24716
s3 = gen_vsr_ptr(src3);
24717
24718
- gen_helper(cpu_env, t, s1, s2, s3);
24719
+ gen_helper(tcg_env, t, s1, s2, s3);
24720
return true;
24721
}
24722
24723
@@ -XXX,XX +XXX,XX @@ static void gen_##name(DisasContext *ctx) \
24724
s2 = gen_vsr_ptr(xT(ctx->opcode)); \
24725
s3 = gen_vsr_ptr(xB(ctx->opcode)); \
24726
} \
24727
- gen_helper_##name(cpu_env, xt, s1, s2, s3); \
24728
+ gen_helper_##name(tcg_env, xt, s1, s2, s3); \
24729
}
24730
24731
GEN_VSX_HELPER_VSX_MADD(xvmadddp, 0x04, 0x0C, 0x0D, 0, PPC2_VSX)
24732
@@ -XXX,XX +XXX,XX @@ static bool trans_XXSPLTI32DX(DisasContext *ctx, arg_8RR_D_IX *a)
24733
24734
imm = tcg_constant_i32(a->si);
24735
24736
- tcg_gen_st_i32(imm, cpu_env,
24737
+ tcg_gen_st_i32(imm, tcg_env,
24738
offsetof(CPUPPCState, vsr[a->xt].VsrW(0 + a->ix)));
24739
- tcg_gen_st_i32(imm, cpu_env,
24740
+ tcg_gen_st_i32(imm, tcg_env,
24741
offsetof(CPUPPCState, vsr[a->xt].VsrW(2 + a->ix)));
24742
24743
return true;
24744
@@ -XXX,XX +XXX,XX @@ static bool do_helper_XX3(DisasContext *ctx, arg_XX3 *a,
24745
xa = gen_vsr_ptr(a->xa);
24746
xb = gen_vsr_ptr(a->xb);
24747
24748
- helper(cpu_env, xt, xa, xb);
24749
+ helper(tcg_env, xt, xa, xb);
24750
return true;
24751
}
24752
24753
@@ -XXX,XX +XXX,XX @@ static bool do_helper_X(arg_X *a,
24754
ra = gen_avr_ptr(a->ra);
24755
rb = gen_avr_ptr(a->rb);
24756
24757
- helper(cpu_env, rt, ra, rb);
24758
+ helper(tcg_env, rt, ra, rb);
24759
return true;
24760
}
24761
24762
@@ -XXX,XX +XXX,XX @@ static bool trans_XVCVSPBF16(DisasContext *ctx, arg_XX2 *a)
24763
xt = gen_vsr_ptr(a->xt);
24764
xb = gen_vsr_ptr(a->xb);
24765
24766
- gen_helper_XVCVSPBF16(cpu_env, xt, xb);
24767
+ gen_helper_XVCVSPBF16(tcg_env, xt, xb);
24768
return true;
24769
}
24770
24771
@@ -XXX,XX +XXX,XX @@ static bool do_ger(DisasContext *ctx, arg_MMIRR_XX3 *a,
24772
xb = gen_vsr_ptr(a->xb);
24773
24774
mask = ger_pack_masks(a->pmsk, a->ymsk, a->xmsk);
24775
- helper(cpu_env, xa, xb, xt, tcg_constant_i32(mask));
24776
+ helper(tcg_env, xa, xb, xt, tcg_constant_i32(mask));
24777
return true;
24778
}
24779
24780
diff --git a/target/riscv/insn_trans/trans_privileged.c.inc b/target/riscv/insn_trans/trans_privileged.c.inc
24781
index XXXXXXX..XXXXXXX 100644
24782
--- a/target/riscv/insn_trans/trans_privileged.c.inc
24783
+++ b/target/riscv/insn_trans/trans_privileged.c.inc
24784
@@ -XXX,XX +XXX,XX @@ static bool trans_sret(DisasContext *ctx, arg_sret *a)
24785
if (has_ext(ctx, RVS)) {
24786
decode_save_opc(ctx);
24787
translator_io_start(&ctx->base);
24788
- gen_helper_sret(cpu_pc, cpu_env);
24789
+ gen_helper_sret(cpu_pc, tcg_env);
24790
exit_tb(ctx); /* no chaining */
24791
ctx->base.is_jmp = DISAS_NORETURN;
24792
} else {
24793
@@ -XXX,XX +XXX,XX @@ static bool trans_mret(DisasContext *ctx, arg_mret *a)
24794
#ifndef CONFIG_USER_ONLY
24795
decode_save_opc(ctx);
24796
translator_io_start(&ctx->base);
24797
- gen_helper_mret(cpu_pc, cpu_env);
24798
+ gen_helper_mret(cpu_pc, tcg_env);
24799
exit_tb(ctx); /* no chaining */
24800
ctx->base.is_jmp = DISAS_NORETURN;
24801
return true;
24802
@@ -XXX,XX +XXX,XX @@ static bool trans_wfi(DisasContext *ctx, arg_wfi *a)
24803
#ifndef CONFIG_USER_ONLY
24804
decode_save_opc(ctx);
24805
gen_update_pc(ctx, ctx->cur_insn_len);
24806
- gen_helper_wfi(cpu_env);
24807
+ gen_helper_wfi(tcg_env);
24808
return true;
24809
#else
24810
return false;
24811
@@ -XXX,XX +XXX,XX @@ static bool trans_sfence_vma(DisasContext *ctx, arg_sfence_vma *a)
24812
{
24813
#ifndef CONFIG_USER_ONLY
24814
decode_save_opc(ctx);
24815
- gen_helper_tlb_flush(cpu_env);
24816
+ gen_helper_tlb_flush(tcg_env);
24817
return true;
24818
#endif
24819
return false;
24820
diff --git a/target/riscv/insn_trans/trans_rvbf16.c.inc b/target/riscv/insn_trans/trans_rvbf16.c.inc
24821
index XXXXXXX..XXXXXXX 100644
24822
--- a/target/riscv/insn_trans/trans_rvbf16.c.inc
24823
+++ b/target/riscv/insn_trans/trans_rvbf16.c.inc
24824
@@ -XXX,XX +XXX,XX @@ static bool trans_fcvt_bf16_s(DisasContext *ctx, arg_fcvt_bf16_s *a)
24825
TCGv_i64 src1 = get_fpr_hs(ctx, a->rs1);
24826
24827
gen_set_rm(ctx, a->rm);
24828
- gen_helper_fcvt_bf16_s(dest, cpu_env, src1);
24829
+ gen_helper_fcvt_bf16_s(dest, tcg_env, src1);
24830
gen_set_fpr_hs(ctx, a->rd, dest);
24831
mark_fs_dirty(ctx);
24832
return true;
24833
@@ -XXX,XX +XXX,XX @@ static bool trans_fcvt_s_bf16(DisasContext *ctx, arg_fcvt_s_bf16 *a)
24834
TCGv_i64 src1 = get_fpr_hs(ctx, a->rs1);
24835
24836
gen_set_rm(ctx, a->rm);
24837
- gen_helper_fcvt_s_bf16(dest, cpu_env, src1);
24838
+ gen_helper_fcvt_s_bf16(dest, tcg_env, src1);
24839
gen_set_fpr_hs(ctx, a->rd, dest);
24840
mark_fs_dirty(ctx);
24841
return true;
24842
@@ -XXX,XX +XXX,XX @@ static bool trans_vfncvtbf16_f_f_w(DisasContext *ctx, arg_vfncvtbf16_f_f_w *a)
24843
data = FIELD_DP32(data, VDATA, VTA, ctx->vta);
24844
data = FIELD_DP32(data, VDATA, VMA, ctx->vma);
24845
tcg_gen_gvec_3_ptr(vreg_ofs(ctx, a->rd), vreg_ofs(ctx, 0),
24846
- vreg_ofs(ctx, a->rs2), cpu_env,
24847
+ vreg_ofs(ctx, a->rs2), tcg_env,
24848
ctx->cfg_ptr->vlen / 8,
24849
ctx->cfg_ptr->vlen / 8, data,
24850
gen_helper_vfncvtbf16_f_f_w);
24851
@@ -XXX,XX +XXX,XX @@ static bool trans_vfwcvtbf16_f_f_v(DisasContext *ctx, arg_vfwcvtbf16_f_f_v *a)
24852
data = FIELD_DP32(data, VDATA, VTA, ctx->vta);
24853
data = FIELD_DP32(data, VDATA, VMA, ctx->vma);
24854
tcg_gen_gvec_3_ptr(vreg_ofs(ctx, a->rd), vreg_ofs(ctx, 0),
24855
- vreg_ofs(ctx, a->rs2), cpu_env,
24856
+ vreg_ofs(ctx, a->rs2), tcg_env,
24857
ctx->cfg_ptr->vlen / 8,
24858
ctx->cfg_ptr->vlen / 8, data,
24859
gen_helper_vfwcvtbf16_f_f_v);
24860
@@ -XXX,XX +XXX,XX @@ static bool trans_vfwmaccbf16_vv(DisasContext *ctx, arg_vfwmaccbf16_vv *a)
24861
data = FIELD_DP32(data, VDATA, VMA, ctx->vma);
24862
tcg_gen_gvec_4_ptr(vreg_ofs(ctx, a->rd), vreg_ofs(ctx, 0),
24863
vreg_ofs(ctx, a->rs1),
24864
- vreg_ofs(ctx, a->rs2), cpu_env,
24865
+ vreg_ofs(ctx, a->rs2), tcg_env,
24866
ctx->cfg_ptr->vlen / 8,
24867
ctx->cfg_ptr->vlen / 8, data,
24868
gen_helper_vfwmaccbf16_vv);
24869
diff --git a/target/riscv/insn_trans/trans_rvd.c.inc b/target/riscv/insn_trans/trans_rvd.c.inc
24870
index XXXXXXX..XXXXXXX 100644
24871
--- a/target/riscv/insn_trans/trans_rvd.c.inc
24872
+++ b/target/riscv/insn_trans/trans_rvd.c.inc
24873
@@ -XXX,XX +XXX,XX @@ static bool trans_fmadd_d(DisasContext *ctx, arg_fmadd_d *a)
24874
TCGv_i64 src3 = get_fpr_d(ctx, a->rs3);
24875
24876
gen_set_rm(ctx, a->rm);
24877
- gen_helper_fmadd_d(dest, cpu_env, src1, src2, src3);
24878
+ gen_helper_fmadd_d(dest, tcg_env, src1, src2, src3);
24879
gen_set_fpr_d(ctx, a->rd, dest);
24880
mark_fs_dirty(ctx);
24881
return true;
24882
@@ -XXX,XX +XXX,XX @@ static bool trans_fmsub_d(DisasContext *ctx, arg_fmsub_d *a)
24883
TCGv_i64 src3 = get_fpr_d(ctx, a->rs3);
24884
24885
gen_set_rm(ctx, a->rm);
24886
- gen_helper_fmsub_d(dest, cpu_env, src1, src2, src3);
24887
+ gen_helper_fmsub_d(dest, tcg_env, src1, src2, src3);
24888
gen_set_fpr_d(ctx, a->rd, dest);
24889
mark_fs_dirty(ctx);
24890
return true;
24891
@@ -XXX,XX +XXX,XX @@ static bool trans_fnmsub_d(DisasContext *ctx, arg_fnmsub_d *a)
24892
TCGv_i64 src3 = get_fpr_d(ctx, a->rs3);
24893
24894
gen_set_rm(ctx, a->rm);
24895
- gen_helper_fnmsub_d(dest, cpu_env, src1, src2, src3);
24896
+ gen_helper_fnmsub_d(dest, tcg_env, src1, src2, src3);
24897
gen_set_fpr_d(ctx, a->rd, dest);
24898
mark_fs_dirty(ctx);
24899
return true;
24900
@@ -XXX,XX +XXX,XX @@ static bool trans_fnmadd_d(DisasContext *ctx, arg_fnmadd_d *a)
24901
TCGv_i64 src3 = get_fpr_d(ctx, a->rs3);
24902
24903
gen_set_rm(ctx, a->rm);
24904
- gen_helper_fnmadd_d(dest, cpu_env, src1, src2, src3);
24905
+ gen_helper_fnmadd_d(dest, tcg_env, src1, src2, src3);
24906
gen_set_fpr_d(ctx, a->rd, dest);
24907
mark_fs_dirty(ctx);
24908
return true;
24909
@@ -XXX,XX +XXX,XX @@ static bool trans_fadd_d(DisasContext *ctx, arg_fadd_d *a)
24910
TCGv_i64 src2 = get_fpr_d(ctx, a->rs2);
24911
24912
gen_set_rm(ctx, a->rm);
24913
- gen_helper_fadd_d(dest, cpu_env, src1, src2);
24914
+ gen_helper_fadd_d(dest, tcg_env, src1, src2);
24915
gen_set_fpr_d(ctx, a->rd, dest);
24916
mark_fs_dirty(ctx);
24917
return true;
24918
@@ -XXX,XX +XXX,XX @@ static bool trans_fsub_d(DisasContext *ctx, arg_fsub_d *a)
24919
TCGv_i64 src2 = get_fpr_d(ctx, a->rs2);
24920
24921
gen_set_rm(ctx, a->rm);
24922
- gen_helper_fsub_d(dest, cpu_env, src1, src2);
24923
+ gen_helper_fsub_d(dest, tcg_env, src1, src2);
24924
gen_set_fpr_d(ctx, a->rd, dest);
24925
mark_fs_dirty(ctx);
24926
return true;
24927
@@ -XXX,XX +XXX,XX @@ static bool trans_fmul_d(DisasContext *ctx, arg_fmul_d *a)
24928
TCGv_i64 src2 = get_fpr_d(ctx, a->rs2);
24929
24930
gen_set_rm(ctx, a->rm);
24931
- gen_helper_fmul_d(dest, cpu_env, src1, src2);
24932
+ gen_helper_fmul_d(dest, tcg_env, src1, src2);
24933
gen_set_fpr_d(ctx, a->rd, dest);
24934
mark_fs_dirty(ctx);
24935
return true;
24936
@@ -XXX,XX +XXX,XX @@ static bool trans_fdiv_d(DisasContext *ctx, arg_fdiv_d *a)
24937
TCGv_i64 src2 = get_fpr_d(ctx, a->rs2);
24938
24939
gen_set_rm(ctx, a->rm);
24940
- gen_helper_fdiv_d(dest, cpu_env, src1, src2);
24941
+ gen_helper_fdiv_d(dest, tcg_env, src1, src2);
24942
gen_set_fpr_d(ctx, a->rd, dest);
24943
mark_fs_dirty(ctx);
24944
return true;
24945
@@ -XXX,XX +XXX,XX @@ static bool trans_fsqrt_d(DisasContext *ctx, arg_fsqrt_d *a)
24946
TCGv_i64 src1 = get_fpr_d(ctx, a->rs1);
24947
24948
gen_set_rm(ctx, a->rm);
24949
- gen_helper_fsqrt_d(dest, cpu_env, src1);
24950
+ gen_helper_fsqrt_d(dest, tcg_env, src1);
24951
gen_set_fpr_d(ctx, a->rd, dest);
24952
mark_fs_dirty(ctx);
24953
return true;
24954
@@ -XXX,XX +XXX,XX @@ static bool trans_fmin_d(DisasContext *ctx, arg_fmin_d *a)
24955
TCGv_i64 src1 = get_fpr_d(ctx, a->rs1);
24956
TCGv_i64 src2 = get_fpr_d(ctx, a->rs2);
24957
24958
- gen_helper_fmin_d(dest, cpu_env, src1, src2);
24959
+ gen_helper_fmin_d(dest, tcg_env, src1, src2);
24960
gen_set_fpr_d(ctx, a->rd, dest);
24961
mark_fs_dirty(ctx);
24962
return true;
24963
@@ -XXX,XX +XXX,XX @@ static bool trans_fmax_d(DisasContext *ctx, arg_fmax_d *a)
24964
TCGv_i64 src1 = get_fpr_d(ctx, a->rs1);
24965
TCGv_i64 src2 = get_fpr_d(ctx, a->rs2);
24966
24967
- gen_helper_fmax_d(dest, cpu_env, src1, src2);
24968
+ gen_helper_fmax_d(dest, tcg_env, src1, src2);
24969
gen_set_fpr_d(ctx, a->rd, dest);
24970
mark_fs_dirty(ctx);
24971
return true;
24972
@@ -XXX,XX +XXX,XX @@ static bool trans_fcvt_s_d(DisasContext *ctx, arg_fcvt_s_d *a)
24973
TCGv_i64 src1 = get_fpr_d(ctx, a->rs1);
24974
24975
gen_set_rm(ctx, a->rm);
24976
- gen_helper_fcvt_s_d(dest, cpu_env, src1);
24977
+ gen_helper_fcvt_s_d(dest, tcg_env, src1);
24978
gen_set_fpr_hs(ctx, a->rd, dest);
24979
mark_fs_dirty(ctx);
24980
return true;
24981
@@ -XXX,XX +XXX,XX @@ static bool trans_fcvt_d_s(DisasContext *ctx, arg_fcvt_d_s *a)
24982
TCGv_i64 src1 = get_fpr_hs(ctx, a->rs1);
24983
24984
gen_set_rm(ctx, a->rm);
24985
- gen_helper_fcvt_d_s(dest, cpu_env, src1);
24986
+ gen_helper_fcvt_d_s(dest, tcg_env, src1);
24987
gen_set_fpr_d(ctx, a->rd, dest);
24988
mark_fs_dirty(ctx);
24989
return true;
24990
@@ -XXX,XX +XXX,XX @@ static bool trans_feq_d(DisasContext *ctx, arg_feq_d *a)
24991
TCGv_i64 src1 = get_fpr_d(ctx, a->rs1);
24992
TCGv_i64 src2 = get_fpr_d(ctx, a->rs2);
24993
24994
- gen_helper_feq_d(dest, cpu_env, src1, src2);
24995
+ gen_helper_feq_d(dest, tcg_env, src1, src2);
24996
gen_set_gpr(ctx, a->rd, dest);
24997
return true;
24998
}
24999
@@ -XXX,XX +XXX,XX @@ static bool trans_flt_d(DisasContext *ctx, arg_flt_d *a)
25000
TCGv_i64 src1 = get_fpr_d(ctx, a->rs1);
25001
TCGv_i64 src2 = get_fpr_d(ctx, a->rs2);
25002
25003
- gen_helper_flt_d(dest, cpu_env, src1, src2);
25004
+ gen_helper_flt_d(dest, tcg_env, src1, src2);
25005
gen_set_gpr(ctx, a->rd, dest);
25006
return true;
25007
}
25008
@@ -XXX,XX +XXX,XX @@ static bool trans_fle_d(DisasContext *ctx, arg_fle_d *a)
25009
TCGv_i64 src1 = get_fpr_d(ctx, a->rs1);
25010
TCGv_i64 src2 = get_fpr_d(ctx, a->rs2);
25011
25012
- gen_helper_fle_d(dest, cpu_env, src1, src2);
25013
+ gen_helper_fle_d(dest, tcg_env, src1, src2);
25014
gen_set_gpr(ctx, a->rd, dest);
25015
return true;
25016
}
25017
@@ -XXX,XX +XXX,XX @@ static bool trans_fcvt_w_d(DisasContext *ctx, arg_fcvt_w_d *a)
25018
TCGv_i64 src1 = get_fpr_d(ctx, a->rs1);
25019
25020
gen_set_rm(ctx, a->rm);
25021
- gen_helper_fcvt_w_d(dest, cpu_env, src1);
25022
+ gen_helper_fcvt_w_d(dest, tcg_env, src1);
25023
gen_set_gpr(ctx, a->rd, dest);
25024
return true;
25025
}
25026
@@ -XXX,XX +XXX,XX @@ static bool trans_fcvt_wu_d(DisasContext *ctx, arg_fcvt_wu_d *a)
25027
TCGv_i64 src1 = get_fpr_d(ctx, a->rs1);
25028
25029
gen_set_rm(ctx, a->rm);
25030
- gen_helper_fcvt_wu_d(dest, cpu_env, src1);
25031
+ gen_helper_fcvt_wu_d(dest, tcg_env, src1);
25032
gen_set_gpr(ctx, a->rd, dest);
25033
return true;
25034
}
25035
@@ -XXX,XX +XXX,XX @@ static bool trans_fcvt_d_w(DisasContext *ctx, arg_fcvt_d_w *a)
25036
TCGv src = get_gpr(ctx, a->rs1, EXT_SIGN);
25037
25038
gen_set_rm(ctx, a->rm);
25039
- gen_helper_fcvt_d_w(dest, cpu_env, src);
25040
+ gen_helper_fcvt_d_w(dest, tcg_env, src);
25041
gen_set_fpr_d(ctx, a->rd, dest);
25042
25043
mark_fs_dirty(ctx);
25044
@@ -XXX,XX +XXX,XX @@ static bool trans_fcvt_d_wu(DisasContext *ctx, arg_fcvt_d_wu *a)
25045
TCGv src = get_gpr(ctx, a->rs1, EXT_ZERO);
25046
25047
gen_set_rm(ctx, a->rm);
25048
- gen_helper_fcvt_d_wu(dest, cpu_env, src);
25049
+ gen_helper_fcvt_d_wu(dest, tcg_env, src);
25050
gen_set_fpr_d(ctx, a->rd, dest);
25051
25052
mark_fs_dirty(ctx);
25053
@@ -XXX,XX +XXX,XX @@ static bool trans_fcvt_l_d(DisasContext *ctx, arg_fcvt_l_d *a)
25054
TCGv_i64 src1 = get_fpr_d(ctx, a->rs1);
25055
25056
gen_set_rm(ctx, a->rm);
25057
- gen_helper_fcvt_l_d(dest, cpu_env, src1);
25058
+ gen_helper_fcvt_l_d(dest, tcg_env, src1);
25059
gen_set_gpr(ctx, a->rd, dest);
25060
return true;
25061
}
25062
@@ -XXX,XX +XXX,XX @@ static bool trans_fcvt_lu_d(DisasContext *ctx, arg_fcvt_lu_d *a)
25063
TCGv_i64 src1 = get_fpr_d(ctx, a->rs1);
25064
25065
gen_set_rm(ctx, a->rm);
25066
- gen_helper_fcvt_lu_d(dest, cpu_env, src1);
25067
+ gen_helper_fcvt_lu_d(dest, tcg_env, src1);
25068
gen_set_gpr(ctx, a->rd, dest);
25069
return true;
25070
}
25071
@@ -XXX,XX +XXX,XX @@ static bool trans_fcvt_d_l(DisasContext *ctx, arg_fcvt_d_l *a)
25072
TCGv src = get_gpr(ctx, a->rs1, EXT_SIGN);
25073
25074
gen_set_rm(ctx, a->rm);
25075
- gen_helper_fcvt_d_l(dest, cpu_env, src);
25076
+ gen_helper_fcvt_d_l(dest, tcg_env, src);
25077
gen_set_fpr_d(ctx, a->rd, dest);
25078
25079
mark_fs_dirty(ctx);
25080
@@ -XXX,XX +XXX,XX @@ static bool trans_fcvt_d_lu(DisasContext *ctx, arg_fcvt_d_lu *a)
25081
TCGv src = get_gpr(ctx, a->rs1, EXT_ZERO);
25082
25083
gen_set_rm(ctx, a->rm);
25084
- gen_helper_fcvt_d_lu(dest, cpu_env, src);
25085
+ gen_helper_fcvt_d_lu(dest, tcg_env, src);
25086
gen_set_fpr_d(ctx, a->rd, dest);
25087
25088
mark_fs_dirty(ctx);
25089
diff --git a/target/riscv/insn_trans/trans_rvf.c.inc b/target/riscv/insn_trans/trans_rvf.c.inc
25090
index XXXXXXX..XXXXXXX 100644
25091
--- a/target/riscv/insn_trans/trans_rvf.c.inc
25092
+++ b/target/riscv/insn_trans/trans_rvf.c.inc
25093
@@ -XXX,XX +XXX,XX @@ static bool trans_fmadd_s(DisasContext *ctx, arg_fmadd_s *a)
25094
TCGv_i64 src3 = get_fpr_hs(ctx, a->rs3);
25095
25096
gen_set_rm(ctx, a->rm);
25097
- gen_helper_fmadd_s(dest, cpu_env, src1, src2, src3);
25098
+ gen_helper_fmadd_s(dest, tcg_env, src1, src2, src3);
25099
gen_set_fpr_hs(ctx, a->rd, dest);
25100
mark_fs_dirty(ctx);
25101
return true;
25102
@@ -XXX,XX +XXX,XX @@ static bool trans_fmsub_s(DisasContext *ctx, arg_fmsub_s *a)
25103
TCGv_i64 src3 = get_fpr_hs(ctx, a->rs3);
25104
25105
gen_set_rm(ctx, a->rm);
25106
- gen_helper_fmsub_s(dest, cpu_env, src1, src2, src3);
25107
+ gen_helper_fmsub_s(dest, tcg_env, src1, src2, src3);
25108
gen_set_fpr_hs(ctx, a->rd, dest);
25109
mark_fs_dirty(ctx);
25110
return true;
25111
@@ -XXX,XX +XXX,XX @@ static bool trans_fnmsub_s(DisasContext *ctx, arg_fnmsub_s *a)
25112
TCGv_i64 src3 = get_fpr_hs(ctx, a->rs3);
25113
25114
gen_set_rm(ctx, a->rm);
25115
- gen_helper_fnmsub_s(dest, cpu_env, src1, src2, src3);
25116
+ gen_helper_fnmsub_s(dest, tcg_env, src1, src2, src3);
25117
gen_set_fpr_hs(ctx, a->rd, dest);
25118
mark_fs_dirty(ctx);
25119
return true;
25120
@@ -XXX,XX +XXX,XX @@ static bool trans_fnmadd_s(DisasContext *ctx, arg_fnmadd_s *a)
25121
TCGv_i64 src3 = get_fpr_hs(ctx, a->rs3);
25122
25123
gen_set_rm(ctx, a->rm);
25124
- gen_helper_fnmadd_s(dest, cpu_env, src1, src2, src3);
25125
+ gen_helper_fnmadd_s(dest, tcg_env, src1, src2, src3);
25126
gen_set_fpr_hs(ctx, a->rd, dest);
25127
mark_fs_dirty(ctx);
25128
return true;
25129
@@ -XXX,XX +XXX,XX @@ static bool trans_fadd_s(DisasContext *ctx, arg_fadd_s *a)
25130
TCGv_i64 src2 = get_fpr_hs(ctx, a->rs2);
25131
25132
gen_set_rm(ctx, a->rm);
25133
- gen_helper_fadd_s(dest, cpu_env, src1, src2);
25134
+ gen_helper_fadd_s(dest, tcg_env, src1, src2);
25135
gen_set_fpr_hs(ctx, a->rd, dest);
25136
mark_fs_dirty(ctx);
25137
return true;
25138
@@ -XXX,XX +XXX,XX @@ static bool trans_fsub_s(DisasContext *ctx, arg_fsub_s *a)
25139
TCGv_i64 src2 = get_fpr_hs(ctx, a->rs2);
25140
25141
gen_set_rm(ctx, a->rm);
25142
- gen_helper_fsub_s(dest, cpu_env, src1, src2);
25143
+ gen_helper_fsub_s(dest, tcg_env, src1, src2);
25144
gen_set_fpr_hs(ctx, a->rd, dest);
25145
mark_fs_dirty(ctx);
25146
return true;
25147
@@ -XXX,XX +XXX,XX @@ static bool trans_fmul_s(DisasContext *ctx, arg_fmul_s *a)
25148
TCGv_i64 src2 = get_fpr_hs(ctx, a->rs2);
25149
25150
gen_set_rm(ctx, a->rm);
25151
- gen_helper_fmul_s(dest, cpu_env, src1, src2);
25152
+ gen_helper_fmul_s(dest, tcg_env, src1, src2);
25153
gen_set_fpr_hs(ctx, a->rd, dest);
25154
mark_fs_dirty(ctx);
25155
return true;
25156
@@ -XXX,XX +XXX,XX @@ static bool trans_fdiv_s(DisasContext *ctx, arg_fdiv_s *a)
25157
TCGv_i64 src2 = get_fpr_hs(ctx, a->rs2);
25158
25159
gen_set_rm(ctx, a->rm);
25160
- gen_helper_fdiv_s(dest, cpu_env, src1, src2);
25161
+ gen_helper_fdiv_s(dest, tcg_env, src1, src2);
25162
gen_set_fpr_hs(ctx, a->rd, dest);
25163
mark_fs_dirty(ctx);
25164
return true;
25165
@@ -XXX,XX +XXX,XX @@ static bool trans_fsqrt_s(DisasContext *ctx, arg_fsqrt_s *a)
25166
TCGv_i64 src1 = get_fpr_hs(ctx, a->rs1);
25167
25168
gen_set_rm(ctx, a->rm);
25169
- gen_helper_fsqrt_s(dest, cpu_env, src1);
25170
+ gen_helper_fsqrt_s(dest, tcg_env, src1);
25171
gen_set_fpr_hs(ctx, a->rd, dest);
25172
mark_fs_dirty(ctx);
25173
return true;
25174
@@ -XXX,XX +XXX,XX @@ static bool trans_fmin_s(DisasContext *ctx, arg_fmin_s *a)
25175
TCGv_i64 src1 = get_fpr_hs(ctx, a->rs1);
25176
TCGv_i64 src2 = get_fpr_hs(ctx, a->rs2);
25177
25178
- gen_helper_fmin_s(dest, cpu_env, src1, src2);
25179
+ gen_helper_fmin_s(dest, tcg_env, src1, src2);
25180
gen_set_fpr_hs(ctx, a->rd, dest);
25181
mark_fs_dirty(ctx);
25182
return true;
25183
@@ -XXX,XX +XXX,XX @@ static bool trans_fmax_s(DisasContext *ctx, arg_fmax_s *a)
25184
TCGv_i64 src1 = get_fpr_hs(ctx, a->rs1);
25185
TCGv_i64 src2 = get_fpr_hs(ctx, a->rs2);
25186
25187
- gen_helper_fmax_s(dest, cpu_env, src1, src2);
25188
+ gen_helper_fmax_s(dest, tcg_env, src1, src2);
25189
gen_set_fpr_hs(ctx, a->rd, dest);
25190
mark_fs_dirty(ctx);
25191
return true;
25192
@@ -XXX,XX +XXX,XX @@ static bool trans_fcvt_w_s(DisasContext *ctx, arg_fcvt_w_s *a)
25193
TCGv_i64 src1 = get_fpr_hs(ctx, a->rs1);
25194
25195
gen_set_rm(ctx, a->rm);
25196
- gen_helper_fcvt_w_s(dest, cpu_env, src1);
25197
+ gen_helper_fcvt_w_s(dest, tcg_env, src1);
25198
gen_set_gpr(ctx, a->rd, dest);
25199
return true;
25200
}
25201
@@ -XXX,XX +XXX,XX @@ static bool trans_fcvt_wu_s(DisasContext *ctx, arg_fcvt_wu_s *a)
25202
TCGv_i64 src1 = get_fpr_hs(ctx, a->rs1);
25203
25204
gen_set_rm(ctx, a->rm);
25205
- gen_helper_fcvt_wu_s(dest, cpu_env, src1);
25206
+ gen_helper_fcvt_wu_s(dest, tcg_env, src1);
25207
gen_set_gpr(ctx, a->rd, dest);
25208
return true;
25209
}
25210
@@ -XXX,XX +XXX,XX @@ static bool trans_feq_s(DisasContext *ctx, arg_feq_s *a)
25211
TCGv_i64 src1 = get_fpr_hs(ctx, a->rs1);
25212
TCGv_i64 src2 = get_fpr_hs(ctx, a->rs2);
25213
25214
- gen_helper_feq_s(dest, cpu_env, src1, src2);
25215
+ gen_helper_feq_s(dest, tcg_env, src1, src2);
25216
gen_set_gpr(ctx, a->rd, dest);
25217
return true;
25218
}
25219
@@ -XXX,XX +XXX,XX @@ static bool trans_flt_s(DisasContext *ctx, arg_flt_s *a)
25220
TCGv_i64 src1 = get_fpr_hs(ctx, a->rs1);
25221
TCGv_i64 src2 = get_fpr_hs(ctx, a->rs2);
25222
25223
- gen_helper_flt_s(dest, cpu_env, src1, src2);
25224
+ gen_helper_flt_s(dest, tcg_env, src1, src2);
25225
gen_set_gpr(ctx, a->rd, dest);
25226
return true;
25227
}
25228
@@ -XXX,XX +XXX,XX @@ static bool trans_fle_s(DisasContext *ctx, arg_fle_s *a)
25229
TCGv_i64 src1 = get_fpr_hs(ctx, a->rs1);
25230
TCGv_i64 src2 = get_fpr_hs(ctx, a->rs2);
25231
25232
- gen_helper_fle_s(dest, cpu_env, src1, src2);
25233
+ gen_helper_fle_s(dest, tcg_env, src1, src2);
25234
gen_set_gpr(ctx, a->rd, dest);
25235
return true;
25236
}
25237
@@ -XXX,XX +XXX,XX @@ static bool trans_fclass_s(DisasContext *ctx, arg_fclass_s *a)
25238
TCGv dest = dest_gpr(ctx, a->rd);
25239
TCGv_i64 src1 = get_fpr_hs(ctx, a->rs1);
25240
25241
- gen_helper_fclass_s(dest, cpu_env, src1);
25242
+ gen_helper_fclass_s(dest, tcg_env, src1);
25243
gen_set_gpr(ctx, a->rd, dest);
25244
return true;
25245
}
25246
@@ -XXX,XX +XXX,XX @@ static bool trans_fcvt_s_w(DisasContext *ctx, arg_fcvt_s_w *a)
25247
TCGv src = get_gpr(ctx, a->rs1, EXT_SIGN);
25248
25249
gen_set_rm(ctx, a->rm);
25250
- gen_helper_fcvt_s_w(dest, cpu_env, src);
25251
+ gen_helper_fcvt_s_w(dest, tcg_env, src);
25252
gen_set_fpr_hs(ctx, a->rd, dest);
25253
mark_fs_dirty(ctx);
25254
return true;
25255
@@ -XXX,XX +XXX,XX @@ static bool trans_fcvt_s_wu(DisasContext *ctx, arg_fcvt_s_wu *a)
25256
TCGv src = get_gpr(ctx, a->rs1, EXT_ZERO);
25257
25258
gen_set_rm(ctx, a->rm);
25259
- gen_helper_fcvt_s_wu(dest, cpu_env, src);
25260
+ gen_helper_fcvt_s_wu(dest, tcg_env, src);
25261
gen_set_fpr_hs(ctx, a->rd, dest);
25262
mark_fs_dirty(ctx);
25263
return true;
25264
@@ -XXX,XX +XXX,XX @@ static bool trans_fcvt_l_s(DisasContext *ctx, arg_fcvt_l_s *a)
25265
TCGv_i64 src1 = get_fpr_hs(ctx, a->rs1);
25266
25267
gen_set_rm(ctx, a->rm);
25268
- gen_helper_fcvt_l_s(dest, cpu_env, src1);
25269
+ gen_helper_fcvt_l_s(dest, tcg_env, src1);
25270
gen_set_gpr(ctx, a->rd, dest);
25271
return true;
25272
}
25273
@@ -XXX,XX +XXX,XX @@ static bool trans_fcvt_lu_s(DisasContext *ctx, arg_fcvt_lu_s *a)
25274
TCGv_i64 src1 = get_fpr_hs(ctx, a->rs1);
25275
25276
gen_set_rm(ctx, a->rm);
25277
- gen_helper_fcvt_lu_s(dest, cpu_env, src1);
25278
+ gen_helper_fcvt_lu_s(dest, tcg_env, src1);
25279
gen_set_gpr(ctx, a->rd, dest);
25280
return true;
25281
}
25282
@@ -XXX,XX +XXX,XX @@ static bool trans_fcvt_s_l(DisasContext *ctx, arg_fcvt_s_l *a)
25283
TCGv src = get_gpr(ctx, a->rs1, EXT_SIGN);
25284
25285
gen_set_rm(ctx, a->rm);
25286
- gen_helper_fcvt_s_l(dest, cpu_env, src);
25287
+ gen_helper_fcvt_s_l(dest, tcg_env, src);
25288
gen_set_fpr_hs(ctx, a->rd, dest);
25289
mark_fs_dirty(ctx);
25290
return true;
25291
@@ -XXX,XX +XXX,XX @@ static bool trans_fcvt_s_lu(DisasContext *ctx, arg_fcvt_s_lu *a)
25292
TCGv src = get_gpr(ctx, a->rs1, EXT_ZERO);
25293
25294
gen_set_rm(ctx, a->rm);
25295
- gen_helper_fcvt_s_lu(dest, cpu_env, src);
25296
+ gen_helper_fcvt_s_lu(dest, tcg_env, src);
25297
gen_set_fpr_hs(ctx, a->rd, dest);
25298
mark_fs_dirty(ctx);
25299
return true;
25300
diff --git a/target/riscv/insn_trans/trans_rvh.c.inc b/target/riscv/insn_trans/trans_rvh.c.inc
25301
index XXXXXXX..XXXXXXX 100644
25302
--- a/target/riscv/insn_trans/trans_rvh.c.inc
25303
+++ b/target/riscv/insn_trans/trans_rvh.c.inc
25304
@@ -XXX,XX +XXX,XX @@ static bool do_hlv(DisasContext *ctx, arg_r2 *a,
25305
TCGv addr = get_gpr(ctx, a->rs1, EXT_NONE);
25306
25307
decode_save_opc(ctx);
25308
- func(dest, cpu_env, addr);
25309
+ func(dest, tcg_env, addr);
25310
gen_set_gpr(ctx, a->rd, dest);
25311
return true;
25312
}
25313
@@ -XXX,XX +XXX,XX @@ static bool do_hsv(DisasContext *ctx, arg_r2_s *a,
25314
TCGv data = get_gpr(ctx, a->rs2, EXT_NONE);
25315
25316
decode_save_opc(ctx);
25317
- func(cpu_env, addr, data);
25318
+ func(tcg_env, addr, data);
25319
return true;
25320
}
25321
#endif /* CONFIG_USER_ONLY */
25322
@@ -XXX,XX +XXX,XX @@ static bool trans_hfence_gvma(DisasContext *ctx, arg_sfence_vma *a)
25323
REQUIRE_EXT(ctx, RVH);
25324
#ifndef CONFIG_USER_ONLY
25325
decode_save_opc(ctx);
25326
- gen_helper_hyp_gvma_tlb_flush(cpu_env);
25327
+ gen_helper_hyp_gvma_tlb_flush(tcg_env);
25328
return true;
25329
#endif
25330
return false;
25331
@@ -XXX,XX +XXX,XX @@ static bool trans_hfence_vvma(DisasContext *ctx, arg_sfence_vma *a)
25332
REQUIRE_EXT(ctx, RVH);
25333
#ifndef CONFIG_USER_ONLY
25334
decode_save_opc(ctx);
25335
- gen_helper_hyp_tlb_flush(cpu_env);
25336
+ gen_helper_hyp_tlb_flush(tcg_env);
25337
return true;
25338
#endif
25339
return false;
25340
diff --git a/target/riscv/insn_trans/trans_rvi.c.inc b/target/riscv/insn_trans/trans_rvi.c.inc
25341
index XXXXXXX..XXXXXXX 100644
25342
--- a/target/riscv/insn_trans/trans_rvi.c.inc
25343
+++ b/target/riscv/insn_trans/trans_rvi.c.inc
25344
@@ -XXX,XX +XXX,XX @@ static bool do_csrr(DisasContext *ctx, int rd, int rc)
25345
TCGv_i32 csr = tcg_constant_i32(rc);
25346
25347
translator_io_start(&ctx->base);
25348
- gen_helper_csrr(dest, cpu_env, csr);
25349
+ gen_helper_csrr(dest, tcg_env, csr);
25350
gen_set_gpr(ctx, rd, dest);
25351
return do_csr_post(ctx);
25352
}
25353
@@ -XXX,XX +XXX,XX @@ static bool do_csrw(DisasContext *ctx, int rc, TCGv src)
25354
TCGv_i32 csr = tcg_constant_i32(rc);
25355
25356
translator_io_start(&ctx->base);
25357
- gen_helper_csrw(cpu_env, csr, src);
25358
+ gen_helper_csrw(tcg_env, csr, src);
25359
return do_csr_post(ctx);
25360
}
25361
25362
@@ -XXX,XX +XXX,XX @@ static bool do_csrrw(DisasContext *ctx, int rd, int rc, TCGv src, TCGv mask)
25363
TCGv_i32 csr = tcg_constant_i32(rc);
25364
25365
translator_io_start(&ctx->base);
25366
- gen_helper_csrrw(dest, cpu_env, csr, src, mask);
25367
+ gen_helper_csrrw(dest, tcg_env, csr, src, mask);
25368
gen_set_gpr(ctx, rd, dest);
25369
return do_csr_post(ctx);
25370
}
25371
@@ -XXX,XX +XXX,XX @@ static bool do_csrr_i128(DisasContext *ctx, int rd, int rc)
25372
TCGv_i32 csr = tcg_constant_i32(rc);
25373
25374
translator_io_start(&ctx->base);
25375
- gen_helper_csrr_i128(destl, cpu_env, csr);
25376
- tcg_gen_ld_tl(desth, cpu_env, offsetof(CPURISCVState, retxh));
25377
+ gen_helper_csrr_i128(destl, tcg_env, csr);
25378
+ tcg_gen_ld_tl(desth, tcg_env, offsetof(CPURISCVState, retxh));
25379
gen_set_gpr128(ctx, rd, destl, desth);
25380
return do_csr_post(ctx);
25381
}
25382
@@ -XXX,XX +XXX,XX @@ static bool do_csrw_i128(DisasContext *ctx, int rc, TCGv srcl, TCGv srch)
25383
TCGv_i32 csr = tcg_constant_i32(rc);
25384
25385
translator_io_start(&ctx->base);
25386
- gen_helper_csrw_i128(cpu_env, csr, srcl, srch);
25387
+ gen_helper_csrw_i128(tcg_env, csr, srcl, srch);
25388
return do_csr_post(ctx);
25389
}
25390
25391
@@ -XXX,XX +XXX,XX @@ static bool do_csrrw_i128(DisasContext *ctx, int rd, int rc,
25392
TCGv_i32 csr = tcg_constant_i32(rc);
25393
25394
translator_io_start(&ctx->base);
25395
- gen_helper_csrrw_i128(destl, cpu_env, csr, srcl, srch, maskl, maskh);
25396
- tcg_gen_ld_tl(desth, cpu_env, offsetof(CPURISCVState, retxh));
25397
+ gen_helper_csrrw_i128(destl, tcg_env, csr, srcl, srch, maskl, maskh);
25398
+ tcg_gen_ld_tl(desth, tcg_env, offsetof(CPURISCVState, retxh));
25399
gen_set_gpr128(ctx, rd, destl, desth);
25400
return do_csr_post(ctx);
25401
}
25402
diff --git a/target/riscv/insn_trans/trans_rvm.c.inc b/target/riscv/insn_trans/trans_rvm.c.inc
25403
index XXXXXXX..XXXXXXX 100644
25404
--- a/target/riscv/insn_trans/trans_rvm.c.inc
25405
+++ b/target/riscv/insn_trans/trans_rvm.c.inc
25406
@@ -XXX,XX +XXX,XX @@ static bool trans_mulhu(DisasContext *ctx, arg_mulhu *a)
25407
static void gen_div_i128(TCGv rdl, TCGv rdh,
25408
TCGv rs1l, TCGv rs1h, TCGv rs2l, TCGv rs2h)
25409
{
25410
- gen_helper_divs_i128(rdl, cpu_env, rs1l, rs1h, rs2l, rs2h);
25411
- tcg_gen_ld_tl(rdh, cpu_env, offsetof(CPURISCVState, retxh));
25412
+ gen_helper_divs_i128(rdl, tcg_env, rs1l, rs1h, rs2l, rs2h);
25413
+ tcg_gen_ld_tl(rdh, tcg_env, offsetof(CPURISCVState, retxh));
25414
}
25415
25416
static void gen_div(TCGv ret, TCGv source1, TCGv source2)
25417
@@ -XXX,XX +XXX,XX @@ static bool trans_div(DisasContext *ctx, arg_div *a)
25418
static void gen_divu_i128(TCGv rdl, TCGv rdh,
25419
TCGv rs1l, TCGv rs1h, TCGv rs2l, TCGv rs2h)
25420
{
25421
- gen_helper_divu_i128(rdl, cpu_env, rs1l, rs1h, rs2l, rs2h);
25422
- tcg_gen_ld_tl(rdh, cpu_env, offsetof(CPURISCVState, retxh));
25423
+ gen_helper_divu_i128(rdl, tcg_env, rs1l, rs1h, rs2l, rs2h);
25424
+ tcg_gen_ld_tl(rdh, tcg_env, offsetof(CPURISCVState, retxh));
25425
}
25426
25427
static void gen_divu(TCGv ret, TCGv source1, TCGv source2)
25428
@@ -XXX,XX +XXX,XX @@ static bool trans_divu(DisasContext *ctx, arg_divu *a)
25429
static void gen_rem_i128(TCGv rdl, TCGv rdh,
25430
TCGv rs1l, TCGv rs1h, TCGv rs2l, TCGv rs2h)
25431
{
25432
- gen_helper_rems_i128(rdl, cpu_env, rs1l, rs1h, rs2l, rs2h);
25433
- tcg_gen_ld_tl(rdh, cpu_env, offsetof(CPURISCVState, retxh));
25434
+ gen_helper_rems_i128(rdl, tcg_env, rs1l, rs1h, rs2l, rs2h);
25435
+ tcg_gen_ld_tl(rdh, tcg_env, offsetof(CPURISCVState, retxh));
25436
}
25437
25438
static void gen_rem(TCGv ret, TCGv source1, TCGv source2)
25439
@@ -XXX,XX +XXX,XX @@ static bool trans_rem(DisasContext *ctx, arg_rem *a)
25440
static void gen_remu_i128(TCGv rdl, TCGv rdh,
25441
TCGv rs1l, TCGv rs1h, TCGv rs2l, TCGv rs2h)
25442
{
25443
- gen_helper_remu_i128(rdl, cpu_env, rs1l, rs1h, rs2l, rs2h);
25444
- tcg_gen_ld_tl(rdh, cpu_env, offsetof(CPURISCVState, retxh));
25445
+ gen_helper_remu_i128(rdl, tcg_env, rs1l, rs1h, rs2l, rs2h);
25446
+ tcg_gen_ld_tl(rdh, tcg_env, offsetof(CPURISCVState, retxh));
25447
}
25448
25449
static void gen_remu(TCGv ret, TCGv source1, TCGv source2)
25450
diff --git a/target/riscv/insn_trans/trans_rvv.c.inc b/target/riscv/insn_trans/trans_rvv.c.inc
25451
index XXXXXXX..XXXXXXX 100644
25452
--- a/target/riscv/insn_trans/trans_rvv.c.inc
25453
+++ b/target/riscv/insn_trans/trans_rvv.c.inc
25454
@@ -XXX,XX +XXX,XX @@ static bool do_vsetvl(DisasContext *s, int rd, int rs1, TCGv s2)
25455
s1 = get_gpr(s, rs1, EXT_ZERO);
25456
}
25457
25458
- gen_helper_vsetvl(dst, cpu_env, s1, s2);
25459
+ gen_helper_vsetvl(dst, tcg_env, s1, s2);
25460
gen_set_gpr(s, rd, dst);
25461
mark_vs_dirty(s);
25462
25463
@@ -XXX,XX +XXX,XX @@ static bool do_vsetivli(DisasContext *s, int rd, TCGv s1, TCGv s2)
25464
25465
dst = dest_gpr(s, rd);
25466
25467
- gen_helper_vsetvl(dst, cpu_env, s1, s2);
25468
+ gen_helper_vsetvl(dst, tcg_env, s1, s2);
25469
gen_set_gpr(s, rd, dst);
25470
mark_vs_dirty(s);
25471
gen_update_pc(s, s->cur_insn_len);
25472
@@ -XXX,XX +XXX,XX @@ static bool ldst_us_trans(uint32_t vd, uint32_t rs1, uint32_t data,
25473
desc = tcg_constant_i32(simd_desc(s->cfg_ptr->vlen / 8,
25474
s->cfg_ptr->vlen / 8, data));
25475
25476
- tcg_gen_addi_ptr(dest, cpu_env, vreg_ofs(s, vd));
25477
- tcg_gen_addi_ptr(mask, cpu_env, vreg_ofs(s, 0));
25478
+ tcg_gen_addi_ptr(dest, tcg_env, vreg_ofs(s, vd));
25479
+ tcg_gen_addi_ptr(mask, tcg_env, vreg_ofs(s, 0));
25480
25481
- fn(dest, mask, base, cpu_env, desc);
25482
+ fn(dest, mask, base, tcg_env, desc);
25483
25484
if (!is_store) {
25485
mark_vs_dirty(s);
25486
@@ -XXX,XX +XXX,XX @@ static bool ldst_stride_trans(uint32_t vd, uint32_t rs1, uint32_t rs2,
25487
desc = tcg_constant_i32(simd_desc(s->cfg_ptr->vlen / 8,
25488
s->cfg_ptr->vlen / 8, data));
25489
25490
- tcg_gen_addi_ptr(dest, cpu_env, vreg_ofs(s, vd));
25491
- tcg_gen_addi_ptr(mask, cpu_env, vreg_ofs(s, 0));
25492
+ tcg_gen_addi_ptr(dest, tcg_env, vreg_ofs(s, vd));
25493
+ tcg_gen_addi_ptr(mask, tcg_env, vreg_ofs(s, 0));
25494
25495
- fn(dest, mask, base, stride, cpu_env, desc);
25496
+ fn(dest, mask, base, stride, tcg_env, desc);
25497
25498
if (!is_store) {
25499
mark_vs_dirty(s);
25500
@@ -XXX,XX +XXX,XX @@ static bool ldst_index_trans(uint32_t vd, uint32_t rs1, uint32_t vs2,
25501
desc = tcg_constant_i32(simd_desc(s->cfg_ptr->vlen / 8,
25502
s->cfg_ptr->vlen / 8, data));
25503
25504
- tcg_gen_addi_ptr(dest, cpu_env, vreg_ofs(s, vd));
25505
- tcg_gen_addi_ptr(index, cpu_env, vreg_ofs(s, vs2));
25506
- tcg_gen_addi_ptr(mask, cpu_env, vreg_ofs(s, 0));
25507
+ tcg_gen_addi_ptr(dest, tcg_env, vreg_ofs(s, vd));
25508
+ tcg_gen_addi_ptr(index, tcg_env, vreg_ofs(s, vs2));
25509
+ tcg_gen_addi_ptr(mask, tcg_env, vreg_ofs(s, 0));
25510
25511
- fn(dest, mask, base, index, cpu_env, desc);
25512
+ fn(dest, mask, base, index, tcg_env, desc);
25513
25514
if (!is_store) {
25515
mark_vs_dirty(s);
25516
@@ -XXX,XX +XXX,XX @@ static bool ldff_trans(uint32_t vd, uint32_t rs1, uint32_t data,
25517
desc = tcg_constant_i32(simd_desc(s->cfg_ptr->vlen / 8,
25518
s->cfg_ptr->vlen / 8, data));
25519
25520
- tcg_gen_addi_ptr(dest, cpu_env, vreg_ofs(s, vd));
25521
- tcg_gen_addi_ptr(mask, cpu_env, vreg_ofs(s, 0));
25522
+ tcg_gen_addi_ptr(dest, tcg_env, vreg_ofs(s, vd));
25523
+ tcg_gen_addi_ptr(mask, tcg_env, vreg_ofs(s, 0));
25524
25525
- fn(dest, mask, base, cpu_env, desc);
25526
+ fn(dest, mask, base, tcg_env, desc);
25527
25528
mark_vs_dirty(s);
25529
gen_set_label(over);
25530
@@ -XXX,XX +XXX,XX @@ static bool ldst_whole_trans(uint32_t vd, uint32_t rs1, uint32_t nf,
25531
s->cfg_ptr->vlen / 8, data));
25532
25533
base = get_gpr(s, rs1, EXT_NONE);
25534
- tcg_gen_addi_ptr(dest, cpu_env, vreg_ofs(s, vd));
25535
+ tcg_gen_addi_ptr(dest, tcg_env, vreg_ofs(s, vd));
25536
25537
- fn(dest, base, cpu_env, desc);
25538
+ fn(dest, base, tcg_env, desc);
25539
25540
if (!is_store) {
25541
mark_vs_dirty(s);
25542
@@ -XXX,XX +XXX,XX @@ do_opivv_gvec(DisasContext *s, arg_rmrr *a, GVecGen3Fn *gvec_fn,
25543
data = FIELD_DP32(data, VDATA, VMA, s->vma);
25544
tcg_gen_gvec_4_ptr(vreg_ofs(s, a->rd), vreg_ofs(s, 0),
25545
vreg_ofs(s, a->rs1), vreg_ofs(s, a->rs2),
25546
- cpu_env, s->cfg_ptr->vlen / 8,
25547
+ tcg_env, s->cfg_ptr->vlen / 8,
25548
s->cfg_ptr->vlen / 8, data, fn);
25549
}
25550
mark_vs_dirty(s);
25551
@@ -XXX,XX +XXX,XX @@ static bool opivx_trans(uint32_t vd, uint32_t rs1, uint32_t vs2, uint32_t vm,
25552
desc = tcg_constant_i32(simd_desc(s->cfg_ptr->vlen / 8,
25553
s->cfg_ptr->vlen / 8, data));
25554
25555
- tcg_gen_addi_ptr(dest, cpu_env, vreg_ofs(s, vd));
25556
- tcg_gen_addi_ptr(src2, cpu_env, vreg_ofs(s, vs2));
25557
- tcg_gen_addi_ptr(mask, cpu_env, vreg_ofs(s, 0));
25558
+ tcg_gen_addi_ptr(dest, tcg_env, vreg_ofs(s, vd));
25559
+ tcg_gen_addi_ptr(src2, tcg_env, vreg_ofs(s, vs2));
25560
+ tcg_gen_addi_ptr(mask, tcg_env, vreg_ofs(s, 0));
25561
25562
- fn(dest, mask, src1, src2, cpu_env, desc);
25563
+ fn(dest, mask, src1, src2, tcg_env, desc);
25564
25565
mark_vs_dirty(s);
25566
gen_set_label(over);
25567
@@ -XXX,XX +XXX,XX @@ static bool opivi_trans(uint32_t vd, uint32_t imm, uint32_t vs2, uint32_t vm,
25568
desc = tcg_constant_i32(simd_desc(s->cfg_ptr->vlen / 8,
25569
s->cfg_ptr->vlen / 8, data));
25570
25571
- tcg_gen_addi_ptr(dest, cpu_env, vreg_ofs(s, vd));
25572
- tcg_gen_addi_ptr(src2, cpu_env, vreg_ofs(s, vs2));
25573
- tcg_gen_addi_ptr(mask, cpu_env, vreg_ofs(s, 0));
25574
+ tcg_gen_addi_ptr(dest, tcg_env, vreg_ofs(s, vd));
25575
+ tcg_gen_addi_ptr(src2, tcg_env, vreg_ofs(s, vs2));
25576
+ tcg_gen_addi_ptr(mask, tcg_env, vreg_ofs(s, 0));
25577
25578
- fn(dest, mask, src1, src2, cpu_env, desc);
25579
+ fn(dest, mask, src1, src2, tcg_env, desc);
25580
25581
mark_vs_dirty(s);
25582
gen_set_label(over);
25583
@@ -XXX,XX +XXX,XX @@ static bool do_opivv_widen(DisasContext *s, arg_rmrr *a,
25584
tcg_gen_gvec_4_ptr(vreg_ofs(s, a->rd), vreg_ofs(s, 0),
25585
vreg_ofs(s, a->rs1),
25586
vreg_ofs(s, a->rs2),
25587
- cpu_env, s->cfg_ptr->vlen / 8,
25588
+ tcg_env, s->cfg_ptr->vlen / 8,
25589
s->cfg_ptr->vlen / 8,
25590
data, fn);
25591
mark_vs_dirty(s);
25592
@@ -XXX,XX +XXX,XX @@ static bool do_opiwv_widen(DisasContext *s, arg_rmrr *a,
25593
tcg_gen_gvec_4_ptr(vreg_ofs(s, a->rd), vreg_ofs(s, 0),
25594
vreg_ofs(s, a->rs1),
25595
vreg_ofs(s, a->rs2),
25596
- cpu_env, s->cfg_ptr->vlen / 8,
25597
+ tcg_env, s->cfg_ptr->vlen / 8,
25598
s->cfg_ptr->vlen / 8, data, fn);
25599
mark_vs_dirty(s);
25600
gen_set_label(over);
25601
@@ -XXX,XX +XXX,XX @@ static bool opivv_trans(uint32_t vd, uint32_t vs1, uint32_t vs2, uint32_t vm,
25602
data = FIELD_DP32(data, VDATA, VTA_ALL_1S, s->cfg_vta_all_1s);
25603
data = FIELD_DP32(data, VDATA, VMA, s->vma);
25604
tcg_gen_gvec_4_ptr(vreg_ofs(s, vd), vreg_ofs(s, 0), vreg_ofs(s, vs1),
25605
- vreg_ofs(s, vs2), cpu_env, s->cfg_ptr->vlen / 8,
25606
+ vreg_ofs(s, vs2), tcg_env, s->cfg_ptr->vlen / 8,
25607
s->cfg_ptr->vlen / 8, data, fn);
25608
mark_vs_dirty(s);
25609
gen_set_label(over);
25610
@@ -XXX,XX +XXX,XX @@ static bool trans_##NAME(DisasContext *s, arg_rmrr *a) \
25611
data = FIELD_DP32(data, VDATA, VMA, s->vma); \
25612
tcg_gen_gvec_4_ptr(vreg_ofs(s, a->rd), vreg_ofs(s, 0), \
25613
vreg_ofs(s, a->rs1), \
25614
- vreg_ofs(s, a->rs2), cpu_env, \
25615
+ vreg_ofs(s, a->rs2), tcg_env, \
25616
s->cfg_ptr->vlen / 8, \
25617
s->cfg_ptr->vlen / 8, data, \
25618
fns[s->sew]); \
25619
@@ -XXX,XX +XXX,XX @@ static bool trans_vmv_v_v(DisasContext *s, arg_vmv_v_v *a)
25620
tcg_gen_brcond_tl(TCG_COND_GEU, cpu_vstart, cpu_vl, over);
25621
25622
tcg_gen_gvec_2_ptr(vreg_ofs(s, a->rd), vreg_ofs(s, a->rs1),
25623
- cpu_env, s->cfg_ptr->vlen / 8,
25624
+ tcg_env, s->cfg_ptr->vlen / 8,
25625
s->cfg_ptr->vlen / 8, data,
25626
fns[s->sew]);
25627
gen_set_label(over);
25628
@@ -XXX,XX +XXX,XX @@ static bool trans_vmv_v_x(DisasContext *s, arg_vmv_v_x *a)
25629
tcg_gen_ext_tl_i64(s1_i64, s1);
25630
desc = tcg_constant_i32(simd_desc(s->cfg_ptr->vlen / 8,
25631
s->cfg_ptr->vlen / 8, data));
25632
- tcg_gen_addi_ptr(dest, cpu_env, vreg_ofs(s, a->rd));
25633
- fns[s->sew](dest, s1_i64, cpu_env, desc);
25634
+ tcg_gen_addi_ptr(dest, tcg_env, vreg_ofs(s, a->rd));
25635
+ fns[s->sew](dest, s1_i64, tcg_env, desc);
25636
}
25637
25638
mark_vs_dirty(s);
25639
@@ -XXX,XX +XXX,XX @@ static bool trans_vmv_v_i(DisasContext *s, arg_vmv_v_i *a)
25640
dest = tcg_temp_new_ptr();
25641
desc = tcg_constant_i32(simd_desc(s->cfg_ptr->vlen / 8,
25642
s->cfg_ptr->vlen / 8, data));
25643
- tcg_gen_addi_ptr(dest, cpu_env, vreg_ofs(s, a->rd));
25644
- fns[s->sew](dest, s1, cpu_env, desc);
25645
+ tcg_gen_addi_ptr(dest, tcg_env, vreg_ofs(s, a->rd));
25646
+ fns[s->sew](dest, s1, tcg_env, desc);
25647
25648
mark_vs_dirty(s);
25649
gen_set_label(over);
25650
@@ -XXX,XX +XXX,XX @@ static bool trans_##NAME(DisasContext *s, arg_rmrr *a) \
25651
data = FIELD_DP32(data, VDATA, VMA, s->vma); \
25652
tcg_gen_gvec_4_ptr(vreg_ofs(s, a->rd), vreg_ofs(s, 0), \
25653
vreg_ofs(s, a->rs1), \
25654
- vreg_ofs(s, a->rs2), cpu_env, \
25655
+ vreg_ofs(s, a->rs2), tcg_env, \
25656
s->cfg_ptr->vlen / 8, \
25657
s->cfg_ptr->vlen / 8, data, \
25658
fns[s->sew - 1]); \
25659
@@ -XXX,XX +XXX,XX @@ static bool opfvf_trans(uint32_t vd, uint32_t rs1, uint32_t vs2,
25660
desc = tcg_constant_i32(simd_desc(s->cfg_ptr->vlen / 8,
25661
s->cfg_ptr->vlen / 8, data));
25662
25663
- tcg_gen_addi_ptr(dest, cpu_env, vreg_ofs(s, vd));
25664
- tcg_gen_addi_ptr(src2, cpu_env, vreg_ofs(s, vs2));
25665
- tcg_gen_addi_ptr(mask, cpu_env, vreg_ofs(s, 0));
25666
+ tcg_gen_addi_ptr(dest, tcg_env, vreg_ofs(s, vd));
25667
+ tcg_gen_addi_ptr(src2, tcg_env, vreg_ofs(s, vs2));
25668
+ tcg_gen_addi_ptr(mask, tcg_env, vreg_ofs(s, 0));
25669
25670
/* NaN-box f[rs1] */
25671
t1 = tcg_temp_new_i64();
25672
do_nanbox(s, t1, cpu_fpr[rs1]);
25673
25674
- fn(dest, mask, t1, src2, cpu_env, desc);
25675
+ fn(dest, mask, t1, src2, tcg_env, desc);
25676
25677
mark_vs_dirty(s);
25678
gen_set_label(over);
25679
@@ -XXX,XX +XXX,XX @@ static bool trans_##NAME(DisasContext *s, arg_rmrr *a) \
25680
data = FIELD_DP32(data, VDATA, VMA, s->vma); \
25681
tcg_gen_gvec_4_ptr(vreg_ofs(s, a->rd), vreg_ofs(s, 0), \
25682
vreg_ofs(s, a->rs1), \
25683
- vreg_ofs(s, a->rs2), cpu_env, \
25684
+ vreg_ofs(s, a->rs2), tcg_env, \
25685
s->cfg_ptr->vlen / 8, \
25686
s->cfg_ptr->vlen / 8, data, \
25687
fns[s->sew - 1]); \
25688
@@ -XXX,XX +XXX,XX @@ static bool trans_##NAME(DisasContext *s, arg_rmrr *a) \
25689
data = FIELD_DP32(data, VDATA, VMA, s->vma); \
25690
tcg_gen_gvec_4_ptr(vreg_ofs(s, a->rd), vreg_ofs(s, 0), \
25691
vreg_ofs(s, a->rs1), \
25692
- vreg_ofs(s, a->rs2), cpu_env, \
25693
+ vreg_ofs(s, a->rs2), tcg_env, \
25694
s->cfg_ptr->vlen / 8, \
25695
s->cfg_ptr->vlen / 8, data, \
25696
fns[s->sew - 1]); \
25697
@@ -XXX,XX +XXX,XX @@ static bool do_opfv(DisasContext *s, arg_rmr *a,
25698
data = FIELD_DP32(data, VDATA, VTA, s->vta);
25699
data = FIELD_DP32(data, VDATA, VMA, s->vma);
25700
tcg_gen_gvec_3_ptr(vreg_ofs(s, a->rd), vreg_ofs(s, 0),
25701
- vreg_ofs(s, a->rs2), cpu_env,
25702
+ vreg_ofs(s, a->rs2), tcg_env,
25703
s->cfg_ptr->vlen / 8,
25704
s->cfg_ptr->vlen / 8, data, fn);
25705
mark_vs_dirty(s);
25706
@@ -XXX,XX +XXX,XX @@ static bool trans_vfmv_v_f(DisasContext *s, arg_vfmv_v_f *a)
25707
dest = tcg_temp_new_ptr();
25708
desc = tcg_constant_i32(simd_desc(s->cfg_ptr->vlen / 8,
25709
s->cfg_ptr->vlen / 8, data));
25710
- tcg_gen_addi_ptr(dest, cpu_env, vreg_ofs(s, a->rd));
25711
+ tcg_gen_addi_ptr(dest, tcg_env, vreg_ofs(s, a->rd));
25712
25713
- fns[s->sew - 1](dest, t1, cpu_env, desc);
25714
+ fns[s->sew - 1](dest, t1, tcg_env, desc);
25715
25716
mark_vs_dirty(s);
25717
gen_set_label(over);
25718
@@ -XXX,XX +XXX,XX @@ static bool trans_##NAME(DisasContext *s, arg_rmr *a) \
25719
data = FIELD_DP32(data, VDATA, VTA, s->vta); \
25720
data = FIELD_DP32(data, VDATA, VMA, s->vma); \
25721
tcg_gen_gvec_3_ptr(vreg_ofs(s, a->rd), vreg_ofs(s, 0), \
25722
- vreg_ofs(s, a->rs2), cpu_env, \
25723
+ vreg_ofs(s, a->rs2), tcg_env, \
25724
s->cfg_ptr->vlen / 8, \
25725
s->cfg_ptr->vlen / 8, data, \
25726
fns[s->sew - 1]); \
25727
@@ -XXX,XX +XXX,XX @@ static bool trans_##NAME(DisasContext *s, arg_rmr *a) \
25728
data = FIELD_DP32(data, VDATA, VTA, s->vta); \
25729
data = FIELD_DP32(data, VDATA, VMA, s->vma); \
25730
tcg_gen_gvec_3_ptr(vreg_ofs(s, a->rd), vreg_ofs(s, 0), \
25731
- vreg_ofs(s, a->rs2), cpu_env, \
25732
+ vreg_ofs(s, a->rs2), tcg_env, \
25733
s->cfg_ptr->vlen / 8, \
25734
s->cfg_ptr->vlen / 8, data, \
25735
fns[s->sew]); \
25736
@@ -XXX,XX +XXX,XX @@ static bool trans_##NAME(DisasContext *s, arg_rmr *a) \
25737
data = FIELD_DP32(data, VDATA, VTA, s->vta); \
25738
data = FIELD_DP32(data, VDATA, VMA, s->vma); \
25739
tcg_gen_gvec_3_ptr(vreg_ofs(s, a->rd), vreg_ofs(s, 0), \
25740
- vreg_ofs(s, a->rs2), cpu_env, \
25741
+ vreg_ofs(s, a->rs2), tcg_env, \
25742
s->cfg_ptr->vlen / 8, \
25743
s->cfg_ptr->vlen / 8, data, \
25744
fns[s->sew - 1]); \
25745
@@ -XXX,XX +XXX,XX @@ static bool trans_##NAME(DisasContext *s, arg_rmr *a) \
25746
data = FIELD_DP32(data, VDATA, VTA, s->vta); \
25747
data = FIELD_DP32(data, VDATA, VMA, s->vma); \
25748
tcg_gen_gvec_3_ptr(vreg_ofs(s, a->rd), vreg_ofs(s, 0), \
25749
- vreg_ofs(s, a->rs2), cpu_env, \
25750
+ vreg_ofs(s, a->rs2), tcg_env, \
25751
s->cfg_ptr->vlen / 8, \
25752
s->cfg_ptr->vlen / 8, data, \
25753
fns[s->sew]); \
25754
@@ -XXX,XX +XXX,XX @@ static bool trans_##NAME(DisasContext *s, arg_r *a) \
25755
FIELD_DP32(data, VDATA, VTA_ALL_1S, s->cfg_vta_all_1s);\
25756
tcg_gen_gvec_4_ptr(vreg_ofs(s, a->rd), vreg_ofs(s, 0), \
25757
vreg_ofs(s, a->rs1), \
25758
- vreg_ofs(s, a->rs2), cpu_env, \
25759
+ vreg_ofs(s, a->rs2), tcg_env, \
25760
s->cfg_ptr->vlen / 8, \
25761
s->cfg_ptr->vlen / 8, data, fn); \
25762
mark_vs_dirty(s); \
25763
@@ -XXX,XX +XXX,XX @@ static bool trans_vcpop_m(DisasContext *s, arg_rmr *a)
25764
desc = tcg_constant_i32(simd_desc(s->cfg_ptr->vlen / 8,
25765
s->cfg_ptr->vlen / 8, data));
25766
25767
- tcg_gen_addi_ptr(src2, cpu_env, vreg_ofs(s, a->rs2));
25768
- tcg_gen_addi_ptr(mask, cpu_env, vreg_ofs(s, 0));
25769
+ tcg_gen_addi_ptr(src2, tcg_env, vreg_ofs(s, a->rs2));
25770
+ tcg_gen_addi_ptr(mask, tcg_env, vreg_ofs(s, 0));
25771
25772
- gen_helper_vcpop_m(dst, mask, src2, cpu_env, desc);
25773
+ gen_helper_vcpop_m(dst, mask, src2, tcg_env, desc);
25774
gen_set_gpr(s, a->rd, dst);
25775
return true;
25776
}
25777
@@ -XXX,XX +XXX,XX @@ static bool trans_vfirst_m(DisasContext *s, arg_rmr *a)
25778
desc = tcg_constant_i32(simd_desc(s->cfg_ptr->vlen / 8,
25779
s->cfg_ptr->vlen / 8, data));
25780
25781
- tcg_gen_addi_ptr(src2, cpu_env, vreg_ofs(s, a->rs2));
25782
- tcg_gen_addi_ptr(mask, cpu_env, vreg_ofs(s, 0));
25783
+ tcg_gen_addi_ptr(src2, tcg_env, vreg_ofs(s, a->rs2));
25784
+ tcg_gen_addi_ptr(mask, tcg_env, vreg_ofs(s, 0));
25785
25786
- gen_helper_vfirst_m(dst, mask, src2, cpu_env, desc);
25787
+ gen_helper_vfirst_m(dst, mask, src2, tcg_env, desc);
25788
gen_set_gpr(s, a->rd, dst);
25789
return true;
25790
}
25791
@@ -XXX,XX +XXX,XX @@ static bool trans_##NAME(DisasContext *s, arg_rmr *a) \
25792
data = FIELD_DP32(data, VDATA, VMA, s->vma); \
25793
tcg_gen_gvec_3_ptr(vreg_ofs(s, a->rd), \
25794
vreg_ofs(s, 0), vreg_ofs(s, a->rs2), \
25795
- cpu_env, s->cfg_ptr->vlen / 8, \
25796
+ tcg_env, s->cfg_ptr->vlen / 8, \
25797
s->cfg_ptr->vlen / 8, \
25798
data, fn); \
25799
mark_vs_dirty(s); \
25800
@@ -XXX,XX +XXX,XX @@ static bool trans_viota_m(DisasContext *s, arg_viota_m *a)
25801
gen_helper_viota_m_w, gen_helper_viota_m_d,
25802
};
25803
tcg_gen_gvec_3_ptr(vreg_ofs(s, a->rd), vreg_ofs(s, 0),
25804
- vreg_ofs(s, a->rs2), cpu_env,
25805
+ vreg_ofs(s, a->rs2), tcg_env,
25806
s->cfg_ptr->vlen / 8,
25807
s->cfg_ptr->vlen / 8, data, fns[s->sew]);
25808
mark_vs_dirty(s);
25809
@@ -XXX,XX +XXX,XX @@ static bool trans_vid_v(DisasContext *s, arg_vid_v *a)
25810
gen_helper_vid_v_w, gen_helper_vid_v_d,
25811
};
25812
tcg_gen_gvec_2_ptr(vreg_ofs(s, a->rd), vreg_ofs(s, 0),
25813
- cpu_env, s->cfg_ptr->vlen / 8,
25814
+ tcg_env, s->cfg_ptr->vlen / 8,
25815
s->cfg_ptr->vlen / 8,
25816
data, fns[s->sew]);
25817
mark_vs_dirty(s);
25818
@@ -XXX,XX +XXX,XX @@ static void vec_element_loadx(DisasContext *s, TCGv_i64 dest,
25819
25820
/* Convert the index to a pointer. */
25821
tcg_gen_ext_i32_ptr(base, ofs);
25822
- tcg_gen_add_ptr(base, base, cpu_env);
25823
+ tcg_gen_add_ptr(base, base, tcg_env);
25824
25825
/* Perform the load. */
25826
load_element(dest, base,
25827
@@ -XXX,XX +XXX,XX @@ static void vec_element_loadx(DisasContext *s, TCGv_i64 dest,
25828
static void vec_element_loadi(DisasContext *s, TCGv_i64 dest,
25829
int vreg, int idx, bool sign)
25830
{
25831
- load_element(dest, cpu_env, endian_ofs(s, vreg, idx), s->sew, sign);
25832
+ load_element(dest, tcg_env, endian_ofs(s, vreg, idx), s->sew, sign);
25833
}
25834
25835
/* Integer Scalar Move Instruction */
25836
@@ -XXX,XX +XXX,XX @@ static void store_element(TCGv_i64 val, TCGv_ptr base,
25837
static void vec_element_storei(DisasContext *s, int vreg,
25838
int idx, TCGv_i64 val)
25839
{
25840
- store_element(val, cpu_env, endian_ofs(s, vreg, idx), s->sew);
25841
+ store_element(val, tcg_env, endian_ofs(s, vreg, idx), s->sew);
25842
}
25843
25844
/* vmv.x.s rd, vs2 # x[rd] = vs2[0] */
25845
@@ -XXX,XX +XXX,XX @@ static bool trans_vcompress_vm(DisasContext *s, arg_r *a)
25846
data = FIELD_DP32(data, VDATA, VTA, s->vta);
25847
tcg_gen_gvec_4_ptr(vreg_ofs(s, a->rd), vreg_ofs(s, 0),
25848
vreg_ofs(s, a->rs1), vreg_ofs(s, a->rs2),
25849
- cpu_env, s->cfg_ptr->vlen / 8,
25850
+ tcg_env, s->cfg_ptr->vlen / 8,
25851
s->cfg_ptr->vlen / 8, data,
25852
fns[s->sew]);
25853
mark_vs_dirty(s);
25854
@@ -XXX,XX +XXX,XX @@ static bool trans_##NAME(DisasContext *s, arg_##NAME * a) \
25855
TCGLabel *over = gen_new_label(); \
25856
tcg_gen_brcondi_tl(TCG_COND_GEU, cpu_vstart, maxsz, over); \
25857
tcg_gen_gvec_2_ptr(vreg_ofs(s, a->rd), vreg_ofs(s, a->rs2), \
25858
- cpu_env, maxsz, maxsz, 0, gen_helper_vmvr_v); \
25859
+ tcg_env, maxsz, maxsz, 0, gen_helper_vmvr_v); \
25860
mark_vs_dirty(s); \
25861
gen_set_label(over); \
25862
} \
25863
@@ -XXX,XX +XXX,XX @@ static bool int_ext_op(DisasContext *s, arg_rmr *a, uint8_t seq)
25864
data = FIELD_DP32(data, VDATA, VMA, s->vma);
25865
25866
tcg_gen_gvec_3_ptr(vreg_ofs(s, a->rd), vreg_ofs(s, 0),
25867
- vreg_ofs(s, a->rs2), cpu_env,
25868
+ vreg_ofs(s, a->rs2), tcg_env,
25869
s->cfg_ptr->vlen / 8,
25870
s->cfg_ptr->vlen / 8, data, fn);
25871
25872
diff --git a/target/riscv/insn_trans/trans_rvvk.c.inc b/target/riscv/insn_trans/trans_rvvk.c.inc
25873
index XXXXXXX..XXXXXXX 100644
25874
--- a/target/riscv/insn_trans/trans_rvvk.c.inc
25875
+++ b/target/riscv/insn_trans/trans_rvvk.c.inc
25876
@@ -XXX,XX +XXX,XX @@ GEN_OPIVX_GVEC_TRANS_CHECK(vandn_vx, andcs, zvbb_vx_check)
25877
data = FIELD_DP32(data, VDATA, VTA_ALL_1S, s->cfg_vta_all_1s); \
25878
data = FIELD_DP32(data, VDATA, VMA, s->vma); \
25879
tcg_gen_gvec_3_ptr(vreg_ofs(s, a->rd), vreg_ofs(s, 0), \
25880
- vreg_ofs(s, a->rs2), cpu_env, \
25881
+ vreg_ofs(s, a->rs2), tcg_env, \
25882
s->cfg_ptr->vlen / 8, s->cfg_ptr->vlen / 8, \
25883
data, fns[s->sew]); \
25884
mark_vs_dirty(s); \
25885
@@ -XXX,XX +XXX,XX @@ GEN_OPIVI_WIDEN_TRANS(vwsll_vi, IMM_ZX, vwsll_vx, vwsll_vx_check)
25886
/* save opcode for unwinding in case we throw an exception */ \
25887
decode_save_opc(s); \
25888
egs = tcg_constant_i32(EGS); \
25889
- gen_helper_egs_check(egs, cpu_env); \
25890
+ gen_helper_egs_check(egs, tcg_env); \
25891
tcg_gen_brcond_tl(TCG_COND_GEU, cpu_vstart, cpu_vl, over); \
25892
} \
25893
\
25894
@@ -XXX,XX +XXX,XX @@ GEN_OPIVI_WIDEN_TRANS(vwsll_vi, IMM_ZX, vwsll_vx, vwsll_vx_check)
25895
rs2_v = tcg_temp_new_ptr(); \
25896
desc = tcg_constant_i32( \
25897
simd_desc(s->cfg_ptr->vlen / 8, s->cfg_ptr->vlen / 8, data)); \
25898
- tcg_gen_addi_ptr(rd_v, cpu_env, vreg_ofs(s, a->rd)); \
25899
- tcg_gen_addi_ptr(rs2_v, cpu_env, vreg_ofs(s, a->rs2)); \
25900
- gen_helper_##NAME(rd_v, rs2_v, cpu_env, desc); \
25901
+ tcg_gen_addi_ptr(rd_v, tcg_env, vreg_ofs(s, a->rd)); \
25902
+ tcg_gen_addi_ptr(rs2_v, tcg_env, vreg_ofs(s, a->rs2)); \
25903
+ gen_helper_##NAME(rd_v, rs2_v, tcg_env, desc); \
25904
mark_vs_dirty(s); \
25905
gen_set_label(over); \
25906
return true; \
25907
@@ -XXX,XX +XXX,XX @@ GEN_V_UNMASKED_TRANS(vaesem_vs, vaes_check_vs, ZVKNED_EGS)
25908
/* save opcode for unwinding in case we throw an exception */ \
25909
decode_save_opc(s); \
25910
egs = tcg_constant_i32(EGS); \
25911
- gen_helper_egs_check(egs, cpu_env); \
25912
+ gen_helper_egs_check(egs, tcg_env); \
25913
tcg_gen_brcond_tl(TCG_COND_GEU, cpu_vstart, cpu_vl, over); \
25914
} \
25915
\
25916
@@ -XXX,XX +XXX,XX @@ GEN_V_UNMASKED_TRANS(vaesem_vs, vaes_check_vs, ZVKNED_EGS)
25917
uimm_v = tcg_constant_i32(a->rs1); \
25918
desc = tcg_constant_i32( \
25919
simd_desc(s->cfg_ptr->vlen / 8, s->cfg_ptr->vlen / 8, data)); \
25920
- tcg_gen_addi_ptr(rd_v, cpu_env, vreg_ofs(s, a->rd)); \
25921
- tcg_gen_addi_ptr(rs2_v, cpu_env, vreg_ofs(s, a->rs2)); \
25922
- gen_helper_##NAME(rd_v, rs2_v, uimm_v, cpu_env, desc); \
25923
+ tcg_gen_addi_ptr(rd_v, tcg_env, vreg_ofs(s, a->rd)); \
25924
+ tcg_gen_addi_ptr(rs2_v, tcg_env, vreg_ofs(s, a->rs2)); \
25925
+ gen_helper_##NAME(rd_v, rs2_v, uimm_v, tcg_env, desc); \
25926
mark_vs_dirty(s); \
25927
gen_set_label(over); \
25928
return true; \
25929
@@ -XXX,XX +XXX,XX @@ GEN_VI_UNMASKED_TRANS(vaeskf2_vi, vaeskf2_check, ZVKNED_EGS)
25930
/* save opcode for unwinding in case we throw an exception */ \
25931
decode_save_opc(s); \
25932
egs = tcg_constant_i32(EGS); \
25933
- gen_helper_egs_check(egs, cpu_env); \
25934
+ gen_helper_egs_check(egs, tcg_env); \
25935
tcg_gen_brcond_tl(TCG_COND_GEU, cpu_vstart, cpu_vl, over); \
25936
} \
25937
\
25938
@@ -XXX,XX +XXX,XX @@ GEN_VI_UNMASKED_TRANS(vaeskf2_vi, vaeskf2_check, ZVKNED_EGS)
25939
data = FIELD_DP32(data, VDATA, VMA, s->vma); \
25940
\
25941
tcg_gen_gvec_3_ptr(vreg_ofs(s, a->rd), vreg_ofs(s, a->rs1), \
25942
- vreg_ofs(s, a->rs2), cpu_env, \
25943
+ vreg_ofs(s, a->rs2), tcg_env, \
25944
s->cfg_ptr->vlen / 8, s->cfg_ptr->vlen / 8, \
25945
data, gen_helper_##NAME); \
25946
\
25947
@@ -XXX,XX +XXX,XX @@ static bool trans_vsha2cl_vv(DisasContext *s, arg_rmrr *a)
25948
/* save opcode for unwinding in case we throw an exception */
25949
decode_save_opc(s);
25950
egs = tcg_constant_i32(ZVKNH_EGS);
25951
- gen_helper_egs_check(egs, cpu_env);
25952
+ gen_helper_egs_check(egs, tcg_env);
25953
tcg_gen_brcond_tl(TCG_COND_GEU, cpu_vstart, cpu_vl, over);
25954
}
25955
25956
@@ -XXX,XX +XXX,XX @@ static bool trans_vsha2cl_vv(DisasContext *s, arg_rmrr *a)
25957
data = FIELD_DP32(data, VDATA, VMA, s->vma);
25958
25959
tcg_gen_gvec_3_ptr(vreg_ofs(s, a->rd), vreg_ofs(s, a->rs1),
25960
- vreg_ofs(s, a->rs2), cpu_env, s->cfg_ptr->vlen / 8,
25961
+ vreg_ofs(s, a->rs2), tcg_env, s->cfg_ptr->vlen / 8,
25962
s->cfg_ptr->vlen / 8, data,
25963
s->sew == MO_32 ?
25964
gen_helper_vsha2cl32_vv : gen_helper_vsha2cl64_vv);
25965
@@ -XXX,XX +XXX,XX @@ static bool trans_vsha2ch_vv(DisasContext *s, arg_rmrr *a)
25966
/* save opcode for unwinding in case we throw an exception */
25967
decode_save_opc(s);
25968
egs = tcg_constant_i32(ZVKNH_EGS);
25969
- gen_helper_egs_check(egs, cpu_env);
25970
+ gen_helper_egs_check(egs, tcg_env);
25971
tcg_gen_brcond_tl(TCG_COND_GEU, cpu_vstart, cpu_vl, over);
25972
}
25973
25974
@@ -XXX,XX +XXX,XX @@ static bool trans_vsha2ch_vv(DisasContext *s, arg_rmrr *a)
25975
data = FIELD_DP32(data, VDATA, VMA, s->vma);
25976
25977
tcg_gen_gvec_3_ptr(vreg_ofs(s, a->rd), vreg_ofs(s, a->rs1),
25978
- vreg_ofs(s, a->rs2), cpu_env, s->cfg_ptr->vlen / 8,
25979
+ vreg_ofs(s, a->rs2), tcg_env, s->cfg_ptr->vlen / 8,
25980
s->cfg_ptr->vlen / 8, data,
25981
s->sew == MO_32 ?
25982
gen_helper_vsha2ch32_vv : gen_helper_vsha2ch64_vv);
25983
diff --git a/target/riscv/insn_trans/trans_rvzce.c.inc b/target/riscv/insn_trans/trans_rvzce.c.inc
25984
index XXXXXXX..XXXXXXX 100644
25985
--- a/target/riscv/insn_trans/trans_rvzce.c.inc
25986
+++ b/target/riscv/insn_trans/trans_rvzce.c.inc
25987
@@ -XXX,XX +XXX,XX @@ static bool trans_cm_jalt(DisasContext *ctx, arg_cm_jalt *a)
25988
* that might come from cpu_ld*_code() in the helper.
25989
*/
25990
gen_update_pc(ctx, 0);
25991
- gen_helper_cm_jalt(cpu_pc, cpu_env, tcg_constant_i32(a->index));
25992
+ gen_helper_cm_jalt(cpu_pc, tcg_env, tcg_constant_i32(a->index));
25993
25994
/* c.jt vs c.jalt depends on the index. */
25995
if (a->index >= 32) {
25996
diff --git a/target/riscv/insn_trans/trans_rvzfa.c.inc b/target/riscv/insn_trans/trans_rvzfa.c.inc
25997
index XXXXXXX..XXXXXXX 100644
25998
--- a/target/riscv/insn_trans/trans_rvzfa.c.inc
25999
+++ b/target/riscv/insn_trans/trans_rvzfa.c.inc
26000
@@ -XXX,XX +XXX,XX @@ static bool trans_fminm_s(DisasContext *ctx, arg_fminm_s *a)
26001
TCGv_i64 src1 = get_fpr_hs(ctx, a->rs1);
26002
TCGv_i64 src2 = get_fpr_hs(ctx, a->rs2);
26003
26004
- gen_helper_fminm_s(dest, cpu_env, src1, src2);
26005
+ gen_helper_fminm_s(dest, tcg_env, src1, src2);
26006
gen_set_fpr_hs(ctx, a->rd, dest);
26007
26008
mark_fs_dirty(ctx);
26009
@@ -XXX,XX +XXX,XX @@ static bool trans_fmaxm_s(DisasContext *ctx, arg_fmaxm_s *a)
26010
TCGv_i64 src1 = get_fpr_hs(ctx, a->rs1);
26011
TCGv_i64 src2 = get_fpr_hs(ctx, a->rs2);
26012
26013
- gen_helper_fmaxm_s(dest, cpu_env, src1, src2);
26014
+ gen_helper_fmaxm_s(dest, tcg_env, src1, src2);
26015
gen_set_fpr_hs(ctx, a->rd, dest);
26016
26017
mark_fs_dirty(ctx);
26018
@@ -XXX,XX +XXX,XX @@ static bool trans_fminm_d(DisasContext *ctx, arg_fminm_d *a)
26019
TCGv_i64 src1 = get_fpr_d(ctx, a->rs1);
26020
TCGv_i64 src2 = get_fpr_d(ctx, a->rs2);
26021
26022
- gen_helper_fminm_d(dest, cpu_env, src1, src2);
26023
+ gen_helper_fminm_d(dest, tcg_env, src1, src2);
26024
gen_set_fpr_d(ctx, a->rd, dest);
26025
26026
mark_fs_dirty(ctx);
26027
@@ -XXX,XX +XXX,XX @@ static bool trans_fmaxm_d(DisasContext *ctx, arg_fmaxm_d *a)
26028
TCGv_i64 src1 = get_fpr_d(ctx, a->rs1);
26029
TCGv_i64 src2 = get_fpr_d(ctx, a->rs2);
26030
26031
- gen_helper_fmaxm_d(dest, cpu_env, src1, src2);
26032
+ gen_helper_fmaxm_d(dest, tcg_env, src1, src2);
26033
gen_set_fpr_d(ctx, a->rd, dest);
26034
26035
mark_fs_dirty(ctx);
26036
@@ -XXX,XX +XXX,XX @@ static bool trans_fminm_h(DisasContext *ctx, arg_fminm_h *a)
26037
TCGv_i64 src1 = get_fpr_hs(ctx, a->rs1);
26038
TCGv_i64 src2 = get_fpr_hs(ctx, a->rs2);
26039
26040
- gen_helper_fminm_h(dest, cpu_env, src1, src2);
26041
+ gen_helper_fminm_h(dest, tcg_env, src1, src2);
26042
gen_set_fpr_hs(ctx, a->rd, dest);
26043
26044
mark_fs_dirty(ctx);
26045
@@ -XXX,XX +XXX,XX @@ static bool trans_fmaxm_h(DisasContext *ctx, arg_fmaxm_h *a)
26046
TCGv_i64 src1 = get_fpr_hs(ctx, a->rs1);
26047
TCGv_i64 src2 = get_fpr_hs(ctx, a->rs2);
26048
26049
- gen_helper_fmaxm_h(dest, cpu_env, src1, src2);
26050
+ gen_helper_fmaxm_h(dest, tcg_env, src1, src2);
26051
gen_set_fpr_hs(ctx, a->rd, dest);
26052
26053
mark_fs_dirty(ctx);
26054
@@ -XXX,XX +XXX,XX @@ static bool trans_fround_s(DisasContext *ctx, arg_fround_s *a)
26055
TCGv_i64 src1 = get_fpr_hs(ctx, a->rs1);
26056
26057
gen_set_rm(ctx, a->rm);
26058
- gen_helper_fround_s(dest, cpu_env, src1);
26059
+ gen_helper_fround_s(dest, tcg_env, src1);
26060
gen_set_fpr_hs(ctx, a->rd, dest);
26061
26062
mark_fs_dirty(ctx);
26063
@@ -XXX,XX +XXX,XX @@ static bool trans_froundnx_s(DisasContext *ctx, arg_froundnx_s *a)
26064
TCGv_i64 src1 = get_fpr_hs(ctx, a->rs1);
26065
26066
gen_set_rm(ctx, a->rm);
26067
- gen_helper_froundnx_s(dest, cpu_env, src1);
26068
+ gen_helper_froundnx_s(dest, tcg_env, src1);
26069
gen_set_fpr_hs(ctx, a->rd, dest);
26070
26071
mark_fs_dirty(ctx);
26072
@@ -XXX,XX +XXX,XX @@ static bool trans_fround_d(DisasContext *ctx, arg_fround_d *a)
26073
TCGv_i64 src1 = get_fpr_d(ctx, a->rs1);
26074
26075
gen_set_rm(ctx, a->rm);
26076
- gen_helper_fround_d(dest, cpu_env, src1);
26077
+ gen_helper_fround_d(dest, tcg_env, src1);
26078
gen_set_fpr_hs(ctx, a->rd, dest);
26079
26080
mark_fs_dirty(ctx);
26081
@@ -XXX,XX +XXX,XX @@ static bool trans_froundnx_d(DisasContext *ctx, arg_froundnx_d *a)
26082
TCGv_i64 src1 = get_fpr_d(ctx, a->rs1);
26083
26084
gen_set_rm(ctx, a->rm);
26085
- gen_helper_froundnx_d(dest, cpu_env, src1);
26086
+ gen_helper_froundnx_d(dest, tcg_env, src1);
26087
gen_set_fpr_hs(ctx, a->rd, dest);
26088
26089
mark_fs_dirty(ctx);
26090
@@ -XXX,XX +XXX,XX @@ static bool trans_fround_h(DisasContext *ctx, arg_fround_h *a)
26091
TCGv_i64 src1 = get_fpr_hs(ctx, a->rs1);
26092
26093
gen_set_rm(ctx, a->rm);
26094
- gen_helper_fround_h(dest, cpu_env, src1);
26095
+ gen_helper_fround_h(dest, tcg_env, src1);
26096
gen_set_fpr_hs(ctx, a->rd, dest);
26097
26098
mark_fs_dirty(ctx);
26099
@@ -XXX,XX +XXX,XX @@ static bool trans_froundnx_h(DisasContext *ctx, arg_froundnx_h *a)
26100
TCGv_i64 src1 = get_fpr_hs(ctx, a->rs1);
26101
26102
gen_set_rm(ctx, a->rm);
26103
- gen_helper_froundnx_h(dest, cpu_env, src1);
26104
+ gen_helper_froundnx_h(dest, tcg_env, src1);
26105
gen_set_fpr_hs(ctx, a->rd, dest);
26106
26107
mark_fs_dirty(ctx);
26108
@@ -XXX,XX +XXX,XX @@ bool trans_fcvtmod_w_d(DisasContext *ctx, arg_fcvtmod_w_d *a)
26109
26110
/* Rounding mode is RTZ. */
26111
gen_set_rm(ctx, RISCV_FRM_RTZ);
26112
- gen_helper_fcvtmod_w_d(t1, cpu_env, src1);
26113
+ gen_helper_fcvtmod_w_d(t1, tcg_env, src1);
26114
tcg_gen_trunc_i64_tl(dst, t1);
26115
gen_set_gpr(ctx, a->rd, dst);
26116
26117
@@ -XXX,XX +XXX,XX @@ bool trans_fleq_s(DisasContext *ctx, arg_fleq_s *a)
26118
TCGv_i64 src1 = get_fpr_hs(ctx, a->rs1);
26119
TCGv_i64 src2 = get_fpr_hs(ctx, a->rs2);
26120
26121
- gen_helper_fleq_s(dest, cpu_env, src1, src2);
26122
+ gen_helper_fleq_s(dest, tcg_env, src1, src2);
26123
gen_set_gpr(ctx, a->rd, dest);
26124
return true;
26125
}
26126
@@ -XXX,XX +XXX,XX @@ bool trans_fltq_s(DisasContext *ctx, arg_fltq_s *a)
26127
TCGv_i64 src1 = get_fpr_hs(ctx, a->rs1);
26128
TCGv_i64 src2 = get_fpr_hs(ctx, a->rs2);
26129
26130
- gen_helper_fltq_s(dest, cpu_env, src1, src2);
26131
+ gen_helper_fltq_s(dest, tcg_env, src1, src2);
26132
gen_set_gpr(ctx, a->rd, dest);
26133
return true;
26134
}
26135
@@ -XXX,XX +XXX,XX @@ bool trans_fleq_d(DisasContext *ctx, arg_fleq_d *a)
26136
TCGv_i64 src1 = get_fpr_hs(ctx, a->rs1);
26137
TCGv_i64 src2 = get_fpr_hs(ctx, a->rs2);
26138
26139
- gen_helper_fleq_d(dest, cpu_env, src1, src2);
26140
+ gen_helper_fleq_d(dest, tcg_env, src1, src2);
26141
gen_set_gpr(ctx, a->rd, dest);
26142
return true;
26143
}
26144
@@ -XXX,XX +XXX,XX @@ bool trans_fltq_d(DisasContext *ctx, arg_fltq_d *a)
26145
TCGv_i64 src1 = get_fpr_hs(ctx, a->rs1);
26146
TCGv_i64 src2 = get_fpr_hs(ctx, a->rs2);
26147
26148
- gen_helper_fltq_d(dest, cpu_env, src1, src2);
26149
+ gen_helper_fltq_d(dest, tcg_env, src1, src2);
26150
gen_set_gpr(ctx, a->rd, dest);
26151
return true;
26152
}
26153
@@ -XXX,XX +XXX,XX @@ bool trans_fleq_h(DisasContext *ctx, arg_fleq_h *a)
26154
TCGv_i64 src1 = get_fpr_hs(ctx, a->rs1);
26155
TCGv_i64 src2 = get_fpr_hs(ctx, a->rs2);
26156
26157
- gen_helper_fleq_h(dest, cpu_env, src1, src2);
26158
+ gen_helper_fleq_h(dest, tcg_env, src1, src2);
26159
gen_set_gpr(ctx, a->rd, dest);
26160
return true;
26161
}
26162
@@ -XXX,XX +XXX,XX @@ bool trans_fltq_h(DisasContext *ctx, arg_fltq_h *a)
26163
TCGv_i64 src1 = get_fpr_hs(ctx, a->rs1);
26164
TCGv_i64 src2 = get_fpr_hs(ctx, a->rs2);
26165
26166
- gen_helper_fltq_h(dest, cpu_env, src1, src2);
26167
+ gen_helper_fltq_h(dest, tcg_env, src1, src2);
26168
gen_set_gpr(ctx, a->rd, dest);
26169
return true;
26170
}
26171
diff --git a/target/riscv/insn_trans/trans_rvzfh.c.inc b/target/riscv/insn_trans/trans_rvzfh.c.inc
26172
index XXXXXXX..XXXXXXX 100644
26173
--- a/target/riscv/insn_trans/trans_rvzfh.c.inc
26174
+++ b/target/riscv/insn_trans/trans_rvzfh.c.inc
26175
@@ -XXX,XX +XXX,XX @@ static bool trans_fmadd_h(DisasContext *ctx, arg_fmadd_h *a)
26176
TCGv_i64 src3 = get_fpr_hs(ctx, a->rs3);
26177
26178
gen_set_rm(ctx, a->rm);
26179
- gen_helper_fmadd_h(dest, cpu_env, src1, src2, src3);
26180
+ gen_helper_fmadd_h(dest, tcg_env, src1, src2, src3);
26181
gen_set_fpr_hs(ctx, a->rd, dest);
26182
mark_fs_dirty(ctx);
26183
return true;
26184
@@ -XXX,XX +XXX,XX @@ static bool trans_fmsub_h(DisasContext *ctx, arg_fmsub_h *a)
26185
TCGv_i64 src3 = get_fpr_hs(ctx, a->rs3);
26186
26187
gen_set_rm(ctx, a->rm);
26188
- gen_helper_fmsub_h(dest, cpu_env, src1, src2, src3);
26189
+ gen_helper_fmsub_h(dest, tcg_env, src1, src2, src3);
26190
gen_set_fpr_hs(ctx, a->rd, dest);
26191
mark_fs_dirty(ctx);
26192
return true;
26193
@@ -XXX,XX +XXX,XX @@ static bool trans_fnmsub_h(DisasContext *ctx, arg_fnmsub_h *a)
26194
TCGv_i64 src3 = get_fpr_hs(ctx, a->rs3);
26195
26196
gen_set_rm(ctx, a->rm);
26197
- gen_helper_fnmsub_h(dest, cpu_env, src1, src2, src3);
26198
+ gen_helper_fnmsub_h(dest, tcg_env, src1, src2, src3);
26199
gen_set_fpr_hs(ctx, a->rd, dest);
26200
mark_fs_dirty(ctx);
26201
return true;
26202
@@ -XXX,XX +XXX,XX @@ static bool trans_fnmadd_h(DisasContext *ctx, arg_fnmadd_h *a)
26203
TCGv_i64 src3 = get_fpr_hs(ctx, a->rs3);
26204
26205
gen_set_rm(ctx, a->rm);
26206
- gen_helper_fnmadd_h(dest, cpu_env, src1, src2, src3);
26207
+ gen_helper_fnmadd_h(dest, tcg_env, src1, src2, src3);
26208
gen_set_fpr_hs(ctx, a->rd, dest);
26209
mark_fs_dirty(ctx);
26210
return true;
26211
@@ -XXX,XX +XXX,XX @@ static bool trans_fadd_h(DisasContext *ctx, arg_fadd_h *a)
26212
TCGv_i64 src2 = get_fpr_hs(ctx, a->rs2);
26213
26214
gen_set_rm(ctx, a->rm);
26215
- gen_helper_fadd_h(dest, cpu_env, src1, src2);
26216
+ gen_helper_fadd_h(dest, tcg_env, src1, src2);
26217
gen_set_fpr_hs(ctx, a->rd, dest);
26218
mark_fs_dirty(ctx);
26219
return true;
26220
@@ -XXX,XX +XXX,XX @@ static bool trans_fsub_h(DisasContext *ctx, arg_fsub_h *a)
26221
TCGv_i64 src2 = get_fpr_hs(ctx, a->rs2);
26222
26223
gen_set_rm(ctx, a->rm);
26224
- gen_helper_fsub_h(dest, cpu_env, src1, src2);
26225
+ gen_helper_fsub_h(dest, tcg_env, src1, src2);
26226
gen_set_fpr_hs(ctx, a->rd, dest);
26227
mark_fs_dirty(ctx);
26228
return true;
26229
@@ -XXX,XX +XXX,XX @@ static bool trans_fmul_h(DisasContext *ctx, arg_fmul_h *a)
26230
TCGv_i64 src2 = get_fpr_hs(ctx, a->rs2);
26231
26232
gen_set_rm(ctx, a->rm);
26233
- gen_helper_fmul_h(dest, cpu_env, src1, src2);
26234
+ gen_helper_fmul_h(dest, tcg_env, src1, src2);
26235
gen_set_fpr_hs(ctx, a->rd, dest);
26236
mark_fs_dirty(ctx);
26237
return true;
26238
@@ -XXX,XX +XXX,XX @@ static bool trans_fdiv_h(DisasContext *ctx, arg_fdiv_h *a)
26239
TCGv_i64 src2 = get_fpr_hs(ctx, a->rs2);
26240
26241
gen_set_rm(ctx, a->rm);
26242
- gen_helper_fdiv_h(dest, cpu_env, src1, src2);
26243
+ gen_helper_fdiv_h(dest, tcg_env, src1, src2);
26244
gen_set_fpr_hs(ctx, a->rd, dest);
26245
mark_fs_dirty(ctx);
26246
return true;
26247
@@ -XXX,XX +XXX,XX @@ static bool trans_fsqrt_h(DisasContext *ctx, arg_fsqrt_h *a)
26248
TCGv_i64 src1 = get_fpr_hs(ctx, a->rs1);
26249
26250
gen_set_rm(ctx, a->rm);
26251
- gen_helper_fsqrt_h(dest, cpu_env, src1);
26252
+ gen_helper_fsqrt_h(dest, tcg_env, src1);
26253
gen_set_fpr_hs(ctx, a->rd, dest);
26254
mark_fs_dirty(ctx);
26255
return true;
26256
@@ -XXX,XX +XXX,XX @@ static bool trans_fmin_h(DisasContext *ctx, arg_fmin_h *a)
26257
TCGv_i64 src1 = get_fpr_hs(ctx, a->rs1);
26258
TCGv_i64 src2 = get_fpr_hs(ctx, a->rs2);
26259
26260
- gen_helper_fmin_h(dest, cpu_env, src1, src2);
26261
+ gen_helper_fmin_h(dest, tcg_env, src1, src2);
26262
gen_set_fpr_hs(ctx, a->rd, dest);
26263
mark_fs_dirty(ctx);
26264
return true;
26265
@@ -XXX,XX +XXX,XX @@ static bool trans_fmax_h(DisasContext *ctx, arg_fmax_h *a)
26266
TCGv_i64 src1 = get_fpr_hs(ctx, a->rs1);
26267
TCGv_i64 src2 = get_fpr_hs(ctx, a->rs2);
26268
26269
- gen_helper_fmax_h(dest, cpu_env, src1, src2);
26270
+ gen_helper_fmax_h(dest, tcg_env, src1, src2);
26271
gen_set_fpr_hs(ctx, a->rd, dest);
26272
mark_fs_dirty(ctx);
26273
return true;
26274
@@ -XXX,XX +XXX,XX @@ static bool trans_fcvt_s_h(DisasContext *ctx, arg_fcvt_s_h *a)
26275
TCGv_i64 src1 = get_fpr_hs(ctx, a->rs1);
26276
26277
gen_set_rm(ctx, a->rm);
26278
- gen_helper_fcvt_s_h(dest, cpu_env, src1);
26279
+ gen_helper_fcvt_s_h(dest, tcg_env, src1);
26280
gen_set_fpr_hs(ctx, a->rd, dest);
26281
26282
mark_fs_dirty(ctx);
26283
@@ -XXX,XX +XXX,XX @@ static bool trans_fcvt_d_h(DisasContext *ctx, arg_fcvt_d_h *a)
26284
TCGv_i64 src1 = get_fpr_hs(ctx, a->rs1);
26285
26286
gen_set_rm(ctx, a->rm);
26287
- gen_helper_fcvt_d_h(dest, cpu_env, src1);
26288
+ gen_helper_fcvt_d_h(dest, tcg_env, src1);
26289
gen_set_fpr_d(ctx, a->rd, dest);
26290
26291
mark_fs_dirty(ctx);
26292
@@ -XXX,XX +XXX,XX @@ static bool trans_fcvt_h_s(DisasContext *ctx, arg_fcvt_h_s *a)
26293
TCGv_i64 src1 = get_fpr_hs(ctx, a->rs1);
26294
26295
gen_set_rm(ctx, a->rm);
26296
- gen_helper_fcvt_h_s(dest, cpu_env, src1);
26297
+ gen_helper_fcvt_h_s(dest, tcg_env, src1);
26298
gen_set_fpr_hs(ctx, a->rd, dest);
26299
mark_fs_dirty(ctx);
26300
26301
@@ -XXX,XX +XXX,XX @@ static bool trans_fcvt_h_d(DisasContext *ctx, arg_fcvt_h_d *a)
26302
TCGv_i64 src1 = get_fpr_d(ctx, a->rs1);
26303
26304
gen_set_rm(ctx, a->rm);
26305
- gen_helper_fcvt_h_d(dest, cpu_env, src1);
26306
+ gen_helper_fcvt_h_d(dest, tcg_env, src1);
26307
gen_set_fpr_hs(ctx, a->rd, dest);
26308
mark_fs_dirty(ctx);
26309
26310
@@ -XXX,XX +XXX,XX @@ static bool trans_feq_h(DisasContext *ctx, arg_feq_h *a)
26311
TCGv_i64 src1 = get_fpr_hs(ctx, a->rs1);
26312
TCGv_i64 src2 = get_fpr_hs(ctx, a->rs2);
26313
26314
- gen_helper_feq_h(dest, cpu_env, src1, src2);
26315
+ gen_helper_feq_h(dest, tcg_env, src1, src2);
26316
gen_set_gpr(ctx, a->rd, dest);
26317
return true;
26318
}
26319
@@ -XXX,XX +XXX,XX @@ static bool trans_flt_h(DisasContext *ctx, arg_flt_h *a)
26320
TCGv_i64 src1 = get_fpr_hs(ctx, a->rs1);
26321
TCGv_i64 src2 = get_fpr_hs(ctx, a->rs2);
26322
26323
- gen_helper_flt_h(dest, cpu_env, src1, src2);
26324
+ gen_helper_flt_h(dest, tcg_env, src1, src2);
26325
gen_set_gpr(ctx, a->rd, dest);
26326
26327
return true;
26328
@@ -XXX,XX +XXX,XX @@ static bool trans_fle_h(DisasContext *ctx, arg_fle_h *a)
26329
TCGv_i64 src1 = get_fpr_hs(ctx, a->rs1);
26330
TCGv_i64 src2 = get_fpr_hs(ctx, a->rs2);
26331
26332
- gen_helper_fle_h(dest, cpu_env, src1, src2);
26333
+ gen_helper_fle_h(dest, tcg_env, src1, src2);
26334
gen_set_gpr(ctx, a->rd, dest);
26335
return true;
26336
}
26337
@@ -XXX,XX +XXX,XX @@ static bool trans_fclass_h(DisasContext *ctx, arg_fclass_h *a)
26338
TCGv dest = dest_gpr(ctx, a->rd);
26339
TCGv_i64 src1 = get_fpr_hs(ctx, a->rs1);
26340
26341
- gen_helper_fclass_h(dest, cpu_env, src1);
26342
+ gen_helper_fclass_h(dest, tcg_env, src1);
26343
gen_set_gpr(ctx, a->rd, dest);
26344
return true;
26345
}
26346
@@ -XXX,XX +XXX,XX @@ static bool trans_fcvt_w_h(DisasContext *ctx, arg_fcvt_w_h *a)
26347
TCGv_i64 src1 = get_fpr_hs(ctx, a->rs1);
26348
26349
gen_set_rm(ctx, a->rm);
26350
- gen_helper_fcvt_w_h(dest, cpu_env, src1);
26351
+ gen_helper_fcvt_w_h(dest, tcg_env, src1);
26352
gen_set_gpr(ctx, a->rd, dest);
26353
return true;
26354
}
26355
@@ -XXX,XX +XXX,XX @@ static bool trans_fcvt_wu_h(DisasContext *ctx, arg_fcvt_wu_h *a)
26356
TCGv_i64 src1 = get_fpr_hs(ctx, a->rs1);
26357
26358
gen_set_rm(ctx, a->rm);
26359
- gen_helper_fcvt_wu_h(dest, cpu_env, src1);
26360
+ gen_helper_fcvt_wu_h(dest, tcg_env, src1);
26361
gen_set_gpr(ctx, a->rd, dest);
26362
return true;
26363
}
26364
@@ -XXX,XX +XXX,XX @@ static bool trans_fcvt_h_w(DisasContext *ctx, arg_fcvt_h_w *a)
26365
TCGv t0 = get_gpr(ctx, a->rs1, EXT_SIGN);
26366
26367
gen_set_rm(ctx, a->rm);
26368
- gen_helper_fcvt_h_w(dest, cpu_env, t0);
26369
+ gen_helper_fcvt_h_w(dest, tcg_env, t0);
26370
gen_set_fpr_hs(ctx, a->rd, dest);
26371
26372
mark_fs_dirty(ctx);
26373
@@ -XXX,XX +XXX,XX @@ static bool trans_fcvt_h_wu(DisasContext *ctx, arg_fcvt_h_wu *a)
26374
TCGv t0 = get_gpr(ctx, a->rs1, EXT_SIGN);
26375
26376
gen_set_rm(ctx, a->rm);
26377
- gen_helper_fcvt_h_wu(dest, cpu_env, t0);
26378
+ gen_helper_fcvt_h_wu(dest, tcg_env, t0);
26379
gen_set_fpr_hs(ctx, a->rd, dest);
26380
26381
mark_fs_dirty(ctx);
26382
@@ -XXX,XX +XXX,XX @@ static bool trans_fcvt_l_h(DisasContext *ctx, arg_fcvt_l_h *a)
26383
TCGv_i64 src1 = get_fpr_hs(ctx, a->rs1);
26384
26385
gen_set_rm(ctx, a->rm);
26386
- gen_helper_fcvt_l_h(dest, cpu_env, src1);
26387
+ gen_helper_fcvt_l_h(dest, tcg_env, src1);
26388
gen_set_gpr(ctx, a->rd, dest);
26389
return true;
26390
}
26391
@@ -XXX,XX +XXX,XX @@ static bool trans_fcvt_lu_h(DisasContext *ctx, arg_fcvt_lu_h *a)
26392
TCGv_i64 src1 = get_fpr_hs(ctx, a->rs1);
26393
26394
gen_set_rm(ctx, a->rm);
26395
- gen_helper_fcvt_lu_h(dest, cpu_env, src1);
26396
+ gen_helper_fcvt_lu_h(dest, tcg_env, src1);
26397
gen_set_gpr(ctx, a->rd, dest);
26398
return true;
26399
}
26400
@@ -XXX,XX +XXX,XX @@ static bool trans_fcvt_h_l(DisasContext *ctx, arg_fcvt_h_l *a)
26401
TCGv t0 = get_gpr(ctx, a->rs1, EXT_SIGN);
26402
26403
gen_set_rm(ctx, a->rm);
26404
- gen_helper_fcvt_h_l(dest, cpu_env, t0);
26405
+ gen_helper_fcvt_h_l(dest, tcg_env, t0);
26406
gen_set_fpr_hs(ctx, a->rd, dest);
26407
26408
mark_fs_dirty(ctx);
26409
@@ -XXX,XX +XXX,XX @@ static bool trans_fcvt_h_lu(DisasContext *ctx, arg_fcvt_h_lu *a)
26410
TCGv t0 = get_gpr(ctx, a->rs1, EXT_SIGN);
26411
26412
gen_set_rm(ctx, a->rm);
26413
- gen_helper_fcvt_h_lu(dest, cpu_env, t0);
26414
+ gen_helper_fcvt_h_lu(dest, tcg_env, t0);
26415
gen_set_fpr_hs(ctx, a->rd, dest);
26416
26417
mark_fs_dirty(ctx);
26418
diff --git a/target/riscv/insn_trans/trans_rvzicbo.c.inc b/target/riscv/insn_trans/trans_rvzicbo.c.inc
26419
index XXXXXXX..XXXXXXX 100644
26420
--- a/target/riscv/insn_trans/trans_rvzicbo.c.inc
26421
+++ b/target/riscv/insn_trans/trans_rvzicbo.c.inc
26422
@@ -XXX,XX +XXX,XX @@
26423
static bool trans_cbo_clean(DisasContext *ctx, arg_cbo_clean *a)
26424
{
26425
REQUIRE_ZICBOM(ctx);
26426
- gen_helper_cbo_clean_flush(cpu_env, cpu_gpr[a->rs1]);
26427
+ gen_helper_cbo_clean_flush(tcg_env, cpu_gpr[a->rs1]);
26428
return true;
26429
}
26430
26431
static bool trans_cbo_flush(DisasContext *ctx, arg_cbo_flush *a)
26432
{
26433
REQUIRE_ZICBOM(ctx);
26434
- gen_helper_cbo_clean_flush(cpu_env, cpu_gpr[a->rs1]);
26435
+ gen_helper_cbo_clean_flush(tcg_env, cpu_gpr[a->rs1]);
26436
return true;
26437
}
26438
26439
static bool trans_cbo_inval(DisasContext *ctx, arg_cbo_inval *a)
26440
{
26441
REQUIRE_ZICBOM(ctx);
26442
- gen_helper_cbo_inval(cpu_env, cpu_gpr[a->rs1]);
26443
+ gen_helper_cbo_inval(tcg_env, cpu_gpr[a->rs1]);
26444
return true;
26445
}
26446
26447
static bool trans_cbo_zero(DisasContext *ctx, arg_cbo_zero *a)
26448
{
26449
REQUIRE_ZICBOZ(ctx);
26450
- gen_helper_cbo_zero(cpu_env, cpu_gpr[a->rs1]);
26451
+ gen_helper_cbo_zero(tcg_env, cpu_gpr[a->rs1]);
26452
return true;
26453
}
26454
diff --git a/target/riscv/insn_trans/trans_svinval.c.inc b/target/riscv/insn_trans/trans_svinval.c.inc
26455
index XXXXXXX..XXXXXXX 100644
26456
--- a/target/riscv/insn_trans/trans_svinval.c.inc
26457
+++ b/target/riscv/insn_trans/trans_svinval.c.inc
26458
@@ -XXX,XX +XXX,XX @@ static bool trans_sinval_vma(DisasContext *ctx, arg_sinval_vma *a)
26459
REQUIRE_EXT(ctx, RVS);
26460
#ifndef CONFIG_USER_ONLY
26461
decode_save_opc(ctx);
26462
- gen_helper_tlb_flush(cpu_env);
26463
+ gen_helper_tlb_flush(tcg_env);
26464
return true;
26465
#endif
26466
return false;
26467
@@ -XXX,XX +XXX,XX @@ static bool trans_hinval_vvma(DisasContext *ctx, arg_hinval_vvma *a)
26468
REQUIRE_EXT(ctx, RVH);
26469
#ifndef CONFIG_USER_ONLY
26470
decode_save_opc(ctx);
26471
- gen_helper_hyp_tlb_flush(cpu_env);
26472
+ gen_helper_hyp_tlb_flush(tcg_env);
26473
return true;
26474
#endif
26475
return false;
26476
@@ -XXX,XX +XXX,XX @@ static bool trans_hinval_gvma(DisasContext *ctx, arg_hinval_gvma *a)
26477
REQUIRE_EXT(ctx, RVH);
26478
#ifndef CONFIG_USER_ONLY
26479
decode_save_opc(ctx);
26480
- gen_helper_hyp_gvma_tlb_flush(cpu_env);
26481
+ gen_helper_hyp_gvma_tlb_flush(tcg_env);
26482
return true;
26483
#endif
26484
return false;
26485
diff --git a/target/riscv/insn_trans/trans_xthead.c.inc b/target/riscv/insn_trans/trans_xthead.c.inc
26486
index XXXXXXX..XXXXXXX 100644
26487
--- a/target/riscv/insn_trans/trans_xthead.c.inc
26488
+++ b/target/riscv/insn_trans/trans_xthead.c.inc
26489
@@ -XXX,XX +XXX,XX @@ static bool trans_th_sfence_vmas(DisasContext *ctx, arg_th_sfence_vmas *a)
26490
26491
#ifndef CONFIG_USER_ONLY
26492
REQUIRE_PRIV_MS(ctx);
26493
- gen_helper_tlb_flush_all(cpu_env);
26494
+ gen_helper_tlb_flush_all(tcg_env);
26495
return true;
26496
#else
26497
return false;
26498
diff --git a/target/s390x/tcg/translate_vx.c.inc b/target/s390x/tcg/translate_vx.c.inc
26499
index XXXXXXX..XXXXXXX 100644
26500
--- a/target/s390x/tcg/translate_vx.c.inc
26501
+++ b/target/s390x/tcg/translate_vx.c.inc
26502
@@ -XXX,XX +XXX,XX @@
26503
*
26504
* CC handling:
26505
* As gvec ool-helpers can currently not return values (besides via
26506
- * pointers like vectors or cpu_env), whenever we have to set the CC and
26507
+ * pointers like vectors or tcg_env), whenever we have to set the CC and
26508
* can't conclude the value from the result vector, we will directly
26509
* set it in "env->cc_op" and mark it as static via set_cc_static()".
26510
* Whenever this is done, the helper writes globals (cc_op).
26511
@@ -XXX,XX +XXX,XX @@ static void read_vec_element_i64(TCGv_i64 dst, uint8_t reg, uint8_t enr,
26512
26513
switch ((unsigned)memop) {
26514
case ES_8:
26515
- tcg_gen_ld8u_i64(dst, cpu_env, offs);
26516
+ tcg_gen_ld8u_i64(dst, tcg_env, offs);
26517
break;
26518
case ES_16:
26519
- tcg_gen_ld16u_i64(dst, cpu_env, offs);
26520
+ tcg_gen_ld16u_i64(dst, tcg_env, offs);
26521
break;
26522
case ES_32:
26523
- tcg_gen_ld32u_i64(dst, cpu_env, offs);
26524
+ tcg_gen_ld32u_i64(dst, tcg_env, offs);
26525
break;
26526
case ES_8 | MO_SIGN:
26527
- tcg_gen_ld8s_i64(dst, cpu_env, offs);
26528
+ tcg_gen_ld8s_i64(dst, tcg_env, offs);
26529
break;
26530
case ES_16 | MO_SIGN:
26531
- tcg_gen_ld16s_i64(dst, cpu_env, offs);
26532
+ tcg_gen_ld16s_i64(dst, tcg_env, offs);
26533
break;
26534
case ES_32 | MO_SIGN:
26535
- tcg_gen_ld32s_i64(dst, cpu_env, offs);
26536
+ tcg_gen_ld32s_i64(dst, tcg_env, offs);
26537
break;
26538
case ES_64:
26539
case ES_64 | MO_SIGN:
26540
- tcg_gen_ld_i64(dst, cpu_env, offs);
26541
+ tcg_gen_ld_i64(dst, tcg_env, offs);
26542
break;
26543
default:
26544
g_assert_not_reached();
26545
@@ -XXX,XX +XXX,XX @@ static void read_vec_element_i32(TCGv_i32 dst, uint8_t reg, uint8_t enr,
26546
26547
switch (memop) {
26548
case ES_8:
26549
- tcg_gen_ld8u_i32(dst, cpu_env, offs);
26550
+ tcg_gen_ld8u_i32(dst, tcg_env, offs);
26551
break;
26552
case ES_16:
26553
- tcg_gen_ld16u_i32(dst, cpu_env, offs);
26554
+ tcg_gen_ld16u_i32(dst, tcg_env, offs);
26555
break;
26556
case ES_8 | MO_SIGN:
26557
- tcg_gen_ld8s_i32(dst, cpu_env, offs);
26558
+ tcg_gen_ld8s_i32(dst, tcg_env, offs);
26559
break;
26560
case ES_16 | MO_SIGN:
26561
- tcg_gen_ld16s_i32(dst, cpu_env, offs);
26562
+ tcg_gen_ld16s_i32(dst, tcg_env, offs);
26563
break;
26564
case ES_32:
26565
case ES_32 | MO_SIGN:
26566
- tcg_gen_ld_i32(dst, cpu_env, offs);
26567
+ tcg_gen_ld_i32(dst, tcg_env, offs);
26568
break;
26569
default:
26570
g_assert_not_reached();
26571
@@ -XXX,XX +XXX,XX @@ static void write_vec_element_i64(TCGv_i64 src, int reg, uint8_t enr,
26572
26573
switch (memop) {
26574
case ES_8:
26575
- tcg_gen_st8_i64(src, cpu_env, offs);
26576
+ tcg_gen_st8_i64(src, tcg_env, offs);
26577
break;
26578
case ES_16:
26579
- tcg_gen_st16_i64(src, cpu_env, offs);
26580
+ tcg_gen_st16_i64(src, tcg_env, offs);
26581
break;
26582
case ES_32:
26583
- tcg_gen_st32_i64(src, cpu_env, offs);
26584
+ tcg_gen_st32_i64(src, tcg_env, offs);
26585
break;
26586
case ES_64:
26587
- tcg_gen_st_i64(src, cpu_env, offs);
26588
+ tcg_gen_st_i64(src, tcg_env, offs);
26589
break;
26590
default:
26591
g_assert_not_reached();
26592
@@ -XXX,XX +XXX,XX @@ static void write_vec_element_i32(TCGv_i32 src, int reg, uint8_t enr,
26593
26594
switch (memop) {
26595
case ES_8:
26596
- tcg_gen_st8_i32(src, cpu_env, offs);
26597
+ tcg_gen_st8_i32(src, tcg_env, offs);
26598
break;
26599
case ES_16:
26600
- tcg_gen_st16_i32(src, cpu_env, offs);
26601
+ tcg_gen_st16_i32(src, tcg_env, offs);
26602
break;
26603
case ES_32:
26604
- tcg_gen_st_i32(src, cpu_env, offs);
26605
+ tcg_gen_st_i32(src, tcg_env, offs);
26606
break;
26607
default:
26608
g_assert_not_reached();
26609
@@ -XXX,XX +XXX,XX @@ static void get_vec_element_ptr_i64(TCGv_ptr ptr, uint8_t reg, TCGv_i64 enr,
26610
/* mask off invalid parts from the element nr */
26611
tcg_gen_andi_i64(tmp, enr, NUM_VEC_ELEMENTS(es) - 1);
26612
26613
- /* convert it to an element offset relative to cpu_env (vec_reg_offset() */
26614
+ /* convert it to an element offset relative to tcg_env (vec_reg_offset() */
26615
tcg_gen_shli_i64(tmp, tmp, es);
26616
#if !HOST_BIG_ENDIAN
26617
tcg_gen_xori_i64(tmp, tmp, 8 - NUM_VEC_ELEMENT_BYTES(es));
26618
#endif
26619
tcg_gen_addi_i64(tmp, tmp, vec_full_reg_offset(reg));
26620
26621
- /* generate the final ptr by adding cpu_env */
26622
+ /* generate the final ptr by adding tcg_env */
26623
tcg_gen_trunc_i64_ptr(ptr, tmp);
26624
- tcg_gen_add_ptr(ptr, ptr, cpu_env);
26625
+ tcg_gen_add_ptr(ptr, ptr, tcg_env);
26626
}
26627
26628
#define gen_gvec_2(v1, v2, gen) \
26629
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_vlbb(DisasContext *s, DisasOps *o)
26630
tcg_gen_ori_i64(bytes, o->addr1, -block_size);
26631
tcg_gen_neg_i64(bytes, bytes);
26632
26633
- tcg_gen_addi_ptr(a0, cpu_env, v1_offs);
26634
- gen_helper_vll(cpu_env, a0, o->addr1, bytes);
26635
+ tcg_gen_addi_ptr(a0, tcg_env, v1_offs);
26636
+ gen_helper_vll(tcg_env, a0, o->addr1, bytes);
26637
return DISAS_NEXT;
26638
}
26639
26640
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_vll(DisasContext *s, DisasOps *o)
26641
26642
/* convert highest index into an actual length */
26643
tcg_gen_addi_i64(o->in2, o->in2, 1);
26644
- tcg_gen_addi_ptr(a0, cpu_env, v1_offs);
26645
- gen_helper_vll(cpu_env, a0, o->addr1, o->in2);
26646
+ tcg_gen_addi_ptr(a0, tcg_env, v1_offs);
26647
+ gen_helper_vll(tcg_env, a0, o->addr1, o->in2);
26648
return DISAS_NEXT;
26649
}
26650
26651
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_vpk(DisasContext *s, DisasOps *o)
26652
switch (s->fields.op2) {
26653
case 0x97:
26654
if (get_field(s, m5) & 0x1) {
26655
- gen_gvec_3_ptr(v1, v2, v3, cpu_env, 0, vpks_cc[es - 1]);
26656
+ gen_gvec_3_ptr(v1, v2, v3, tcg_env, 0, vpks_cc[es - 1]);
26657
set_cc_static(s);
26658
} else {
26659
gen_gvec_3_ool(v1, v2, v3, 0, vpks[es - 1]);
26660
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_vpk(DisasContext *s, DisasOps *o)
26661
break;
26662
case 0x95:
26663
if (get_field(s, m5) & 0x1) {
26664
- gen_gvec_3_ptr(v1, v2, v3, cpu_env, 0, vpkls_cc[es - 1]);
26665
+ gen_gvec_3_ptr(v1, v2, v3, tcg_env, 0, vpkls_cc[es - 1]);
26666
set_cc_static(s);
26667
} else {
26668
gen_gvec_3_ool(v1, v2, v3, 0, vpkls[es - 1]);
26669
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_vst(DisasContext *s, DisasOps *o)
26670
TCGv_i64 tmp;
26671
26672
/* Probe write access before actually modifying memory */
26673
- gen_helper_probe_write_access(cpu_env, o->addr1,
26674
+ gen_helper_probe_write_access(tcg_env, o->addr1,
26675
tcg_constant_i64(16));
26676
26677
tmp = tcg_temp_new_i64();
26678
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_vstbr(DisasContext *s, DisasOps *o)
26679
}
26680
26681
/* Probe write access before actually modifying memory */
26682
- gen_helper_probe_write_access(cpu_env, o->addr1, tcg_constant_i64(16));
26683
+ gen_helper_probe_write_access(tcg_env, o->addr1, tcg_constant_i64(16));
26684
26685
t0 = tcg_temp_new_i64();
26686
t1 = tcg_temp_new_i64();
26687
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_vster(DisasContext *s, DisasOps *o)
26688
}
26689
26690
/* Probe write access before actually modifying memory */
26691
- gen_helper_probe_write_access(cpu_env, o->addr1, tcg_constant_i64(16));
26692
+ gen_helper_probe_write_access(tcg_env, o->addr1, tcg_constant_i64(16));
26693
26694
/* Begin with the two doublewords swapped... */
26695
t0 = tcg_temp_new_i64();
26696
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_vstm(DisasContext *s, DisasOps *o)
26697
}
26698
26699
/* Probe write access before actually modifying memory */
26700
- gen_helper_probe_write_access(cpu_env, o->addr1,
26701
+ gen_helper_probe_write_access(tcg_env, o->addr1,
26702
tcg_constant_i64((v3 - v1 + 1) * 16));
26703
26704
tmp = tcg_temp_new_i64();
26705
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_vstl(DisasContext *s, DisasOps *o)
26706
26707
/* convert highest index into an actual length */
26708
tcg_gen_addi_i64(o->in2, o->in2, 1);
26709
- tcg_gen_addi_ptr(a0, cpu_env, v1_offs);
26710
- gen_helper_vstl(cpu_env, a0, o->addr1, o->in2);
26711
+ tcg_gen_addi_ptr(a0, tcg_env, v1_offs);
26712
+ gen_helper_vstl(tcg_env, a0, o->addr1, o->in2);
26713
return DISAS_NEXT;
26714
}
26715
26716
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_vsum(DisasContext *s, DisasOps *o)
26717
static DisasJumpType op_vtm(DisasContext *s, DisasOps *o)
26718
{
26719
gen_gvec_2_ptr(get_field(s, v1), get_field(s, v2),
26720
- cpu_env, 0, gen_helper_gvec_vtm);
26721
+ tcg_env, 0, gen_helper_gvec_vtm);
26722
set_cc_static(s);
26723
return DISAS_NEXT;
26724
}
26725
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_vfae(DisasContext *s, DisasOps *o)
26726
26727
if (extract32(m5, 0, 1)) {
26728
gen_gvec_3_ptr(get_field(s, v1), get_field(s, v2),
26729
- get_field(s, v3), cpu_env, m5, g_cc[es]);
26730
+ get_field(s, v3), tcg_env, m5, g_cc[es]);
26731
set_cc_static(s);
26732
} else {
26733
gen_gvec_3_ool(get_field(s, v1), get_field(s, v2),
26734
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_vfee(DisasContext *s, DisasOps *o)
26735
26736
if (extract32(m5, 0, 1)) {
26737
gen_gvec_3_ptr(get_field(s, v1), get_field(s, v2),
26738
- get_field(s, v3), cpu_env, m5, g_cc[es]);
26739
+ get_field(s, v3), tcg_env, m5, g_cc[es]);
26740
set_cc_static(s);
26741
} else {
26742
gen_gvec_3_ool(get_field(s, v1), get_field(s, v2),
26743
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_vfene(DisasContext *s, DisasOps *o)
26744
26745
if (extract32(m5, 0, 1)) {
26746
gen_gvec_3_ptr(get_field(s, v1), get_field(s, v2),
26747
- get_field(s, v3), cpu_env, m5, g_cc[es]);
26748
+ get_field(s, v3), tcg_env, m5, g_cc[es]);
26749
set_cc_static(s);
26750
} else {
26751
gen_gvec_3_ool(get_field(s, v1), get_field(s, v2),
26752
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_vistr(DisasContext *s, DisasOps *o)
26753
26754
if (extract32(m5, 0, 1)) {
26755
gen_gvec_2_ptr(get_field(s, v1), get_field(s, v2),
26756
- cpu_env, 0, g_cc[es]);
26757
+ tcg_env, 0, g_cc[es]);
26758
set_cc_static(s);
26759
} else {
26760
gen_gvec_2_ool(get_field(s, v1), get_field(s, v2), 0,
26761
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_vstrc(DisasContext *s, DisasOps *o)
26762
if (extract32(m6, 2, 1)) {
26763
gen_gvec_4_ptr(get_field(s, v1), get_field(s, v2),
26764
get_field(s, v3), get_field(s, v4),
26765
- cpu_env, m6, g_cc_rt[es]);
26766
+ tcg_env, m6, g_cc_rt[es]);
26767
} else {
26768
gen_gvec_4_ptr(get_field(s, v1), get_field(s, v2),
26769
get_field(s, v3), get_field(s, v4),
26770
- cpu_env, m6, g_cc[es]);
26771
+ tcg_env, m6, g_cc[es]);
26772
}
26773
set_cc_static(s);
26774
} else {
26775
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_vstrs(DisasContext *s, DisasOps *o)
26776
26777
gen_gvec_4_ptr(get_field(s, v1), get_field(s, v2),
26778
get_field(s, v3), get_field(s, v4),
26779
- cpu_env, 0, fns[es][zs]);
26780
+ tcg_env, 0, fns[es][zs]);
26781
set_cc_static(s);
26782
return DISAS_NEXT;
26783
}
26784
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_vfa(DisasContext *s, DisasOps *o)
26785
}
26786
26787
gen_gvec_3_ptr(get_field(s, v1), get_field(s, v2),
26788
- get_field(s, v3), cpu_env, m5, fn);
26789
+ get_field(s, v3), tcg_env, m5, fn);
26790
return DISAS_NEXT;
26791
}
26792
26793
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_wfc(DisasContext *s, DisasOps *o)
26794
return DISAS_NORETURN;
26795
}
26796
26797
- gen_gvec_2_ptr(get_field(s, v1), get_field(s, v2), cpu_env, 0, fn);
26798
+ gen_gvec_2_ptr(get_field(s, v1), get_field(s, v2), tcg_env, 0, fn);
26799
set_cc_static(s);
26800
return DISAS_NEXT;
26801
}
26802
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_vfc(DisasContext *s, DisasOps *o)
26803
}
26804
26805
gen_gvec_3_ptr(get_field(s, v1), get_field(s, v2), get_field(s, v3),
26806
- cpu_env, m5, fn);
26807
+ tcg_env, m5, fn);
26808
if (cs) {
26809
set_cc_static(s);
26810
}
26811
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_vcdg(DisasContext *s, DisasOps *o)
26812
return DISAS_NORETURN;
26813
}
26814
26815
- gen_gvec_2_ptr(get_field(s, v1), get_field(s, v2), cpu_env,
26816
+ gen_gvec_2_ptr(get_field(s, v1), get_field(s, v2), tcg_env,
26817
deposit32(m4, 4, 4, erm), fn);
26818
return DISAS_NEXT;
26819
}
26820
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_vfll(DisasContext *s, DisasOps *o)
26821
return DISAS_NORETURN;
26822
}
26823
26824
- gen_gvec_2_ptr(get_field(s, v1), get_field(s, v2), cpu_env, m4, fn);
26825
+ gen_gvec_2_ptr(get_field(s, v1), get_field(s, v2), tcg_env, m4, fn);
26826
return DISAS_NEXT;
26827
}
26828
26829
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_vfmax(DisasContext *s, DisasOps *o)
26830
}
26831
26832
gen_gvec_3_ptr(get_field(s, v1), get_field(s, v2), get_field(s, v3),
26833
- cpu_env, deposit32(m5, 4, 4, m6), fn);
26834
+ tcg_env, deposit32(m5, 4, 4, m6), fn);
26835
return DISAS_NEXT;
26836
}
26837
26838
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_vfma(DisasContext *s, DisasOps *o)
26839
}
26840
26841
gen_gvec_4_ptr(get_field(s, v1), get_field(s, v2),
26842
- get_field(s, v3), get_field(s, v4), cpu_env, m5, fn);
26843
+ get_field(s, v3), get_field(s, v4), tcg_env, m5, fn);
26844
return DISAS_NEXT;
26845
}
26846
26847
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_vfsq(DisasContext *s, DisasOps *o)
26848
return DISAS_NORETURN;
26849
}
26850
26851
- gen_gvec_2_ptr(get_field(s, v1), get_field(s, v2), cpu_env, m4, fn);
26852
+ gen_gvec_2_ptr(get_field(s, v1), get_field(s, v2), tcg_env, m4, fn);
26853
return DISAS_NEXT;
26854
}
26855
26856
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_vftci(DisasContext *s, DisasOps *o)
26857
return DISAS_NORETURN;
26858
}
26859
26860
- gen_gvec_2_ptr(get_field(s, v1), get_field(s, v2), cpu_env,
26861
+ gen_gvec_2_ptr(get_field(s, v1), get_field(s, v2), tcg_env,
26862
deposit32(m5, 4, 12, i3), fn);
26863
set_cc_static(s);
26864
return DISAS_NEXT;
26865
diff --git a/target/hexagon/README b/target/hexagon/README
26866
index XXXXXXX..XXXXXXX 100644
26867
--- a/target/hexagon/README
26868
+++ b/target/hexagon/README
26869
@@ -XXX,XX +XXX,XX @@ tcg_funcs_generated.c.inc
26870
const int RdN = insn->regno[0];
26871
TCGv RsV = hex_gpr[insn->regno[1]];
26872
TCGv RtV = hex_gpr[insn->regno[2]];
26873
- gen_helper_A2_add(RdV, cpu_env, RsV, RtV);
26874
+ gen_helper_A2_add(RdV, tcg_env, RsV, RtV);
26875
gen_log_reg_write(ctx, RdN, RdV);
26876
}
26877
26878
@@ -XXX,XX +XXX,XX @@ istruction.
26879
const intptr_t VdV_off =
26880
ctx_future_vreg_off(ctx, VdN, 1, true);
26881
TCGv_ptr VdV = tcg_temp_new_ptr();
26882
- tcg_gen_addi_ptr(VdV, cpu_env, VdV_off);
26883
+ tcg_gen_addi_ptr(VdV, tcg_env, VdV_off);
26884
const int VuN = insn->regno[1];
26885
const intptr_t VuV_off =
26886
vreg_src_off(ctx, VuN);
26887
@@ -XXX,XX +XXX,XX @@ istruction.
26888
const intptr_t VvV_off =
26889
vreg_src_off(ctx, VvN);
26890
TCGv_ptr VvV = tcg_temp_new_ptr();
26891
- tcg_gen_addi_ptr(VuV, cpu_env, VuV_off);
26892
- tcg_gen_addi_ptr(VvV, cpu_env, VvV_off);
26893
- gen_helper_V6_vaddw(cpu_env, VdV, VuV, VvV);
26894
+ tcg_gen_addi_ptr(VuV, tcg_env, VuV_off);
26895
+ tcg_gen_addi_ptr(VvV, tcg_env, VvV_off);
26896
+ gen_helper_V6_vaddw(tcg_env, VdV, VuV, VvV);
26897
}
26898
26899
Notice that we also generate a variable named <operand>_off for each operand of
26900
diff --git a/target/hexagon/gen_tcg_funcs.py b/target/hexagon/gen_tcg_funcs.py
26901
index XXXXXXX..XXXXXXX 100755
26902
--- a/target/hexagon/gen_tcg_funcs.py
26903
+++ b/target/hexagon/gen_tcg_funcs.py
26904
@@ -XXX,XX +XXX,XX @@ def genptr_decl(f, tag, regtype, regid, regno):
26905
if not hex_common.skip_qemu_helper(tag):
26906
f.write(f" TCGv_ptr {regtype}{regid}V = " "tcg_temp_new_ptr();\n")
26907
f.write(
26908
- f" tcg_gen_addi_ptr({regtype}{regid}V, cpu_env, "
26909
+ f" tcg_gen_addi_ptr({regtype}{regid}V, tcg_env, "
26910
f"{regtype}{regid}V_off);\n"
26911
)
26912
elif regid in {"uu", "vv", "xx"}:
26913
@@ -XXX,XX +XXX,XX @@ def genptr_decl(f, tag, regtype, regid, regno):
26914
if not hex_common.skip_qemu_helper(tag):
26915
f.write(f" TCGv_ptr {regtype}{regid}V = " "tcg_temp_new_ptr();\n")
26916
f.write(
26917
- f" tcg_gen_addi_ptr({regtype}{regid}V, cpu_env, "
26918
+ f" tcg_gen_addi_ptr({regtype}{regid}V, tcg_env, "
26919
f"{regtype}{regid}V_off);\n"
26920
)
26921
elif regid in {"s", "u", "v", "w"}:
26922
@@ -XXX,XX +XXX,XX @@ def genptr_decl(f, tag, regtype, regid, regno):
26923
if not hex_common.skip_qemu_helper(tag):
26924
f.write(f" TCGv_ptr {regtype}{regid}V = " "tcg_temp_new_ptr();\n")
26925
f.write(
26926
- f" tcg_gen_addi_ptr({regtype}{regid}V, cpu_env, "
26927
+ f" tcg_gen_addi_ptr({regtype}{regid}V, tcg_env, "
26928
f"{regtype}{regid}V_off);\n"
26929
)
26930
else:
26931
@@ -XXX,XX +XXX,XX @@ def genptr_decl(f, tag, regtype, regid, regno):
26932
if not hex_common.skip_qemu_helper(tag):
26933
f.write(f" TCGv_ptr {regtype}{regid}V = " "tcg_temp_new_ptr();\n")
26934
f.write(
26935
- f" tcg_gen_addi_ptr({regtype}{regid}V, cpu_env, "
26936
+ f" tcg_gen_addi_ptr({regtype}{regid}V, tcg_env, "
26937
f"{regtype}{regid}V_off);\n"
26938
)
26939
elif regid in {"s", "t", "u", "v"}:
26940
@@ -XXX,XX +XXX,XX @@ def genptr_src_read(f, tag, regtype, regid):
26941
elif regid in {"s", "u", "v", "w"}:
26942
if not hex_common.skip_qemu_helper(tag):
26943
f.write(
26944
- f" tcg_gen_addi_ptr({regtype}{regid}V, cpu_env, "
26945
+ f" tcg_gen_addi_ptr({regtype}{regid}V, tcg_env, "
26946
f"{regtype}{regid}V_off);\n"
26947
)
26948
elif regid in {"x", "y"}:
26949
@@ -XXX,XX +XXX,XX @@ def genptr_src_read(f, tag, regtype, regid):
26950
if regid in {"s", "t", "u", "v"}:
26951
if not hex_common.skip_qemu_helper(tag):
26952
f.write(
26953
- f" tcg_gen_addi_ptr({regtype}{regid}V, cpu_env, "
26954
+ f" tcg_gen_addi_ptr({regtype}{regid}V, tcg_env, "
26955
f"{regtype}{regid}V_off);\n"
26956
)
26957
elif regid in {"x"}:
26958
@@ -XXX,XX +XXX,XX @@ def genptr_dst_write_opn(f, regtype, regid, tag):
26959
## if hex_common.skip_qemu_helper(tag) is True
26960
## <GEN> is fGEN_TCG_A2_add({ RdV=RsV+RtV;});
26961
## if hex_common.skip_qemu_helper(tag) is False
26962
-## <GEN> is gen_helper_A2_add(RdV, cpu_env, RsV, RtV);
26963
+## <GEN> is gen_helper_A2_add(RdV, tcg_env, RsV, RtV);
26964
##
26965
def gen_tcg_func(f, tag, regs, imms):
26966
f.write(f"static void generate_{tag}(DisasContext *ctx)\n")
26967
@@ -XXX,XX +XXX,XX @@ def gen_tcg_func(f, tag, regs, imms):
26968
i += 1
26969
if i > 0:
26970
f.write(", ")
26971
- f.write("cpu_env")
26972
+ f.write("tcg_env")
26973
i = 1
26974
## For conditional instructions, we pass in the destination register
26975
if "A_CONDEXEC" in hex_common.attribdict[tag]:
26976
--
26977
2.34.1
26978
26979
diff view generated by jsdifflib
New patch
1
Reviewed-by: Anton Johansson <anjo@rev.ng>
2
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
3
---
4
include/exec/cpu-all.h | 1 -
5
include/hw/core/cpu.h | 9 ++++++---
6
target/arm/common-semi-target.h | 2 +-
7
accel/tcg/cpu-exec.c | 8 ++++----
8
accel/tcg/cputlb.c | 20 ++++++++++----------
9
accel/tcg/plugin-gen.c | 2 +-
10
accel/tcg/translate-all.c | 4 ++--
11
bsd-user/main.c | 2 +-
12
bsd-user/signal.c | 10 +++++-----
13
gdbstub/gdbstub.c | 4 ++--
14
gdbstub/user-target.c | 2 +-
15
hw/i386/kvm/clock.c | 2 +-
16
hw/intc/mips_gic.c | 2 +-
17
hw/intc/riscv_aclint.c | 12 ++++++------
18
hw/intc/riscv_imsic.c | 2 +-
19
hw/ppc/e500.c | 4 ++--
20
hw/ppc/spapr.c | 2 +-
21
linux-user/elfload.c | 4 ++--
22
linux-user/i386/cpu_loop.c | 2 +-
23
linux-user/main.c | 4 ++--
24
linux-user/signal.c | 15 +++++++--------
25
monitor/hmp-cmds-target.c | 2 +-
26
semihosting/arm-compat-semi.c | 6 +++---
27
semihosting/syscalls.c | 28 ++++++++++++++--------------
28
target/alpha/translate.c | 4 ++--
29
target/arm/cpu.c | 8 ++++----
30
target/arm/helper.c | 2 +-
31
target/arm/tcg/translate-a64.c | 4 ++--
32
target/arm/tcg/translate.c | 6 +++---
33
target/avr/translate.c | 2 +-
34
target/cris/translate.c | 4 ++--
35
target/hexagon/translate.c | 4 ++--
36
target/hppa/mem_helper.c | 2 +-
37
target/hppa/translate.c | 4 ++--
38
target/i386/nvmm/nvmm-all.c | 14 +++++++-------
39
target/i386/tcg/sysemu/excp_helper.c | 2 +-
40
target/i386/tcg/tcg-cpu.c | 2 +-
41
target/i386/tcg/translate.c | 4 ++--
42
target/i386/whpx/whpx-all.c | 26 +++++++++++++-------------
43
target/loongarch/translate.c | 4 ++--
44
target/m68k/translate.c | 4 ++--
45
target/microblaze/translate.c | 2 +-
46
target/mips/tcg/sysemu/mips-semi.c | 4 ++--
47
target/mips/tcg/translate.c | 4 ++--
48
target/nios2/translate.c | 4 ++--
49
target/openrisc/translate.c | 2 +-
50
target/ppc/excp_helper.c | 10 +++++-----
51
target/ppc/translate.c | 4 ++--
52
target/riscv/translate.c | 6 +++---
53
target/rx/cpu.c | 3 ---
54
target/rx/translate.c | 2 +-
55
target/s390x/tcg/translate.c | 2 +-
56
target/sh4/op_helper.c | 2 +-
57
target/sh4/translate.c | 4 ++--
58
target/sparc/translate.c | 4 ++--
59
target/tricore/translate.c | 4 ++--
60
target/xtensa/translate.c | 4 ++--
61
target/i386/tcg/decode-new.c.inc | 2 +-
62
58 files changed, 153 insertions(+), 155 deletions(-)
1
63
64
diff --git a/include/exec/cpu-all.h b/include/exec/cpu-all.h
65
index XXXXXXX..XXXXXXX 100644
66
--- a/include/exec/cpu-all.h
67
+++ b/include/exec/cpu-all.h
68
@@ -XXX,XX +XXX,XX @@ int cpu_exec(CPUState *cpu);
69
*/
70
static inline void cpu_set_cpustate_pointers(ArchCPU *cpu)
71
{
72
- cpu->parent_obj.env_ptr = &cpu->env;
73
}
74
75
/* Validate correct placement of CPUArchState. */
76
diff --git a/include/hw/core/cpu.h b/include/hw/core/cpu.h
77
index XXXXXXX..XXXXXXX 100644
78
--- a/include/hw/core/cpu.h
79
+++ b/include/hw/core/cpu.h
80
@@ -XXX,XX +XXX,XX @@ struct qemu_work_item;
81
* @num_ases: number of CPUAddressSpaces in @cpu_ases
82
* @as: Pointer to the first AddressSpace, for the convenience of targets which
83
* only have a single AddressSpace
84
- * @env_ptr: Pointer to subclass-specific CPUArchState field.
85
* @gdb_regs: Additional GDB registers.
86
* @gdb_num_regs: Number of total registers accessible to GDB.
87
* @gdb_num_g_regs: Number of registers in GDB 'g' packets.
88
@@ -XXX,XX +XXX,XX @@ struct CPUState {
89
AddressSpace *as;
90
MemoryRegion *memory;
91
92
- CPUArchState *env_ptr;
93
-
94
CPUJumpCache *tb_jmp_cache;
95
96
struct GDBRegisterState *gdb_regs;
97
@@ -XXX,XX +XXX,XX @@ struct CPUState {
98
QEMU_BUILD_BUG_ON(offsetof(CPUState, neg) !=
99
sizeof(CPUState) - sizeof(CPUNegativeOffsetState));
100
101
+static inline CPUArchState *cpu_env(CPUState *cpu)
102
+{
103
+ /* We validate that CPUArchState follows CPUState in cpu-all.h. */
104
+ return (CPUArchState *)(cpu + 1);
105
+}
106
+
107
typedef QTAILQ_HEAD(CPUTailQ, CPUState) CPUTailQ;
108
extern CPUTailQ cpus;
109
110
diff --git a/target/arm/common-semi-target.h b/target/arm/common-semi-target.h
111
index XXXXXXX..XXXXXXX 100644
112
--- a/target/arm/common-semi-target.h
113
+++ b/target/arm/common-semi-target.h
114
@@ -XXX,XX +XXX,XX @@ static inline void common_semi_set_ret(CPUState *cs, target_ulong ret)
115
116
static inline bool common_semi_sys_exit_extended(CPUState *cs, int nr)
117
{
118
- return (nr == TARGET_SYS_EXIT_EXTENDED || is_a64(cs->env_ptr));
119
+ return nr == TARGET_SYS_EXIT_EXTENDED || is_a64(cpu_env(cs));
120
}
121
122
static inline bool is_64bit_semihosting(CPUArchState *env)
123
diff --git a/accel/tcg/cpu-exec.c b/accel/tcg/cpu-exec.c
124
index XXXXXXX..XXXXXXX 100644
125
--- a/accel/tcg/cpu-exec.c
126
+++ b/accel/tcg/cpu-exec.c
127
@@ -XXX,XX +XXX,XX @@ static TranslationBlock *tb_htable_lookup(CPUState *cpu, vaddr pc,
128
struct tb_desc desc;
129
uint32_t h;
130
131
- desc.env = cpu->env_ptr;
132
+ desc.env = cpu_env(cpu);
133
desc.cs_base = cs_base;
134
desc.flags = flags;
135
desc.cflags = cflags;
136
@@ -XXX,XX +XXX,XX @@ const void *HELPER(lookup_tb_ptr)(CPUArchState *env)
137
static inline TranslationBlock * QEMU_DISABLE_CFI
138
cpu_tb_exec(CPUState *cpu, TranslationBlock *itb, int *tb_exit)
139
{
140
- CPUArchState *env = cpu->env_ptr;
141
+ CPUArchState *env = cpu_env(cpu);
142
uintptr_t ret;
143
TranslationBlock *last_tb;
144
const void *tb_ptr = itb->tc.ptr;
145
@@ -XXX,XX +XXX,XX @@ static void cpu_exec_longjmp_cleanup(CPUState *cpu)
146
147
void cpu_exec_step_atomic(CPUState *cpu)
148
{
149
- CPUArchState *env = cpu->env_ptr;
150
+ CPUArchState *env = cpu_env(cpu);
151
TranslationBlock *tb;
152
vaddr pc;
153
uint64_t cs_base;
154
@@ -XXX,XX +XXX,XX @@ cpu_exec_loop(CPUState *cpu, SyncClocks *sc)
155
uint64_t cs_base;
156
uint32_t flags, cflags;
157
158
- cpu_get_tb_cpu_state(cpu->env_ptr, &pc, &cs_base, &flags);
159
+ cpu_get_tb_cpu_state(cpu_env(cpu), &pc, &cs_base, &flags);
160
161
/*
162
* When requested, use an exact setting for cflags for the next
163
diff --git a/accel/tcg/cputlb.c b/accel/tcg/cputlb.c
164
index XXXXXXX..XXXXXXX 100644
165
--- a/accel/tcg/cputlb.c
166
+++ b/accel/tcg/cputlb.c
167
@@ -XXX,XX +XXX,XX @@ static inline void tlb_n_used_entries_dec(CPUArchState *env, uintptr_t mmu_idx)
168
169
void tlb_init(CPUState *cpu)
170
{
171
- CPUArchState *env = cpu->env_ptr;
172
+ CPUArchState *env = cpu_env(cpu);
173
int64_t now = get_clock_realtime();
174
int i;
175
176
@@ -XXX,XX +XXX,XX @@ void tlb_init(CPUState *cpu)
177
178
void tlb_destroy(CPUState *cpu)
179
{
180
- CPUArchState *env = cpu->env_ptr;
181
+ CPUArchState *env = cpu_env(cpu);
182
int i;
183
184
qemu_spin_destroy(&env_tlb(env)->c.lock);
185
@@ -XXX,XX +XXX,XX @@ void tlb_flush_counts(size_t *pfull, size_t *ppart, size_t *pelide)
186
size_t full = 0, part = 0, elide = 0;
187
188
CPU_FOREACH(cpu) {
189
- CPUArchState *env = cpu->env_ptr;
190
+ CPUArchState *env = cpu_env(cpu);
191
192
full += qatomic_read(&env_tlb(env)->c.full_flush_count);
193
part += qatomic_read(&env_tlb(env)->c.part_flush_count);
194
@@ -XXX,XX +XXX,XX @@ void tlb_flush_counts(size_t *pfull, size_t *ppart, size_t *pelide)
195
196
static void tlb_flush_by_mmuidx_async_work(CPUState *cpu, run_on_cpu_data data)
197
{
198
- CPUArchState *env = cpu->env_ptr;
199
+ CPUArchState *env = cpu_env(cpu);
200
uint16_t asked = data.host_int;
201
uint16_t all_dirty, work, to_clean;
202
int64_t now = get_clock_realtime();
203
@@ -XXX,XX +XXX,XX @@ static void tlb_flush_page_by_mmuidx_async_0(CPUState *cpu,
204
vaddr addr,
205
uint16_t idxmap)
206
{
207
- CPUArchState *env = cpu->env_ptr;
208
+ CPUArchState *env = cpu_env(cpu);
209
int mmu_idx;
210
211
assert_cpu_is_self(cpu);
212
@@ -XXX,XX +XXX,XX @@ typedef struct {
213
static void tlb_flush_range_by_mmuidx_async_0(CPUState *cpu,
214
TLBFlushRangeData d)
215
{
216
- CPUArchState *env = cpu->env_ptr;
217
+ CPUArchState *env = cpu_env(cpu);
218
int mmu_idx;
219
220
assert_cpu_is_self(cpu);
221
@@ -XXX,XX +XXX,XX @@ void tlb_reset_dirty(CPUState *cpu, ram_addr_t start1, ram_addr_t length)
222
223
int mmu_idx;
224
225
- env = cpu->env_ptr;
226
+ env = cpu_env(cpu);
227
qemu_spin_lock(&env_tlb(env)->c.lock);
228
for (mmu_idx = 0; mmu_idx < NB_MMU_MODES; mmu_idx++) {
229
unsigned int i;
230
@@ -XXX,XX +XXX,XX @@ static inline void tlb_set_dirty1_locked(CPUTLBEntry *tlb_entry,
231
so that it is no longer dirty */
232
void tlb_set_dirty(CPUState *cpu, vaddr addr)
233
{
234
- CPUArchState *env = cpu->env_ptr;
235
+ CPUArchState *env = cpu_env(cpu);
236
int mmu_idx;
237
238
assert_cpu_is_self(cpu);
239
@@ -XXX,XX +XXX,XX @@ static inline void tlb_set_compare(CPUTLBEntryFull *full, CPUTLBEntry *ent,
240
void tlb_set_page_full(CPUState *cpu, int mmu_idx,
241
vaddr addr, CPUTLBEntryFull *full)
242
{
243
- CPUArchState *env = cpu->env_ptr;
244
+ CPUArchState *env = cpu_env(cpu);
245
CPUTLB *tlb = env_tlb(env);
246
CPUTLBDesc *desc = &tlb->d[mmu_idx];
247
MemoryRegionSection *section;
248
@@ -XXX,XX +XXX,XX @@ tb_page_addr_t get_page_addr_code_hostp(CPUArchState *env, vaddr addr,
249
bool tlb_plugin_lookup(CPUState *cpu, vaddr addr, int mmu_idx,
250
bool is_store, struct qemu_plugin_hwaddr *data)
251
{
252
- CPUArchState *env = cpu->env_ptr;
253
+ CPUArchState *env = cpu_env(cpu);
254
CPUTLBEntry *tlbe = tlb_entry(env, mmu_idx, addr);
255
uintptr_t index = tlb_index(env, mmu_idx, addr);
256
MMUAccessType access_type = is_store ? MMU_DATA_STORE : MMU_DATA_LOAD;
257
diff --git a/accel/tcg/plugin-gen.c b/accel/tcg/plugin-gen.c
258
index XXXXXXX..XXXXXXX 100644
259
--- a/accel/tcg/plugin-gen.c
260
+++ b/accel/tcg/plugin-gen.c
261
@@ -XXX,XX +XXX,XX @@ void plugin_gen_insn_start(CPUState *cpu, const DisasContextBase *db)
262
} else {
263
if (ptb->vaddr2 == -1) {
264
ptb->vaddr2 = TARGET_PAGE_ALIGN(db->pc_first);
265
- get_page_addr_code_hostp(cpu->env_ptr, ptb->vaddr2, &ptb->haddr2);
266
+ get_page_addr_code_hostp(cpu_env(cpu), ptb->vaddr2, &ptb->haddr2);
267
}
268
pinsn->haddr = ptb->haddr2 + pinsn->vaddr - ptb->vaddr2;
269
}
270
diff --git a/accel/tcg/translate-all.c b/accel/tcg/translate-all.c
271
index XXXXXXX..XXXXXXX 100644
272
--- a/accel/tcg/translate-all.c
273
+++ b/accel/tcg/translate-all.c
274
@@ -XXX,XX +XXX,XX @@ TranslationBlock *tb_gen_code(CPUState *cpu,
275
vaddr pc, uint64_t cs_base,
276
uint32_t flags, int cflags)
277
{
278
- CPUArchState *env = cpu->env_ptr;
279
+ CPUArchState *env = cpu_env(cpu);
280
TranslationBlock *tb, *existing_tb;
281
tb_page_addr_t phys_pc, phys_p2;
282
tcg_insn_unit *gen_code_buf;
283
@@ -XXX,XX +XXX,XX @@ void tb_check_watchpoint(CPUState *cpu, uintptr_t retaddr)
284
} else {
285
/* The exception probably happened in a helper. The CPU state should
286
have been saved before calling it. Fetch the PC from there. */
287
- CPUArchState *env = cpu->env_ptr;
288
+ CPUArchState *env = cpu_env(cpu);
289
vaddr pc;
290
uint64_t cs_base;
291
tb_page_addr_t addr;
292
diff --git a/bsd-user/main.c b/bsd-user/main.c
293
index XXXXXXX..XXXXXXX 100644
294
--- a/bsd-user/main.c
295
+++ b/bsd-user/main.c
296
@@ -XXX,XX +XXX,XX @@ int main(int argc, char **argv)
297
ac->init_machine(NULL);
298
}
299
cpu = cpu_create(cpu_type);
300
- env = cpu->env_ptr;
301
+ env = cpu_env(cpu);
302
cpu_reset(cpu);
303
thread_cpu = cpu;
304
305
diff --git a/bsd-user/signal.c b/bsd-user/signal.c
306
index XXXXXXX..XXXXXXX 100644
307
--- a/bsd-user/signal.c
308
+++ b/bsd-user/signal.c
309
@@ -XXX,XX +XXX,XX @@ static int core_dump_signal(int sig)
310
static G_NORETURN
311
void dump_core_and_abort(int target_sig)
312
{
313
- CPUArchState *env = thread_cpu->env_ptr;
314
- CPUState *cpu = env_cpu(env);
315
+ CPUState *cpu = thread_cpu;
316
+ CPUArchState *env = cpu_env(cpu);
317
TaskState *ts = cpu->opaque;
318
int core_dumped = 0;
319
int host_sig;
320
@@ -XXX,XX +XXX,XX @@ static int fatal_signal(int sig)
321
void force_sig_fault(int sig, int code, abi_ulong addr)
322
{
323
CPUState *cpu = thread_cpu;
324
- CPUArchState *env = cpu->env_ptr;
325
+ CPUArchState *env = cpu_env(cpu);
326
target_siginfo_t info = {};
327
328
info.si_signo = sig;
329
@@ -XXX,XX +XXX,XX @@ void force_sig_fault(int sig, int code, abi_ulong addr)
330
331
static void host_signal_handler(int host_sig, siginfo_t *info, void *puc)
332
{
333
- CPUArchState *env = thread_cpu->env_ptr;
334
- CPUState *cpu = env_cpu(env);
335
+ CPUState *cpu = thread_cpu;
336
+ CPUArchState *env = cpu_env(cpu);
337
TaskState *ts = cpu->opaque;
338
target_siginfo_t tinfo;
339
ucontext_t *uc = puc;
340
diff --git a/gdbstub/gdbstub.c b/gdbstub/gdbstub.c
341
index XXXXXXX..XXXXXXX 100644
342
--- a/gdbstub/gdbstub.c
343
+++ b/gdbstub/gdbstub.c
344
@@ -XXX,XX +XXX,XX @@ static const char *get_feature_xml(const char *p, const char **newp,
345
static int gdb_read_register(CPUState *cpu, GByteArray *buf, int reg)
346
{
347
CPUClass *cc = CPU_GET_CLASS(cpu);
348
- CPUArchState *env = cpu->env_ptr;
349
+ CPUArchState *env = cpu_env(cpu);
350
GDBRegisterState *r;
351
352
if (reg < cc->gdb_num_core_regs) {
353
@@ -XXX,XX +XXX,XX @@ static int gdb_read_register(CPUState *cpu, GByteArray *buf, int reg)
354
static int gdb_write_register(CPUState *cpu, uint8_t *mem_buf, int reg)
355
{
356
CPUClass *cc = CPU_GET_CLASS(cpu);
357
- CPUArchState *env = cpu->env_ptr;
358
+ CPUArchState *env = cpu_env(cpu);
359
GDBRegisterState *r;
360
361
if (reg < cc->gdb_num_core_regs) {
362
diff --git a/gdbstub/user-target.c b/gdbstub/user-target.c
363
index XXXXXXX..XXXXXXX 100644
364
--- a/gdbstub/user-target.c
365
+++ b/gdbstub/user-target.c
366
@@ -XXX,XX +XXX,XX @@ void gdb_handle_v_file_open(GArray *params, void *user_ctx)
367
uint64_t mode = get_param(params, 2)->val_ull;
368
369
#ifdef CONFIG_LINUX
370
- int fd = do_guest_openat(gdbserver_state.g_cpu->env_ptr, 0, filename,
371
+ int fd = do_guest_openat(cpu_env(gdbserver_state.g_cpu), 0, filename,
372
flags, mode, false);
373
#else
374
int fd = open(filename, flags, mode);
375
diff --git a/hw/i386/kvm/clock.c b/hw/i386/kvm/clock.c
376
index XXXXXXX..XXXXXXX 100644
377
--- a/hw/i386/kvm/clock.c
378
+++ b/hw/i386/kvm/clock.c
379
@@ -XXX,XX +XXX,XX @@ struct pvclock_vcpu_time_info {
380
static uint64_t kvmclock_current_nsec(KVMClockState *s)
381
{
382
CPUState *cpu = first_cpu;
383
- CPUX86State *env = cpu->env_ptr;
384
+ CPUX86State *env = cpu_env(cpu);
385
hwaddr kvmclock_struct_pa;
386
uint64_t migration_tsc = env->tsc;
387
struct pvclock_vcpu_time_info time;
388
diff --git a/hw/intc/mips_gic.c b/hw/intc/mips_gic.c
389
index XXXXXXX..XXXXXXX 100644
390
--- a/hw/intc/mips_gic.c
391
+++ b/hw/intc/mips_gic.c
392
@@ -XXX,XX +XXX,XX @@ static void mips_gic_realize(DeviceState *dev, Error **errp)
393
/* Register the env for all VPs with the GIC */
394
for (i = 0; i < s->num_vps; i++) {
395
if (cs != NULL) {
396
- s->vps[i].env = cs->env_ptr;
397
+ s->vps[i].env = cpu_env(cs);
398
cs = CPU_NEXT(cs);
399
} else {
400
error_setg(errp,
401
diff --git a/hw/intc/riscv_aclint.c b/hw/intc/riscv_aclint.c
402
index XXXXXXX..XXXXXXX 100644
403
--- a/hw/intc/riscv_aclint.c
404
+++ b/hw/intc/riscv_aclint.c
405
@@ -XXX,XX +XXX,XX @@ static uint64_t riscv_aclint_mtimer_read(void *opaque, hwaddr addr,
406
size_t hartid = mtimer->hartid_base +
407
((addr - mtimer->timecmp_base) >> 3);
408
CPUState *cpu = cpu_by_arch_id(hartid);
409
- CPURISCVState *env = cpu ? cpu->env_ptr : NULL;
410
+ CPURISCVState *env = cpu ? cpu_env(cpu) : NULL;
411
if (!env) {
412
qemu_log_mask(LOG_GUEST_ERROR,
413
"aclint-mtimer: invalid hartid: %zu", hartid);
414
@@ -XXX,XX +XXX,XX @@ static void riscv_aclint_mtimer_write(void *opaque, hwaddr addr,
415
size_t hartid = mtimer->hartid_base +
416
((addr - mtimer->timecmp_base) >> 3);
417
CPUState *cpu = cpu_by_arch_id(hartid);
418
- CPURISCVState *env = cpu ? cpu->env_ptr : NULL;
419
+ CPURISCVState *env = cpu ? cpu_env(cpu) : NULL;
420
if (!env) {
421
qemu_log_mask(LOG_GUEST_ERROR,
422
"aclint-mtimer: invalid hartid: %zu", hartid);
423
@@ -XXX,XX +XXX,XX @@ static void riscv_aclint_mtimer_write(void *opaque, hwaddr addr,
424
/* Check if timer interrupt is triggered for each hart. */
425
for (i = 0; i < mtimer->num_harts; i++) {
426
CPUState *cpu = cpu_by_arch_id(mtimer->hartid_base + i);
427
- CPURISCVState *env = cpu ? cpu->env_ptr : NULL;
428
+ CPURISCVState *env = cpu ? cpu_env(cpu) : NULL;
429
if (!env) {
430
continue;
431
}
432
@@ -XXX,XX +XXX,XX @@ DeviceState *riscv_aclint_mtimer_create(hwaddr addr, hwaddr size,
433
for (i = 0; i < num_harts; i++) {
434
CPUState *cpu = cpu_by_arch_id(hartid_base + i);
435
RISCVCPU *rvcpu = RISCV_CPU(cpu);
436
- CPURISCVState *env = cpu ? cpu->env_ptr : NULL;
437
+ CPURISCVState *env = cpu ? cpu_env(cpu) : NULL;
438
riscv_aclint_mtimer_callback *cb =
439
g_new0(riscv_aclint_mtimer_callback, 1);
440
441
@@ -XXX,XX +XXX,XX @@ static uint64_t riscv_aclint_swi_read(void *opaque, hwaddr addr,
442
if (addr < (swi->num_harts << 2)) {
443
size_t hartid = swi->hartid_base + (addr >> 2);
444
CPUState *cpu = cpu_by_arch_id(hartid);
445
- CPURISCVState *env = cpu ? cpu->env_ptr : NULL;
446
+ CPURISCVState *env = cpu ? cpu_env(cpu) : NULL;
447
if (!env) {
448
qemu_log_mask(LOG_GUEST_ERROR,
449
"aclint-swi: invalid hartid: %zu", hartid);
450
@@ -XXX,XX +XXX,XX @@ static void riscv_aclint_swi_write(void *opaque, hwaddr addr, uint64_t value,
451
if (addr < (swi->num_harts << 2)) {
452
size_t hartid = swi->hartid_base + (addr >> 2);
453
CPUState *cpu = cpu_by_arch_id(hartid);
454
- CPURISCVState *env = cpu ? cpu->env_ptr : NULL;
455
+ CPURISCVState *env = cpu ? cpu_env(cpu) : NULL;
456
if (!env) {
457
qemu_log_mask(LOG_GUEST_ERROR,
458
"aclint-swi: invalid hartid: %zu", hartid);
459
diff --git a/hw/intc/riscv_imsic.c b/hw/intc/riscv_imsic.c
460
index XXXXXXX..XXXXXXX 100644
461
--- a/hw/intc/riscv_imsic.c
462
+++ b/hw/intc/riscv_imsic.c
463
@@ -XXX,XX +XXX,XX @@ static void riscv_imsic_realize(DeviceState *dev, Error **errp)
464
RISCVIMSICState *imsic = RISCV_IMSIC(dev);
465
RISCVCPU *rcpu = RISCV_CPU(cpu_by_arch_id(imsic->hartid));
466
CPUState *cpu = cpu_by_arch_id(imsic->hartid);
467
- CPURISCVState *env = cpu ? cpu->env_ptr : NULL;
468
+ CPURISCVState *env = cpu ? cpu_env(cpu) : NULL;
469
470
if (!kvm_irqchip_in_kernel()) {
471
imsic->num_eistate = imsic->num_pages * imsic->num_irqs;
472
diff --git a/hw/ppc/e500.c b/hw/ppc/e500.c
473
index XXXXXXX..XXXXXXX 100644
474
--- a/hw/ppc/e500.c
475
+++ b/hw/ppc/e500.c
476
@@ -XXX,XX +XXX,XX @@ static int ppce500_load_device_tree(PPCE500MachineState *pms,
477
MachineState *machine = MACHINE(pms);
478
unsigned int smp_cpus = machine->smp.cpus;
479
const PPCE500MachineClass *pmc = PPCE500_MACHINE_GET_CLASS(pms);
480
- CPUPPCState *env = first_cpu->env_ptr;
481
+ CPUPPCState *env = cpu_env(first_cpu);
482
int ret = -1;
483
uint64_t mem_reg_property[] = { 0, cpu_to_be64(machine->ram_size) };
484
int fdt_size;
485
@@ -XXX,XX +XXX,XX @@ static int ppce500_load_device_tree(PPCE500MachineState *pms,
486
if (cpu == NULL) {
487
continue;
488
}
489
- env = cpu->env_ptr;
490
+ env = cpu_env(cpu);
491
492
cpu_name = g_strdup_printf("/cpus/PowerPC,8544@%x", i);
493
qemu_fdt_add_subnode(fdt, cpu_name);
494
diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
495
index XXXXXXX..XXXXXXX 100644
496
--- a/hw/ppc/spapr.c
497
+++ b/hw/ppc/spapr.c
498
@@ -XXX,XX +XXX,XX @@ static void spapr_dt_hypervisor(SpaprMachineState *spapr, void *fdt)
499
* Older KVM versions with older guest kernels were broken
500
* with the magic page, don't allow the guest to map it.
501
*/
502
- if (!kvmppc_get_hypercall(first_cpu->env_ptr, hypercall,
503
+ if (!kvmppc_get_hypercall(cpu_env(first_cpu), hypercall,
504
sizeof(hypercall))) {
505
_FDT(fdt_setprop(fdt, hypervisor, "hcall-instructions",
506
hypercall, sizeof(hypercall)));
507
diff --git a/linux-user/elfload.c b/linux-user/elfload.c
508
index XXXXXXX..XXXXXXX 100644
509
--- a/linux-user/elfload.c
510
+++ b/linux-user/elfload.c
511
@@ -XXX,XX +XXX,XX @@ const char *elf_hwcap2_str(uint32_t bit)
512
513
static const char *get_elf_platform(void)
514
{
515
- CPUARMState *env = thread_cpu->env_ptr;
516
+ CPUARMState *env = cpu_env(thread_cpu);
517
518
#if TARGET_BIG_ENDIAN
519
# define END "b"
520
@@ -XXX,XX +XXX,XX @@ static int fill_note_info(struct elf_note_info *info,
521
if (cpu == thread_cpu) {
522
continue;
523
}
524
- fill_thread_info(info, cpu->env_ptr);
525
+ fill_thread_info(info, cpu_env(cpu));
526
}
527
}
528
529
diff --git a/linux-user/i386/cpu_loop.c b/linux-user/i386/cpu_loop.c
530
index XXXXXXX..XXXXXXX 100644
531
--- a/linux-user/i386/cpu_loop.c
532
+++ b/linux-user/i386/cpu_loop.c
533
@@ -XXX,XX +XXX,XX @@ void cpu_loop(CPUX86State *env)
534
535
static void target_cpu_free(void *obj)
536
{
537
- CPUArchState *env = ((CPUState *)obj)->env_ptr;
538
+ CPUArchState *env = cpu_env(obj);
539
target_munmap(env->gdt.base, sizeof(uint64_t) * TARGET_GDT_ENTRIES);
540
g_free(obj);
541
}
542
diff --git a/linux-user/main.c b/linux-user/main.c
543
index XXXXXXX..XXXXXXX 100644
544
--- a/linux-user/main.c
545
+++ b/linux-user/main.c
546
@@ -XXX,XX +XXX,XX @@ CPUArchState *cpu_copy(CPUArchState *env)
547
{
548
CPUState *cpu = env_cpu(env);
549
CPUState *new_cpu = cpu_create(cpu_type);
550
- CPUArchState *new_env = new_cpu->env_ptr;
551
+ CPUArchState *new_env = cpu_env(new_cpu);
552
CPUBreakpoint *bp;
553
554
/* Reset non arch specific state */
555
@@ -XXX,XX +XXX,XX @@ int main(int argc, char **argv, char **envp)
556
ac->init_machine(NULL);
557
}
558
cpu = cpu_create(cpu_type);
559
- env = cpu->env_ptr;
560
+ env = cpu_env(cpu);
561
cpu_reset(cpu);
562
thread_cpu = cpu;
563
564
diff --git a/linux-user/signal.c b/linux-user/signal.c
565
index XXXXXXX..XXXXXXX 100644
566
--- a/linux-user/signal.c
567
+++ b/linux-user/signal.c
568
@@ -XXX,XX +XXX,XX @@ void signal_init(void)
569
void force_sig(int sig)
570
{
571
CPUState *cpu = thread_cpu;
572
- CPUArchState *env = cpu->env_ptr;
573
+ CPUArchState *env = cpu_env(cpu);
574
target_siginfo_t info = {};
575
576
info.si_signo = sig;
577
@@ -XXX,XX +XXX,XX @@ void force_sig(int sig)
578
void force_sig_fault(int sig, int code, abi_ulong addr)
579
{
580
CPUState *cpu = thread_cpu;
581
- CPUArchState *env = cpu->env_ptr;
582
+ CPUArchState *env = cpu_env(cpu);
583
target_siginfo_t info = {};
584
585
info.si_signo = sig;
586
@@ -XXX,XX +XXX,XX @@ void cpu_loop_exit_sigbus(CPUState *cpu, target_ulong addr,
587
588
/* abort execution with signal */
589
static G_NORETURN
590
-void dump_core_and_abort(CPUArchState *cpu_env, int target_sig)
591
+void dump_core_and_abort(CPUArchState *env, int target_sig)
592
{
593
- CPUState *cpu = thread_cpu;
594
- CPUArchState *env = cpu->env_ptr;
595
+ CPUState *cpu = env_cpu(env);
596
TaskState *ts = (TaskState *)cpu->opaque;
597
int host_sig, core_dumped = 0;
598
struct sigaction act;
599
@@ -XXX,XX +XXX,XX @@ void dump_core_and_abort(CPUArchState *cpu_env, int target_sig)
600
target_sig, strsignal(host_sig), "core dumped" );
601
}
602
603
- preexit_cleanup(cpu_env, 128 + target_sig);
604
+ preexit_cleanup(env, 128 + target_sig);
605
606
/* The proper exit code for dying from an uncaught signal is
607
* -<signal>. The kernel doesn't allow exit() or _exit() to pass
608
@@ -XXX,XX +XXX,XX @@ static inline void rewind_if_in_safe_syscall(void *puc)
609
610
static void host_signal_handler(int host_sig, siginfo_t *info, void *puc)
611
{
612
- CPUArchState *env = thread_cpu->env_ptr;
613
- CPUState *cpu = env_cpu(env);
614
+ CPUState *cpu = thread_cpu;
615
+ CPUArchState *env = cpu_env(cpu);
616
TaskState *ts = cpu->opaque;
617
target_siginfo_t tinfo;
618
host_sigcontext *uc = puc;
619
diff --git a/monitor/hmp-cmds-target.c b/monitor/hmp-cmds-target.c
620
index XXXXXXX..XXXXXXX 100644
621
--- a/monitor/hmp-cmds-target.c
622
+++ b/monitor/hmp-cmds-target.c
623
@@ -XXX,XX +XXX,XX @@ CPUArchState *mon_get_cpu_env(Monitor *mon)
624
{
625
CPUState *cs = mon_get_cpu(mon);
626
627
- return cs ? cs->env_ptr : NULL;
628
+ return cs ? cpu_env(cs) : NULL;
629
}
630
631
int monitor_get_cpu_index(Monitor *mon)
632
diff --git a/semihosting/arm-compat-semi.c b/semihosting/arm-compat-semi.c
633
index XXXXXXX..XXXXXXX 100644
634
--- a/semihosting/arm-compat-semi.c
635
+++ b/semihosting/arm-compat-semi.c
636
@@ -XXX,XX +XXX,XX @@ static void common_semi_dead_cb(CPUState *cs, uint64_t ret, int err)
637
static void common_semi_rw_cb(CPUState *cs, uint64_t ret, int err)
638
{
639
/* Recover the original length from the third argument. */
640
- CPUArchState *env G_GNUC_UNUSED = cs->env_ptr;
641
+ CPUArchState *env G_GNUC_UNUSED = cpu_env(cs);
642
target_ulong args = common_semi_arg(cs, 1);
643
target_ulong arg2;
644
GET_ARG(2);
645
@@ -XXX,XX +XXX,XX @@ static void
646
common_semi_readc_cb(CPUState *cs, uint64_t ret, int err)
647
{
648
if (!err) {
649
- CPUArchState *env G_GNUC_UNUSED = cs->env_ptr;
650
+ CPUArchState *env G_GNUC_UNUSED = cpu_env(cs);
651
uint8_t ch;
652
653
if (get_user_u8(ch, common_semi_stack_bottom(cs) - 1)) {
654
@@ -XXX,XX +XXX,XX @@ static const uint8_t featurefile_data[] = {
655
*/
656
void do_common_semihosting(CPUState *cs)
657
{
658
- CPUArchState *env = cs->env_ptr;
659
+ CPUArchState *env = cpu_env(cs);
660
target_ulong args;
661
target_ulong arg0, arg1, arg2, arg3;
662
target_ulong ul_ret;
663
diff --git a/semihosting/syscalls.c b/semihosting/syscalls.c
664
index XXXXXXX..XXXXXXX 100644
665
--- a/semihosting/syscalls.c
666
+++ b/semihosting/syscalls.c
667
@@ -XXX,XX +XXX,XX @@
668
*/
669
static int validate_strlen(CPUState *cs, target_ulong str, target_ulong tlen)
670
{
671
- CPUArchState *env G_GNUC_UNUSED = cs->env_ptr;
672
+ CPUArchState *env G_GNUC_UNUSED = cpu_env(cs);
673
char c;
674
675
if (tlen == 0) {
676
@@ -XXX,XX +XXX,XX @@ static int validate_lock_user_string(char **pstr, CPUState *cs,
677
target_ulong tstr, target_ulong tlen)
678
{
679
int ret = validate_strlen(cs, tstr, tlen);
680
- CPUArchState *env G_GNUC_UNUSED = cs->env_ptr;
681
+ CPUArchState *env G_GNUC_UNUSED = cpu_env(cs);
682
char *str = NULL;
683
684
if (ret > 0) {
685
@@ -XXX,XX +XXX,XX @@ static int validate_lock_user_string(char **pstr, CPUState *cs,
686
static int copy_stat_to_user(CPUState *cs, target_ulong addr,
687
const struct stat *s)
688
{
689
- CPUArchState *env G_GNUC_UNUSED = cs->env_ptr;
690
+ CPUArchState *env G_GNUC_UNUSED = cpu_env(cs);
691
struct gdb_stat *p;
692
693
if (s->st_dev != (uint32_t)s->st_dev ||
694
@@ -XXX,XX +XXX,XX @@ static void host_open(CPUState *cs, gdb_syscall_complete_cb complete,
695
target_ulong fname, target_ulong fname_len,
696
int gdb_flags, int mode)
697
{
698
- CPUArchState *env G_GNUC_UNUSED = cs->env_ptr;
699
+ CPUArchState *env G_GNUC_UNUSED = cpu_env(cs);
700
char *p;
701
int ret, host_flags = O_BINARY;
702
703
@@ -XXX,XX +XXX,XX @@ static void host_close(CPUState *cs, gdb_syscall_complete_cb complete,
704
static void host_read(CPUState *cs, gdb_syscall_complete_cb complete,
705
GuestFD *gf, target_ulong buf, target_ulong len)
706
{
707
- CPUArchState *env G_GNUC_UNUSED = cs->env_ptr;
708
+ CPUArchState *env G_GNUC_UNUSED = cpu_env(cs);
709
void *ptr = lock_user(VERIFY_WRITE, buf, len, 0);
710
ssize_t ret;
711
712
@@ -XXX,XX +XXX,XX @@ static void host_read(CPUState *cs, gdb_syscall_complete_cb complete,
713
static void host_write(CPUState *cs, gdb_syscall_complete_cb complete,
714
GuestFD *gf, target_ulong buf, target_ulong len)
715
{
716
- CPUArchState *env G_GNUC_UNUSED = cs->env_ptr;
717
+ CPUArchState *env G_GNUC_UNUSED = cpu_env(cs);
718
void *ptr = lock_user(VERIFY_READ, buf, len, 1);
719
ssize_t ret;
720
721
@@ -XXX,XX +XXX,XX @@ static void host_stat(CPUState *cs, gdb_syscall_complete_cb complete,
722
target_ulong fname, target_ulong fname_len,
723
target_ulong addr)
724
{
725
- CPUArchState *env G_GNUC_UNUSED = cs->env_ptr;
726
+ CPUArchState *env G_GNUC_UNUSED = cpu_env(cs);
727
struct stat buf;
728
char *name;
729
int ret, err;
730
@@ -XXX,XX +XXX,XX @@ static void host_stat(CPUState *cs, gdb_syscall_complete_cb complete,
731
static void host_remove(CPUState *cs, gdb_syscall_complete_cb complete,
732
target_ulong fname, target_ulong fname_len)
733
{
734
- CPUArchState *env G_GNUC_UNUSED = cs->env_ptr;
735
+ CPUArchState *env G_GNUC_UNUSED = cpu_env(cs);
736
char *p;
737
int ret;
738
739
@@ -XXX,XX +XXX,XX @@ static void host_rename(CPUState *cs, gdb_syscall_complete_cb complete,
740
target_ulong oname, target_ulong oname_len,
741
target_ulong nname, target_ulong nname_len)
742
{
743
- CPUArchState *env G_GNUC_UNUSED = cs->env_ptr;
744
+ CPUArchState *env G_GNUC_UNUSED = cpu_env(cs);
745
char *ostr, *nstr;
746
int ret;
747
748
@@ -XXX,XX +XXX,XX @@ static void host_rename(CPUState *cs, gdb_syscall_complete_cb complete,
749
static void host_system(CPUState *cs, gdb_syscall_complete_cb complete,
750
target_ulong cmd, target_ulong cmd_len)
751
{
752
- CPUArchState *env G_GNUC_UNUSED = cs->env_ptr;
753
+ CPUArchState *env G_GNUC_UNUSED = cpu_env(cs);
754
char *p;
755
int ret;
756
757
@@ -XXX,XX +XXX,XX @@ static void host_system(CPUState *cs, gdb_syscall_complete_cb complete,
758
static void host_gettimeofday(CPUState *cs, gdb_syscall_complete_cb complete,
759
target_ulong tv_addr, target_ulong tz_addr)
760
{
761
- CPUArchState *env G_GNUC_UNUSED = cs->env_ptr;
762
+ CPUArchState *env G_GNUC_UNUSED = cpu_env(cs);
763
struct gdb_timeval *p;
764
int64_t rt;
765
766
@@ -XXX,XX +XXX,XX @@ static void host_poll_one(CPUState *cs, gdb_syscall_complete_cb complete,
767
static void staticfile_read(CPUState *cs, gdb_syscall_complete_cb complete,
768
GuestFD *gf, target_ulong buf, target_ulong len)
769
{
770
- CPUArchState *env G_GNUC_UNUSED = cs->env_ptr;
771
+ CPUArchState *env G_GNUC_UNUSED = cpu_env(cs);
772
target_ulong rest = gf->staticfile.len - gf->staticfile.off;
773
void *ptr;
774
775
@@ -XXX,XX +XXX,XX @@ static void staticfile_flen(CPUState *cs, gdb_syscall_complete_cb complete,
776
static void console_read(CPUState *cs, gdb_syscall_complete_cb complete,
777
GuestFD *gf, target_ulong buf, target_ulong len)
778
{
779
- CPUArchState *env G_GNUC_UNUSED = cs->env_ptr;
780
+ CPUArchState *env G_GNUC_UNUSED = cpu_env(cs);
781
char *ptr;
782
int ret;
783
784
@@ -XXX,XX +XXX,XX @@ static void console_read(CPUState *cs, gdb_syscall_complete_cb complete,
785
static void console_write(CPUState *cs, gdb_syscall_complete_cb complete,
786
GuestFD *gf, target_ulong buf, target_ulong len)
787
{
788
- CPUArchState *env G_GNUC_UNUSED = cs->env_ptr;
789
+ CPUArchState *env G_GNUC_UNUSED = cpu_env(cs);
790
char *ptr = lock_user(VERIFY_READ, buf, len, 1);
791
int ret;
792
793
diff --git a/target/alpha/translate.c b/target/alpha/translate.c
794
index XXXXXXX..XXXXXXX 100644
795
--- a/target/alpha/translate.c
796
+++ b/target/alpha/translate.c
797
@@ -XXX,XX +XXX,XX @@ static DisasJumpType translate_one(DisasContext *ctx, uint32_t insn)
798
static void alpha_tr_init_disas_context(DisasContextBase *dcbase, CPUState *cpu)
799
{
800
DisasContext *ctx = container_of(dcbase, DisasContext, base);
801
- CPUAlphaState *env = cpu->env_ptr;
802
+ CPUAlphaState *env = cpu_env(cpu);
803
int64_t bound;
804
805
ctx->tbflags = ctx->base.tb->flags;
806
@@ -XXX,XX +XXX,XX @@ static void alpha_tr_insn_start(DisasContextBase *dcbase, CPUState *cpu)
807
static void alpha_tr_translate_insn(DisasContextBase *dcbase, CPUState *cpu)
808
{
809
DisasContext *ctx = container_of(dcbase, DisasContext, base);
810
- CPUAlphaState *env = cpu->env_ptr;
811
+ CPUAlphaState *env = cpu_env(cpu);
812
uint32_t insn = translator_ldl(env, &ctx->base, ctx->base.pc_next);
813
814
ctx->base.pc_next += 4;
815
diff --git a/target/arm/cpu.c b/target/arm/cpu.c
816
index XXXXXXX..XXXXXXX 100644
817
--- a/target/arm/cpu.c
818
+++ b/target/arm/cpu.c
819
@@ -XXX,XX +XXX,XX @@ void arm_cpu_synchronize_from_tb(CPUState *cs,
820
{
821
/* The program counter is always up to date with CF_PCREL. */
822
if (!(tb_cflags(tb) & CF_PCREL)) {
823
- CPUARMState *env = cs->env_ptr;
824
+ CPUARMState *env = cpu_env(cs);
825
/*
826
* It's OK to look at env for the current mode here, because it's
827
* never possible for an AArch64 TB to chain to an AArch32 TB.
828
@@ -XXX,XX +XXX,XX @@ void arm_restore_state_to_opc(CPUState *cs,
829
const TranslationBlock *tb,
830
const uint64_t *data)
831
{
832
- CPUARMState *env = cs->env_ptr;
833
+ CPUARMState *env = cpu_env(cs);
834
835
if (is_a64(env)) {
836
if (tb_cflags(tb) & CF_PCREL) {
837
@@ -XXX,XX +XXX,XX @@ static inline bool arm_excp_unmasked(CPUState *cs, unsigned int excp_idx,
838
unsigned int cur_el, bool secure,
839
uint64_t hcr_el2)
840
{
841
- CPUARMState *env = cs->env_ptr;
842
+ CPUARMState *env = cpu_env(cs);
843
bool pstate_unmasked;
844
bool unmasked = false;
845
846
@@ -XXX,XX +XXX,XX @@ static inline bool arm_excp_unmasked(CPUState *cs, unsigned int excp_idx,
847
static bool arm_cpu_exec_interrupt(CPUState *cs, int interrupt_request)
848
{
849
CPUClass *cc = CPU_GET_CLASS(cs);
850
- CPUARMState *env = cs->env_ptr;
851
+ CPUARMState *env = cpu_env(cs);
852
uint32_t cur_el = arm_current_el(env);
853
bool secure = arm_is_secure(env);
854
uint64_t hcr_el2 = arm_hcr_el2_eff(env);
855
diff --git a/target/arm/helper.c b/target/arm/helper.c
856
index XXXXXXX..XXXXXXX 100644
857
--- a/target/arm/helper.c
858
+++ b/target/arm/helper.c
859
@@ -XXX,XX +XXX,XX @@ static const int8_t target_el_table[2][2][2][2][2][4] = {
860
uint32_t arm_phys_excp_target_el(CPUState *cs, uint32_t excp_idx,
861
uint32_t cur_el, bool secure)
862
{
863
- CPUARMState *env = cs->env_ptr;
864
+ CPUARMState *env = cpu_env(cs);
865
bool rw;
866
bool scr;
867
bool hcr;
868
diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c
869
index XXXXXXX..XXXXXXX 100644
870
--- a/target/arm/tcg/translate-a64.c
871
+++ b/target/arm/tcg/translate-a64.c
872
@@ -XXX,XX +XXX,XX @@ static void aarch64_tr_init_disas_context(DisasContextBase *dcbase,
873
CPUState *cpu)
874
{
875
DisasContext *dc = container_of(dcbase, DisasContext, base);
876
- CPUARMState *env = cpu->env_ptr;
877
+ CPUARMState *env = cpu_env(cpu);
878
ARMCPU *arm_cpu = env_archcpu(env);
879
CPUARMTBFlags tb_flags = arm_tbflags_from_tb(dc->base.tb);
880
int bound, core_mmu_idx;
881
@@ -XXX,XX +XXX,XX @@ static void aarch64_tr_insn_start(DisasContextBase *dcbase, CPUState *cpu)
882
static void aarch64_tr_translate_insn(DisasContextBase *dcbase, CPUState *cpu)
883
{
884
DisasContext *s = container_of(dcbase, DisasContext, base);
885
- CPUARMState *env = cpu->env_ptr;
886
+ CPUARMState *env = cpu_env(cpu);
887
uint64_t pc = s->base.pc_next;
888
uint32_t insn;
889
890
diff --git a/target/arm/tcg/translate.c b/target/arm/tcg/translate.c
891
index XXXXXXX..XXXXXXX 100644
892
--- a/target/arm/tcg/translate.c
893
+++ b/target/arm/tcg/translate.c
894
@@ -XXX,XX +XXX,XX @@ static bool insn_crosses_page(CPUARMState *env, DisasContext *s)
895
static void arm_tr_init_disas_context(DisasContextBase *dcbase, CPUState *cs)
896
{
897
DisasContext *dc = container_of(dcbase, DisasContext, base);
898
- CPUARMState *env = cs->env_ptr;
899
+ CPUARMState *env = cpu_env(cs);
900
ARMCPU *cpu = env_archcpu(env);
901
CPUARMTBFlags tb_flags = arm_tbflags_from_tb(dc->base.tb);
902
uint32_t condexec, core_mmu_idx;
903
@@ -XXX,XX +XXX,XX @@ static void arm_post_translate_insn(DisasContext *dc)
904
static void arm_tr_translate_insn(DisasContextBase *dcbase, CPUState *cpu)
905
{
906
DisasContext *dc = container_of(dcbase, DisasContext, base);
907
- CPUARMState *env = cpu->env_ptr;
908
+ CPUARMState *env = cpu_env(cpu);
909
uint32_t pc = dc->base.pc_next;
910
unsigned int insn;
911
912
@@ -XXX,XX +XXX,XX @@ static bool thumb_insn_is_unconditional(DisasContext *s, uint32_t insn)
913
static void thumb_tr_translate_insn(DisasContextBase *dcbase, CPUState *cpu)
914
{
915
DisasContext *dc = container_of(dcbase, DisasContext, base);
916
- CPUARMState *env = cpu->env_ptr;
917
+ CPUARMState *env = cpu_env(cpu);
918
uint32_t pc = dc->base.pc_next;
919
uint32_t insn;
920
bool is_16bit;
921
diff --git a/target/avr/translate.c b/target/avr/translate.c
922
index XXXXXXX..XXXXXXX 100644
923
--- a/target/avr/translate.c
924
+++ b/target/avr/translate.c
925
@@ -XXX,XX +XXX,XX @@ static bool canonicalize_skip(DisasContext *ctx)
926
static void avr_tr_init_disas_context(DisasContextBase *dcbase, CPUState *cs)
927
{
928
DisasContext *ctx = container_of(dcbase, DisasContext, base);
929
- CPUAVRState *env = cs->env_ptr;
930
+ CPUAVRState *env = cpu_env(cs);
931
uint32_t tb_flags = ctx->base.tb->flags;
932
933
ctx->cs = cs;
934
diff --git a/target/cris/translate.c b/target/cris/translate.c
935
index XXXXXXX..XXXXXXX 100644
936
--- a/target/cris/translate.c
937
+++ b/target/cris/translate.c
938
@@ -XXX,XX +XXX,XX @@ static unsigned int crisv32_decoder(CPUCRISState *env, DisasContext *dc)
939
static void cris_tr_init_disas_context(DisasContextBase *dcbase, CPUState *cs)
940
{
941
DisasContext *dc = container_of(dcbase, DisasContext, base);
942
- CPUCRISState *env = cs->env_ptr;
943
+ CPUCRISState *env = cpu_env(cs);
944
uint32_t tb_flags = dc->base.tb->flags;
945
uint32_t pc_start;
946
947
@@ -XXX,XX +XXX,XX @@ static void cris_tr_insn_start(DisasContextBase *dcbase, CPUState *cpu)
948
static void cris_tr_translate_insn(DisasContextBase *dcbase, CPUState *cs)
949
{
950
DisasContext *dc = container_of(dcbase, DisasContext, base);
951
- CPUCRISState *env = cs->env_ptr;
952
+ CPUCRISState *env = cpu_env(cs);
953
unsigned int insn_len;
954
955
/* Pretty disas. */
956
diff --git a/target/hexagon/translate.c b/target/hexagon/translate.c
957
index XXXXXXX..XXXXXXX 100644
958
--- a/target/hexagon/translate.c
959
+++ b/target/hexagon/translate.c
960
@@ -XXX,XX +XXX,XX @@ static void hexagon_tr_init_disas_context(DisasContextBase *dcbase,
961
CPUState *cs)
962
{
963
DisasContext *ctx = container_of(dcbase, DisasContext, base);
964
- HexagonCPU *hex_cpu = env_archcpu(cs->env_ptr);
965
+ HexagonCPU *hex_cpu = env_archcpu(cpu_env(cs));
966
uint32_t hex_flags = dcbase->tb->flags;
967
968
ctx->mem_idx = MMU_USER_IDX;
969
@@ -XXX,XX +XXX,XX @@ static bool pkt_crosses_page(CPUHexagonState *env, DisasContext *ctx)
970
static void hexagon_tr_translate_packet(DisasContextBase *dcbase, CPUState *cpu)
971
{
972
DisasContext *ctx = container_of(dcbase, DisasContext, base);
973
- CPUHexagonState *env = cpu->env_ptr;
974
+ CPUHexagonState *env = cpu_env(cpu);
975
976
decode_and_translate_packet(env, ctx);
977
978
diff --git a/target/hppa/mem_helper.c b/target/hppa/mem_helper.c
979
index XXXXXXX..XXXXXXX 100644
980
--- a/target/hppa/mem_helper.c
981
+++ b/target/hppa/mem_helper.c
982
@@ -XXX,XX +XXX,XX @@ void HELPER(itlbp)(CPUHPPAState *env, target_ulong addr, target_ureg reg)
983
synchronous across all processors. */
984
static void ptlb_work(CPUState *cpu, run_on_cpu_data data)
985
{
986
- CPUHPPAState *env = cpu->env_ptr;
987
+ CPUHPPAState *env = cpu_env(cpu);
988
target_ulong addr = (target_ulong) data.target_ptr;
989
hppa_tlb_entry *ent = hppa_find_tlb(env, addr);
990
991
diff --git a/target/hppa/translate.c b/target/hppa/translate.c
992
index XXXXXXX..XXXXXXX 100644
993
--- a/target/hppa/translate.c
994
+++ b/target/hppa/translate.c
995
@@ -XXX,XX +XXX,XX @@ static bool trans_b_gate(DisasContext *ctx, arg_b_gate *a)
996
997
#ifndef CONFIG_USER_ONLY
998
if (ctx->tb_flags & PSW_C) {
999
- CPUHPPAState *env = ctx->cs->env_ptr;
1000
+ CPUHPPAState *env = cpu_env(ctx->cs);
1001
int type = hppa_artype_for_page(env, ctx->base.pc_next);
1002
/* If we could not find a TLB entry, then we need to generate an
1003
ITLB miss exception so the kernel will provide it.
1004
@@ -XXX,XX +XXX,XX @@ static void hppa_tr_insn_start(DisasContextBase *dcbase, CPUState *cs)
1005
static void hppa_tr_translate_insn(DisasContextBase *dcbase, CPUState *cs)
1006
{
1007
DisasContext *ctx = container_of(dcbase, DisasContext, base);
1008
- CPUHPPAState *env = cs->env_ptr;
1009
+ CPUHPPAState *env = cpu_env(cs);
1010
DisasJumpType ret;
1011
int i, n;
1012
1013
diff --git a/target/i386/nvmm/nvmm-all.c b/target/i386/nvmm/nvmm-all.c
1014
index XXXXXXX..XXXXXXX 100644
1015
--- a/target/i386/nvmm/nvmm-all.c
1016
+++ b/target/i386/nvmm/nvmm-all.c
1017
@@ -XXX,XX +XXX,XX @@ nvmm_set_segment(struct nvmm_x64_state_seg *nseg, const SegmentCache *qseg)
1018
static void
1019
nvmm_set_registers(CPUState *cpu)
1020
{
1021
- CPUX86State *env = cpu->env_ptr;
1022
+ CPUX86State *env = cpu_env(cpu);
1023
struct nvmm_machine *mach = get_nvmm_mach();
1024
AccelCPUState *qcpu = cpu->accel;
1025
struct nvmm_vcpu *vcpu = &qcpu->vcpu;
1026
@@ -XXX,XX +XXX,XX @@ nvmm_get_segment(SegmentCache *qseg, const struct nvmm_x64_state_seg *nseg)
1027
static void
1028
nvmm_get_registers(CPUState *cpu)
1029
{
1030
- CPUX86State *env = cpu->env_ptr;
1031
+ CPUX86State *env = cpu_env(cpu);
1032
struct nvmm_machine *mach = get_nvmm_mach();
1033
AccelCPUState *qcpu = cpu->accel;
1034
struct nvmm_vcpu *vcpu = &qcpu->vcpu;
1035
@@ -XXX,XX +XXX,XX @@ nvmm_get_registers(CPUState *cpu)
1036
static bool
1037
nvmm_can_take_int(CPUState *cpu)
1038
{
1039
- CPUX86State *env = cpu->env_ptr;
1040
+ CPUX86State *env = cpu_env(cpu);
1041
AccelCPUState *qcpu = cpu->accel;
1042
struct nvmm_vcpu *vcpu = &qcpu->vcpu;
1043
struct nvmm_machine *mach = get_nvmm_mach();
1044
@@ -XXX,XX +XXX,XX @@ nvmm_can_take_nmi(CPUState *cpu)
1045
static void
1046
nvmm_vcpu_pre_run(CPUState *cpu)
1047
{
1048
- CPUX86State *env = cpu->env_ptr;
1049
+ CPUX86State *env = cpu_env(cpu);
1050
struct nvmm_machine *mach = get_nvmm_mach();
1051
AccelCPUState *qcpu = cpu->accel;
1052
struct nvmm_vcpu *vcpu = &qcpu->vcpu;
1053
@@ -XXX,XX +XXX,XX @@ static void
1054
nvmm_vcpu_post_run(CPUState *cpu, struct nvmm_vcpu_exit *exit)
1055
{
1056
AccelCPUState *qcpu = cpu->accel;
1057
- CPUX86State *env = cpu->env_ptr;
1058
X86CPU *x86_cpu = X86_CPU(cpu);
1059
+ CPUX86State *env = &x86_cpu->env;
1060
uint64_t tpr;
1061
1062
env->eflags = exit->exitstate.rflags;
1063
@@ -XXX,XX +XXX,XX @@ static int
1064
nvmm_handle_halted(struct nvmm_machine *mach, CPUState *cpu,
1065
struct nvmm_vcpu_exit *exit)
1066
{
1067
- CPUX86State *env = cpu->env_ptr;
1068
+ CPUX86State *env = cpu_env(cpu);
1069
int ret = 0;
1070
1071
qemu_mutex_lock_iothread();
1072
@@ -XXX,XX +XXX,XX @@ nvmm_inject_ud(struct nvmm_machine *mach, struct nvmm_vcpu *vcpu)
1073
static int
1074
nvmm_vcpu_loop(CPUState *cpu)
1075
{
1076
- CPUX86State *env = cpu->env_ptr;
1077
struct nvmm_machine *mach = get_nvmm_mach();
1078
AccelCPUState *qcpu = cpu->accel;
1079
struct nvmm_vcpu *vcpu = &qcpu->vcpu;
1080
X86CPU *x86_cpu = X86_CPU(cpu);
1081
+ CPUX86State *env = &x86_cpu->env;
1082
struct nvmm_vcpu_exit *exit = vcpu->exit;
1083
int ret;
1084
1085
diff --git a/target/i386/tcg/sysemu/excp_helper.c b/target/i386/tcg/sysemu/excp_helper.c
1086
index XXXXXXX..XXXXXXX 100644
1087
--- a/target/i386/tcg/sysemu/excp_helper.c
1088
+++ b/target/i386/tcg/sysemu/excp_helper.c
1089
@@ -XXX,XX +XXX,XX @@ bool x86_cpu_tlb_fill(CPUState *cs, vaddr addr, int size,
1090
MMUAccessType access_type, int mmu_idx,
1091
bool probe, uintptr_t retaddr)
1092
{
1093
- CPUX86State *env = cs->env_ptr;
1094
+ CPUX86State *env = cpu_env(cs);
1095
TranslateResult out;
1096
TranslateFault err;
1097
1098
diff --git a/target/i386/tcg/tcg-cpu.c b/target/i386/tcg/tcg-cpu.c
1099
index XXXXXXX..XXXXXXX 100644
1100
--- a/target/i386/tcg/tcg-cpu.c
1101
+++ b/target/i386/tcg/tcg-cpu.c
1102
@@ -XXX,XX +XXX,XX @@ static void x86_cpu_synchronize_from_tb(CPUState *cs,
1103
{
1104
/* The instruction pointer is always up to date with CF_PCREL. */
1105
if (!(tb_cflags(tb) & CF_PCREL)) {
1106
- CPUX86State *env = cs->env_ptr;
1107
+ CPUX86State *env = cpu_env(cs);
1108
env->eip = tb->pc - tb->cs_base;
1109
}
1110
}
1111
diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c
1112
index XXXXXXX..XXXXXXX 100644
1113
--- a/target/i386/tcg/translate.c
1114
+++ b/target/i386/tcg/translate.c
1115
@@ -XXX,XX +XXX,XX @@ static void gen_cmpxchg16b(DisasContext *s, CPUX86State *env, int modrm)
1116
be stopped. Return the next pc value */
1117
static bool disas_insn(DisasContext *s, CPUState *cpu)
1118
{
1119
- CPUX86State *env = cpu->env_ptr;
1120
+ CPUX86State *env = cpu_env(cpu);
1121
int b, prefixes;
1122
int shift;
1123
MemOp ot, aflag, dflag;
1124
@@ -XXX,XX +XXX,XX @@ void tcg_x86_init(void)
1125
static void i386_tr_init_disas_context(DisasContextBase *dcbase, CPUState *cpu)
1126
{
1127
DisasContext *dc = container_of(dcbase, DisasContext, base);
1128
- CPUX86State *env = cpu->env_ptr;
1129
+ CPUX86State *env = cpu_env(cpu);
1130
uint32_t flags = dc->base.tb->flags;
1131
uint32_t cflags = tb_cflags(dc->base.tb);
1132
int cpl = (flags >> HF_CPL_SHIFT) & 3;
1133
diff --git a/target/i386/whpx/whpx-all.c b/target/i386/whpx/whpx-all.c
1134
index XXXXXXX..XXXXXXX 100644
1135
--- a/target/i386/whpx/whpx-all.c
1136
+++ b/target/i386/whpx/whpx-all.c
1137
@@ -XXX,XX +XXX,XX @@ static SegmentCache whpx_seg_h2q(const WHV_X64_SEGMENT_REGISTER *hs)
1138
/* X64 Extended Control Registers */
1139
static void whpx_set_xcrs(CPUState *cpu)
1140
{
1141
- CPUX86State *env = cpu->env_ptr;
1142
+ CPUX86State *env = cpu_env(cpu);
1143
HRESULT hr;
1144
struct whpx_state *whpx = &whpx_global;
1145
WHV_REGISTER_VALUE xcr0;
1146
@@ -XXX,XX +XXX,XX @@ static void whpx_set_xcrs(CPUState *cpu)
1147
1148
static int whpx_set_tsc(CPUState *cpu)
1149
{
1150
- CPUX86State *env = cpu->env_ptr;
1151
+ CPUX86State *env = cpu_env(cpu);
1152
WHV_REGISTER_NAME tsc_reg = WHvX64RegisterTsc;
1153
WHV_REGISTER_VALUE tsc_val;
1154
HRESULT hr;
1155
@@ -XXX,XX +XXX,XX @@ static void whpx_set_registers(CPUState *cpu, int level)
1156
{
1157
struct whpx_state *whpx = &whpx_global;
1158
AccelCPUState *vcpu = cpu->accel;
1159
- CPUX86State *env = cpu->env_ptr;
1160
X86CPU *x86_cpu = X86_CPU(cpu);
1161
+ CPUX86State *env = &x86_cpu->env;
1162
struct whpx_register_set vcxt;
1163
HRESULT hr;
1164
int idx;
1165
@@ -XXX,XX +XXX,XX @@ static void whpx_set_registers(CPUState *cpu, int level)
1166
1167
static int whpx_get_tsc(CPUState *cpu)
1168
{
1169
- CPUX86State *env = cpu->env_ptr;
1170
+ CPUX86State *env = cpu_env(cpu);
1171
WHV_REGISTER_NAME tsc_reg = WHvX64RegisterTsc;
1172
WHV_REGISTER_VALUE tsc_val;
1173
HRESULT hr;
1174
@@ -XXX,XX +XXX,XX @@ static int whpx_get_tsc(CPUState *cpu)
1175
/* X64 Extended Control Registers */
1176
static void whpx_get_xcrs(CPUState *cpu)
1177
{
1178
- CPUX86State *env = cpu->env_ptr;
1179
+ CPUX86State *env = cpu_env(cpu);
1180
HRESULT hr;
1181
struct whpx_state *whpx = &whpx_global;
1182
WHV_REGISTER_VALUE xcr0;
1183
@@ -XXX,XX +XXX,XX @@ static void whpx_get_registers(CPUState *cpu)
1184
{
1185
struct whpx_state *whpx = &whpx_global;
1186
AccelCPUState *vcpu = cpu->accel;
1187
- CPUX86State *env = cpu->env_ptr;
1188
X86CPU *x86_cpu = X86_CPU(cpu);
1189
+ CPUX86State *env = &x86_cpu->env;
1190
struct whpx_register_set vcxt;
1191
uint64_t tpr, apic_base;
1192
HRESULT hr;
1193
@@ -XXX,XX +XXX,XX @@ static vaddr whpx_vcpu_get_pc(CPUState *cpu, bool exit_context_valid)
1194
{
1195
if (cpu->vcpu_dirty) {
1196
/* The CPU registers have been modified by other parts of QEMU. */
1197
- CPUArchState *env = (CPUArchState *)(cpu->env_ptr);
1198
+ CPUArchState *env = cpu_env(cpu);
1199
return env->eip;
1200
} else if (exit_context_valid) {
1201
/*
1202
@@ -XXX,XX +XXX,XX @@ static vaddr whpx_vcpu_get_pc(CPUState *cpu, bool exit_context_valid)
1203
1204
static int whpx_handle_halt(CPUState *cpu)
1205
{
1206
- CPUX86State *env = cpu->env_ptr;
1207
+ CPUX86State *env = cpu_env(cpu);
1208
int ret = 0;
1209
1210
qemu_mutex_lock_iothread();
1211
@@ -XXX,XX +XXX,XX @@ static void whpx_vcpu_pre_run(CPUState *cpu)
1212
HRESULT hr;
1213
struct whpx_state *whpx = &whpx_global;
1214
AccelCPUState *vcpu = cpu->accel;
1215
- CPUX86State *env = cpu->env_ptr;
1216
X86CPU *x86_cpu = X86_CPU(cpu);
1217
+ CPUX86State *env = &x86_cpu->env;
1218
int irq;
1219
uint8_t tpr;
1220
WHV_X64_PENDING_INTERRUPTION_REGISTER new_int;
1221
@@ -XXX,XX +XXX,XX @@ static void whpx_vcpu_pre_run(CPUState *cpu)
1222
static void whpx_vcpu_post_run(CPUState *cpu)
1223
{
1224
AccelCPUState *vcpu = cpu->accel;
1225
- CPUX86State *env = cpu->env_ptr;
1226
X86CPU *x86_cpu = X86_CPU(cpu);
1227
+ CPUX86State *env = &x86_cpu->env;
1228
1229
env->eflags = vcpu->exit_ctx.VpContext.Rflags;
1230
1231
@@ -XXX,XX +XXX,XX @@ static void whpx_vcpu_post_run(CPUState *cpu)
1232
1233
static void whpx_vcpu_process_async_events(CPUState *cpu)
1234
{
1235
- CPUX86State *env = cpu->env_ptr;
1236
X86CPU *x86_cpu = X86_CPU(cpu);
1237
+ CPUX86State *env = &x86_cpu->env;
1238
AccelCPUState *vcpu = cpu->accel;
1239
1240
if ((cpu->interrupt_request & CPU_INTERRUPT_INIT) &&
1241
@@ -XXX,XX +XXX,XX @@ int whpx_init_vcpu(CPUState *cpu)
1242
struct whpx_state *whpx = &whpx_global;
1243
AccelCPUState *vcpu = NULL;
1244
Error *local_error = NULL;
1245
- CPUX86State *env = cpu->env_ptr;
1246
X86CPU *x86_cpu = X86_CPU(cpu);
1247
+ CPUX86State *env = &x86_cpu->env;
1248
UINT64 freq = 0;
1249
int ret;
1250
1251
@@ -XXX,XX +XXX,XX @@ int whpx_init_vcpu(CPUState *cpu)
1252
cpu->vcpu_dirty = true;
1253
cpu->accel = vcpu;
1254
max_vcpu_index = max(max_vcpu_index, cpu->cpu_index);
1255
- qemu_add_vm_change_state_handler(whpx_cpu_update_state, cpu->env_ptr);
1256
+ qemu_add_vm_change_state_handler(whpx_cpu_update_state, env);
1257
1258
return 0;
1259
1260
diff --git a/target/loongarch/translate.c b/target/loongarch/translate.c
1261
index XXXXXXX..XXXXXXX 100644
1262
--- a/target/loongarch/translate.c
1263
+++ b/target/loongarch/translate.c
1264
@@ -XXX,XX +XXX,XX @@ static void loongarch_tr_init_disas_context(DisasContextBase *dcbase,
1265
CPUState *cs)
1266
{
1267
int64_t bound;
1268
- CPULoongArchState *env = cs->env_ptr;
1269
+ CPULoongArchState *env = cpu_env(cs);
1270
DisasContext *ctx = container_of(dcbase, DisasContext, base);
1271
1272
ctx->page_start = ctx->base.pc_first & TARGET_PAGE_MASK;
1273
@@ -XXX,XX +XXX,XX @@ static uint64_t make_address_pc(DisasContext *ctx, uint64_t addr)
1274
1275
static void loongarch_tr_translate_insn(DisasContextBase *dcbase, CPUState *cs)
1276
{
1277
- CPULoongArchState *env = cs->env_ptr;
1278
+ CPULoongArchState *env = cpu_env(cs);
1279
DisasContext *ctx = container_of(dcbase, DisasContext, base);
1280
1281
ctx->opcode = translator_ldl(env, &ctx->base, ctx->base.pc_next);
1282
diff --git a/target/m68k/translate.c b/target/m68k/translate.c
1283
index XXXXXXX..XXXXXXX 100644
1284
--- a/target/m68k/translate.c
1285
+++ b/target/m68k/translate.c
1286
@@ -XXX,XX +XXX,XX @@ void register_m68k_insns (CPUM68KState *env)
1287
static void m68k_tr_init_disas_context(DisasContextBase *dcbase, CPUState *cpu)
1288
{
1289
DisasContext *dc = container_of(dcbase, DisasContext, base);
1290
- CPUM68KState *env = cpu->env_ptr;
1291
+ CPUM68KState *env = cpu_env(cpu);
1292
1293
dc->env = env;
1294
dc->pc = dc->base.pc_first;
1295
@@ -XXX,XX +XXX,XX @@ static void m68k_tr_insn_start(DisasContextBase *dcbase, CPUState *cpu)
1296
static void m68k_tr_translate_insn(DisasContextBase *dcbase, CPUState *cpu)
1297
{
1298
DisasContext *dc = container_of(dcbase, DisasContext, base);
1299
- CPUM68KState *env = cpu->env_ptr;
1300
+ CPUM68KState *env = cpu_env(cpu);
1301
uint16_t insn = read_im16(env, dc);
1302
1303
opcode_table[insn](env, dc, insn);
1304
diff --git a/target/microblaze/translate.c b/target/microblaze/translate.c
1305
index XXXXXXX..XXXXXXX 100644
1306
--- a/target/microblaze/translate.c
1307
+++ b/target/microblaze/translate.c
1308
@@ -XXX,XX +XXX,XX @@ static void mb_tr_insn_start(DisasContextBase *dcb, CPUState *cs)
1309
static void mb_tr_translate_insn(DisasContextBase *dcb, CPUState *cs)
1310
{
1311
DisasContext *dc = container_of(dcb, DisasContext, base);
1312
- CPUMBState *env = cs->env_ptr;
1313
+ CPUMBState *env = cpu_env(cs);
1314
uint32_t ir;
1315
1316
/* TODO: This should raise an exception, not terminate qemu. */
1317
diff --git a/target/mips/tcg/sysemu/mips-semi.c b/target/mips/tcg/sysemu/mips-semi.c
1318
index XXXXXXX..XXXXXXX 100644
1319
--- a/target/mips/tcg/sysemu/mips-semi.c
1320
+++ b/target/mips/tcg/sysemu/mips-semi.c
1321
@@ -XXX,XX +XXX,XX @@ static void report_fault(CPUMIPSState *env)
1322
1323
static void uhi_cb(CPUState *cs, uint64_t ret, int err)
1324
{
1325
- CPUMIPSState *env = cs->env_ptr;
1326
+ CPUMIPSState *env = cpu_env(cs);
1327
1328
#define E(N) case E##N: err = UHI_E##N; break
1329
1330
@@ -XXX,XX +XXX,XX @@ static void uhi_fstat_cb(CPUState *cs, uint64_t ret, int err)
1331
QEMU_BUILD_BUG_ON(sizeof(UHIStat) < sizeof(struct gdb_stat));
1332
1333
if (!err) {
1334
- CPUMIPSState *env = cs->env_ptr;
1335
+ CPUMIPSState *env = cpu_env(cs);
1336
target_ulong addr = env->active_tc.gpr[5];
1337
UHIStat *dst = lock_user(VERIFY_WRITE, addr, sizeof(UHIStat), 1);
1338
struct gdb_stat s;
1339
diff --git a/target/mips/tcg/translate.c b/target/mips/tcg/translate.c
1340
index XXXXXXX..XXXXXXX 100644
1341
--- a/target/mips/tcg/translate.c
1342
+++ b/target/mips/tcg/translate.c
1343
@@ -XXX,XX +XXX,XX @@ static void decode_opc(CPUMIPSState *env, DisasContext *ctx)
1344
static void mips_tr_init_disas_context(DisasContextBase *dcbase, CPUState *cs)
1345
{
1346
DisasContext *ctx = container_of(dcbase, DisasContext, base);
1347
- CPUMIPSState *env = cs->env_ptr;
1348
+ CPUMIPSState *env = cpu_env(cs);
1349
1350
ctx->page_start = ctx->base.pc_first & TARGET_PAGE_MASK;
1351
ctx->saved_pc = -1;
1352
@@ -XXX,XX +XXX,XX @@ static void mips_tr_insn_start(DisasContextBase *dcbase, CPUState *cs)
1353
1354
static void mips_tr_translate_insn(DisasContextBase *dcbase, CPUState *cs)
1355
{
1356
- CPUMIPSState *env = cs->env_ptr;
1357
+ CPUMIPSState *env = cpu_env(cs);
1358
DisasContext *ctx = container_of(dcbase, DisasContext, base);
1359
int insn_bytes;
1360
int is_slot;
1361
diff --git a/target/nios2/translate.c b/target/nios2/translate.c
1362
index XXXXXXX..XXXXXXX 100644
1363
--- a/target/nios2/translate.c
1364
+++ b/target/nios2/translate.c
1365
@@ -XXX,XX +XXX,XX @@ static const char * const cr_regnames[NUM_CR_REGS] = {
1366
static void nios2_tr_init_disas_context(DisasContextBase *dcbase, CPUState *cs)
1367
{
1368
DisasContext *dc = container_of(dcbase, DisasContext, base);
1369
- CPUNios2State *env = cs->env_ptr;
1370
+ CPUNios2State *env = cpu_env(cs);
1371
Nios2CPU *cpu = env_archcpu(env);
1372
int page_insns;
1373
1374
@@ -XXX,XX +XXX,XX @@ static void nios2_tr_insn_start(DisasContextBase *dcbase, CPUState *cs)
1375
static void nios2_tr_translate_insn(DisasContextBase *dcbase, CPUState *cs)
1376
{
1377
DisasContext *dc = container_of(dcbase, DisasContext, base);
1378
- CPUNios2State *env = cs->env_ptr;
1379
+ CPUNios2State *env = cpu_env(cs);
1380
const Nios2Instruction *instr;
1381
uint32_t code, pc;
1382
uint8_t op;
1383
diff --git a/target/openrisc/translate.c b/target/openrisc/translate.c
1384
index XXXXXXX..XXXXXXX 100644
1385
--- a/target/openrisc/translate.c
1386
+++ b/target/openrisc/translate.c
1387
@@ -XXX,XX +XXX,XX @@ static bool trans_lf_sfun_d(DisasContext *dc, arg_ab_pair *a)
1388
static void openrisc_tr_init_disas_context(DisasContextBase *dcb, CPUState *cs)
1389
{
1390
DisasContext *dc = container_of(dcb, DisasContext, base);
1391
- CPUOpenRISCState *env = cs->env_ptr;
1392
+ CPUOpenRISCState *env = cpu_env(cs);
1393
int bound;
1394
1395
dc->mem_idx = cpu_mmu_index(env, false);
1396
diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c
1397
index XXXXXXX..XXXXXXX 100644
1398
--- a/target/ppc/excp_helper.c
1399
+++ b/target/ppc/excp_helper.c
1400
@@ -XXX,XX +XXX,XX @@ void ppc_cpu_do_unaligned_access(CPUState *cs, vaddr vaddr,
1401
MMUAccessType access_type,
1402
int mmu_idx, uintptr_t retaddr)
1403
{
1404
- CPUPPCState *env = cs->env_ptr;
1405
+ CPUPPCState *env = cpu_env(cs);
1406
uint32_t insn;
1407
1408
/* Restore state and reload the insn we executed, for filling in DSISR. */
1409
@@ -XXX,XX +XXX,XX @@ void ppc_cpu_do_transaction_failed(CPUState *cs, hwaddr physaddr,
1410
int mmu_idx, MemTxAttrs attrs,
1411
MemTxResult response, uintptr_t retaddr)
1412
{
1413
- CPUPPCState *env = cs->env_ptr;
1414
+ CPUPPCState *env = cpu_env(cs);
1415
1416
switch (env->excp_model) {
1417
#if defined(TARGET_PPC64)
1418
@@ -XXX,XX +XXX,XX @@ void ppc_cpu_do_transaction_failed(CPUState *cs, hwaddr physaddr,
1419
void ppc_cpu_debug_excp_handler(CPUState *cs)
1420
{
1421
#if defined(TARGET_PPC64)
1422
- CPUPPCState *env = cs->env_ptr;
1423
+ CPUPPCState *env = cpu_env(cs);
1424
1425
if (env->insns_flags2 & PPC2_ISA207S) {
1426
if (cs->watchpoint_hit) {
1427
@@ -XXX,XX +XXX,XX @@ void ppc_cpu_debug_excp_handler(CPUState *cs)
1428
bool ppc_cpu_debug_check_breakpoint(CPUState *cs)
1429
{
1430
#if defined(TARGET_PPC64)
1431
- CPUPPCState *env = cs->env_ptr;
1432
+ CPUPPCState *env = cpu_env(cs);
1433
1434
if (env->insns_flags2 & PPC2_ISA207S) {
1435
target_ulong priv;
1436
@@ -XXX,XX +XXX,XX @@ bool ppc_cpu_debug_check_breakpoint(CPUState *cs)
1437
bool ppc_cpu_debug_check_watchpoint(CPUState *cs, CPUWatchpoint *wp)
1438
{
1439
#if defined(TARGET_PPC64)
1440
- CPUPPCState *env = cs->env_ptr;
1441
+ CPUPPCState *env = cpu_env(cs);
1442
1443
if (env->insns_flags2 & PPC2_ISA207S) {
1444
if (wp == env->dawr0_watchpoint) {
1445
diff --git a/target/ppc/translate.c b/target/ppc/translate.c
1446
index XXXXXXX..XXXXXXX 100644
1447
--- a/target/ppc/translate.c
1448
+++ b/target/ppc/translate.c
1449
@@ -XXX,XX +XXX,XX @@ static bool decode_legacy(PowerPCCPU *cpu, DisasContext *ctx, uint32_t insn)
1450
static void ppc_tr_init_disas_context(DisasContextBase *dcbase, CPUState *cs)
1451
{
1452
DisasContext *ctx = container_of(dcbase, DisasContext, base);
1453
- CPUPPCState *env = cs->env_ptr;
1454
+ CPUPPCState *env = cpu_env(cs);
1455
uint32_t hflags = ctx->base.tb->flags;
1456
1457
ctx->spr_cb = env->spr_cb;
1458
@@ -XXX,XX +XXX,XX @@ static void ppc_tr_translate_insn(DisasContextBase *dcbase, CPUState *cs)
1459
{
1460
DisasContext *ctx = container_of(dcbase, DisasContext, base);
1461
PowerPCCPU *cpu = POWERPC_CPU(cs);
1462
- CPUPPCState *env = cs->env_ptr;
1463
+ CPUPPCState *env = cpu_env(cs);
1464
target_ulong pc;
1465
uint32_t insn;
1466
bool ok;
1467
diff --git a/target/riscv/translate.c b/target/riscv/translate.c
1468
index XXXXXXX..XXXXXXX 100644
1469
--- a/target/riscv/translate.c
1470
+++ b/target/riscv/translate.c
1471
@@ -XXX,XX +XXX,XX @@ static uint32_t opcode_at(DisasContextBase *dcbase, target_ulong pc)
1472
{
1473
DisasContext *ctx = container_of(dcbase, DisasContext, base);
1474
CPUState *cpu = ctx->cs;
1475
- CPURISCVState *env = cpu->env_ptr;
1476
+ CPURISCVState *env = cpu_env(cpu);
1477
1478
return cpu_ldl_code(env, pc);
1479
}
1480
@@ -XXX,XX +XXX,XX @@ static void decode_opc(CPURISCVState *env, DisasContext *ctx, uint16_t opcode)
1481
static void riscv_tr_init_disas_context(DisasContextBase *dcbase, CPUState *cs)
1482
{
1483
DisasContext *ctx = container_of(dcbase, DisasContext, base);
1484
- CPURISCVState *env = cs->env_ptr;
1485
+ CPURISCVState *env = cpu_env(cs);
1486
RISCVCPU *cpu = RISCV_CPU(cs);
1487
uint32_t tb_flags = ctx->base.tb->flags;
1488
1489
@@ -XXX,XX +XXX,XX @@ static void riscv_tr_insn_start(DisasContextBase *dcbase, CPUState *cpu)
1490
static void riscv_tr_translate_insn(DisasContextBase *dcbase, CPUState *cpu)
1491
{
1492
DisasContext *ctx = container_of(dcbase, DisasContext, base);
1493
- CPURISCVState *env = cpu->env_ptr;
1494
+ CPURISCVState *env = cpu_env(cpu);
1495
uint16_t opcode16 = translator_lduw(env, &ctx->base, ctx->base.pc_next);
1496
1497
ctx->ol = ctx->xl;
1498
diff --git a/target/rx/cpu.c b/target/rx/cpu.c
1499
index XXXXXXX..XXXXXXX 100644
1500
--- a/target/rx/cpu.c
1501
+++ b/target/rx/cpu.c
1502
@@ -XXX,XX +XXX,XX @@ static bool rx_cpu_tlb_fill(CPUState *cs, vaddr addr, int size,
1503
1504
static void rx_cpu_init(Object *obj)
1505
{
1506
- CPUState *cs = CPU(obj);
1507
RXCPU *cpu = RX_CPU(obj);
1508
- CPURXState *env = &cpu->env;
1509
1510
cpu_set_cpustate_pointers(cpu);
1511
- cs->env_ptr = env;
1512
qdev_init_gpio_in(DEVICE(cpu), rx_cpu_set_irq, 2);
1513
}
1514
1515
diff --git a/target/rx/translate.c b/target/rx/translate.c
1516
index XXXXXXX..XXXXXXX 100644
1517
--- a/target/rx/translate.c
1518
+++ b/target/rx/translate.c
1519
@@ -XXX,XX +XXX,XX @@ static bool trans_WAIT(DisasContext *ctx, arg_WAIT *a)
1520
1521
static void rx_tr_init_disas_context(DisasContextBase *dcbase, CPUState *cs)
1522
{
1523
- CPURXState *env = cs->env_ptr;
1524
+ CPURXState *env = cpu_env(cs);
1525
DisasContext *ctx = container_of(dcbase, DisasContext, base);
1526
ctx->env = env;
1527
ctx->tb_flags = ctx->base.tb->flags;
1528
diff --git a/target/s390x/tcg/translate.c b/target/s390x/tcg/translate.c
1529
index XXXXXXX..XXXXXXX 100644
1530
--- a/target/s390x/tcg/translate.c
1531
+++ b/target/s390x/tcg/translate.c
1532
@@ -XXX,XX +XXX,XX @@ static target_ulong get_next_pc(CPUS390XState *env, DisasContext *s,
1533
1534
static void s390x_tr_translate_insn(DisasContextBase *dcbase, CPUState *cs)
1535
{
1536
- CPUS390XState *env = cs->env_ptr;
1537
+ CPUS390XState *env = cpu_env(cs);
1538
DisasContext *dc = container_of(dcbase, DisasContext, base);
1539
1540
dc->base.is_jmp = translate_one(env, dc);
1541
diff --git a/target/sh4/op_helper.c b/target/sh4/op_helper.c
1542
index XXXXXXX..XXXXXXX 100644
1543
--- a/target/sh4/op_helper.c
1544
+++ b/target/sh4/op_helper.c
1545
@@ -XXX,XX +XXX,XX @@ void superh_cpu_do_unaligned_access(CPUState *cs, vaddr addr,
1546
MMUAccessType access_type,
1547
int mmu_idx, uintptr_t retaddr)
1548
{
1549
- CPUSH4State *env = cs->env_ptr;
1550
+ CPUSH4State *env = cpu_env(cs);
1551
1552
env->tea = addr;
1553
switch (access_type) {
1554
diff --git a/target/sh4/translate.c b/target/sh4/translate.c
1555
index XXXXXXX..XXXXXXX 100644
1556
--- a/target/sh4/translate.c
1557
+++ b/target/sh4/translate.c
1558
@@ -XXX,XX +XXX,XX @@ static void decode_gusa(DisasContext *ctx, CPUSH4State *env)
1559
static void sh4_tr_init_disas_context(DisasContextBase *dcbase, CPUState *cs)
1560
{
1561
DisasContext *ctx = container_of(dcbase, DisasContext, base);
1562
- CPUSH4State *env = cs->env_ptr;
1563
+ CPUSH4State *env = cpu_env(cs);
1564
uint32_t tbflags;
1565
int bound;
1566
1567
@@ -XXX,XX +XXX,XX @@ static void sh4_tr_insn_start(DisasContextBase *dcbase, CPUState *cs)
1568
1569
static void sh4_tr_translate_insn(DisasContextBase *dcbase, CPUState *cs)
1570
{
1571
- CPUSH4State *env = cs->env_ptr;
1572
+ CPUSH4State *env = cpu_env(cs);
1573
DisasContext *ctx = container_of(dcbase, DisasContext, base);
1574
1575
#ifdef CONFIG_USER_ONLY
1576
diff --git a/target/sparc/translate.c b/target/sparc/translate.c
1577
index XXXXXXX..XXXXXXX 100644
1578
--- a/target/sparc/translate.c
1579
+++ b/target/sparc/translate.c
1580
@@ -XXX,XX +XXX,XX @@ static void disas_sparc_insn(DisasContext * dc, unsigned int insn)
1581
static void sparc_tr_init_disas_context(DisasContextBase *dcbase, CPUState *cs)
1582
{
1583
DisasContext *dc = container_of(dcbase, DisasContext, base);
1584
- CPUSPARCState *env = cs->env_ptr;
1585
+ CPUSPARCState *env = cpu_env(cs);
1586
int bound;
1587
1588
dc->pc = dc->base.pc_first;
1589
@@ -XXX,XX +XXX,XX @@ static void sparc_tr_insn_start(DisasContextBase *dcbase, CPUState *cs)
1590
static void sparc_tr_translate_insn(DisasContextBase *dcbase, CPUState *cs)
1591
{
1592
DisasContext *dc = container_of(dcbase, DisasContext, base);
1593
- CPUSPARCState *env = cs->env_ptr;
1594
+ CPUSPARCState *env = cpu_env(cs);
1595
unsigned int insn;
1596
1597
insn = translator_ldl(env, &dc->base, dc->pc);
1598
diff --git a/target/tricore/translate.c b/target/tricore/translate.c
1599
index XXXXXXX..XXXXXXX 100644
1600
--- a/target/tricore/translate.c
1601
+++ b/target/tricore/translate.c
1602
@@ -XXX,XX +XXX,XX @@ static void tricore_tr_init_disas_context(DisasContextBase *dcbase,
1603
CPUState *cs)
1604
{
1605
DisasContext *ctx = container_of(dcbase, DisasContext, base);
1606
- CPUTriCoreState *env = cs->env_ptr;
1607
+ CPUTriCoreState *env = cpu_env(cs);
1608
ctx->mem_idx = cpu_mmu_index(env, false);
1609
1610
uint32_t tb_flags = (uint32_t)ctx->base.tb->flags;
1611
@@ -XXX,XX +XXX,XX @@ static bool insn_crosses_page(CPUTriCoreState *env, DisasContext *ctx)
1612
static void tricore_tr_translate_insn(DisasContextBase *dcbase, CPUState *cpu)
1613
{
1614
DisasContext *ctx = container_of(dcbase, DisasContext, base);
1615
- CPUTriCoreState *env = cpu->env_ptr;
1616
+ CPUTriCoreState *env = cpu_env(cpu);
1617
uint16_t insn_lo;
1618
bool is_16bit;
1619
1620
diff --git a/target/xtensa/translate.c b/target/xtensa/translate.c
1621
index XXXXXXX..XXXXXXX 100644
1622
--- a/target/xtensa/translate.c
1623
+++ b/target/xtensa/translate.c
1624
@@ -XXX,XX +XXX,XX @@ static void xtensa_tr_init_disas_context(DisasContextBase *dcbase,
1625
CPUState *cpu)
1626
{
1627
DisasContext *dc = container_of(dcbase, DisasContext, base);
1628
- CPUXtensaState *env = cpu->env_ptr;
1629
+ CPUXtensaState *env = cpu_env(cpu);
1630
uint32_t tb_flags = dc->base.tb->flags;
1631
1632
dc->config = env->config;
1633
@@ -XXX,XX +XXX,XX @@ static void xtensa_tr_insn_start(DisasContextBase *dcbase, CPUState *cpu)
1634
static void xtensa_tr_translate_insn(DisasContextBase *dcbase, CPUState *cpu)
1635
{
1636
DisasContext *dc = container_of(dcbase, DisasContext, base);
1637
- CPUXtensaState *env = cpu->env_ptr;
1638
+ CPUXtensaState *env = cpu_env(cpu);
1639
target_ulong page_start;
1640
1641
/* These two conditions only apply to the first insn in the TB,
1642
diff --git a/target/i386/tcg/decode-new.c.inc b/target/i386/tcg/decode-new.c.inc
1643
index XXXXXXX..XXXXXXX 100644
1644
--- a/target/i386/tcg/decode-new.c.inc
1645
+++ b/target/i386/tcg/decode-new.c.inc
1646
@@ -XXX,XX +XXX,XX @@ illegal:
1647
*/
1648
static void disas_insn_new(DisasContext *s, CPUState *cpu, int b)
1649
{
1650
- CPUX86State *env = cpu->env_ptr;
1651
+ CPUX86State *env = cpu_env(cpu);
1652
bool first = true;
1653
X86DecodedInsn decode;
1654
X86DecodeFunc decode_func = decode_root;
1655
--
1656
2.34.1
diff view generated by jsdifflib
New patch
1
This function is now empty, so remove it. In the case of
2
m68k and tricore, this empties the class instance initfn,
3
so remove those as well.
1
4
5
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
6
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7
---
8
include/exec/cpu-all.h | 10 ----------
9
target/alpha/cpu.c | 2 --
10
target/arm/cpu.c | 1 -
11
target/avr/cpu.c | 2 --
12
target/cris/cpu.c | 2 --
13
target/hexagon/cpu.c | 3 ---
14
target/hppa/cpu.c | 1 -
15
target/i386/cpu.c | 1 -
16
target/loongarch/cpu.c | 8 +++-----
17
target/m68k/cpu.c | 8 --------
18
target/microblaze/cpu.c | 1 -
19
target/mips/cpu.c | 1 -
20
target/nios2/cpu.c | 4 +---
21
target/openrisc/cpu.c | 6 +-----
22
target/ppc/cpu_init.c | 1 -
23
target/riscv/cpu.c | 6 +-----
24
target/rx/cpu.c | 1 -
25
target/s390x/cpu.c | 2 --
26
target/sh4/cpu.c | 2 --
27
target/sparc/cpu.c | 2 --
28
target/tricore/cpu.c | 9 ---------
29
target/xtensa/cpu.c | 1 -
30
22 files changed, 6 insertions(+), 68 deletions(-)
31
32
diff --git a/include/exec/cpu-all.h b/include/exec/cpu-all.h
33
index XXXXXXX..XXXXXXX 100644
34
--- a/include/exec/cpu-all.h
35
+++ b/include/exec/cpu-all.h
36
@@ -XXX,XX +XXX,XX @@ void dump_exec_info(GString *buf);
37
/* accel/tcg/cpu-exec.c */
38
int cpu_exec(CPUState *cpu);
39
40
-/**
41
- * cpu_set_cpustate_pointers(cpu)
42
- * @cpu: The cpu object
43
- *
44
- * Set the generic pointers in CPUState into the outer object.
45
- */
46
-static inline void cpu_set_cpustate_pointers(ArchCPU *cpu)
47
-{
48
-}
49
-
50
/* Validate correct placement of CPUArchState. */
51
QEMU_BUILD_BUG_ON(offsetof(ArchCPU, parent_obj) != 0);
52
QEMU_BUILD_BUG_ON(offsetof(ArchCPU, env) != sizeof(CPUState));
53
diff --git a/target/alpha/cpu.c b/target/alpha/cpu.c
54
index XXXXXXX..XXXXXXX 100644
55
--- a/target/alpha/cpu.c
56
+++ b/target/alpha/cpu.c
57
@@ -XXX,XX +XXX,XX @@ static void alpha_cpu_initfn(Object *obj)
58
AlphaCPU *cpu = ALPHA_CPU(obj);
59
CPUAlphaState *env = &cpu->env;
60
61
- cpu_set_cpustate_pointers(cpu);
62
-
63
env->lock_addr = -1;
64
#if defined(CONFIG_USER_ONLY)
65
env->flags = ENV_FLAG_PS_USER | ENV_FLAG_FEN;
66
diff --git a/target/arm/cpu.c b/target/arm/cpu.c
67
index XXXXXXX..XXXXXXX 100644
68
--- a/target/arm/cpu.c
69
+++ b/target/arm/cpu.c
70
@@ -XXX,XX +XXX,XX @@ static void arm_cpu_initfn(Object *obj)
71
{
72
ARMCPU *cpu = ARM_CPU(obj);
73
74
- cpu_set_cpustate_pointers(cpu);
75
cpu->cp_regs = g_hash_table_new_full(g_direct_hash, g_direct_equal,
76
NULL, g_free);
77
78
diff --git a/target/avr/cpu.c b/target/avr/cpu.c
79
index XXXXXXX..XXXXXXX 100644
80
--- a/target/avr/cpu.c
81
+++ b/target/avr/cpu.c
82
@@ -XXX,XX +XXX,XX @@ static void avr_cpu_initfn(Object *obj)
83
{
84
AVRCPU *cpu = AVR_CPU(obj);
85
86
- cpu_set_cpustate_pointers(cpu);
87
-
88
/* Set the number of interrupts supported by the CPU. */
89
qdev_init_gpio_in(DEVICE(cpu), avr_cpu_set_int,
90
sizeof(cpu->env.intsrc) * 8);
91
diff --git a/target/cris/cpu.c b/target/cris/cpu.c
92
index XXXXXXX..XXXXXXX 100644
93
--- a/target/cris/cpu.c
94
+++ b/target/cris/cpu.c
95
@@ -XXX,XX +XXX,XX @@ static void cris_cpu_initfn(Object *obj)
96
CRISCPUClass *ccc = CRIS_CPU_GET_CLASS(obj);
97
CPUCRISState *env = &cpu->env;
98
99
- cpu_set_cpustate_pointers(cpu);
100
-
101
env->pregs[PR_VR] = ccc->vr;
102
103
#ifndef CONFIG_USER_ONLY
104
diff --git a/target/hexagon/cpu.c b/target/hexagon/cpu.c
105
index XXXXXXX..XXXXXXX 100644
106
--- a/target/hexagon/cpu.c
107
+++ b/target/hexagon/cpu.c
108
@@ -XXX,XX +XXX,XX @@ static void hexagon_cpu_realize(DeviceState *dev, Error **errp)
109
110
static void hexagon_cpu_init(Object *obj)
111
{
112
- HexagonCPU *cpu = HEXAGON_CPU(obj);
113
-
114
- cpu_set_cpustate_pointers(cpu);
115
qdev_property_add_static(DEVICE(obj), &hexagon_lldb_compat_property);
116
qdev_property_add_static(DEVICE(obj), &hexagon_lldb_stack_adjust_property);
117
qdev_property_add_static(DEVICE(obj), &hexagon_short_circuit_property);
118
diff --git a/target/hppa/cpu.c b/target/hppa/cpu.c
119
index XXXXXXX..XXXXXXX 100644
120
--- a/target/hppa/cpu.c
121
+++ b/target/hppa/cpu.c
122
@@ -XXX,XX +XXX,XX @@ static void hppa_cpu_initfn(Object *obj)
123
HPPACPU *cpu = HPPA_CPU(obj);
124
CPUHPPAState *env = &cpu->env;
125
126
- cpu_set_cpustate_pointers(cpu);
127
cs->exception_index = -1;
128
cpu_hppa_loaded_fr0(env);
129
cpu_hppa_put_psw(env, PSW_W);
130
diff --git a/target/i386/cpu.c b/target/i386/cpu.c
131
index XXXXXXX..XXXXXXX 100644
132
--- a/target/i386/cpu.c
133
+++ b/target/i386/cpu.c
134
@@ -XXX,XX +XXX,XX @@ static void x86_cpu_initfn(Object *obj)
135
CPUX86State *env = &cpu->env;
136
137
env->nr_dies = 1;
138
- cpu_set_cpustate_pointers(cpu);
139
140
object_property_add(obj, "feature-words", "X86CPUFeatureWordInfo",
141
x86_cpu_get_feature_words,
142
diff --git a/target/loongarch/cpu.c b/target/loongarch/cpu.c
143
index XXXXXXX..XXXXXXX 100644
144
--- a/target/loongarch/cpu.c
145
+++ b/target/loongarch/cpu.c
146
@@ -XXX,XX +XXX,XX @@ static const MemoryRegionOps loongarch_qemu_ops = {
147
148
static void loongarch_cpu_init(Object *obj)
149
{
150
- LoongArchCPU *cpu = LOONGARCH_CPU(obj);
151
-
152
- cpu_set_cpustate_pointers(cpu);
153
-
154
#ifndef CONFIG_USER_ONLY
155
+ LoongArchCPU *cpu = LOONGARCH_CPU(obj);
156
CPULoongArchState *env = &cpu->env;
157
+
158
qdev_init_gpio_in(DEVICE(cpu), loongarch_cpu_set_irq, N_IRQS);
159
timer_init_ns(&cpu->timer, QEMU_CLOCK_VIRTUAL,
160
&loongarch_constant_timer_cb, cpu);
161
memory_region_init_io(&env->system_iocsr, OBJECT(cpu), NULL,
162
- env, "iocsr", UINT64_MAX);
163
+ env, "iocsr", UINT64_MAX);
164
address_space_init(&env->address_space_iocsr, &env->system_iocsr, "IOCSR");
165
memory_region_init_io(&env->iocsr_mem, OBJECT(cpu), &loongarch_qemu_ops,
166
NULL, "iocsr_misc", 0x428);
167
diff --git a/target/m68k/cpu.c b/target/m68k/cpu.c
168
index XXXXXXX..XXXXXXX 100644
169
--- a/target/m68k/cpu.c
170
+++ b/target/m68k/cpu.c
171
@@ -XXX,XX +XXX,XX @@ static void m68k_cpu_realizefn(DeviceState *dev, Error **errp)
172
mcc->parent_realize(dev, errp);
173
}
174
175
-static void m68k_cpu_initfn(Object *obj)
176
-{
177
- M68kCPU *cpu = M68K_CPU(obj);
178
-
179
- cpu_set_cpustate_pointers(cpu);
180
-}
181
-
182
#if !defined(CONFIG_USER_ONLY)
183
static bool fpu_needed(void *opaque)
184
{
185
@@ -XXX,XX +XXX,XX @@ static const TypeInfo m68k_cpus_type_infos[] = {
186
.parent = TYPE_CPU,
187
.instance_size = sizeof(M68kCPU),
188
.instance_align = __alignof(M68kCPU),
189
- .instance_init = m68k_cpu_initfn,
190
.abstract = true,
191
.class_size = sizeof(M68kCPUClass),
192
.class_init = m68k_cpu_class_init,
193
diff --git a/target/microblaze/cpu.c b/target/microblaze/cpu.c
194
index XXXXXXX..XXXXXXX 100644
195
--- a/target/microblaze/cpu.c
196
+++ b/target/microblaze/cpu.c
197
@@ -XXX,XX +XXX,XX @@ static void mb_cpu_initfn(Object *obj)
198
MicroBlazeCPU *cpu = MICROBLAZE_CPU(obj);
199
CPUMBState *env = &cpu->env;
200
201
- cpu_set_cpustate_pointers(cpu);
202
gdb_register_coprocessor(CPU(cpu), mb_cpu_gdb_read_stack_protect,
203
mb_cpu_gdb_write_stack_protect, 2,
204
"microblaze-stack-protect.xml", 0);
205
diff --git a/target/mips/cpu.c b/target/mips/cpu.c
206
index XXXXXXX..XXXXXXX 100644
207
--- a/target/mips/cpu.c
208
+++ b/target/mips/cpu.c
209
@@ -XXX,XX +XXX,XX @@ static void mips_cpu_initfn(Object *obj)
210
CPUMIPSState *env = &cpu->env;
211
MIPSCPUClass *mcc = MIPS_CPU_GET_CLASS(obj);
212
213
- cpu_set_cpustate_pointers(cpu);
214
cpu->clock = qdev_init_clock_in(DEVICE(obj), "clk-in", NULL, cpu, 0);
215
cpu->count_div = clock_new(OBJECT(obj), "clk-div-count");
216
env->count_clock = clock_new(OBJECT(obj), "clk-count");
217
diff --git a/target/nios2/cpu.c b/target/nios2/cpu.c
218
index XXXXXXX..XXXXXXX 100644
219
--- a/target/nios2/cpu.c
220
+++ b/target/nios2/cpu.c
221
@@ -XXX,XX +XXX,XX @@ static void iic_set_irq(void *opaque, int irq, int level)
222
223
static void nios2_cpu_initfn(Object *obj)
224
{
225
+#if !defined(CONFIG_USER_ONLY)
226
Nios2CPU *cpu = NIOS2_CPU(obj);
227
228
- cpu_set_cpustate_pointers(cpu);
229
-
230
-#if !defined(CONFIG_USER_ONLY)
231
mmu_init(&cpu->env);
232
#endif
233
}
234
diff --git a/target/openrisc/cpu.c b/target/openrisc/cpu.c
235
index XXXXXXX..XXXXXXX 100644
236
--- a/target/openrisc/cpu.c
237
+++ b/target/openrisc/cpu.c
238
@@ -XXX,XX +XXX,XX @@ static void openrisc_cpu_realizefn(DeviceState *dev, Error **errp)
239
240
static void openrisc_cpu_initfn(Object *obj)
241
{
242
- OpenRISCCPU *cpu = OPENRISC_CPU(obj);
243
-
244
- cpu_set_cpustate_pointers(cpu);
245
-
246
#ifndef CONFIG_USER_ONLY
247
- qdev_init_gpio_in_named(DEVICE(cpu), openrisc_cpu_set_irq, "IRQ", NR_IRQS);
248
+ qdev_init_gpio_in_named(DEVICE(obj), openrisc_cpu_set_irq, "IRQ", NR_IRQS);
249
#endif
250
}
251
252
diff --git a/target/ppc/cpu_init.c b/target/ppc/cpu_init.c
253
index XXXXXXX..XXXXXXX 100644
254
--- a/target/ppc/cpu_init.c
255
+++ b/target/ppc/cpu_init.c
256
@@ -XXX,XX +XXX,XX @@ static void ppc_cpu_instance_init(Object *obj)
257
PowerPCCPUClass *pcc = POWERPC_CPU_GET_CLASS(cpu);
258
CPUPPCState *env = &cpu->env;
259
260
- cpu_set_cpustate_pointers(cpu);
261
cpu->vcpu_id = UNASSIGNED_CPU_INDEX;
262
263
env->msr_mask = pcc->msr_mask;
264
diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c
265
index XXXXXXX..XXXXXXX 100644
266
--- a/target/riscv/cpu.c
267
+++ b/target/riscv/cpu.c
268
@@ -XXX,XX +XXX,XX @@ static void riscv_cpu_set_irq(void *opaque, int irq, int level)
269
270
static void riscv_cpu_init(Object *obj)
271
{
272
- RISCVCPU *cpu = RISCV_CPU(obj);
273
-
274
- cpu_set_cpustate_pointers(cpu);
275
-
276
#ifndef CONFIG_USER_ONLY
277
- qdev_init_gpio_in(DEVICE(cpu), riscv_cpu_set_irq,
278
+ qdev_init_gpio_in(DEVICE(obj), riscv_cpu_set_irq,
279
IRQ_LOCAL_MAX + IRQ_LOCAL_GUEST_MAX);
280
#endif /* CONFIG_USER_ONLY */
281
}
282
diff --git a/target/rx/cpu.c b/target/rx/cpu.c
283
index XXXXXXX..XXXXXXX 100644
284
--- a/target/rx/cpu.c
285
+++ b/target/rx/cpu.c
286
@@ -XXX,XX +XXX,XX @@ static void rx_cpu_init(Object *obj)
287
{
288
RXCPU *cpu = RX_CPU(obj);
289
290
- cpu_set_cpustate_pointers(cpu);
291
qdev_init_gpio_in(DEVICE(cpu), rx_cpu_set_irq, 2);
292
}
293
294
diff --git a/target/s390x/cpu.c b/target/s390x/cpu.c
295
index XXXXXXX..XXXXXXX 100644
296
--- a/target/s390x/cpu.c
297
+++ b/target/s390x/cpu.c
298
@@ -XXX,XX +XXX,XX @@ out:
299
static void s390_cpu_initfn(Object *obj)
300
{
301
CPUState *cs = CPU(obj);
302
- S390CPU *cpu = S390_CPU(obj);
303
304
- cpu_set_cpustate_pointers(cpu);
305
cs->exception_index = EXCP_HLT;
306
307
#if !defined(CONFIG_USER_ONLY)
308
diff --git a/target/sh4/cpu.c b/target/sh4/cpu.c
309
index XXXXXXX..XXXXXXX 100644
310
--- a/target/sh4/cpu.c
311
+++ b/target/sh4/cpu.c
312
@@ -XXX,XX +XXX,XX @@ static void superh_cpu_initfn(Object *obj)
313
SuperHCPU *cpu = SUPERH_CPU(obj);
314
CPUSH4State *env = &cpu->env;
315
316
- cpu_set_cpustate_pointers(cpu);
317
-
318
env->movcal_backup_tail = &(env->movcal_backup);
319
}
320
321
diff --git a/target/sparc/cpu.c b/target/sparc/cpu.c
322
index XXXXXXX..XXXXXXX 100644
323
--- a/target/sparc/cpu.c
324
+++ b/target/sparc/cpu.c
325
@@ -XXX,XX +XXX,XX @@ static void sparc_cpu_initfn(Object *obj)
326
SPARCCPUClass *scc = SPARC_CPU_GET_CLASS(obj);
327
CPUSPARCState *env = &cpu->env;
328
329
- cpu_set_cpustate_pointers(cpu);
330
-
331
if (scc->cpu_def) {
332
env->def = *scc->cpu_def;
333
}
334
diff --git a/target/tricore/cpu.c b/target/tricore/cpu.c
335
index XXXXXXX..XXXXXXX 100644
336
--- a/target/tricore/cpu.c
337
+++ b/target/tricore/cpu.c
338
@@ -XXX,XX +XXX,XX @@ static void tricore_cpu_realizefn(DeviceState *dev, Error **errp)
339
tcc->parent_realize(dev, errp);
340
}
341
342
-
343
-static void tricore_cpu_initfn(Object *obj)
344
-{
345
- TriCoreCPU *cpu = TRICORE_CPU(obj);
346
-
347
- cpu_set_cpustate_pointers(cpu);
348
-}
349
-
350
static ObjectClass *tricore_cpu_class_by_name(const char *cpu_model)
351
{
352
ObjectClass *oc;
353
@@ -XXX,XX +XXX,XX @@ static const TypeInfo tricore_cpu_type_infos[] = {
354
.parent = TYPE_CPU,
355
.instance_size = sizeof(TriCoreCPU),
356
.instance_align = __alignof(TriCoreCPU),
357
- .instance_init = tricore_cpu_initfn,
358
.abstract = true,
359
.class_size = sizeof(TriCoreCPUClass),
360
.class_init = tricore_cpu_class_init,
361
diff --git a/target/xtensa/cpu.c b/target/xtensa/cpu.c
362
index XXXXXXX..XXXXXXX 100644
363
--- a/target/xtensa/cpu.c
364
+++ b/target/xtensa/cpu.c
365
@@ -XXX,XX +XXX,XX @@ static void xtensa_cpu_initfn(Object *obj)
366
XtensaCPUClass *xcc = XTENSA_CPU_GET_CLASS(obj);
367
CPUXtensaState *env = &cpu->env;
368
369
- cpu_set_cpustate_pointers(cpu);
370
env->config = xcc->config;
371
372
#ifndef CONFIG_USER_ONLY
373
--
374
2.34.1
375
376
diff view generated by jsdifflib
New patch
1
Replace the single use within env_tlb() and remove.
1
2
3
Reviewed-by: Anton Johansson <anjo@rev.ng>
4
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
5
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6
---
7
include/exec/cpu-all.h | 13 +------------
8
1 file changed, 1 insertion(+), 12 deletions(-)
9
10
diff --git a/include/exec/cpu-all.h b/include/exec/cpu-all.h
11
index XXXXXXX..XXXXXXX 100644
12
--- a/include/exec/cpu-all.h
13
+++ b/include/exec/cpu-all.h
14
@@ -XXX,XX +XXX,XX @@ static inline CPUState *env_cpu(CPUArchState *env)
15
return (void *)env - sizeof(CPUState);
16
}
17
18
-/**
19
- * env_neg(env)
20
- * @env: The architecture environment
21
- *
22
- * Return the CPUNegativeOffsetState associated with the environment.
23
- */
24
-static inline CPUNegativeOffsetState *env_neg(CPUArchState *env)
25
-{
26
- return &env_cpu(env)->neg;
27
-}
28
-
29
/**
30
* env_tlb(env)
31
* @env: The architecture environment
32
@@ -XXX,XX +XXX,XX @@ static inline CPUNegativeOffsetState *env_neg(CPUArchState *env)
33
*/
34
static inline CPUTLB *env_tlb(CPUArchState *env)
35
{
36
- return &env_neg(env)->tlb;
37
+ return &env_cpu(env)->neg.tlb;
38
}
39
40
#endif /* CPU_ALL_H */
41
--
42
2.34.1
43
44
diff view generated by jsdifflib
New patch
1
Now that there is no padding between CPUNegativeOffsetState
2
and CPUArchState, this value is constant across all targets.
1
3
4
Reviewed-by: Anton Johansson <anjo@rev.ng>
5
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6
---
7
include/tcg/tcg.h | 1 -
8
accel/tcg/translate-all.c | 2 --
9
tcg/tcg.c | 15 +++++++++------
10
3 files changed, 9 insertions(+), 9 deletions(-)
11
12
diff --git a/include/tcg/tcg.h b/include/tcg/tcg.h
13
index XXXXXXX..XXXXXXX 100644
14
--- a/include/tcg/tcg.h
15
+++ b/include/tcg/tcg.h
16
@@ -XXX,XX +XXX,XX @@ struct TCGContext {
17
TCGType addr_type; /* TCG_TYPE_I32 or TCG_TYPE_I64 */
18
19
#ifdef CONFIG_SOFTMMU
20
- int tlb_fast_offset;
21
int page_mask;
22
uint8_t page_bits;
23
uint8_t tlb_dyn_max_bits;
24
diff --git a/accel/tcg/translate-all.c b/accel/tcg/translate-all.c
25
index XXXXXXX..XXXXXXX 100644
26
--- a/accel/tcg/translate-all.c
27
+++ b/accel/tcg/translate-all.c
28
@@ -XXX,XX +XXX,XX @@ TranslationBlock *tb_gen_code(CPUState *cpu,
29
tcg_ctx->page_bits = TARGET_PAGE_BITS;
30
tcg_ctx->page_mask = TARGET_PAGE_MASK;
31
tcg_ctx->tlb_dyn_max_bits = CPU_TLB_DYN_MAX_BITS;
32
- tcg_ctx->tlb_fast_offset = (int)offsetof(ArchCPU, parent_obj.neg.tlb.f)
33
- - (int)offsetof(ArchCPU, env);
34
#endif
35
tcg_ctx->insn_start_words = TARGET_INSN_START_WORDS;
36
#ifdef TCG_GUEST_DEFAULT_MO
37
diff --git a/tcg/tcg.c b/tcg/tcg.c
38
index XXXXXXX..XXXXXXX 100644
39
--- a/tcg/tcg.c
40
+++ b/tcg/tcg.c
41
@@ -XXX,XX +XXX,XX @@ static uintptr_t G_GNUC_UNUSED get_jmp_target_addr(TCGContext *s, int which)
42
#if defined(CONFIG_SOFTMMU) && !defined(CONFIG_TCG_INTERPRETER)
43
static int tlb_mask_table_ofs(TCGContext *s, int which)
44
{
45
- return s->tlb_fast_offset + which * sizeof(CPUTLBDescFast);
46
+ return (offsetof(CPUNegativeOffsetState, tlb.f[which]) -
47
+ sizeof(CPUNegativeOffsetState));
48
}
49
#endif
50
51
@@ -XXX,XX +XXX,XX @@ static const TCGTargetOpDef constraint_sets[] = {
52
53
#include "tcg-target.c.inc"
54
55
+#ifndef CONFIG_TCG_INTERPRETER
56
+/* Validate CPUTLBDescFast placement. */
57
+QEMU_BUILD_BUG_ON((int)(offsetof(CPUNegativeOffsetState, tlb.f[0]) -
58
+ sizeof(CPUNegativeOffsetState))
59
+ < MIN_TLB_MASK_TABLE_OFS);
60
+#endif
61
+
62
static void alloc_tcg_plugin_context(TCGContext *s)
63
{
64
#ifdef CONFIG_PLUGIN
65
@@ -XXX,XX +XXX,XX @@ void tcg_func_start(TCGContext *s)
66
tcg_debug_assert(s->addr_type == TCG_TYPE_I32 ||
67
s->addr_type == TCG_TYPE_I64);
68
69
-#if defined(CONFIG_SOFTMMU) && !defined(CONFIG_TCG_INTERPRETER)
70
- tcg_debug_assert(s->tlb_fast_offset < 0);
71
- tcg_debug_assert(s->tlb_fast_offset >= MIN_TLB_MASK_TABLE_OFS);
72
-#endif
73
-
74
tcg_debug_assert(s->insn_start_words > 0);
75
}
76
77
--
78
2.34.1
diff view generated by jsdifflib
New patch
1
From: Anton Johansson <anjo@rev.ng>
1
2
3
Changes tlb_*() functions to take CPUState instead of CPUArchState, as
4
they don't require the full CPUArchState. This makes it easier to
5
decouple target-(in)dependent code.
6
7
Signed-off-by: Anton Johansson <anjo@rev.ng>
8
Message-Id: <20230912153428.17816-4-anjo@rev.ng>
9
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
10
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
11
[rth: Use cpu->neg.tlb instead of cpu_tlb()]
12
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
13
---
14
include/exec/cpu_ldst.h | 8 +-
15
accel/tcg/cputlb.c | 220 +++++++++++++++++++---------------------
16
2 files changed, 108 insertions(+), 120 deletions(-)
17
18
diff --git a/include/exec/cpu_ldst.h b/include/exec/cpu_ldst.h
19
index XXXXXXX..XXXXXXX 100644
20
--- a/include/exec/cpu_ldst.h
21
+++ b/include/exec/cpu_ldst.h
22
@@ -XXX,XX +XXX,XX @@ static inline uint64_t tlb_addr_write(const CPUTLBEntry *entry)
23
}
24
25
/* Find the TLB index corresponding to the mmu_idx + address pair. */
26
-static inline uintptr_t tlb_index(CPUArchState *env, uintptr_t mmu_idx,
27
+static inline uintptr_t tlb_index(CPUState *cpu, uintptr_t mmu_idx,
28
vaddr addr)
29
{
30
- uintptr_t size_mask = env_tlb(env)->f[mmu_idx].mask >> CPU_TLB_ENTRY_BITS;
31
+ uintptr_t size_mask = cpu->neg.tlb.f[mmu_idx].mask >> CPU_TLB_ENTRY_BITS;
32
33
return (addr >> TARGET_PAGE_BITS) & size_mask;
34
}
35
36
/* Find the TLB entry corresponding to the mmu_idx + address pair. */
37
-static inline CPUTLBEntry *tlb_entry(CPUArchState *env, uintptr_t mmu_idx,
38
+static inline CPUTLBEntry *tlb_entry(CPUState *cpu, uintptr_t mmu_idx,
39
vaddr addr)
40
{
41
- return &env_tlb(env)->f[mmu_idx].table[tlb_index(env, mmu_idx, addr)];
42
+ return &cpu->neg.tlb.f[mmu_idx].table[tlb_index(cpu, mmu_idx, addr)];
43
}
44
45
#endif /* defined(CONFIG_USER_ONLY) */
46
diff --git a/accel/tcg/cputlb.c b/accel/tcg/cputlb.c
47
index XXXXXXX..XXXXXXX 100644
48
--- a/accel/tcg/cputlb.c
49
+++ b/accel/tcg/cputlb.c
50
@@ -XXX,XX +XXX,XX @@ static void tlb_mmu_flush_locked(CPUTLBDesc *desc, CPUTLBDescFast *fast)
51
memset(desc->vtable, -1, sizeof(desc->vtable));
52
}
53
54
-static void tlb_flush_one_mmuidx_locked(CPUArchState *env, int mmu_idx,
55
+static void tlb_flush_one_mmuidx_locked(CPUState *cpu, int mmu_idx,
56
int64_t now)
57
{
58
- CPUTLBDesc *desc = &env_tlb(env)->d[mmu_idx];
59
- CPUTLBDescFast *fast = &env_tlb(env)->f[mmu_idx];
60
+ CPUTLBDesc *desc = &cpu->neg.tlb.d[mmu_idx];
61
+ CPUTLBDescFast *fast = &cpu->neg.tlb.f[mmu_idx];
62
63
tlb_mmu_resize_locked(desc, fast, now);
64
tlb_mmu_flush_locked(desc, fast);
65
@@ -XXX,XX +XXX,XX @@ static void tlb_mmu_init(CPUTLBDesc *desc, CPUTLBDescFast *fast, int64_t now)
66
tlb_mmu_flush_locked(desc, fast);
67
}
68
69
-static inline void tlb_n_used_entries_inc(CPUArchState *env, uintptr_t mmu_idx)
70
+static inline void tlb_n_used_entries_inc(CPUState *cpu, uintptr_t mmu_idx)
71
{
72
- env_tlb(env)->d[mmu_idx].n_used_entries++;
73
+ cpu->neg.tlb.d[mmu_idx].n_used_entries++;
74
}
75
76
-static inline void tlb_n_used_entries_dec(CPUArchState *env, uintptr_t mmu_idx)
77
+static inline void tlb_n_used_entries_dec(CPUState *cpu, uintptr_t mmu_idx)
78
{
79
- env_tlb(env)->d[mmu_idx].n_used_entries--;
80
+ cpu->neg.tlb.d[mmu_idx].n_used_entries--;
81
}
82
83
void tlb_init(CPUState *cpu)
84
{
85
- CPUArchState *env = cpu_env(cpu);
86
int64_t now = get_clock_realtime();
87
int i;
88
89
- qemu_spin_init(&env_tlb(env)->c.lock);
90
+ qemu_spin_init(&cpu->neg.tlb.c.lock);
91
92
/* All tlbs are initialized flushed. */
93
- env_tlb(env)->c.dirty = 0;
94
+ cpu->neg.tlb.c.dirty = 0;
95
96
for (i = 0; i < NB_MMU_MODES; i++) {
97
- tlb_mmu_init(&env_tlb(env)->d[i], &env_tlb(env)->f[i], now);
98
+ tlb_mmu_init(&cpu->neg.tlb.d[i], &cpu->neg.tlb.f[i], now);
99
}
100
}
101
102
void tlb_destroy(CPUState *cpu)
103
{
104
- CPUArchState *env = cpu_env(cpu);
105
int i;
106
107
- qemu_spin_destroy(&env_tlb(env)->c.lock);
108
+ qemu_spin_destroy(&cpu->neg.tlb.c.lock);
109
for (i = 0; i < NB_MMU_MODES; i++) {
110
- CPUTLBDesc *desc = &env_tlb(env)->d[i];
111
- CPUTLBDescFast *fast = &env_tlb(env)->f[i];
112
+ CPUTLBDesc *desc = &cpu->neg.tlb.d[i];
113
+ CPUTLBDescFast *fast = &cpu->neg.tlb.f[i];
114
115
g_free(fast->table);
116
g_free(desc->fulltlb);
117
@@ -XXX,XX +XXX,XX @@ void tlb_flush_counts(size_t *pfull, size_t *ppart, size_t *pelide)
118
size_t full = 0, part = 0, elide = 0;
119
120
CPU_FOREACH(cpu) {
121
- CPUArchState *env = cpu_env(cpu);
122
-
123
- full += qatomic_read(&env_tlb(env)->c.full_flush_count);
124
- part += qatomic_read(&env_tlb(env)->c.part_flush_count);
125
- elide += qatomic_read(&env_tlb(env)->c.elide_flush_count);
126
+ full += qatomic_read(&cpu->neg.tlb.c.full_flush_count);
127
+ part += qatomic_read(&cpu->neg.tlb.c.part_flush_count);
128
+ elide += qatomic_read(&cpu->neg.tlb.c.elide_flush_count);
129
}
130
*pfull = full;
131
*ppart = part;
132
@@ -XXX,XX +XXX,XX @@ void tlb_flush_counts(size_t *pfull, size_t *ppart, size_t *pelide)
133
134
static void tlb_flush_by_mmuidx_async_work(CPUState *cpu, run_on_cpu_data data)
135
{
136
- CPUArchState *env = cpu_env(cpu);
137
uint16_t asked = data.host_int;
138
uint16_t all_dirty, work, to_clean;
139
int64_t now = get_clock_realtime();
140
@@ -XXX,XX +XXX,XX @@ static void tlb_flush_by_mmuidx_async_work(CPUState *cpu, run_on_cpu_data data)
141
142
tlb_debug("mmu_idx:0x%04" PRIx16 "\n", asked);
143
144
- qemu_spin_lock(&env_tlb(env)->c.lock);
145
+ qemu_spin_lock(&cpu->neg.tlb.c.lock);
146
147
- all_dirty = env_tlb(env)->c.dirty;
148
+ all_dirty = cpu->neg.tlb.c.dirty;
149
to_clean = asked & all_dirty;
150
all_dirty &= ~to_clean;
151
- env_tlb(env)->c.dirty = all_dirty;
152
+ cpu->neg.tlb.c.dirty = all_dirty;
153
154
for (work = to_clean; work != 0; work &= work - 1) {
155
int mmu_idx = ctz32(work);
156
- tlb_flush_one_mmuidx_locked(env, mmu_idx, now);
157
+ tlb_flush_one_mmuidx_locked(cpu, mmu_idx, now);
158
}
159
160
- qemu_spin_unlock(&env_tlb(env)->c.lock);
161
+ qemu_spin_unlock(&cpu->neg.tlb.c.lock);
162
163
tcg_flush_jmp_cache(cpu);
164
165
if (to_clean == ALL_MMUIDX_BITS) {
166
- qatomic_set(&env_tlb(env)->c.full_flush_count,
167
- env_tlb(env)->c.full_flush_count + 1);
168
+ qatomic_set(&cpu->neg.tlb.c.full_flush_count,
169
+ cpu->neg.tlb.c.full_flush_count + 1);
170
} else {
171
- qatomic_set(&env_tlb(env)->c.part_flush_count,
172
- env_tlb(env)->c.part_flush_count + ctpop16(to_clean));
173
+ qatomic_set(&cpu->neg.tlb.c.part_flush_count,
174
+ cpu->neg.tlb.c.part_flush_count + ctpop16(to_clean));
175
if (to_clean != asked) {
176
- qatomic_set(&env_tlb(env)->c.elide_flush_count,
177
- env_tlb(env)->c.elide_flush_count +
178
- ctpop16(asked & ~to_clean));
179
+ qatomic_set(&cpu->neg.tlb.c.elide_flush_count,
180
+ cpu->neg.tlb.c.elide_flush_count +
181
+ ctpop16(asked & ~to_clean));
182
}
183
}
184
}
185
@@ -XXX,XX +XXX,XX @@ static inline bool tlb_flush_entry_locked(CPUTLBEntry *tlb_entry, vaddr page)
186
}
187
188
/* Called with tlb_c.lock held */
189
-static void tlb_flush_vtlb_page_mask_locked(CPUArchState *env, int mmu_idx,
190
+static void tlb_flush_vtlb_page_mask_locked(CPUState *cpu, int mmu_idx,
191
vaddr page,
192
vaddr mask)
193
{
194
- CPUTLBDesc *d = &env_tlb(env)->d[mmu_idx];
195
+ CPUTLBDesc *d = &cpu->neg.tlb.d[mmu_idx];
196
int k;
197
198
- assert_cpu_is_self(env_cpu(env));
199
+ assert_cpu_is_self(cpu);
200
for (k = 0; k < CPU_VTLB_SIZE; k++) {
201
if (tlb_flush_entry_mask_locked(&d->vtable[k], page, mask)) {
202
- tlb_n_used_entries_dec(env, mmu_idx);
203
+ tlb_n_used_entries_dec(cpu, mmu_idx);
204
}
205
}
206
}
207
208
-static inline void tlb_flush_vtlb_page_locked(CPUArchState *env, int mmu_idx,
209
+static inline void tlb_flush_vtlb_page_locked(CPUState *cpu, int mmu_idx,
210
vaddr page)
211
{
212
- tlb_flush_vtlb_page_mask_locked(env, mmu_idx, page, -1);
213
+ tlb_flush_vtlb_page_mask_locked(cpu, mmu_idx, page, -1);
214
}
215
216
-static void tlb_flush_page_locked(CPUArchState *env, int midx, vaddr page)
217
+static void tlb_flush_page_locked(CPUState *cpu, int midx, vaddr page)
218
{
219
- vaddr lp_addr = env_tlb(env)->d[midx].large_page_addr;
220
- vaddr lp_mask = env_tlb(env)->d[midx].large_page_mask;
221
+ vaddr lp_addr = cpu->neg.tlb.d[midx].large_page_addr;
222
+ vaddr lp_mask = cpu->neg.tlb.d[midx].large_page_mask;
223
224
/* Check if we need to flush due to large pages. */
225
if ((page & lp_mask) == lp_addr) {
226
tlb_debug("forcing full flush midx %d (%016"
227
VADDR_PRIx "/%016" VADDR_PRIx ")\n",
228
midx, lp_addr, lp_mask);
229
- tlb_flush_one_mmuidx_locked(env, midx, get_clock_realtime());
230
+ tlb_flush_one_mmuidx_locked(cpu, midx, get_clock_realtime());
231
} else {
232
- if (tlb_flush_entry_locked(tlb_entry(env, midx, page), page)) {
233
- tlb_n_used_entries_dec(env, midx);
234
+ if (tlb_flush_entry_locked(tlb_entry(cpu, midx, page), page)) {
235
+ tlb_n_used_entries_dec(cpu, midx);
236
}
237
- tlb_flush_vtlb_page_locked(env, midx, page);
238
+ tlb_flush_vtlb_page_locked(cpu, midx, page);
239
}
240
}
241
242
@@ -XXX,XX +XXX,XX @@ static void tlb_flush_page_by_mmuidx_async_0(CPUState *cpu,
243
vaddr addr,
244
uint16_t idxmap)
245
{
246
- CPUArchState *env = cpu_env(cpu);
247
int mmu_idx;
248
249
assert_cpu_is_self(cpu);
250
251
tlb_debug("page addr: %016" VADDR_PRIx " mmu_map:0x%x\n", addr, idxmap);
252
253
- qemu_spin_lock(&env_tlb(env)->c.lock);
254
+ qemu_spin_lock(&cpu->neg.tlb.c.lock);
255
for (mmu_idx = 0; mmu_idx < NB_MMU_MODES; mmu_idx++) {
256
if ((idxmap >> mmu_idx) & 1) {
257
- tlb_flush_page_locked(env, mmu_idx, addr);
258
+ tlb_flush_page_locked(cpu, mmu_idx, addr);
259
}
260
}
261
- qemu_spin_unlock(&env_tlb(env)->c.lock);
262
+ qemu_spin_unlock(&cpu->neg.tlb.c.lock);
263
264
/*
265
* Discard jump cache entries for any tb which might potentially
266
@@ -XXX,XX +XXX,XX @@ void tlb_flush_page_all_cpus_synced(CPUState *src, vaddr addr)
267
tlb_flush_page_by_mmuidx_all_cpus_synced(src, addr, ALL_MMUIDX_BITS);
268
}
269
270
-static void tlb_flush_range_locked(CPUArchState *env, int midx,
271
+static void tlb_flush_range_locked(CPUState *cpu, int midx,
272
vaddr addr, vaddr len,
273
unsigned bits)
274
{
275
- CPUTLBDesc *d = &env_tlb(env)->d[midx];
276
- CPUTLBDescFast *f = &env_tlb(env)->f[midx];
277
+ CPUTLBDesc *d = &cpu->neg.tlb.d[midx];
278
+ CPUTLBDescFast *f = &cpu->neg.tlb.f[midx];
279
vaddr mask = MAKE_64BIT_MASK(0, bits);
280
281
/*
282
@@ -XXX,XX +XXX,XX @@ static void tlb_flush_range_locked(CPUArchState *env, int midx,
283
tlb_debug("forcing full flush midx %d ("
284
"%016" VADDR_PRIx "/%016" VADDR_PRIx "+%016" VADDR_PRIx ")\n",
285
midx, addr, mask, len);
286
- tlb_flush_one_mmuidx_locked(env, midx, get_clock_realtime());
287
+ tlb_flush_one_mmuidx_locked(cpu, midx, get_clock_realtime());
288
return;
289
}
290
291
@@ -XXX,XX +XXX,XX @@ static void tlb_flush_range_locked(CPUArchState *env, int midx,
292
tlb_debug("forcing full flush midx %d ("
293
"%016" VADDR_PRIx "/%016" VADDR_PRIx ")\n",
294
midx, d->large_page_addr, d->large_page_mask);
295
- tlb_flush_one_mmuidx_locked(env, midx, get_clock_realtime());
296
+ tlb_flush_one_mmuidx_locked(cpu, midx, get_clock_realtime());
297
return;
298
}
299
300
for (vaddr i = 0; i < len; i += TARGET_PAGE_SIZE) {
301
vaddr page = addr + i;
302
- CPUTLBEntry *entry = tlb_entry(env, midx, page);
303
+ CPUTLBEntry *entry = tlb_entry(cpu, midx, page);
304
305
if (tlb_flush_entry_mask_locked(entry, page, mask)) {
306
- tlb_n_used_entries_dec(env, midx);
307
+ tlb_n_used_entries_dec(cpu, midx);
308
}
309
- tlb_flush_vtlb_page_mask_locked(env, midx, page, mask);
310
+ tlb_flush_vtlb_page_mask_locked(cpu, midx, page, mask);
311
}
312
}
313
314
@@ -XXX,XX +XXX,XX @@ typedef struct {
315
static void tlb_flush_range_by_mmuidx_async_0(CPUState *cpu,
316
TLBFlushRangeData d)
317
{
318
- CPUArchState *env = cpu_env(cpu);
319
int mmu_idx;
320
321
assert_cpu_is_self(cpu);
322
@@ -XXX,XX +XXX,XX @@ static void tlb_flush_range_by_mmuidx_async_0(CPUState *cpu,
323
tlb_debug("range: %016" VADDR_PRIx "/%u+%016" VADDR_PRIx " mmu_map:0x%x\n",
324
d.addr, d.bits, d.len, d.idxmap);
325
326
- qemu_spin_lock(&env_tlb(env)->c.lock);
327
+ qemu_spin_lock(&cpu->neg.tlb.c.lock);
328
for (mmu_idx = 0; mmu_idx < NB_MMU_MODES; mmu_idx++) {
329
if ((d.idxmap >> mmu_idx) & 1) {
330
- tlb_flush_range_locked(env, mmu_idx, d.addr, d.len, d.bits);
331
+ tlb_flush_range_locked(cpu, mmu_idx, d.addr, d.len, d.bits);
332
}
333
}
334
- qemu_spin_unlock(&env_tlb(env)->c.lock);
335
+ qemu_spin_unlock(&cpu->neg.tlb.c.lock);
336
337
/*
338
* If the length is larger than the jump cache size, then it will take
339
@@ -XXX,XX +XXX,XX @@ static inline void copy_tlb_helper_locked(CPUTLBEntry *d, const CPUTLBEntry *s)
340
*/
341
void tlb_reset_dirty(CPUState *cpu, ram_addr_t start1, ram_addr_t length)
342
{
343
- CPUArchState *env;
344
-
345
int mmu_idx;
346
347
- env = cpu_env(cpu);
348
- qemu_spin_lock(&env_tlb(env)->c.lock);
349
+ qemu_spin_lock(&cpu->neg.tlb.c.lock);
350
for (mmu_idx = 0; mmu_idx < NB_MMU_MODES; mmu_idx++) {
351
unsigned int i;
352
- unsigned int n = tlb_n_entries(&env_tlb(env)->f[mmu_idx]);
353
+ unsigned int n = tlb_n_entries(&cpu->neg.tlb.f[mmu_idx]);
354
355
for (i = 0; i < n; i++) {
356
- tlb_reset_dirty_range_locked(&env_tlb(env)->f[mmu_idx].table[i],
357
+ tlb_reset_dirty_range_locked(&cpu->neg.tlb.f[mmu_idx].table[i],
358
start1, length);
359
}
360
361
for (i = 0; i < CPU_VTLB_SIZE; i++) {
362
- tlb_reset_dirty_range_locked(&env_tlb(env)->d[mmu_idx].vtable[i],
363
+ tlb_reset_dirty_range_locked(&cpu->neg.tlb.d[mmu_idx].vtable[i],
364
start1, length);
365
}
366
}
367
- qemu_spin_unlock(&env_tlb(env)->c.lock);
368
+ qemu_spin_unlock(&cpu->neg.tlb.c.lock);
369
}
370
371
/* Called with tlb_c.lock held */
372
@@ -XXX,XX +XXX,XX @@ static inline void tlb_set_dirty1_locked(CPUTLBEntry *tlb_entry,
373
so that it is no longer dirty */
374
void tlb_set_dirty(CPUState *cpu, vaddr addr)
375
{
376
- CPUArchState *env = cpu_env(cpu);
377
int mmu_idx;
378
379
assert_cpu_is_self(cpu);
380
381
addr &= TARGET_PAGE_MASK;
382
- qemu_spin_lock(&env_tlb(env)->c.lock);
383
+ qemu_spin_lock(&cpu->neg.tlb.c.lock);
384
for (mmu_idx = 0; mmu_idx < NB_MMU_MODES; mmu_idx++) {
385
- tlb_set_dirty1_locked(tlb_entry(env, mmu_idx, addr), addr);
386
+ tlb_set_dirty1_locked(tlb_entry(cpu, mmu_idx, addr), addr);
387
}
388
389
for (mmu_idx = 0; mmu_idx < NB_MMU_MODES; mmu_idx++) {
390
int k;
391
for (k = 0; k < CPU_VTLB_SIZE; k++) {
392
- tlb_set_dirty1_locked(&env_tlb(env)->d[mmu_idx].vtable[k], addr);
393
+ tlb_set_dirty1_locked(&cpu->neg.tlb.d[mmu_idx].vtable[k], addr);
394
}
395
}
396
- qemu_spin_unlock(&env_tlb(env)->c.lock);
397
+ qemu_spin_unlock(&cpu->neg.tlb.c.lock);
398
}
399
400
/* Our TLB does not support large pages, so remember the area covered by
401
large pages and trigger a full TLB flush if these are invalidated. */
402
-static void tlb_add_large_page(CPUArchState *env, int mmu_idx,
403
+static void tlb_add_large_page(CPUState *cpu, int mmu_idx,
404
vaddr addr, uint64_t size)
405
{
406
- vaddr lp_addr = env_tlb(env)->d[mmu_idx].large_page_addr;
407
+ vaddr lp_addr = cpu->neg.tlb.d[mmu_idx].large_page_addr;
408
vaddr lp_mask = ~(size - 1);
409
410
if (lp_addr == (vaddr)-1) {
411
@@ -XXX,XX +XXX,XX @@ static void tlb_add_large_page(CPUArchState *env, int mmu_idx,
412
/* Extend the existing region to include the new page.
413
This is a compromise between unnecessary flushes and
414
the cost of maintaining a full variable size TLB. */
415
- lp_mask &= env_tlb(env)->d[mmu_idx].large_page_mask;
416
+ lp_mask &= cpu->neg.tlb.d[mmu_idx].large_page_mask;
417
while (((lp_addr ^ addr) & lp_mask) != 0) {
418
lp_mask <<= 1;
419
}
420
}
421
- env_tlb(env)->d[mmu_idx].large_page_addr = lp_addr & lp_mask;
422
- env_tlb(env)->d[mmu_idx].large_page_mask = lp_mask;
423
+ cpu->neg.tlb.d[mmu_idx].large_page_addr = lp_addr & lp_mask;
424
+ cpu->neg.tlb.d[mmu_idx].large_page_mask = lp_mask;
425
}
426
427
static inline void tlb_set_compare(CPUTLBEntryFull *full, CPUTLBEntry *ent,
428
@@ -XXX,XX +XXX,XX @@ static inline void tlb_set_compare(CPUTLBEntryFull *full, CPUTLBEntry *ent,
429
void tlb_set_page_full(CPUState *cpu, int mmu_idx,
430
vaddr addr, CPUTLBEntryFull *full)
431
{
432
- CPUArchState *env = cpu_env(cpu);
433
- CPUTLB *tlb = env_tlb(env);
434
+ CPUTLB *tlb = &cpu->neg.tlb;
435
CPUTLBDesc *desc = &tlb->d[mmu_idx];
436
MemoryRegionSection *section;
437
unsigned int index, read_flags, write_flags;
438
@@ -XXX,XX +XXX,XX @@ void tlb_set_page_full(CPUState *cpu, int mmu_idx,
439
sz = TARGET_PAGE_SIZE;
440
} else {
441
sz = (hwaddr)1 << full->lg_page_size;
442
- tlb_add_large_page(env, mmu_idx, addr, sz);
443
+ tlb_add_large_page(cpu, mmu_idx, addr, sz);
444
}
445
addr_page = addr & TARGET_PAGE_MASK;
446
paddr_page = full->phys_addr & TARGET_PAGE_MASK;
447
@@ -XXX,XX +XXX,XX @@ void tlb_set_page_full(CPUState *cpu, int mmu_idx,
448
wp_flags = cpu_watchpoint_address_matches(cpu, addr_page,
449
TARGET_PAGE_SIZE);
450
451
- index = tlb_index(env, mmu_idx, addr_page);
452
- te = tlb_entry(env, mmu_idx, addr_page);
453
+ index = tlb_index(cpu, mmu_idx, addr_page);
454
+ te = tlb_entry(cpu, mmu_idx, addr_page);
455
456
/*
457
* Hold the TLB lock for the rest of the function. We could acquire/release
458
@@ -XXX,XX +XXX,XX @@ void tlb_set_page_full(CPUState *cpu, int mmu_idx,
459
tlb->c.dirty |= 1 << mmu_idx;
460
461
/* Make sure there's no cached translation for the new page. */
462
- tlb_flush_vtlb_page_locked(env, mmu_idx, addr_page);
463
+ tlb_flush_vtlb_page_locked(cpu, mmu_idx, addr_page);
464
465
/*
466
* Only evict the old entry to the victim tlb if it's for a
467
@@ -XXX,XX +XXX,XX @@ void tlb_set_page_full(CPUState *cpu, int mmu_idx,
468
/* Evict the old entry into the victim tlb. */
469
copy_tlb_helper_locked(tv, te);
470
desc->vfulltlb[vidx] = desc->fulltlb[index];
471
- tlb_n_used_entries_dec(env, mmu_idx);
472
+ tlb_n_used_entries_dec(cpu, mmu_idx);
473
}
474
475
/* refill the tlb */
476
@@ -XXX,XX +XXX,XX @@ void tlb_set_page_full(CPUState *cpu, int mmu_idx,
477
MMU_DATA_STORE, prot & PAGE_WRITE);
478
479
copy_tlb_helper_locked(te, &tn);
480
- tlb_n_used_entries_inc(env, mmu_idx);
481
+ tlb_n_used_entries_inc(cpu, mmu_idx);
482
qemu_spin_unlock(&tlb->c.lock);
483
}
484
485
@@ -XXX,XX +XXX,XX @@ static void io_failed(CPUArchState *env, CPUTLBEntryFull *full, vaddr addr,
486
487
/* Return true if ADDR is present in the victim tlb, and has been copied
488
back to the main tlb. */
489
-static bool victim_tlb_hit(CPUArchState *env, size_t mmu_idx, size_t index,
490
+static bool victim_tlb_hit(CPUState *cpu, size_t mmu_idx, size_t index,
491
MMUAccessType access_type, vaddr page)
492
{
493
size_t vidx;
494
495
- assert_cpu_is_self(env_cpu(env));
496
+ assert_cpu_is_self(cpu);
497
for (vidx = 0; vidx < CPU_VTLB_SIZE; ++vidx) {
498
- CPUTLBEntry *vtlb = &env_tlb(env)->d[mmu_idx].vtable[vidx];
499
+ CPUTLBEntry *vtlb = &cpu->neg.tlb.d[mmu_idx].vtable[vidx];
500
uint64_t cmp = tlb_read_idx(vtlb, access_type);
501
502
if (cmp == page) {
503
/* Found entry in victim tlb, swap tlb and iotlb. */
504
- CPUTLBEntry tmptlb, *tlb = &env_tlb(env)->f[mmu_idx].table[index];
505
+ CPUTLBEntry tmptlb, *tlb = &cpu->neg.tlb.f[mmu_idx].table[index];
506
507
- qemu_spin_lock(&env_tlb(env)->c.lock);
508
+ qemu_spin_lock(&cpu->neg.tlb.c.lock);
509
copy_tlb_helper_locked(&tmptlb, tlb);
510
copy_tlb_helper_locked(tlb, vtlb);
511
copy_tlb_helper_locked(vtlb, &tmptlb);
512
- qemu_spin_unlock(&env_tlb(env)->c.lock);
513
+ qemu_spin_unlock(&cpu->neg.tlb.c.lock);
514
515
- CPUTLBEntryFull *f1 = &env_tlb(env)->d[mmu_idx].fulltlb[index];
516
- CPUTLBEntryFull *f2 = &env_tlb(env)->d[mmu_idx].vfulltlb[vidx];
517
+ CPUTLBEntryFull *f1 = &cpu->neg.tlb.d[mmu_idx].fulltlb[index];
518
+ CPUTLBEntryFull *f2 = &cpu->neg.tlb.d[mmu_idx].vfulltlb[vidx];
519
CPUTLBEntryFull tmpf;
520
tmpf = *f1; *f1 = *f2; *f2 = tmpf;
521
return true;
522
@@ -XXX,XX +XXX,XX @@ static int probe_access_internal(CPUArchState *env, vaddr addr,
523
void **phost, CPUTLBEntryFull **pfull,
524
uintptr_t retaddr, bool check_mem_cbs)
525
{
526
- uintptr_t index = tlb_index(env, mmu_idx, addr);
527
- CPUTLBEntry *entry = tlb_entry(env, mmu_idx, addr);
528
+ uintptr_t index = tlb_index(env_cpu(env), mmu_idx, addr);
529
+ CPUTLBEntry *entry = tlb_entry(env_cpu(env), mmu_idx, addr);
530
uint64_t tlb_addr = tlb_read_idx(entry, access_type);
531
vaddr page_addr = addr & TARGET_PAGE_MASK;
532
int flags = TLB_FLAGS_MASK & ~TLB_FORCE_SLOW;
533
@@ -XXX,XX +XXX,XX @@ static int probe_access_internal(CPUArchState *env, vaddr addr,
534
CPUTLBEntryFull *full;
535
536
if (!tlb_hit_page(tlb_addr, page_addr)) {
537
- if (!victim_tlb_hit(env, mmu_idx, index, access_type, page_addr)) {
538
+ if (!victim_tlb_hit(env_cpu(env), mmu_idx, index,
539
+ access_type, page_addr)) {
540
CPUState *cs = env_cpu(env);
541
542
if (!cs->cc->tcg_ops->tlb_fill(cs, addr, fault_size, access_type,
543
@@ -XXX,XX +XXX,XX @@ static int probe_access_internal(CPUArchState *env, vaddr addr,
544
}
545
546
/* TLB resize via tlb_fill may have moved the entry. */
547
- index = tlb_index(env, mmu_idx, addr);
548
- entry = tlb_entry(env, mmu_idx, addr);
549
+ index = tlb_index(env_cpu(env), mmu_idx, addr);
550
+ entry = tlb_entry(env_cpu(env), mmu_idx, addr);
551
552
/*
553
* With PAGE_WRITE_INV, we set TLB_INVALID_MASK immediately,
554
@@ -XXX,XX +XXX,XX @@ tb_page_addr_t get_page_addr_code_hostp(CPUArchState *env, vaddr addr,
555
bool tlb_plugin_lookup(CPUState *cpu, vaddr addr, int mmu_idx,
556
bool is_store, struct qemu_plugin_hwaddr *data)
557
{
558
- CPUArchState *env = cpu_env(cpu);
559
- CPUTLBEntry *tlbe = tlb_entry(env, mmu_idx, addr);
560
- uintptr_t index = tlb_index(env, mmu_idx, addr);
561
+ CPUTLBEntry *tlbe = tlb_entry(cpu, mmu_idx, addr);
562
+ uintptr_t index = tlb_index(cpu, mmu_idx, addr);
563
MMUAccessType access_type = is_store ? MMU_DATA_STORE : MMU_DATA_LOAD;
564
uint64_t tlb_addr = tlb_read_idx(tlbe, access_type);
565
CPUTLBEntryFull *full;
566
@@ -XXX,XX +XXX,XX @@ bool tlb_plugin_lookup(CPUState *cpu, vaddr addr, int mmu_idx,
567
return false;
568
}
569
570
- full = &env_tlb(env)->d[mmu_idx].fulltlb[index];
571
+ full = &cpu->neg.tlb.d[mmu_idx].fulltlb[index];
572
data->phys_addr = full->phys_addr | (addr & ~TARGET_PAGE_MASK);
573
574
/* We must have an iotlb entry for MMIO */
575
@@ -XXX,XX +XXX,XX @@ static bool mmu_lookup1(CPUArchState *env, MMULookupPageData *data,
576
int mmu_idx, MMUAccessType access_type, uintptr_t ra)
577
{
578
vaddr addr = data->addr;
579
- uintptr_t index = tlb_index(env, mmu_idx, addr);
580
- CPUTLBEntry *entry = tlb_entry(env, mmu_idx, addr);
581
+ uintptr_t index = tlb_index(env_cpu(env), mmu_idx, addr);
582
+ CPUTLBEntry *entry = tlb_entry(env_cpu(env), mmu_idx, addr);
583
uint64_t tlb_addr = tlb_read_idx(entry, access_type);
584
bool maybe_resized = false;
585
CPUTLBEntryFull *full;
586
@@ -XXX,XX +XXX,XX @@ static bool mmu_lookup1(CPUArchState *env, MMULookupPageData *data,
587
588
/* If the TLB entry is for a different page, reload and try again. */
589
if (!tlb_hit(tlb_addr, addr)) {
590
- if (!victim_tlb_hit(env, mmu_idx, index, access_type,
591
+ if (!victim_tlb_hit(env_cpu(env), mmu_idx, index, access_type,
592
addr & TARGET_PAGE_MASK)) {
593
tlb_fill(env_cpu(env), addr, data->size, access_type, mmu_idx, ra);
594
maybe_resized = true;
595
- index = tlb_index(env, mmu_idx, addr);
596
- entry = tlb_entry(env, mmu_idx, addr);
597
+ index = tlb_index(env_cpu(env), mmu_idx, addr);
598
+ entry = tlb_entry(env_cpu(env), mmu_idx, addr);
599
}
600
tlb_addr = tlb_read_idx(entry, access_type) & ~TLB_INVALID_MASK;
601
}
602
@@ -XXX,XX +XXX,XX @@ static bool mmu_lookup(CPUArchState *env, vaddr addr, MemOpIdx oi,
603
*/
604
mmu_lookup1(env, &l->page[0], l->mmu_idx, type, ra);
605
if (mmu_lookup1(env, &l->page[1], l->mmu_idx, type, ra)) {
606
- uintptr_t index = tlb_index(env, l->mmu_idx, addr);
607
+ uintptr_t index = tlb_index(env_cpu(env), l->mmu_idx, addr);
608
l->page[0].full = &env_tlb(env)->d[l->mmu_idx].fulltlb[index];
609
}
610
611
@@ -XXX,XX +XXX,XX @@ static void *atomic_mmu_lookup(CPUArchState *env, vaddr addr, MemOpIdx oi,
612
goto stop_the_world;
613
}
614
615
- index = tlb_index(env, mmu_idx, addr);
616
- tlbe = tlb_entry(env, mmu_idx, addr);
617
+ index = tlb_index(env_cpu(env), mmu_idx, addr);
618
+ tlbe = tlb_entry(env_cpu(env), mmu_idx, addr);
619
620
/* Check TLB entry and enforce page permissions. */
621
tlb_addr = tlb_addr_write(tlbe);
622
if (!tlb_hit(tlb_addr, addr)) {
623
- if (!victim_tlb_hit(env, mmu_idx, index, MMU_DATA_STORE,
624
+ if (!victim_tlb_hit(env_cpu(env), mmu_idx, index, MMU_DATA_STORE,
625
addr & TARGET_PAGE_MASK)) {
626
tlb_fill(env_cpu(env), addr, size,
627
MMU_DATA_STORE, mmu_idx, retaddr);
628
- index = tlb_index(env, mmu_idx, addr);
629
- tlbe = tlb_entry(env, mmu_idx, addr);
630
+ index = tlb_index(env_cpu(env), mmu_idx, addr);
631
+ tlbe = tlb_entry(env_cpu(env), mmu_idx, addr);
632
}
633
tlb_addr = tlb_addr_write(tlbe) & ~TLB_INVALID_MASK;
634
}
635
--
636
2.34.1
637
638
diff view generated by jsdifflib
New patch
1
From: Anton Johansson <anjo@rev.ng>
1
2
3
probe_access_internal() is changed to instead take the generic CPUState
4
over CPUArchState, in order to lessen the target-specific coupling of
5
cputlb.c. Note: probe_access*() also don't need the full CPUArchState,
6
but aren't touched in this patch as they are target-facing.
7
8
Signed-off-by: Anton Johansson <anjo@rev.ng>
9
Message-Id: <20230912153428.17816-5-anjo@rev.ng>
10
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
11
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
12
[rth: Use cpu->neg.tlb instead of cpu_tlb()]
13
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
14
---
15
accel/tcg/cputlb.c | 46 +++++++++++++++++++++++-----------------------
16
1 file changed, 23 insertions(+), 23 deletions(-)
17
18
diff --git a/accel/tcg/cputlb.c b/accel/tcg/cputlb.c
19
index XXXXXXX..XXXXXXX 100644
20
--- a/accel/tcg/cputlb.c
21
+++ b/accel/tcg/cputlb.c
22
@@ -XXX,XX +XXX,XX @@ static void notdirty_write(CPUState *cpu, vaddr mem_vaddr, unsigned size,
23
}
24
}
25
26
-static int probe_access_internal(CPUArchState *env, vaddr addr,
27
+static int probe_access_internal(CPUState *cpu, vaddr addr,
28
int fault_size, MMUAccessType access_type,
29
int mmu_idx, bool nonfault,
30
void **phost, CPUTLBEntryFull **pfull,
31
uintptr_t retaddr, bool check_mem_cbs)
32
{
33
- uintptr_t index = tlb_index(env_cpu(env), mmu_idx, addr);
34
- CPUTLBEntry *entry = tlb_entry(env_cpu(env), mmu_idx, addr);
35
+ uintptr_t index = tlb_index(cpu, mmu_idx, addr);
36
+ CPUTLBEntry *entry = tlb_entry(cpu, mmu_idx, addr);
37
uint64_t tlb_addr = tlb_read_idx(entry, access_type);
38
vaddr page_addr = addr & TARGET_PAGE_MASK;
39
int flags = TLB_FLAGS_MASK & ~TLB_FORCE_SLOW;
40
- bool force_mmio = check_mem_cbs && cpu_plugin_mem_cbs_enabled(env_cpu(env));
41
+ bool force_mmio = check_mem_cbs && cpu_plugin_mem_cbs_enabled(cpu);
42
CPUTLBEntryFull *full;
43
44
if (!tlb_hit_page(tlb_addr, page_addr)) {
45
- if (!victim_tlb_hit(env_cpu(env), mmu_idx, index,
46
- access_type, page_addr)) {
47
- CPUState *cs = env_cpu(env);
48
-
49
- if (!cs->cc->tcg_ops->tlb_fill(cs, addr, fault_size, access_type,
50
- mmu_idx, nonfault, retaddr)) {
51
+ if (!victim_tlb_hit(cpu, mmu_idx, index, access_type, page_addr)) {
52
+ if (!cpu->cc->tcg_ops->tlb_fill(cpu, addr, fault_size, access_type,
53
+ mmu_idx, nonfault, retaddr)) {
54
/* Non-faulting page table read failed. */
55
*phost = NULL;
56
*pfull = NULL;
57
@@ -XXX,XX +XXX,XX @@ static int probe_access_internal(CPUArchState *env, vaddr addr,
58
}
59
60
/* TLB resize via tlb_fill may have moved the entry. */
61
- index = tlb_index(env_cpu(env), mmu_idx, addr);
62
- entry = tlb_entry(env_cpu(env), mmu_idx, addr);
63
+ index = tlb_index(cpu, mmu_idx, addr);
64
+ entry = tlb_entry(cpu, mmu_idx, addr);
65
66
/*
67
* With PAGE_WRITE_INV, we set TLB_INVALID_MASK immediately,
68
@@ -XXX,XX +XXX,XX @@ static int probe_access_internal(CPUArchState *env, vaddr addr,
69
}
70
flags &= tlb_addr;
71
72
- *pfull = full = &env_tlb(env)->d[mmu_idx].fulltlb[index];
73
+ *pfull = full = &cpu->neg.tlb.d[mmu_idx].fulltlb[index];
74
flags |= full->slow_flags[access_type];
75
76
/* Fold all "mmio-like" bits into TLB_MMIO. This is not RAM. */
77
@@ -XXX,XX +XXX,XX @@ int probe_access_full(CPUArchState *env, vaddr addr, int size,
78
bool nonfault, void **phost, CPUTLBEntryFull **pfull,
79
uintptr_t retaddr)
80
{
81
- int flags = probe_access_internal(env, addr, size, access_type, mmu_idx,
82
- nonfault, phost, pfull, retaddr, true);
83
+ int flags = probe_access_internal(env_cpu(env), addr, size, access_type,
84
+ mmu_idx, nonfault, phost, pfull, retaddr,
85
+ true);
86
87
/* Handle clean RAM pages. */
88
if (unlikely(flags & TLB_NOTDIRTY)) {
89
@@ -XXX,XX +XXX,XX @@ int probe_access_full_mmu(CPUArchState *env, vaddr addr, int size,
90
phost = phost ? phost : &discard_phost;
91
pfull = pfull ? pfull : &discard_tlb;
92
93
- int flags = probe_access_internal(env, addr, size, access_type, mmu_idx,
94
- true, phost, pfull, 0, false);
95
+ int flags = probe_access_internal(env_cpu(env), addr, size, access_type,
96
+ mmu_idx, true, phost, pfull, 0, false);
97
98
/* Handle clean RAM pages. */
99
if (unlikely(flags & TLB_NOTDIRTY)) {
100
@@ -XXX,XX +XXX,XX @@ int probe_access_flags(CPUArchState *env, vaddr addr, int size,
101
102
g_assert(-(addr | TARGET_PAGE_MASK) >= size);
103
104
- flags = probe_access_internal(env, addr, size, access_type, mmu_idx,
105
- nonfault, phost, &full, retaddr, true);
106
+ flags = probe_access_internal(env_cpu(env), addr, size, access_type,
107
+ mmu_idx, nonfault, phost, &full, retaddr,
108
+ true);
109
110
/* Handle clean RAM pages. */
111
if (unlikely(flags & TLB_NOTDIRTY)) {
112
@@ -XXX,XX +XXX,XX @@ void *probe_access(CPUArchState *env, vaddr addr, int size,
113
114
g_assert(-(addr | TARGET_PAGE_MASK) >= size);
115
116
- flags = probe_access_internal(env, addr, size, access_type, mmu_idx,
117
- false, &host, &full, retaddr, true);
118
+ flags = probe_access_internal(env_cpu(env), addr, size, access_type,
119
+ mmu_idx, false, &host, &full, retaddr,
120
+ true);
121
122
/* Per the interface, size == 0 merely faults the access. */
123
if (size == 0) {
124
@@ -XXX,XX +XXX,XX @@ void *tlb_vaddr_to_host(CPUArchState *env, abi_ptr addr,
125
void *host;
126
int flags;
127
128
- flags = probe_access_internal(env, addr, 0, access_type,
129
+ flags = probe_access_internal(env_cpu(env), addr, 0, access_type,
130
mmu_idx, true, &host, &full, 0, false);
131
132
/* No combination of flags are expected by the caller. */
133
@@ -XXX,XX +XXX,XX @@ tb_page_addr_t get_page_addr_code_hostp(CPUArchState *env, vaddr addr,
134
CPUTLBEntryFull *full;
135
void *p;
136
137
- (void)probe_access_internal(env, addr, 1, MMU_INST_FETCH,
138
+ (void)probe_access_internal(env_cpu(env), addr, 1, MMU_INST_FETCH,
139
cpu_mmu_index(env, true), false,
140
&p, &full, 0, false);
141
if (p == NULL) {
142
--
143
2.34.1
144
145
diff view generated by jsdifflib
New patch
1
From: Anton Johansson <anjo@rev.ng>
1
2
3
do_[ld|st]*() and mmu_lookup*() are changed to use CPUState over
4
CPUArchState, moving the target-dependence to the target-facing facing
5
cpu_[ld|st] functions.
6
7
Signed-off-by: Anton Johansson <anjo@rev.ng>
8
Message-Id: <20230912153428.17816-6-anjo@rev.ng>
9
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
10
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
11
[rth: Use cpu->neg.tlb instead of cpu_tlb; cpu_env instead of env_ptr.]
12
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
13
---
14
accel/tcg/cputlb.c | 348 ++++++++++++++++++++++-----------------------
15
1 file changed, 171 insertions(+), 177 deletions(-)
16
17
diff --git a/accel/tcg/cputlb.c b/accel/tcg/cputlb.c
18
index XXXXXXX..XXXXXXX 100644
19
--- a/accel/tcg/cputlb.c
20
+++ b/accel/tcg/cputlb.c
21
@@ -XXX,XX +XXX,XX @@ static inline void cpu_unaligned_access(CPUState *cpu, vaddr addr,
22
}
23
24
static MemoryRegionSection *
25
-io_prepare(hwaddr *out_offset, CPUArchState *env, hwaddr xlat,
26
+io_prepare(hwaddr *out_offset, CPUState *cpu, hwaddr xlat,
27
MemTxAttrs attrs, vaddr addr, uintptr_t retaddr)
28
{
29
- CPUState *cpu = env_cpu(env);
30
MemoryRegionSection *section;
31
hwaddr mr_offset;
32
33
@@ -XXX,XX +XXX,XX @@ io_prepare(hwaddr *out_offset, CPUArchState *env, hwaddr xlat,
34
return section;
35
}
36
37
-static void io_failed(CPUArchState *env, CPUTLBEntryFull *full, vaddr addr,
38
+static void io_failed(CPUState *cpu, CPUTLBEntryFull *full, vaddr addr,
39
unsigned size, MMUAccessType access_type, int mmu_idx,
40
MemTxResult response, uintptr_t retaddr)
41
{
42
- CPUState *cpu = env_cpu(env);
43
+ if (!cpu->ignore_memory_transaction_failures
44
+ && cpu->cc->tcg_ops->do_transaction_failed) {
45
+ hwaddr physaddr = full->phys_addr | (addr & ~TARGET_PAGE_MASK);
46
47
- if (!cpu->ignore_memory_transaction_failures) {
48
- CPUClass *cc = CPU_GET_CLASS(cpu);
49
-
50
- if (cc->tcg_ops->do_transaction_failed) {
51
- hwaddr physaddr = full->phys_addr | (addr & ~TARGET_PAGE_MASK);
52
-
53
- cc->tcg_ops->do_transaction_failed(cpu, physaddr, addr, size,
54
- access_type, mmu_idx,
55
- full->attrs, response, retaddr);
56
- }
57
+ cpu->cc->tcg_ops->do_transaction_failed(cpu, physaddr, addr, size,
58
+ access_type, mmu_idx,
59
+ full->attrs, response, retaddr);
60
}
61
}
62
63
@@ -XXX,XX +XXX,XX @@ typedef struct MMULookupLocals {
64
65
/**
66
* mmu_lookup1: translate one page
67
- * @env: cpu context
68
+ * @cpu: generic cpu state
69
* @data: lookup parameters
70
* @mmu_idx: virtual address context
71
* @access_type: load/store/code
72
@@ -XXX,XX +XXX,XX @@ typedef struct MMULookupLocals {
73
* tlb_fill will longjmp out. Return true if the softmmu tlb for
74
* @mmu_idx may have resized.
75
*/
76
-static bool mmu_lookup1(CPUArchState *env, MMULookupPageData *data,
77
+static bool mmu_lookup1(CPUState *cpu, MMULookupPageData *data,
78
int mmu_idx, MMUAccessType access_type, uintptr_t ra)
79
{
80
vaddr addr = data->addr;
81
- uintptr_t index = tlb_index(env_cpu(env), mmu_idx, addr);
82
- CPUTLBEntry *entry = tlb_entry(env_cpu(env), mmu_idx, addr);
83
+ uintptr_t index = tlb_index(cpu, mmu_idx, addr);
84
+ CPUTLBEntry *entry = tlb_entry(cpu, mmu_idx, addr);
85
uint64_t tlb_addr = tlb_read_idx(entry, access_type);
86
bool maybe_resized = false;
87
CPUTLBEntryFull *full;
88
@@ -XXX,XX +XXX,XX @@ static bool mmu_lookup1(CPUArchState *env, MMULookupPageData *data,
89
90
/* If the TLB entry is for a different page, reload and try again. */
91
if (!tlb_hit(tlb_addr, addr)) {
92
- if (!victim_tlb_hit(env_cpu(env), mmu_idx, index, access_type,
93
+ if (!victim_tlb_hit(cpu, mmu_idx, index, access_type,
94
addr & TARGET_PAGE_MASK)) {
95
- tlb_fill(env_cpu(env), addr, data->size, access_type, mmu_idx, ra);
96
+ tlb_fill(cpu, addr, data->size, access_type, mmu_idx, ra);
97
maybe_resized = true;
98
- index = tlb_index(env_cpu(env), mmu_idx, addr);
99
- entry = tlb_entry(env_cpu(env), mmu_idx, addr);
100
+ index = tlb_index(cpu, mmu_idx, addr);
101
+ entry = tlb_entry(cpu, mmu_idx, addr);
102
}
103
tlb_addr = tlb_read_idx(entry, access_type) & ~TLB_INVALID_MASK;
104
}
105
106
- full = &env_tlb(env)->d[mmu_idx].fulltlb[index];
107
+ full = &cpu->neg.tlb.d[mmu_idx].fulltlb[index];
108
flags = tlb_addr & (TLB_FLAGS_MASK & ~TLB_FORCE_SLOW);
109
flags |= full->slow_flags[access_type];
110
111
@@ -XXX,XX +XXX,XX @@ static bool mmu_lookup1(CPUArchState *env, MMULookupPageData *data,
112
113
/**
114
* mmu_watch_or_dirty
115
- * @env: cpu context
116
+ * @cpu: generic cpu state
117
* @data: lookup parameters
118
* @access_type: load/store/code
119
* @ra: return address into tcg generated code, or 0
120
@@ -XXX,XX +XXX,XX @@ static bool mmu_lookup1(CPUArchState *env, MMULookupPageData *data,
121
* Trigger watchpoints for @data.addr:@data.size;
122
* record writes to protected clean pages.
123
*/
124
-static void mmu_watch_or_dirty(CPUArchState *env, MMULookupPageData *data,
125
+static void mmu_watch_or_dirty(CPUState *cpu, MMULookupPageData *data,
126
MMUAccessType access_type, uintptr_t ra)
127
{
128
CPUTLBEntryFull *full = data->full;
129
@@ -XXX,XX +XXX,XX @@ static void mmu_watch_or_dirty(CPUArchState *env, MMULookupPageData *data,
130
/* On watchpoint hit, this will longjmp out. */
131
if (flags & TLB_WATCHPOINT) {
132
int wp = access_type == MMU_DATA_STORE ? BP_MEM_WRITE : BP_MEM_READ;
133
- cpu_check_watchpoint(env_cpu(env), addr, size, full->attrs, wp, ra);
134
+ cpu_check_watchpoint(cpu, addr, size, full->attrs, wp, ra);
135
flags &= ~TLB_WATCHPOINT;
136
}
137
138
/* Note that notdirty is only set for writes. */
139
if (flags & TLB_NOTDIRTY) {
140
- notdirty_write(env_cpu(env), addr, size, full, ra);
141
+ notdirty_write(cpu, addr, size, full, ra);
142
flags &= ~TLB_NOTDIRTY;
143
}
144
data->flags = flags;
145
@@ -XXX,XX +XXX,XX @@ static void mmu_watch_or_dirty(CPUArchState *env, MMULookupPageData *data,
146
147
/**
148
* mmu_lookup: translate page(s)
149
- * @env: cpu context
150
+ * @cpu: generic cpu state
151
* @addr: virtual address
152
* @oi: combined mmu_idx and MemOp
153
* @ra: return address into tcg generated code, or 0
154
@@ -XXX,XX +XXX,XX @@ static void mmu_watch_or_dirty(CPUArchState *env, MMULookupPageData *data,
155
* Resolve the translation for the page(s) beginning at @addr, for MemOp.size
156
* bytes. Return true if the lookup crosses a page boundary.
157
*/
158
-static bool mmu_lookup(CPUArchState *env, vaddr addr, MemOpIdx oi,
159
+static bool mmu_lookup(CPUState *cpu, vaddr addr, MemOpIdx oi,
160
uintptr_t ra, MMUAccessType type, MMULookupLocals *l)
161
{
162
unsigned a_bits;
163
@@ -XXX,XX +XXX,XX @@ static bool mmu_lookup(CPUArchState *env, vaddr addr, MemOpIdx oi,
164
/* Handle CPU specific unaligned behaviour */
165
a_bits = get_alignment_bits(l->memop);
166
if (addr & ((1 << a_bits) - 1)) {
167
- cpu_unaligned_access(env_cpu(env), addr, type, l->mmu_idx, ra);
168
+ cpu_unaligned_access(cpu, addr, type, l->mmu_idx, ra);
169
}
170
171
l->page[0].addr = addr;
172
@@ -XXX,XX +XXX,XX @@ static bool mmu_lookup(CPUArchState *env, vaddr addr, MemOpIdx oi,
173
crosspage = (addr ^ l->page[1].addr) & TARGET_PAGE_MASK;
174
175
if (likely(!crosspage)) {
176
- mmu_lookup1(env, &l->page[0], l->mmu_idx, type, ra);
177
+ mmu_lookup1(cpu, &l->page[0], l->mmu_idx, type, ra);
178
179
flags = l->page[0].flags;
180
if (unlikely(flags & (TLB_WATCHPOINT | TLB_NOTDIRTY))) {
181
- mmu_watch_or_dirty(env, &l->page[0], type, ra);
182
+ mmu_watch_or_dirty(cpu, &l->page[0], type, ra);
183
}
184
if (unlikely(flags & TLB_BSWAP)) {
185
l->memop ^= MO_BSWAP;
186
@@ -XXX,XX +XXX,XX @@ static bool mmu_lookup(CPUArchState *env, vaddr addr, MemOpIdx oi,
187
* Lookup both pages, recognizing exceptions from either. If the
188
* second lookup potentially resized, refresh first CPUTLBEntryFull.
189
*/
190
- mmu_lookup1(env, &l->page[0], l->mmu_idx, type, ra);
191
- if (mmu_lookup1(env, &l->page[1], l->mmu_idx, type, ra)) {
192
- uintptr_t index = tlb_index(env_cpu(env), l->mmu_idx, addr);
193
- l->page[0].full = &env_tlb(env)->d[l->mmu_idx].fulltlb[index];
194
+ mmu_lookup1(cpu, &l->page[0], l->mmu_idx, type, ra);
195
+ if (mmu_lookup1(cpu, &l->page[1], l->mmu_idx, type, ra)) {
196
+ uintptr_t index = tlb_index(cpu, l->mmu_idx, addr);
197
+ l->page[0].full = &cpu->neg.tlb.d[l->mmu_idx].fulltlb[index];
198
}
199
200
flags = l->page[0].flags | l->page[1].flags;
201
if (unlikely(flags & (TLB_WATCHPOINT | TLB_NOTDIRTY))) {
202
- mmu_watch_or_dirty(env, &l->page[0], type, ra);
203
- mmu_watch_or_dirty(env, &l->page[1], type, ra);
204
+ mmu_watch_or_dirty(cpu, &l->page[0], type, ra);
205
+ mmu_watch_or_dirty(cpu, &l->page[1], type, ra);
206
}
207
208
/*
209
@@ -XXX,XX +XXX,XX @@ static void *atomic_mmu_lookup(CPUArchState *env, vaddr addr, MemOpIdx oi,
210
211
/**
212
* do_ld_mmio_beN:
213
- * @env: cpu context
214
+ * @cpu: generic cpu state
215
* @full: page parameters
216
* @ret_be: accumulated data
217
* @addr: virtual address
218
@@ -XXX,XX +XXX,XX @@ static void *atomic_mmu_lookup(CPUArchState *env, vaddr addr, MemOpIdx oi,
219
* Load @size bytes from @addr, which is memory-mapped i/o.
220
* The bytes are concatenated in big-endian order with @ret_be.
221
*/
222
-static uint64_t int_ld_mmio_beN(CPUArchState *env, CPUTLBEntryFull *full,
223
+static uint64_t int_ld_mmio_beN(CPUState *cpu, CPUTLBEntryFull *full,
224
uint64_t ret_be, vaddr addr, int size,
225
int mmu_idx, MMUAccessType type, uintptr_t ra,
226
MemoryRegion *mr, hwaddr mr_offset)
227
@@ -XXX,XX +XXX,XX @@ static uint64_t int_ld_mmio_beN(CPUArchState *env, CPUTLBEntryFull *full,
228
r = memory_region_dispatch_read(mr, mr_offset, &val,
229
this_mop, full->attrs);
230
if (unlikely(r != MEMTX_OK)) {
231
- io_failed(env, full, addr, this_size, type, mmu_idx, r, ra);
232
+ io_failed(cpu, full, addr, this_size, type, mmu_idx, r, ra);
233
}
234
if (this_size == 8) {
235
return val;
236
@@ -XXX,XX +XXX,XX @@ static uint64_t int_ld_mmio_beN(CPUArchState *env, CPUTLBEntryFull *full,
237
return ret_be;
238
}
239
240
-static uint64_t do_ld_mmio_beN(CPUArchState *env, CPUTLBEntryFull *full,
241
+static uint64_t do_ld_mmio_beN(CPUState *cpu, CPUTLBEntryFull *full,
242
uint64_t ret_be, vaddr addr, int size,
243
int mmu_idx, MMUAccessType type, uintptr_t ra)
244
{
245
@@ -XXX,XX +XXX,XX @@ static uint64_t do_ld_mmio_beN(CPUArchState *env, CPUTLBEntryFull *full,
246
tcg_debug_assert(size > 0 && size <= 8);
247
248
attrs = full->attrs;
249
- section = io_prepare(&mr_offset, env, full->xlat_section, attrs, addr, ra);
250
+ section = io_prepare(&mr_offset, cpu, full->xlat_section, attrs, addr, ra);
251
mr = section->mr;
252
253
qemu_mutex_lock_iothread();
254
- ret = int_ld_mmio_beN(env, full, ret_be, addr, size, mmu_idx,
255
+ ret = int_ld_mmio_beN(cpu, full, ret_be, addr, size, mmu_idx,
256
type, ra, mr, mr_offset);
257
qemu_mutex_unlock_iothread();
258
259
return ret;
260
}
261
262
-static Int128 do_ld16_mmio_beN(CPUArchState *env, CPUTLBEntryFull *full,
263
+static Int128 do_ld16_mmio_beN(CPUState *cpu, CPUTLBEntryFull *full,
264
uint64_t ret_be, vaddr addr, int size,
265
int mmu_idx, uintptr_t ra)
266
{
267
@@ -XXX,XX +XXX,XX @@ static Int128 do_ld16_mmio_beN(CPUArchState *env, CPUTLBEntryFull *full,
268
tcg_debug_assert(size > 8 && size <= 16);
269
270
attrs = full->attrs;
271
- section = io_prepare(&mr_offset, env, full->xlat_section, attrs, addr, ra);
272
+ section = io_prepare(&mr_offset, cpu, full->xlat_section, attrs, addr, ra);
273
mr = section->mr;
274
275
qemu_mutex_lock_iothread();
276
- a = int_ld_mmio_beN(env, full, ret_be, addr, size - 8, mmu_idx,
277
+ a = int_ld_mmio_beN(cpu, full, ret_be, addr, size - 8, mmu_idx,
278
MMU_DATA_LOAD, ra, mr, mr_offset);
279
- b = int_ld_mmio_beN(env, full, ret_be, addr + size - 8, 8, mmu_idx,
280
+ b = int_ld_mmio_beN(cpu, full, ret_be, addr + size - 8, 8, mmu_idx,
281
MMU_DATA_LOAD, ra, mr, mr_offset + size - 8);
282
qemu_mutex_unlock_iothread();
283
284
@@ -XXX,XX +XXX,XX @@ static uint64_t do_ld_whole_be4(MMULookupPageData *p, uint64_t ret_be)
285
* As do_ld_bytes_beN, but with one atomic load.
286
* Eight aligned bytes are guaranteed to cover the load.
287
*/
288
-static uint64_t do_ld_whole_be8(CPUArchState *env, uintptr_t ra,
289
+static uint64_t do_ld_whole_be8(CPUState *cpu, uintptr_t ra,
290
MMULookupPageData *p, uint64_t ret_be)
291
{
292
int o = p->addr & 7;
293
- uint64_t x = load_atomic8_or_exit(env, ra, p->haddr - o);
294
+ uint64_t x = load_atomic8_or_exit(cpu_env(cpu), ra, p->haddr - o);
295
296
x = cpu_to_be64(x);
297
x <<= o * 8;
298
@@ -XXX,XX +XXX,XX @@ static uint64_t do_ld_whole_be8(CPUArchState *env, uintptr_t ra,
299
* As do_ld_bytes_beN, but with one atomic load.
300
* 16 aligned bytes are guaranteed to cover the load.
301
*/
302
-static Int128 do_ld_whole_be16(CPUArchState *env, uintptr_t ra,
303
+static Int128 do_ld_whole_be16(CPUState *cpu, uintptr_t ra,
304
MMULookupPageData *p, uint64_t ret_be)
305
{
306
int o = p->addr & 15;
307
- Int128 x, y = load_atomic16_or_exit(env, ra, p->haddr - o);
308
+ Int128 x, y = load_atomic16_or_exit(cpu_env(cpu), ra, p->haddr - o);
309
int size = p->size;
310
311
if (!HOST_BIG_ENDIAN) {
312
@@ -XXX,XX +XXX,XX @@ static Int128 do_ld_whole_be16(CPUArchState *env, uintptr_t ra,
313
/*
314
* Wrapper for the above.
315
*/
316
-static uint64_t do_ld_beN(CPUArchState *env, MMULookupPageData *p,
317
+static uint64_t do_ld_beN(CPUState *cpu, MMULookupPageData *p,
318
uint64_t ret_be, int mmu_idx, MMUAccessType type,
319
MemOp mop, uintptr_t ra)
320
{
321
@@ -XXX,XX +XXX,XX @@ static uint64_t do_ld_beN(CPUArchState *env, MMULookupPageData *p,
322
unsigned tmp, half_size;
323
324
if (unlikely(p->flags & TLB_MMIO)) {
325
- return do_ld_mmio_beN(env, p->full, ret_be, p->addr, p->size,
326
+ return do_ld_mmio_beN(cpu, p->full, ret_be, p->addr, p->size,
327
mmu_idx, type, ra);
328
}
329
330
@@ -XXX,XX +XXX,XX @@ static uint64_t do_ld_beN(CPUArchState *env, MMULookupPageData *p,
331
if (!HAVE_al8_fast && p->size < 4) {
332
return do_ld_whole_be4(p, ret_be);
333
} else {
334
- return do_ld_whole_be8(env, ra, p, ret_be);
335
+ return do_ld_whole_be8(cpu, ra, p, ret_be);
336
}
337
}
338
/* fall through */
339
@@ -XXX,XX +XXX,XX @@ static uint64_t do_ld_beN(CPUArchState *env, MMULookupPageData *p,
340
/*
341
* Wrapper for the above, for 8 < size < 16.
342
*/
343
-static Int128 do_ld16_beN(CPUArchState *env, MMULookupPageData *p,
344
+static Int128 do_ld16_beN(CPUState *cpu, MMULookupPageData *p,
345
uint64_t a, int mmu_idx, MemOp mop, uintptr_t ra)
346
{
347
int size = p->size;
348
@@ -XXX,XX +XXX,XX @@ static Int128 do_ld16_beN(CPUArchState *env, MMULookupPageData *p,
349
MemOp atom;
350
351
if (unlikely(p->flags & TLB_MMIO)) {
352
- return do_ld16_mmio_beN(env, p->full, a, p->addr, size, mmu_idx, ra);
353
+ return do_ld16_mmio_beN(cpu, p->full, a, p->addr, size, mmu_idx, ra);
354
}
355
356
/*
357
@@ -XXX,XX +XXX,XX @@ static Int128 do_ld16_beN(CPUArchState *env, MMULookupPageData *p,
358
359
case MO_ATOM_WITHIN16_PAIR:
360
/* Since size > 8, this is the half that must be atomic. */
361
- return do_ld_whole_be16(env, ra, p, a);
362
+ return do_ld_whole_be16(cpu, ra, p, a);
363
364
case MO_ATOM_IFALIGN_PAIR:
365
/*
366
@@ -XXX,XX +XXX,XX @@ static Int128 do_ld16_beN(CPUArchState *env, MMULookupPageData *p,
367
return int128_make128(b, a);
368
}
369
370
-static uint8_t do_ld_1(CPUArchState *env, MMULookupPageData *p, int mmu_idx,
371
+static uint8_t do_ld_1(CPUState *cpu, MMULookupPageData *p, int mmu_idx,
372
MMUAccessType type, uintptr_t ra)
373
{
374
if (unlikely(p->flags & TLB_MMIO)) {
375
- return do_ld_mmio_beN(env, p->full, 0, p->addr, 1, mmu_idx, type, ra);
376
+ return do_ld_mmio_beN(cpu, p->full, 0, p->addr, 1, mmu_idx, type, ra);
377
} else {
378
return *(uint8_t *)p->haddr;
379
}
380
}
381
382
-static uint16_t do_ld_2(CPUArchState *env, MMULookupPageData *p, int mmu_idx,
383
+static uint16_t do_ld_2(CPUState *cpu, MMULookupPageData *p, int mmu_idx,
384
MMUAccessType type, MemOp memop, uintptr_t ra)
385
{
386
uint16_t ret;
387
388
if (unlikely(p->flags & TLB_MMIO)) {
389
- ret = do_ld_mmio_beN(env, p->full, 0, p->addr, 2, mmu_idx, type, ra);
390
+ ret = do_ld_mmio_beN(cpu, p->full, 0, p->addr, 2, mmu_idx, type, ra);
391
if ((memop & MO_BSWAP) == MO_LE) {
392
ret = bswap16(ret);
393
}
394
} else {
395
/* Perform the load host endian, then swap if necessary. */
396
- ret = load_atom_2(env, ra, p->haddr, memop);
397
+ ret = load_atom_2(cpu_env(cpu), ra, p->haddr, memop);
398
if (memop & MO_BSWAP) {
399
ret = bswap16(ret);
400
}
401
@@ -XXX,XX +XXX,XX @@ static uint16_t do_ld_2(CPUArchState *env, MMULookupPageData *p, int mmu_idx,
402
return ret;
403
}
404
405
-static uint32_t do_ld_4(CPUArchState *env, MMULookupPageData *p, int mmu_idx,
406
+static uint32_t do_ld_4(CPUState *cpu, MMULookupPageData *p, int mmu_idx,
407
MMUAccessType type, MemOp memop, uintptr_t ra)
408
{
409
uint32_t ret;
410
411
if (unlikely(p->flags & TLB_MMIO)) {
412
- ret = do_ld_mmio_beN(env, p->full, 0, p->addr, 4, mmu_idx, type, ra);
413
+ ret = do_ld_mmio_beN(cpu, p->full, 0, p->addr, 4, mmu_idx, type, ra);
414
if ((memop & MO_BSWAP) == MO_LE) {
415
ret = bswap32(ret);
416
}
417
} else {
418
/* Perform the load host endian. */
419
- ret = load_atom_4(env, ra, p->haddr, memop);
420
+ ret = load_atom_4(cpu_env(cpu), ra, p->haddr, memop);
421
if (memop & MO_BSWAP) {
422
ret = bswap32(ret);
423
}
424
@@ -XXX,XX +XXX,XX @@ static uint32_t do_ld_4(CPUArchState *env, MMULookupPageData *p, int mmu_idx,
425
return ret;
426
}
427
428
-static uint64_t do_ld_8(CPUArchState *env, MMULookupPageData *p, int mmu_idx,
429
+static uint64_t do_ld_8(CPUState *cpu, MMULookupPageData *p, int mmu_idx,
430
MMUAccessType type, MemOp memop, uintptr_t ra)
431
{
432
uint64_t ret;
433
434
if (unlikely(p->flags & TLB_MMIO)) {
435
- ret = do_ld_mmio_beN(env, p->full, 0, p->addr, 8, mmu_idx, type, ra);
436
+ ret = do_ld_mmio_beN(cpu, p->full, 0, p->addr, 8, mmu_idx, type, ra);
437
if ((memop & MO_BSWAP) == MO_LE) {
438
ret = bswap64(ret);
439
}
440
} else {
441
/* Perform the load host endian. */
442
- ret = load_atom_8(env, ra, p->haddr, memop);
443
+ ret = load_atom_8(cpu_env(cpu), ra, p->haddr, memop);
444
if (memop & MO_BSWAP) {
445
ret = bswap64(ret);
446
}
447
@@ -XXX,XX +XXX,XX @@ static uint64_t do_ld_8(CPUArchState *env, MMULookupPageData *p, int mmu_idx,
448
return ret;
449
}
450
451
-static uint8_t do_ld1_mmu(CPUArchState *env, vaddr addr, MemOpIdx oi,
452
+static uint8_t do_ld1_mmu(CPUState *cpu, vaddr addr, MemOpIdx oi,
453
uintptr_t ra, MMUAccessType access_type)
454
{
455
MMULookupLocals l;
456
bool crosspage;
457
458
cpu_req_mo(TCG_MO_LD_LD | TCG_MO_ST_LD);
459
- crosspage = mmu_lookup(env, addr, oi, ra, access_type, &l);
460
+ crosspage = mmu_lookup(cpu, addr, oi, ra, access_type, &l);
461
tcg_debug_assert(!crosspage);
462
463
- return do_ld_1(env, &l.page[0], l.mmu_idx, access_type, ra);
464
+ return do_ld_1(cpu, &l.page[0], l.mmu_idx, access_type, ra);
465
}
466
467
tcg_target_ulong helper_ldub_mmu(CPUArchState *env, uint64_t addr,
468
MemOpIdx oi, uintptr_t retaddr)
469
{
470
tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_8);
471
- return do_ld1_mmu(env, addr, oi, retaddr, MMU_DATA_LOAD);
472
+ return do_ld1_mmu(env_cpu(env), addr, oi, retaddr, MMU_DATA_LOAD);
473
}
474
475
-static uint16_t do_ld2_mmu(CPUArchState *env, vaddr addr, MemOpIdx oi,
476
+static uint16_t do_ld2_mmu(CPUState *cpu, vaddr addr, MemOpIdx oi,
477
uintptr_t ra, MMUAccessType access_type)
478
{
479
MMULookupLocals l;
480
@@ -XXX,XX +XXX,XX @@ static uint16_t do_ld2_mmu(CPUArchState *env, vaddr addr, MemOpIdx oi,
481
uint8_t a, b;
482
483
cpu_req_mo(TCG_MO_LD_LD | TCG_MO_ST_LD);
484
- crosspage = mmu_lookup(env, addr, oi, ra, access_type, &l);
485
+ crosspage = mmu_lookup(cpu, addr, oi, ra, access_type, &l);
486
if (likely(!crosspage)) {
487
- return do_ld_2(env, &l.page[0], l.mmu_idx, access_type, l.memop, ra);
488
+ return do_ld_2(cpu, &l.page[0], l.mmu_idx, access_type, l.memop, ra);
489
}
490
491
- a = do_ld_1(env, &l.page[0], l.mmu_idx, access_type, ra);
492
- b = do_ld_1(env, &l.page[1], l.mmu_idx, access_type, ra);
493
+ a = do_ld_1(cpu, &l.page[0], l.mmu_idx, access_type, ra);
494
+ b = do_ld_1(cpu, &l.page[1], l.mmu_idx, access_type, ra);
495
496
if ((l.memop & MO_BSWAP) == MO_LE) {
497
ret = a | (b << 8);
498
@@ -XXX,XX +XXX,XX @@ tcg_target_ulong helper_lduw_mmu(CPUArchState *env, uint64_t addr,
499
MemOpIdx oi, uintptr_t retaddr)
500
{
501
tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_16);
502
- return do_ld2_mmu(env, addr, oi, retaddr, MMU_DATA_LOAD);
503
+ return do_ld2_mmu(env_cpu(env), addr, oi, retaddr, MMU_DATA_LOAD);
504
}
505
506
-static uint32_t do_ld4_mmu(CPUArchState *env, vaddr addr, MemOpIdx oi,
507
+static uint32_t do_ld4_mmu(CPUState *cpu, vaddr addr, MemOpIdx oi,
508
uintptr_t ra, MMUAccessType access_type)
509
{
510
MMULookupLocals l;
511
@@ -XXX,XX +XXX,XX @@ static uint32_t do_ld4_mmu(CPUArchState *env, vaddr addr, MemOpIdx oi,
512
uint32_t ret;
513
514
cpu_req_mo(TCG_MO_LD_LD | TCG_MO_ST_LD);
515
- crosspage = mmu_lookup(env, addr, oi, ra, access_type, &l);
516
+ crosspage = mmu_lookup(cpu, addr, oi, ra, access_type, &l);
517
if (likely(!crosspage)) {
518
- return do_ld_4(env, &l.page[0], l.mmu_idx, access_type, l.memop, ra);
519
+ return do_ld_4(cpu, &l.page[0], l.mmu_idx, access_type, l.memop, ra);
520
}
521
522
- ret = do_ld_beN(env, &l.page[0], 0, l.mmu_idx, access_type, l.memop, ra);
523
- ret = do_ld_beN(env, &l.page[1], ret, l.mmu_idx, access_type, l.memop, ra);
524
+ ret = do_ld_beN(cpu, &l.page[0], 0, l.mmu_idx, access_type, l.memop, ra);
525
+ ret = do_ld_beN(cpu, &l.page[1], ret, l.mmu_idx, access_type, l.memop, ra);
526
if ((l.memop & MO_BSWAP) == MO_LE) {
527
ret = bswap32(ret);
528
}
529
@@ -XXX,XX +XXX,XX @@ tcg_target_ulong helper_ldul_mmu(CPUArchState *env, uint64_t addr,
530
MemOpIdx oi, uintptr_t retaddr)
531
{
532
tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_32);
533
- return do_ld4_mmu(env, addr, oi, retaddr, MMU_DATA_LOAD);
534
+ return do_ld4_mmu(env_cpu(env), addr, oi, retaddr, MMU_DATA_LOAD);
535
}
536
537
-static uint64_t do_ld8_mmu(CPUArchState *env, vaddr addr, MemOpIdx oi,
538
+static uint64_t do_ld8_mmu(CPUState *cpu, vaddr addr, MemOpIdx oi,
539
uintptr_t ra, MMUAccessType access_type)
540
{
541
MMULookupLocals l;
542
@@ -XXX,XX +XXX,XX @@ static uint64_t do_ld8_mmu(CPUArchState *env, vaddr addr, MemOpIdx oi,
543
uint64_t ret;
544
545
cpu_req_mo(TCG_MO_LD_LD | TCG_MO_ST_LD);
546
- crosspage = mmu_lookup(env, addr, oi, ra, access_type, &l);
547
+ crosspage = mmu_lookup(cpu, addr, oi, ra, access_type, &l);
548
if (likely(!crosspage)) {
549
- return do_ld_8(env, &l.page[0], l.mmu_idx, access_type, l.memop, ra);
550
+ return do_ld_8(cpu, &l.page[0], l.mmu_idx, access_type, l.memop, ra);
551
}
552
553
- ret = do_ld_beN(env, &l.page[0], 0, l.mmu_idx, access_type, l.memop, ra);
554
- ret = do_ld_beN(env, &l.page[1], ret, l.mmu_idx, access_type, l.memop, ra);
555
+ ret = do_ld_beN(cpu, &l.page[0], 0, l.mmu_idx, access_type, l.memop, ra);
556
+ ret = do_ld_beN(cpu, &l.page[1], ret, l.mmu_idx, access_type, l.memop, ra);
557
if ((l.memop & MO_BSWAP) == MO_LE) {
558
ret = bswap64(ret);
559
}
560
@@ -XXX,XX +XXX,XX @@ uint64_t helper_ldq_mmu(CPUArchState *env, uint64_t addr,
561
MemOpIdx oi, uintptr_t retaddr)
562
{
563
tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_64);
564
- return do_ld8_mmu(env, addr, oi, retaddr, MMU_DATA_LOAD);
565
+ return do_ld8_mmu(env_cpu(env), addr, oi, retaddr, MMU_DATA_LOAD);
566
}
567
568
/*
569
@@ -XXX,XX +XXX,XX @@ tcg_target_ulong helper_ldsl_mmu(CPUArchState *env, uint64_t addr,
570
return (int32_t)helper_ldul_mmu(env, addr, oi, retaddr);
571
}
572
573
-static Int128 do_ld16_mmu(CPUArchState *env, vaddr addr,
574
+static Int128 do_ld16_mmu(CPUState *cpu, vaddr addr,
575
MemOpIdx oi, uintptr_t ra)
576
{
577
MMULookupLocals l;
578
@@ -XXX,XX +XXX,XX @@ static Int128 do_ld16_mmu(CPUArchState *env, vaddr addr,
579
int first;
580
581
cpu_req_mo(TCG_MO_LD_LD | TCG_MO_ST_LD);
582
- crosspage = mmu_lookup(env, addr, oi, ra, MMU_DATA_LOAD, &l);
583
+ crosspage = mmu_lookup(cpu, addr, oi, ra, MMU_DATA_LOAD, &l);
584
if (likely(!crosspage)) {
585
if (unlikely(l.page[0].flags & TLB_MMIO)) {
586
- ret = do_ld16_mmio_beN(env, l.page[0].full, 0, addr, 16,
587
+ ret = do_ld16_mmio_beN(cpu, l.page[0].full, 0, addr, 16,
588
l.mmu_idx, ra);
589
if ((l.memop & MO_BSWAP) == MO_LE) {
590
ret = bswap128(ret);
591
}
592
} else {
593
/* Perform the load host endian. */
594
- ret = load_atom_16(env, ra, l.page[0].haddr, l.memop);
595
+ ret = load_atom_16(cpu_env(cpu), ra, l.page[0].haddr, l.memop);
596
if (l.memop & MO_BSWAP) {
597
ret = bswap128(ret);
598
}
599
@@ -XXX,XX +XXX,XX @@ static Int128 do_ld16_mmu(CPUArchState *env, vaddr addr,
600
if (first == 8) {
601
MemOp mop8 = (l.memop & ~MO_SIZE) | MO_64;
602
603
- a = do_ld_8(env, &l.page[0], l.mmu_idx, MMU_DATA_LOAD, mop8, ra);
604
- b = do_ld_8(env, &l.page[1], l.mmu_idx, MMU_DATA_LOAD, mop8, ra);
605
+ a = do_ld_8(cpu, &l.page[0], l.mmu_idx, MMU_DATA_LOAD, mop8, ra);
606
+ b = do_ld_8(cpu, &l.page[1], l.mmu_idx, MMU_DATA_LOAD, mop8, ra);
607
if ((mop8 & MO_BSWAP) == MO_LE) {
608
ret = int128_make128(a, b);
609
} else {
610
@@ -XXX,XX +XXX,XX @@ static Int128 do_ld16_mmu(CPUArchState *env, vaddr addr,
611
}
612
613
if (first < 8) {
614
- a = do_ld_beN(env, &l.page[0], 0, l.mmu_idx,
615
+ a = do_ld_beN(cpu, &l.page[0], 0, l.mmu_idx,
616
MMU_DATA_LOAD, l.memop, ra);
617
- ret = do_ld16_beN(env, &l.page[1], a, l.mmu_idx, l.memop, ra);
618
+ ret = do_ld16_beN(cpu, &l.page[1], a, l.mmu_idx, l.memop, ra);
619
} else {
620
- ret = do_ld16_beN(env, &l.page[0], 0, l.mmu_idx, l.memop, ra);
621
+ ret = do_ld16_beN(cpu, &l.page[0], 0, l.mmu_idx, l.memop, ra);
622
b = int128_getlo(ret);
623
ret = int128_lshift(ret, l.page[1].size * 8);
624
a = int128_gethi(ret);
625
- b = do_ld_beN(env, &l.page[1], b, l.mmu_idx,
626
+ b = do_ld_beN(cpu, &l.page[1], b, l.mmu_idx,
627
MMU_DATA_LOAD, l.memop, ra);
628
ret = int128_make128(b, a);
629
}
630
@@ -XXX,XX +XXX,XX @@ Int128 helper_ld16_mmu(CPUArchState *env, uint64_t addr,
631
uint32_t oi, uintptr_t retaddr)
632
{
633
tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_128);
634
- return do_ld16_mmu(env, addr, oi, retaddr);
635
+ return do_ld16_mmu(env_cpu(env), addr, oi, retaddr);
636
}
637
638
Int128 helper_ld_i128(CPUArchState *env, uint64_t addr, uint32_t oi)
639
@@ -XXX,XX +XXX,XX @@ uint8_t cpu_ldb_mmu(CPUArchState *env, abi_ptr addr, MemOpIdx oi, uintptr_t ra)
640
uint8_t ret;
641
642
tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_UB);
643
- ret = do_ld1_mmu(env, addr, oi, ra, MMU_DATA_LOAD);
644
+ ret = do_ld1_mmu(env_cpu(env), addr, oi, ra, MMU_DATA_LOAD);
645
plugin_load_cb(env, addr, oi);
646
return ret;
647
}
648
@@ -XXX,XX +XXX,XX @@ uint16_t cpu_ldw_mmu(CPUArchState *env, abi_ptr addr,
649
uint16_t ret;
650
651
tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_16);
652
- ret = do_ld2_mmu(env, addr, oi, ra, MMU_DATA_LOAD);
653
+ ret = do_ld2_mmu(env_cpu(env), addr, oi, ra, MMU_DATA_LOAD);
654
plugin_load_cb(env, addr, oi);
655
return ret;
656
}
657
@@ -XXX,XX +XXX,XX @@ uint32_t cpu_ldl_mmu(CPUArchState *env, abi_ptr addr,
658
uint32_t ret;
659
660
tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_32);
661
- ret = do_ld4_mmu(env, addr, oi, ra, MMU_DATA_LOAD);
662
+ ret = do_ld4_mmu(env_cpu(env), addr, oi, ra, MMU_DATA_LOAD);
663
plugin_load_cb(env, addr, oi);
664
return ret;
665
}
666
@@ -XXX,XX +XXX,XX @@ uint64_t cpu_ldq_mmu(CPUArchState *env, abi_ptr addr,
667
uint64_t ret;
668
669
tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_64);
670
- ret = do_ld8_mmu(env, addr, oi, ra, MMU_DATA_LOAD);
671
+ ret = do_ld8_mmu(env_cpu(env), addr, oi, ra, MMU_DATA_LOAD);
672
plugin_load_cb(env, addr, oi);
673
return ret;
674
}
675
@@ -XXX,XX +XXX,XX @@ Int128 cpu_ld16_mmu(CPUArchState *env, abi_ptr addr,
676
Int128 ret;
677
678
tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_128);
679
- ret = do_ld16_mmu(env, addr, oi, ra);
680
+ ret = do_ld16_mmu(env_cpu(env), addr, oi, ra);
681
plugin_load_cb(env, addr, oi);
682
return ret;
683
}
684
@@ -XXX,XX +XXX,XX @@ Int128 cpu_ld16_mmu(CPUArchState *env, abi_ptr addr,
685
686
/**
687
* do_st_mmio_leN:
688
- * @env: cpu context
689
+ * @cpu: generic cpu state
690
* @full: page parameters
691
* @val_le: data to store
692
* @addr: virtual address
693
@@ -XXX,XX +XXX,XX @@ Int128 cpu_ld16_mmu(CPUArchState *env, abi_ptr addr,
694
* The bytes to store are extracted in little-endian order from @val_le;
695
* return the bytes of @val_le beyond @p->size that have not been stored.
696
*/
697
-static uint64_t int_st_mmio_leN(CPUArchState *env, CPUTLBEntryFull *full,
698
+static uint64_t int_st_mmio_leN(CPUState *cpu, CPUTLBEntryFull *full,
699
uint64_t val_le, vaddr addr, int size,
700
int mmu_idx, uintptr_t ra,
701
MemoryRegion *mr, hwaddr mr_offset)
702
@@ -XXX,XX +XXX,XX @@ static uint64_t int_st_mmio_leN(CPUArchState *env, CPUTLBEntryFull *full,
703
r = memory_region_dispatch_write(mr, mr_offset, val_le,
704
this_mop, full->attrs);
705
if (unlikely(r != MEMTX_OK)) {
706
- io_failed(env, full, addr, this_size, MMU_DATA_STORE,
707
+ io_failed(cpu, full, addr, this_size, MMU_DATA_STORE,
708
mmu_idx, r, ra);
709
}
710
if (this_size == 8) {
711
@@ -XXX,XX +XXX,XX @@ static uint64_t int_st_mmio_leN(CPUArchState *env, CPUTLBEntryFull *full,
712
return val_le;
713
}
714
715
-static uint64_t do_st_mmio_leN(CPUArchState *env, CPUTLBEntryFull *full,
716
+static uint64_t do_st_mmio_leN(CPUState *cpu, CPUTLBEntryFull *full,
717
uint64_t val_le, vaddr addr, int size,
718
int mmu_idx, uintptr_t ra)
719
{
720
@@ -XXX,XX +XXX,XX @@ static uint64_t do_st_mmio_leN(CPUArchState *env, CPUTLBEntryFull *full,
721
tcg_debug_assert(size > 0 && size <= 8);
722
723
attrs = full->attrs;
724
- section = io_prepare(&mr_offset, env, full->xlat_section, attrs, addr, ra);
725
+ section = io_prepare(&mr_offset, cpu, full->xlat_section, attrs, addr, ra);
726
mr = section->mr;
727
728
qemu_mutex_lock_iothread();
729
- ret = int_st_mmio_leN(env, full, val_le, addr, size, mmu_idx,
730
+ ret = int_st_mmio_leN(cpu, full, val_le, addr, size, mmu_idx,
731
ra, mr, mr_offset);
732
qemu_mutex_unlock_iothread();
733
734
return ret;
735
}
736
737
-static uint64_t do_st16_mmio_leN(CPUArchState *env, CPUTLBEntryFull *full,
738
+static uint64_t do_st16_mmio_leN(CPUState *cpu, CPUTLBEntryFull *full,
739
Int128 val_le, vaddr addr, int size,
740
int mmu_idx, uintptr_t ra)
741
{
742
@@ -XXX,XX +XXX,XX @@ static uint64_t do_st16_mmio_leN(CPUArchState *env, CPUTLBEntryFull *full,
743
tcg_debug_assert(size > 8 && size <= 16);
744
745
attrs = full->attrs;
746
- section = io_prepare(&mr_offset, env, full->xlat_section, attrs, addr, ra);
747
+ section = io_prepare(&mr_offset, cpu, full->xlat_section, attrs, addr, ra);
748
mr = section->mr;
749
750
qemu_mutex_lock_iothread();
751
- int_st_mmio_leN(env, full, int128_getlo(val_le), addr, 8,
752
+ int_st_mmio_leN(cpu, full, int128_getlo(val_le), addr, 8,
753
mmu_idx, ra, mr, mr_offset);
754
- ret = int_st_mmio_leN(env, full, int128_gethi(val_le), addr + 8,
755
+ ret = int_st_mmio_leN(cpu, full, int128_gethi(val_le), addr + 8,
756
size - 8, mmu_idx, ra, mr, mr_offset + 8);
757
qemu_mutex_unlock_iothread();
758
759
@@ -XXX,XX +XXX,XX @@ static uint64_t do_st16_mmio_leN(CPUArchState *env, CPUTLBEntryFull *full,
760
/*
761
* Wrapper for the above.
762
*/
763
-static uint64_t do_st_leN(CPUArchState *env, MMULookupPageData *p,
764
+static uint64_t do_st_leN(CPUState *cpu, MMULookupPageData *p,
765
uint64_t val_le, int mmu_idx,
766
MemOp mop, uintptr_t ra)
767
{
768
@@ -XXX,XX +XXX,XX @@ static uint64_t do_st_leN(CPUArchState *env, MMULookupPageData *p,
769
unsigned tmp, half_size;
770
771
if (unlikely(p->flags & TLB_MMIO)) {
772
- return do_st_mmio_leN(env, p->full, val_le, p->addr,
773
+ return do_st_mmio_leN(cpu, p->full, val_le, p->addr,
774
p->size, mmu_idx, ra);
775
} else if (unlikely(p->flags & TLB_DISCARD_WRITE)) {
776
return val_le >> (p->size * 8);
777
@@ -XXX,XX +XXX,XX @@ static uint64_t do_st_leN(CPUArchState *env, MMULookupPageData *p,
778
} else if (HAVE_al8) {
779
return store_whole_le8(p->haddr, p->size, val_le);
780
} else {
781
- cpu_loop_exit_atomic(env_cpu(env), ra);
782
+ cpu_loop_exit_atomic(cpu, ra);
783
}
784
}
785
/* fall through */
786
@@ -XXX,XX +XXX,XX @@ static uint64_t do_st_leN(CPUArchState *env, MMULookupPageData *p,
787
/*
788
* Wrapper for the above, for 8 < size < 16.
789
*/
790
-static uint64_t do_st16_leN(CPUArchState *env, MMULookupPageData *p,
791
+static uint64_t do_st16_leN(CPUState *cpu, MMULookupPageData *p,
792
Int128 val_le, int mmu_idx,
793
MemOp mop, uintptr_t ra)
794
{
795
@@ -XXX,XX +XXX,XX @@ static uint64_t do_st16_leN(CPUArchState *env, MMULookupPageData *p,
796
MemOp atom;
797
798
if (unlikely(p->flags & TLB_MMIO)) {
799
- return do_st16_mmio_leN(env, p->full, val_le, p->addr,
800
+ return do_st16_mmio_leN(cpu, p->full, val_le, p->addr,
801
size, mmu_idx, ra);
802
} else if (unlikely(p->flags & TLB_DISCARD_WRITE)) {
803
return int128_gethi(val_le) >> ((size - 8) * 8);
804
@@ -XXX,XX +XXX,XX @@ static uint64_t do_st16_leN(CPUArchState *env, MMULookupPageData *p,
805
case MO_ATOM_WITHIN16_PAIR:
806
/* Since size > 8, this is the half that must be atomic. */
807
if (!HAVE_ATOMIC128_RW) {
808
- cpu_loop_exit_atomic(env_cpu(env), ra);
809
+ cpu_loop_exit_atomic(cpu, ra);
810
}
811
return store_whole_le16(p->haddr, p->size, val_le);
812
813
@@ -XXX,XX +XXX,XX @@ static uint64_t do_st16_leN(CPUArchState *env, MMULookupPageData *p,
814
}
815
}
816
817
-static void do_st_1(CPUArchState *env, MMULookupPageData *p, uint8_t val,
818
+static void do_st_1(CPUState *cpu, MMULookupPageData *p, uint8_t val,
819
int mmu_idx, uintptr_t ra)
820
{
821
if (unlikely(p->flags & TLB_MMIO)) {
822
- do_st_mmio_leN(env, p->full, val, p->addr, 1, mmu_idx, ra);
823
+ do_st_mmio_leN(cpu, p->full, val, p->addr, 1, mmu_idx, ra);
824
} else if (unlikely(p->flags & TLB_DISCARD_WRITE)) {
825
/* nothing */
826
} else {
827
@@ -XXX,XX +XXX,XX @@ static void do_st_1(CPUArchState *env, MMULookupPageData *p, uint8_t val,
828
}
829
}
830
831
-static void do_st_2(CPUArchState *env, MMULookupPageData *p, uint16_t val,
832
+static void do_st_2(CPUState *cpu, MMULookupPageData *p, uint16_t val,
833
int mmu_idx, MemOp memop, uintptr_t ra)
834
{
835
if (unlikely(p->flags & TLB_MMIO)) {
836
if ((memop & MO_BSWAP) != MO_LE) {
837
val = bswap16(val);
838
}
839
- do_st_mmio_leN(env, p->full, val, p->addr, 2, mmu_idx, ra);
840
+ do_st_mmio_leN(cpu, p->full, val, p->addr, 2, mmu_idx, ra);
841
} else if (unlikely(p->flags & TLB_DISCARD_WRITE)) {
842
/* nothing */
843
} else {
844
@@ -XXX,XX +XXX,XX @@ static void do_st_2(CPUArchState *env, MMULookupPageData *p, uint16_t val,
845
if (memop & MO_BSWAP) {
846
val = bswap16(val);
847
}
848
- store_atom_2(env, ra, p->haddr, memop, val);
849
+ store_atom_2(cpu_env(cpu), ra, p->haddr, memop, val);
850
}
851
}
852
853
-static void do_st_4(CPUArchState *env, MMULookupPageData *p, uint32_t val,
854
+static void do_st_4(CPUState *cpu, MMULookupPageData *p, uint32_t val,
855
int mmu_idx, MemOp memop, uintptr_t ra)
856
{
857
if (unlikely(p->flags & TLB_MMIO)) {
858
if ((memop & MO_BSWAP) != MO_LE) {
859
val = bswap32(val);
860
}
861
- do_st_mmio_leN(env, p->full, val, p->addr, 4, mmu_idx, ra);
862
+ do_st_mmio_leN(cpu, p->full, val, p->addr, 4, mmu_idx, ra);
863
} else if (unlikely(p->flags & TLB_DISCARD_WRITE)) {
864
/* nothing */
865
} else {
866
@@ -XXX,XX +XXX,XX @@ static void do_st_4(CPUArchState *env, MMULookupPageData *p, uint32_t val,
867
if (memop & MO_BSWAP) {
868
val = bswap32(val);
869
}
870
- store_atom_4(env, ra, p->haddr, memop, val);
871
+ store_atom_4(cpu_env(cpu), ra, p->haddr, memop, val);
872
}
873
}
874
875
-static void do_st_8(CPUArchState *env, MMULookupPageData *p, uint64_t val,
876
+static void do_st_8(CPUState *cpu, MMULookupPageData *p, uint64_t val,
877
int mmu_idx, MemOp memop, uintptr_t ra)
878
{
879
if (unlikely(p->flags & TLB_MMIO)) {
880
if ((memop & MO_BSWAP) != MO_LE) {
881
val = bswap64(val);
882
}
883
- do_st_mmio_leN(env, p->full, val, p->addr, 8, mmu_idx, ra);
884
+ do_st_mmio_leN(cpu, p->full, val, p->addr, 8, mmu_idx, ra);
885
} else if (unlikely(p->flags & TLB_DISCARD_WRITE)) {
886
/* nothing */
887
} else {
888
@@ -XXX,XX +XXX,XX @@ static void do_st_8(CPUArchState *env, MMULookupPageData *p, uint64_t val,
889
if (memop & MO_BSWAP) {
890
val = bswap64(val);
891
}
892
- store_atom_8(env, ra, p->haddr, memop, val);
893
+ store_atom_8(cpu_env(cpu), ra, p->haddr, memop, val);
894
}
895
}
896
897
@@ -XXX,XX +XXX,XX @@ void helper_stb_mmu(CPUArchState *env, uint64_t addr, uint32_t val,
898
899
tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_8);
900
cpu_req_mo(TCG_MO_LD_ST | TCG_MO_ST_ST);
901
- crosspage = mmu_lookup(env, addr, oi, ra, MMU_DATA_STORE, &l);
902
+ crosspage = mmu_lookup(env_cpu(env), addr, oi, ra, MMU_DATA_STORE, &l);
903
tcg_debug_assert(!crosspage);
904
905
- do_st_1(env, &l.page[0], val, l.mmu_idx, ra);
906
+ do_st_1(env_cpu(env), &l.page[0], val, l.mmu_idx, ra);
907
}
908
909
-static void do_st2_mmu(CPUArchState *env, vaddr addr, uint16_t val,
910
+static void do_st2_mmu(CPUState *cpu, vaddr addr, uint16_t val,
911
MemOpIdx oi, uintptr_t ra)
912
{
913
MMULookupLocals l;
914
@@ -XXX,XX +XXX,XX @@ static void do_st2_mmu(CPUArchState *env, vaddr addr, uint16_t val,
915
uint8_t a, b;
916
917
cpu_req_mo(TCG_MO_LD_ST | TCG_MO_ST_ST);
918
- crosspage = mmu_lookup(env, addr, oi, ra, MMU_DATA_STORE, &l);
919
+ crosspage = mmu_lookup(cpu, addr, oi, ra, MMU_DATA_STORE, &l);
920
if (likely(!crosspage)) {
921
- do_st_2(env, &l.page[0], val, l.mmu_idx, l.memop, ra);
922
+ do_st_2(cpu, &l.page[0], val, l.mmu_idx, l.memop, ra);
923
return;
924
}
925
926
@@ -XXX,XX +XXX,XX @@ static void do_st2_mmu(CPUArchState *env, vaddr addr, uint16_t val,
927
} else {
928
b = val, a = val >> 8;
929
}
930
- do_st_1(env, &l.page[0], a, l.mmu_idx, ra);
931
- do_st_1(env, &l.page[1], b, l.mmu_idx, ra);
932
+ do_st_1(cpu, &l.page[0], a, l.mmu_idx, ra);
933
+ do_st_1(cpu, &l.page[1], b, l.mmu_idx, ra);
934
}
935
936
void helper_stw_mmu(CPUArchState *env, uint64_t addr, uint32_t val,
937
MemOpIdx oi, uintptr_t retaddr)
938
{
939
tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_16);
940
- do_st2_mmu(env, addr, val, oi, retaddr);
941
+ do_st2_mmu(env_cpu(env), addr, val, oi, retaddr);
942
}
943
944
-static void do_st4_mmu(CPUArchState *env, vaddr addr, uint32_t val,
945
+static void do_st4_mmu(CPUState *cpu, vaddr addr, uint32_t val,
946
MemOpIdx oi, uintptr_t ra)
947
{
948
MMULookupLocals l;
949
bool crosspage;
950
951
cpu_req_mo(TCG_MO_LD_ST | TCG_MO_ST_ST);
952
- crosspage = mmu_lookup(env, addr, oi, ra, MMU_DATA_STORE, &l);
953
+ crosspage = mmu_lookup(cpu, addr, oi, ra, MMU_DATA_STORE, &l);
954
if (likely(!crosspage)) {
955
- do_st_4(env, &l.page[0], val, l.mmu_idx, l.memop, ra);
956
+ do_st_4(cpu, &l.page[0], val, l.mmu_idx, l.memop, ra);
957
return;
958
}
959
960
@@ -XXX,XX +XXX,XX @@ static void do_st4_mmu(CPUArchState *env, vaddr addr, uint32_t val,
961
if ((l.memop & MO_BSWAP) != MO_LE) {
962
val = bswap32(val);
963
}
964
- val = do_st_leN(env, &l.page[0], val, l.mmu_idx, l.memop, ra);
965
- (void) do_st_leN(env, &l.page[1], val, l.mmu_idx, l.memop, ra);
966
+ val = do_st_leN(cpu, &l.page[0], val, l.mmu_idx, l.memop, ra);
967
+ (void) do_st_leN(cpu, &l.page[1], val, l.mmu_idx, l.memop, ra);
968
}
969
970
void helper_stl_mmu(CPUArchState *env, uint64_t addr, uint32_t val,
971
MemOpIdx oi, uintptr_t retaddr)
972
{
973
tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_32);
974
- do_st4_mmu(env, addr, val, oi, retaddr);
975
+ do_st4_mmu(env_cpu(env), addr, val, oi, retaddr);
976
}
977
978
-static void do_st8_mmu(CPUArchState *env, vaddr addr, uint64_t val,
979
+static void do_st8_mmu(CPUState *cpu, vaddr addr, uint64_t val,
980
MemOpIdx oi, uintptr_t ra)
981
{
982
MMULookupLocals l;
983
bool crosspage;
984
985
cpu_req_mo(TCG_MO_LD_ST | TCG_MO_ST_ST);
986
- crosspage = mmu_lookup(env, addr, oi, ra, MMU_DATA_STORE, &l);
987
+ crosspage = mmu_lookup(cpu, addr, oi, ra, MMU_DATA_STORE, &l);
988
if (likely(!crosspage)) {
989
- do_st_8(env, &l.page[0], val, l.mmu_idx, l.memop, ra);
990
+ do_st_8(cpu, &l.page[0], val, l.mmu_idx, l.memop, ra);
991
return;
992
}
993
994
@@ -XXX,XX +XXX,XX @@ static void do_st8_mmu(CPUArchState *env, vaddr addr, uint64_t val,
995
if ((l.memop & MO_BSWAP) != MO_LE) {
996
val = bswap64(val);
997
}
998
- val = do_st_leN(env, &l.page[0], val, l.mmu_idx, l.memop, ra);
999
- (void) do_st_leN(env, &l.page[1], val, l.mmu_idx, l.memop, ra);
1000
+ val = do_st_leN(cpu, &l.page[0], val, l.mmu_idx, l.memop, ra);
1001
+ (void) do_st_leN(cpu, &l.page[1], val, l.mmu_idx, l.memop, ra);
1002
}
1003
1004
void helper_stq_mmu(CPUArchState *env, uint64_t addr, uint64_t val,
1005
MemOpIdx oi, uintptr_t retaddr)
1006
{
1007
tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_64);
1008
- do_st8_mmu(env, addr, val, oi, retaddr);
1009
+ do_st8_mmu(env_cpu(env), addr, val, oi, retaddr);
1010
}
1011
1012
-static void do_st16_mmu(CPUArchState *env, vaddr addr, Int128 val,
1013
+static void do_st16_mmu(CPUState *cpu, vaddr addr, Int128 val,
1014
MemOpIdx oi, uintptr_t ra)
1015
{
1016
MMULookupLocals l;
1017
@@ -XXX,XX +XXX,XX @@ static void do_st16_mmu(CPUArchState *env, vaddr addr, Int128 val,
1018
int first;
1019
1020
cpu_req_mo(TCG_MO_LD_ST | TCG_MO_ST_ST);
1021
- crosspage = mmu_lookup(env, addr, oi, ra, MMU_DATA_STORE, &l);
1022
+ crosspage = mmu_lookup(cpu, addr, oi, ra, MMU_DATA_STORE, &l);
1023
if (likely(!crosspage)) {
1024
if (unlikely(l.page[0].flags & TLB_MMIO)) {
1025
if ((l.memop & MO_BSWAP) != MO_LE) {
1026
val = bswap128(val);
1027
}
1028
- do_st16_mmio_leN(env, l.page[0].full, val, addr, 16, l.mmu_idx, ra);
1029
+ do_st16_mmio_leN(cpu, l.page[0].full, val, addr, 16, l.mmu_idx, ra);
1030
} else if (unlikely(l.page[0].flags & TLB_DISCARD_WRITE)) {
1031
/* nothing */
1032
} else {
1033
@@ -XXX,XX +XXX,XX @@ static void do_st16_mmu(CPUArchState *env, vaddr addr, Int128 val,
1034
if (l.memop & MO_BSWAP) {
1035
val = bswap128(val);
1036
}
1037
- store_atom_16(env, ra, l.page[0].haddr, l.memop, val);
1038
+ store_atom_16(cpu_env(cpu), ra, l.page[0].haddr, l.memop, val);
1039
}
1040
return;
1041
}
1042
@@ -XXX,XX +XXX,XX @@ static void do_st16_mmu(CPUArchState *env, vaddr addr, Int128 val,
1043
} else {
1044
a = int128_getlo(val), b = int128_gethi(val);
1045
}
1046
- do_st_8(env, &l.page[0], a, l.mmu_idx, mop8, ra);
1047
- do_st_8(env, &l.page[1], b, l.mmu_idx, mop8, ra);
1048
+ do_st_8(cpu, &l.page[0], a, l.mmu_idx, mop8, ra);
1049
+ do_st_8(cpu, &l.page[1], b, l.mmu_idx, mop8, ra);
1050
return;
1051
}
1052
1053
@@ -XXX,XX +XXX,XX @@ static void do_st16_mmu(CPUArchState *env, vaddr addr, Int128 val,
1054
val = bswap128(val);
1055
}
1056
if (first < 8) {
1057
- do_st_leN(env, &l.page[0], int128_getlo(val), l.mmu_idx, l.memop, ra);
1058
+ do_st_leN(cpu, &l.page[0], int128_getlo(val), l.mmu_idx, l.memop, ra);
1059
val = int128_urshift(val, first * 8);
1060
- do_st16_leN(env, &l.page[1], val, l.mmu_idx, l.memop, ra);
1061
+ do_st16_leN(cpu, &l.page[1], val, l.mmu_idx, l.memop, ra);
1062
} else {
1063
- b = do_st16_leN(env, &l.page[0], val, l.mmu_idx, l.memop, ra);
1064
- do_st_leN(env, &l.page[1], b, l.mmu_idx, l.memop, ra);
1065
+ b = do_st16_leN(cpu, &l.page[0], val, l.mmu_idx, l.memop, ra);
1066
+ do_st_leN(cpu, &l.page[1], b, l.mmu_idx, l.memop, ra);
1067
}
1068
}
1069
1070
@@ -XXX,XX +XXX,XX @@ void helper_st16_mmu(CPUArchState *env, uint64_t addr, Int128 val,
1071
MemOpIdx oi, uintptr_t retaddr)
1072
{
1073
tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_128);
1074
- do_st16_mmu(env, addr, val, oi, retaddr);
1075
+ do_st16_mmu(env_cpu(env), addr, val, oi, retaddr);
1076
}
1077
1078
void helper_st_i128(CPUArchState *env, uint64_t addr, Int128 val, MemOpIdx oi)
1079
@@ -XXX,XX +XXX,XX @@ void cpu_stw_mmu(CPUArchState *env, abi_ptr addr, uint16_t val,
1080
MemOpIdx oi, uintptr_t retaddr)
1081
{
1082
tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_16);
1083
- do_st2_mmu(env, addr, val, oi, retaddr);
1084
+ do_st2_mmu(env_cpu(env), addr, val, oi, retaddr);
1085
plugin_store_cb(env, addr, oi);
1086
}
1087
1088
@@ -XXX,XX +XXX,XX @@ void cpu_stl_mmu(CPUArchState *env, abi_ptr addr, uint32_t val,
1089
MemOpIdx oi, uintptr_t retaddr)
1090
{
1091
tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_32);
1092
- do_st4_mmu(env, addr, val, oi, retaddr);
1093
+ do_st4_mmu(env_cpu(env), addr, val, oi, retaddr);
1094
plugin_store_cb(env, addr, oi);
1095
}
1096
1097
@@ -XXX,XX +XXX,XX @@ void cpu_stq_mmu(CPUArchState *env, abi_ptr addr, uint64_t val,
1098
MemOpIdx oi, uintptr_t retaddr)
1099
{
1100
tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_64);
1101
- do_st8_mmu(env, addr, val, oi, retaddr);
1102
+ do_st8_mmu(env_cpu(env), addr, val, oi, retaddr);
1103
plugin_store_cb(env, addr, oi);
1104
}
1105
1106
@@ -XXX,XX +XXX,XX @@ void cpu_st16_mmu(CPUArchState *env, abi_ptr addr, Int128 val,
1107
MemOpIdx oi, uintptr_t retaddr)
1108
{
1109
tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_128);
1110
- do_st16_mmu(env, addr, val, oi, retaddr);
1111
+ do_st16_mmu(env_cpu(env), addr, val, oi, retaddr);
1112
plugin_store_cb(env, addr, oi);
1113
}
1114
1115
@@ -XXX,XX +XXX,XX @@ void cpu_st16_mmu(CPUArchState *env, abi_ptr addr, Int128 val,
1116
uint32_t cpu_ldub_code(CPUArchState *env, abi_ptr addr)
1117
{
1118
MemOpIdx oi = make_memop_idx(MO_UB, cpu_mmu_index(env, true));
1119
- return do_ld1_mmu(env, addr, oi, 0, MMU_INST_FETCH);
1120
+ return do_ld1_mmu(env_cpu(env), addr, oi, 0, MMU_INST_FETCH);
1121
}
1122
1123
uint32_t cpu_lduw_code(CPUArchState *env, abi_ptr addr)
1124
{
1125
MemOpIdx oi = make_memop_idx(MO_TEUW, cpu_mmu_index(env, true));
1126
- return do_ld2_mmu(env, addr, oi, 0, MMU_INST_FETCH);
1127
+ return do_ld2_mmu(env_cpu(env), addr, oi, 0, MMU_INST_FETCH);
1128
}
1129
1130
uint32_t cpu_ldl_code(CPUArchState *env, abi_ptr addr)
1131
{
1132
MemOpIdx oi = make_memop_idx(MO_TEUL, cpu_mmu_index(env, true));
1133
- return do_ld4_mmu(env, addr, oi, 0, MMU_INST_FETCH);
1134
+ return do_ld4_mmu(env_cpu(env), addr, oi, 0, MMU_INST_FETCH);
1135
}
1136
1137
uint64_t cpu_ldq_code(CPUArchState *env, abi_ptr addr)
1138
{
1139
MemOpIdx oi = make_memop_idx(MO_TEUQ, cpu_mmu_index(env, true));
1140
- return do_ld8_mmu(env, addr, oi, 0, MMU_INST_FETCH);
1141
+ return do_ld8_mmu(env_cpu(env), addr, oi, 0, MMU_INST_FETCH);
1142
}
1143
1144
uint8_t cpu_ldb_code_mmu(CPUArchState *env, abi_ptr addr,
1145
MemOpIdx oi, uintptr_t retaddr)
1146
{
1147
- return do_ld1_mmu(env, addr, oi, retaddr, MMU_INST_FETCH);
1148
+ return do_ld1_mmu(env_cpu(env), addr, oi, retaddr, MMU_INST_FETCH);
1149
}
1150
1151
uint16_t cpu_ldw_code_mmu(CPUArchState *env, abi_ptr addr,
1152
MemOpIdx oi, uintptr_t retaddr)
1153
{
1154
- return do_ld2_mmu(env, addr, oi, retaddr, MMU_INST_FETCH);
1155
+ return do_ld2_mmu(env_cpu(env), addr, oi, retaddr, MMU_INST_FETCH);
1156
}
1157
1158
uint32_t cpu_ldl_code_mmu(CPUArchState *env, abi_ptr addr,
1159
MemOpIdx oi, uintptr_t retaddr)
1160
{
1161
- return do_ld4_mmu(env, addr, oi, retaddr, MMU_INST_FETCH);
1162
+ return do_ld4_mmu(env_cpu(env), addr, oi, retaddr, MMU_INST_FETCH);
1163
}
1164
1165
uint64_t cpu_ldq_code_mmu(CPUArchState *env, abi_ptr addr,
1166
MemOpIdx oi, uintptr_t retaddr)
1167
{
1168
- return do_ld8_mmu(env, addr, oi, retaddr, MMU_INST_FETCH);
1169
+ return do_ld8_mmu(env_cpu(env), addr, oi, retaddr, MMU_INST_FETCH);
1170
}
1171
--
1172
2.34.1
1173
1174
diff view generated by jsdifflib
New patch
1
1
From: Anton Johansson <anjo@rev.ng>
2
3
The goal is to (in the future) allow for per-target compilation of
4
functions in atomic_template.h whilst atomic_mmu_lookup() and cputlb.c
5
are compiled once-per user- or system mode.
6
7
Signed-off-by: Anton Johansson <anjo@rev.ng>
8
Message-Id: <20230912153428.17816-7-anjo@rev.ng>
9
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
10
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
11
[rth: Use cpu->neg.tlb instead of cpu_tlb()]
12
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
13
---
14
accel/tcg/atomic_template.h | 20 ++++++++++++--------
15
accel/tcg/cputlb.c | 26 +++++++++++++-------------
16
accel/tcg/user-exec.c | 8 ++++----
17
3 files changed, 29 insertions(+), 25 deletions(-)
18
19
diff --git a/accel/tcg/atomic_template.h b/accel/tcg/atomic_template.h
20
index XXXXXXX..XXXXXXX 100644
21
--- a/accel/tcg/atomic_template.h
22
+++ b/accel/tcg/atomic_template.h
23
@@ -XXX,XX +XXX,XX @@ ABI_TYPE ATOMIC_NAME(cmpxchg)(CPUArchState *env, abi_ptr addr,
24
ABI_TYPE cmpv, ABI_TYPE newv,
25
MemOpIdx oi, uintptr_t retaddr)
26
{
27
- DATA_TYPE *haddr = atomic_mmu_lookup(env, addr, oi, DATA_SIZE, retaddr);
28
+ DATA_TYPE *haddr = atomic_mmu_lookup(env_cpu(env), addr, oi,
29
+ DATA_SIZE, retaddr);
30
DATA_TYPE ret;
31
32
#if DATA_SIZE == 16
33
@@ -XXX,XX +XXX,XX @@ ABI_TYPE ATOMIC_NAME(cmpxchg)(CPUArchState *env, abi_ptr addr,
34
ABI_TYPE ATOMIC_NAME(xchg)(CPUArchState *env, abi_ptr addr, ABI_TYPE val,
35
MemOpIdx oi, uintptr_t retaddr)
36
{
37
- DATA_TYPE *haddr = atomic_mmu_lookup(env, addr, oi, DATA_SIZE, retaddr);
38
+ DATA_TYPE *haddr = atomic_mmu_lookup(env_cpu(env), addr, oi,
39
+ DATA_SIZE, retaddr);
40
DATA_TYPE ret;
41
42
ret = qatomic_xchg__nocheck(haddr, val);
43
@@ -XXX,XX +XXX,XX @@ ABI_TYPE ATOMIC_NAME(X)(CPUArchState *env, abi_ptr addr, \
44
ABI_TYPE val, MemOpIdx oi, uintptr_t retaddr) \
45
{ \
46
DATA_TYPE *haddr, ret; \
47
- haddr = atomic_mmu_lookup(env, addr, oi, DATA_SIZE, retaddr); \
48
+ haddr = atomic_mmu_lookup(env_cpu(env), addr, oi, DATA_SIZE, retaddr); \
49
ret = qatomic_##X(haddr, val); \
50
ATOMIC_MMU_CLEANUP; \
51
atomic_trace_rmw_post(env, addr, oi); \
52
@@ -XXX,XX +XXX,XX @@ ABI_TYPE ATOMIC_NAME(X)(CPUArchState *env, abi_ptr addr, \
53
ABI_TYPE xval, MemOpIdx oi, uintptr_t retaddr) \
54
{ \
55
XDATA_TYPE *haddr, cmp, old, new, val = xval; \
56
- haddr = atomic_mmu_lookup(env, addr, oi, DATA_SIZE, retaddr); \
57
+ haddr = atomic_mmu_lookup(env_cpu(env), addr, oi, DATA_SIZE, retaddr); \
58
smp_mb(); \
59
cmp = qatomic_read__nocheck(haddr); \
60
do { \
61
@@ -XXX,XX +XXX,XX @@ ABI_TYPE ATOMIC_NAME(cmpxchg)(CPUArchState *env, abi_ptr addr,
62
ABI_TYPE cmpv, ABI_TYPE newv,
63
MemOpIdx oi, uintptr_t retaddr)
64
{
65
- DATA_TYPE *haddr = atomic_mmu_lookup(env, addr, oi, DATA_SIZE, retaddr);
66
+ DATA_TYPE *haddr = atomic_mmu_lookup(env_cpu(env), addr, oi,
67
+ DATA_SIZE, retaddr);
68
DATA_TYPE ret;
69
70
#if DATA_SIZE == 16
71
@@ -XXX,XX +XXX,XX @@ ABI_TYPE ATOMIC_NAME(cmpxchg)(CPUArchState *env, abi_ptr addr,
72
ABI_TYPE ATOMIC_NAME(xchg)(CPUArchState *env, abi_ptr addr, ABI_TYPE val,
73
MemOpIdx oi, uintptr_t retaddr)
74
{
75
- DATA_TYPE *haddr = atomic_mmu_lookup(env, addr, oi, DATA_SIZE, retaddr);
76
+ DATA_TYPE *haddr = atomic_mmu_lookup(env_cpu(env), addr, oi,
77
+ DATA_SIZE, retaddr);
78
ABI_TYPE ret;
79
80
ret = qatomic_xchg__nocheck(haddr, BSWAP(val));
81
@@ -XXX,XX +XXX,XX @@ ABI_TYPE ATOMIC_NAME(X)(CPUArchState *env, abi_ptr addr, \
82
ABI_TYPE val, MemOpIdx oi, uintptr_t retaddr) \
83
{ \
84
DATA_TYPE *haddr, ret; \
85
- haddr = atomic_mmu_lookup(env, addr, oi, DATA_SIZE, retaddr); \
86
+ haddr = atomic_mmu_lookup(env_cpu(env), addr, oi, DATA_SIZE, retaddr); \
87
ret = qatomic_##X(haddr, BSWAP(val)); \
88
ATOMIC_MMU_CLEANUP; \
89
atomic_trace_rmw_post(env, addr, oi); \
90
@@ -XXX,XX +XXX,XX @@ ABI_TYPE ATOMIC_NAME(X)(CPUArchState *env, abi_ptr addr, \
91
ABI_TYPE xval, MemOpIdx oi, uintptr_t retaddr) \
92
{ \
93
XDATA_TYPE *haddr, ldo, ldn, old, new, val = xval; \
94
- haddr = atomic_mmu_lookup(env, addr, oi, DATA_SIZE, retaddr); \
95
+ haddr = atomic_mmu_lookup(env_cpu(env), addr, oi, DATA_SIZE, retaddr); \
96
smp_mb(); \
97
ldn = qatomic_read__nocheck(haddr); \
98
do { \
99
diff --git a/accel/tcg/cputlb.c b/accel/tcg/cputlb.c
100
index XXXXXXX..XXXXXXX 100644
101
--- a/accel/tcg/cputlb.c
102
+++ b/accel/tcg/cputlb.c
103
@@ -XXX,XX +XXX,XX @@ static bool mmu_lookup(CPUState *cpu, vaddr addr, MemOpIdx oi,
104
* Probe for an atomic operation. Do not allow unaligned operations,
105
* or io operations to proceed. Return the host address.
106
*/
107
-static void *atomic_mmu_lookup(CPUArchState *env, vaddr addr, MemOpIdx oi,
108
+static void *atomic_mmu_lookup(CPUState *cpu, vaddr addr, MemOpIdx oi,
109
int size, uintptr_t retaddr)
110
{
111
uintptr_t mmu_idx = get_mmuidx(oi);
112
@@ -XXX,XX +XXX,XX @@ static void *atomic_mmu_lookup(CPUArchState *env, vaddr addr, MemOpIdx oi,
113
/* Enforce guest required alignment. */
114
if (unlikely(a_bits > 0 && (addr & ((1 << a_bits) - 1)))) {
115
/* ??? Maybe indicate atomic op to cpu_unaligned_access */
116
- cpu_unaligned_access(env_cpu(env), addr, MMU_DATA_STORE,
117
+ cpu_unaligned_access(cpu, addr, MMU_DATA_STORE,
118
mmu_idx, retaddr);
119
}
120
121
@@ -XXX,XX +XXX,XX @@ static void *atomic_mmu_lookup(CPUArchState *env, vaddr addr, MemOpIdx oi,
122
goto stop_the_world;
123
}
124
125
- index = tlb_index(env_cpu(env), mmu_idx, addr);
126
- tlbe = tlb_entry(env_cpu(env), mmu_idx, addr);
127
+ index = tlb_index(cpu, mmu_idx, addr);
128
+ tlbe = tlb_entry(cpu, mmu_idx, addr);
129
130
/* Check TLB entry and enforce page permissions. */
131
tlb_addr = tlb_addr_write(tlbe);
132
if (!tlb_hit(tlb_addr, addr)) {
133
- if (!victim_tlb_hit(env_cpu(env), mmu_idx, index, MMU_DATA_STORE,
134
+ if (!victim_tlb_hit(cpu, mmu_idx, index, MMU_DATA_STORE,
135
addr & TARGET_PAGE_MASK)) {
136
- tlb_fill(env_cpu(env), addr, size,
137
+ tlb_fill(cpu, addr, size,
138
MMU_DATA_STORE, mmu_idx, retaddr);
139
- index = tlb_index(env_cpu(env), mmu_idx, addr);
140
- tlbe = tlb_entry(env_cpu(env), mmu_idx, addr);
141
+ index = tlb_index(cpu, mmu_idx, addr);
142
+ tlbe = tlb_entry(cpu, mmu_idx, addr);
143
}
144
tlb_addr = tlb_addr_write(tlbe) & ~TLB_INVALID_MASK;
145
}
146
@@ -XXX,XX +XXX,XX @@ static void *atomic_mmu_lookup(CPUArchState *env, vaddr addr, MemOpIdx oi,
147
* but addr_read will only be -1 if PAGE_READ was unset.
148
*/
149
if (unlikely(tlbe->addr_read == -1)) {
150
- tlb_fill(env_cpu(env), addr, size, MMU_DATA_LOAD, mmu_idx, retaddr);
151
+ tlb_fill(cpu, addr, size, MMU_DATA_LOAD, mmu_idx, retaddr);
152
/*
153
* Since we don't support reads and writes to different
154
* addresses, and we do have the proper page loaded for
155
@@ -XXX,XX +XXX,XX @@ static void *atomic_mmu_lookup(CPUArchState *env, vaddr addr, MemOpIdx oi,
156
}
157
158
hostaddr = (void *)((uintptr_t)addr + tlbe->addend);
159
- full = &env_tlb(env)->d[mmu_idx].fulltlb[index];
160
+ full = &cpu->neg.tlb.d[mmu_idx].fulltlb[index];
161
162
if (unlikely(tlb_addr & TLB_NOTDIRTY)) {
163
- notdirty_write(env_cpu(env), addr, size, full, retaddr);
164
+ notdirty_write(cpu, addr, size, full, retaddr);
165
}
166
167
if (unlikely(tlb_addr & TLB_FORCE_SLOW)) {
168
@@ -XXX,XX +XXX,XX @@ static void *atomic_mmu_lookup(CPUArchState *env, vaddr addr, MemOpIdx oi,
169
wp_flags |= BP_MEM_READ;
170
}
171
if (wp_flags) {
172
- cpu_check_watchpoint(env_cpu(env), addr, size,
173
+ cpu_check_watchpoint(cpu, addr, size,
174
full->attrs, wp_flags, retaddr);
175
}
176
}
177
@@ -XXX,XX +XXX,XX @@ static void *atomic_mmu_lookup(CPUArchState *env, vaddr addr, MemOpIdx oi,
178
return hostaddr;
179
180
stop_the_world:
181
- cpu_loop_exit_atomic(env_cpu(env), retaddr);
182
+ cpu_loop_exit_atomic(cpu, retaddr);
183
}
184
185
/*
186
diff --git a/accel/tcg/user-exec.c b/accel/tcg/user-exec.c
187
index XXXXXXX..XXXXXXX 100644
188
--- a/accel/tcg/user-exec.c
189
+++ b/accel/tcg/user-exec.c
190
@@ -XXX,XX +XXX,XX @@ uint64_t cpu_ldq_code_mmu(CPUArchState *env, abi_ptr addr,
191
/*
192
* Do not allow unaligned operations to proceed. Return the host address.
193
*/
194
-static void *atomic_mmu_lookup(CPUArchState *env, vaddr addr, MemOpIdx oi,
195
+static void *atomic_mmu_lookup(CPUState *cpu, vaddr addr, MemOpIdx oi,
196
int size, uintptr_t retaddr)
197
{
198
MemOp mop = get_memop(oi);
199
@@ -XXX,XX +XXX,XX @@ static void *atomic_mmu_lookup(CPUArchState *env, vaddr addr, MemOpIdx oi,
200
201
/* Enforce guest required alignment. */
202
if (unlikely(addr & ((1 << a_bits) - 1))) {
203
- cpu_loop_exit_sigbus(env_cpu(env), addr, MMU_DATA_STORE, retaddr);
204
+ cpu_loop_exit_sigbus(cpu, addr, MMU_DATA_STORE, retaddr);
205
}
206
207
/* Enforce qemu required alignment. */
208
if (unlikely(addr & (size - 1))) {
209
- cpu_loop_exit_atomic(env_cpu(env), retaddr);
210
+ cpu_loop_exit_atomic(cpu, retaddr);
211
}
212
213
- ret = g2h(env_cpu(env), addr);
214
+ ret = g2h(cpu, addr);
215
set_helper_retaddr(retaddr);
216
return ret;
217
}
218
--
219
2.34.1
220
221
diff view generated by jsdifflib
New patch
1
From: Anton Johansson <anjo@rev.ng>
1
2
3
Makes ldst_atomicity.c.inc almost target-independent, with the exception
4
of TARGET_PAGE_MASK, which will be addressed in a future patch.
5
6
Signed-off-by: Anton Johansson <anjo@rev.ng>
7
Message-Id: <20230912153428.17816-8-anjo@rev.ng>
8
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
9
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
10
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
11
---
12
accel/tcg/cputlb.c | 20 ++++----
13
accel/tcg/user-exec.c | 16 +++----
14
accel/tcg/ldst_atomicity.c.inc | 88 +++++++++++++++++-----------------
15
3 files changed, 62 insertions(+), 62 deletions(-)
16
17
diff --git a/accel/tcg/cputlb.c b/accel/tcg/cputlb.c
18
index XXXXXXX..XXXXXXX 100644
19
--- a/accel/tcg/cputlb.c
20
+++ b/accel/tcg/cputlb.c
21
@@ -XXX,XX +XXX,XX @@ static uint64_t do_ld_whole_be8(CPUState *cpu, uintptr_t ra,
22
MMULookupPageData *p, uint64_t ret_be)
23
{
24
int o = p->addr & 7;
25
- uint64_t x = load_atomic8_or_exit(cpu_env(cpu), ra, p->haddr - o);
26
+ uint64_t x = load_atomic8_or_exit(cpu, ra, p->haddr - o);
27
28
x = cpu_to_be64(x);
29
x <<= o * 8;
30
@@ -XXX,XX +XXX,XX @@ static Int128 do_ld_whole_be16(CPUState *cpu, uintptr_t ra,
31
MMULookupPageData *p, uint64_t ret_be)
32
{
33
int o = p->addr & 15;
34
- Int128 x, y = load_atomic16_or_exit(cpu_env(cpu), ra, p->haddr - o);
35
+ Int128 x, y = load_atomic16_or_exit(cpu, ra, p->haddr - o);
36
int size = p->size;
37
38
if (!HOST_BIG_ENDIAN) {
39
@@ -XXX,XX +XXX,XX @@ static uint16_t do_ld_2(CPUState *cpu, MMULookupPageData *p, int mmu_idx,
40
}
41
} else {
42
/* Perform the load host endian, then swap if necessary. */
43
- ret = load_atom_2(cpu_env(cpu), ra, p->haddr, memop);
44
+ ret = load_atom_2(cpu, ra, p->haddr, memop);
45
if (memop & MO_BSWAP) {
46
ret = bswap16(ret);
47
}
48
@@ -XXX,XX +XXX,XX @@ static uint32_t do_ld_4(CPUState *cpu, MMULookupPageData *p, int mmu_idx,
49
}
50
} else {
51
/* Perform the load host endian. */
52
- ret = load_atom_4(cpu_env(cpu), ra, p->haddr, memop);
53
+ ret = load_atom_4(cpu, ra, p->haddr, memop);
54
if (memop & MO_BSWAP) {
55
ret = bswap32(ret);
56
}
57
@@ -XXX,XX +XXX,XX @@ static uint64_t do_ld_8(CPUState *cpu, MMULookupPageData *p, int mmu_idx,
58
}
59
} else {
60
/* Perform the load host endian. */
61
- ret = load_atom_8(cpu_env(cpu), ra, p->haddr, memop);
62
+ ret = load_atom_8(cpu, ra, p->haddr, memop);
63
if (memop & MO_BSWAP) {
64
ret = bswap64(ret);
65
}
66
@@ -XXX,XX +XXX,XX @@ static Int128 do_ld16_mmu(CPUState *cpu, vaddr addr,
67
}
68
} else {
69
/* Perform the load host endian. */
70
- ret = load_atom_16(cpu_env(cpu), ra, l.page[0].haddr, l.memop);
71
+ ret = load_atom_16(cpu, ra, l.page[0].haddr, l.memop);
72
if (l.memop & MO_BSWAP) {
73
ret = bswap128(ret);
74
}
75
@@ -XXX,XX +XXX,XX @@ static void do_st_2(CPUState *cpu, MMULookupPageData *p, uint16_t val,
76
if (memop & MO_BSWAP) {
77
val = bswap16(val);
78
}
79
- store_atom_2(cpu_env(cpu), ra, p->haddr, memop, val);
80
+ store_atom_2(cpu, ra, p->haddr, memop, val);
81
}
82
}
83
84
@@ -XXX,XX +XXX,XX @@ static void do_st_4(CPUState *cpu, MMULookupPageData *p, uint32_t val,
85
if (memop & MO_BSWAP) {
86
val = bswap32(val);
87
}
88
- store_atom_4(cpu_env(cpu), ra, p->haddr, memop, val);
89
+ store_atom_4(cpu, ra, p->haddr, memop, val);
90
}
91
}
92
93
@@ -XXX,XX +XXX,XX @@ static void do_st_8(CPUState *cpu, MMULookupPageData *p, uint64_t val,
94
if (memop & MO_BSWAP) {
95
val = bswap64(val);
96
}
97
- store_atom_8(cpu_env(cpu), ra, p->haddr, memop, val);
98
+ store_atom_8(cpu, ra, p->haddr, memop, val);
99
}
100
}
101
102
@@ -XXX,XX +XXX,XX @@ static void do_st16_mmu(CPUState *cpu, vaddr addr, Int128 val,
103
if (l.memop & MO_BSWAP) {
104
val = bswap128(val);
105
}
106
- store_atom_16(cpu_env(cpu), ra, l.page[0].haddr, l.memop, val);
107
+ store_atom_16(cpu, ra, l.page[0].haddr, l.memop, val);
108
}
109
return;
110
}
111
diff --git a/accel/tcg/user-exec.c b/accel/tcg/user-exec.c
112
index XXXXXXX..XXXXXXX 100644
113
--- a/accel/tcg/user-exec.c
114
+++ b/accel/tcg/user-exec.c
115
@@ -XXX,XX +XXX,XX @@ static uint16_t do_ld2_mmu(CPUArchState *env, abi_ptr addr,
116
tcg_debug_assert((mop & MO_SIZE) == MO_16);
117
cpu_req_mo(TCG_MO_LD_LD | TCG_MO_ST_LD);
118
haddr = cpu_mmu_lookup(env, addr, mop, ra, MMU_DATA_LOAD);
119
- ret = load_atom_2(env, ra, haddr, mop);
120
+ ret = load_atom_2(env_cpu(env), ra, haddr, mop);
121
clear_helper_retaddr();
122
123
if (mop & MO_BSWAP) {
124
@@ -XXX,XX +XXX,XX @@ static uint32_t do_ld4_mmu(CPUArchState *env, abi_ptr addr,
125
tcg_debug_assert((mop & MO_SIZE) == MO_32);
126
cpu_req_mo(TCG_MO_LD_LD | TCG_MO_ST_LD);
127
haddr = cpu_mmu_lookup(env, addr, mop, ra, MMU_DATA_LOAD);
128
- ret = load_atom_4(env, ra, haddr, mop);
129
+ ret = load_atom_4(env_cpu(env), ra, haddr, mop);
130
clear_helper_retaddr();
131
132
if (mop & MO_BSWAP) {
133
@@ -XXX,XX +XXX,XX @@ static uint64_t do_ld8_mmu(CPUArchState *env, abi_ptr addr,
134
tcg_debug_assert((mop & MO_SIZE) == MO_64);
135
cpu_req_mo(TCG_MO_LD_LD | TCG_MO_ST_LD);
136
haddr = cpu_mmu_lookup(env, addr, mop, ra, MMU_DATA_LOAD);
137
- ret = load_atom_8(env, ra, haddr, mop);
138
+ ret = load_atom_8(env_cpu(env), ra, haddr, mop);
139
clear_helper_retaddr();
140
141
if (mop & MO_BSWAP) {
142
@@ -XXX,XX +XXX,XX @@ static Int128 do_ld16_mmu(CPUArchState *env, abi_ptr addr,
143
tcg_debug_assert((mop & MO_SIZE) == MO_128);
144
cpu_req_mo(TCG_MO_LD_LD | TCG_MO_ST_LD);
145
haddr = cpu_mmu_lookup(env, addr, mop, ra, MMU_DATA_LOAD);
146
- ret = load_atom_16(env, ra, haddr, mop);
147
+ ret = load_atom_16(env_cpu(env), ra, haddr, mop);
148
clear_helper_retaddr();
149
150
if (mop & MO_BSWAP) {
151
@@ -XXX,XX +XXX,XX @@ static void do_st2_mmu(CPUArchState *env, abi_ptr addr, uint16_t val,
152
if (mop & MO_BSWAP) {
153
val = bswap16(val);
154
}
155
- store_atom_2(env, ra, haddr, mop, val);
156
+ store_atom_2(env_cpu(env), ra, haddr, mop, val);
157
clear_helper_retaddr();
158
}
159
160
@@ -XXX,XX +XXX,XX @@ static void do_st4_mmu(CPUArchState *env, abi_ptr addr, uint32_t val,
161
if (mop & MO_BSWAP) {
162
val = bswap32(val);
163
}
164
- store_atom_4(env, ra, haddr, mop, val);
165
+ store_atom_4(env_cpu(env), ra, haddr, mop, val);
166
clear_helper_retaddr();
167
}
168
169
@@ -XXX,XX +XXX,XX @@ static void do_st8_mmu(CPUArchState *env, abi_ptr addr, uint64_t val,
170
if (mop & MO_BSWAP) {
171
val = bswap64(val);
172
}
173
- store_atom_8(env, ra, haddr, mop, val);
174
+ store_atom_8(env_cpu(env), ra, haddr, mop, val);
175
clear_helper_retaddr();
176
}
177
178
@@ -XXX,XX +XXX,XX @@ static void do_st16_mmu(CPUArchState *env, abi_ptr addr, Int128 val,
179
if (mop & MO_BSWAP) {
180
val = bswap128(val);
181
}
182
- store_atom_16(env, ra, haddr, mop, val);
183
+ store_atom_16(env_cpu(env), ra, haddr, mop, val);
184
clear_helper_retaddr();
185
}
186
187
diff --git a/accel/tcg/ldst_atomicity.c.inc b/accel/tcg/ldst_atomicity.c.inc
188
index XXXXXXX..XXXXXXX 100644
189
--- a/accel/tcg/ldst_atomicity.c.inc
190
+++ b/accel/tcg/ldst_atomicity.c.inc
191
@@ -XXX,XX +XXX,XX @@
192
* If the operation must be split into two operations to be
193
* examined separately for atomicity, return -lg2.
194
*/
195
-static int required_atomicity(CPUArchState *env, uintptr_t p, MemOp memop)
196
+static int required_atomicity(CPUState *cpu, uintptr_t p, MemOp memop)
197
{
198
MemOp atom = memop & MO_ATOM_MASK;
199
MemOp size = memop & MO_SIZE;
200
@@ -XXX,XX +XXX,XX @@ static int required_atomicity(CPUArchState *env, uintptr_t p, MemOp memop)
201
* host atomicity in order to avoid racing. This reduction
202
* avoids looping with cpu_loop_exit_atomic.
203
*/
204
- if (cpu_in_serial_context(env_cpu(env))) {
205
+ if (cpu_in_serial_context(cpu)) {
206
return MO_8;
207
}
208
return atmax;
209
@@ -XXX,XX +XXX,XX @@ static inline uint64_t load_atomic8(void *pv)
210
211
/**
212
* load_atomic8_or_exit:
213
- * @env: cpu context
214
+ * @cpu: generic cpu state
215
* @ra: host unwind address
216
* @pv: host address
217
*
218
* Atomically load 8 aligned bytes from @pv.
219
* If this is not possible, longjmp out to restart serially.
220
*/
221
-static uint64_t load_atomic8_or_exit(CPUArchState *env, uintptr_t ra, void *pv)
222
+static uint64_t load_atomic8_or_exit(CPUState *cpu, uintptr_t ra, void *pv)
223
{
224
if (HAVE_al8) {
225
return load_atomic8(pv);
226
@@ -XXX,XX +XXX,XX @@ static uint64_t load_atomic8_or_exit(CPUArchState *env, uintptr_t ra, void *pv)
227
#endif
228
229
/* Ultimate fallback: re-execute in serial context. */
230
- cpu_loop_exit_atomic(env_cpu(env), ra);
231
+ cpu_loop_exit_atomic(cpu, ra);
232
}
233
234
/**
235
* load_atomic16_or_exit:
236
- * @env: cpu context
237
+ * @cpu: generic cpu state
238
* @ra: host unwind address
239
* @pv: host address
240
*
241
* Atomically load 16 aligned bytes from @pv.
242
* If this is not possible, longjmp out to restart serially.
243
*/
244
-static Int128 load_atomic16_or_exit(CPUArchState *env, uintptr_t ra, void *pv)
245
+static Int128 load_atomic16_or_exit(CPUState *cpu, uintptr_t ra, void *pv)
246
{
247
Int128 *p = __builtin_assume_aligned(pv, 16);
248
249
@@ -XXX,XX +XXX,XX @@ static Int128 load_atomic16_or_exit(CPUArchState *env, uintptr_t ra, void *pv)
250
}
251
252
/* Ultimate fallback: re-execute in serial context. */
253
- cpu_loop_exit_atomic(env_cpu(env), ra);
254
+ cpu_loop_exit_atomic(cpu, ra);
255
}
256
257
/**
258
@@ -XXX,XX +XXX,XX @@ static uint64_t load_atom_extract_al8x2(void *pv)
259
260
/**
261
* load_atom_extract_al8_or_exit:
262
- * @env: cpu context
263
+ * @cpu: generic cpu state
264
* @ra: host unwind address
265
* @pv: host address
266
* @s: object size in bytes, @s <= 4.
267
@@ -XXX,XX +XXX,XX @@ static uint64_t load_atom_extract_al8x2(void *pv)
268
* 8-byte load and extract.
269
* The value is returned in the low bits of a uint32_t.
270
*/
271
-static uint32_t load_atom_extract_al8_or_exit(CPUArchState *env, uintptr_t ra,
272
+static uint32_t load_atom_extract_al8_or_exit(CPUState *cpu, uintptr_t ra,
273
void *pv, int s)
274
{
275
uintptr_t pi = (uintptr_t)pv;
276
@@ -XXX,XX +XXX,XX @@ static uint32_t load_atom_extract_al8_or_exit(CPUArchState *env, uintptr_t ra,
277
int shr = (HOST_BIG_ENDIAN ? 8 - s - o : o) * 8;
278
279
pv = (void *)(pi & ~7);
280
- return load_atomic8_or_exit(env, ra, pv) >> shr;
281
+ return load_atomic8_or_exit(cpu, ra, pv) >> shr;
282
}
283
284
/**
285
* load_atom_extract_al16_or_exit:
286
- * @env: cpu context
287
+ * @cpu: generic cpu state
288
* @ra: host unwind address
289
* @p: host address
290
* @s: object size in bytes, @s <= 8.
291
@@ -XXX,XX +XXX,XX @@ static uint32_t load_atom_extract_al8_or_exit(CPUArchState *env, uintptr_t ra,
292
*
293
* If this is not possible, longjmp out to restart serially.
294
*/
295
-static uint64_t load_atom_extract_al16_or_exit(CPUArchState *env, uintptr_t ra,
296
+static uint64_t load_atom_extract_al16_or_exit(CPUState *cpu, uintptr_t ra,
297
void *pv, int s)
298
{
299
uintptr_t pi = (uintptr_t)pv;
300
@@ -XXX,XX +XXX,XX @@ static uint64_t load_atom_extract_al16_or_exit(CPUArchState *env, uintptr_t ra,
301
* Provoke SIGBUS if possible otherwise.
302
*/
303
pv = (void *)(pi & ~7);
304
- r = load_atomic16_or_exit(env, ra, pv);
305
+ r = load_atomic16_or_exit(cpu, ra, pv);
306
307
r = int128_urshift(r, shr);
308
return int128_getlo(r);
309
@@ -XXX,XX +XXX,XX @@ static inline uint64_t load_atom_8_by_8_or_4(void *pv)
310
*
311
* Load 2 bytes from @p, honoring the atomicity of @memop.
312
*/
313
-static uint16_t load_atom_2(CPUArchState *env, uintptr_t ra,
314
+static uint16_t load_atom_2(CPUState *cpu, uintptr_t ra,
315
void *pv, MemOp memop)
316
{
317
uintptr_t pi = (uintptr_t)pv;
318
@@ -XXX,XX +XXX,XX @@ static uint16_t load_atom_2(CPUArchState *env, uintptr_t ra,
319
}
320
}
321
322
- atmax = required_atomicity(env, pi, memop);
323
+ atmax = required_atomicity(cpu, pi, memop);
324
switch (atmax) {
325
case MO_8:
326
return lduw_he_p(pv);
327
@@ -XXX,XX +XXX,XX @@ static uint16_t load_atom_2(CPUArchState *env, uintptr_t ra,
328
return load_atomic4(pv - 1) >> 8;
329
}
330
if ((pi & 15) != 7) {
331
- return load_atom_extract_al8_or_exit(env, ra, pv, 2);
332
+ return load_atom_extract_al8_or_exit(cpu, ra, pv, 2);
333
}
334
- return load_atom_extract_al16_or_exit(env, ra, pv, 2);
335
+ return load_atom_extract_al16_or_exit(cpu, ra, pv, 2);
336
default:
337
g_assert_not_reached();
338
}
339
@@ -XXX,XX +XXX,XX @@ static uint16_t load_atom_2(CPUArchState *env, uintptr_t ra,
340
*
341
* Load 4 bytes from @p, honoring the atomicity of @memop.
342
*/
343
-static uint32_t load_atom_4(CPUArchState *env, uintptr_t ra,
344
+static uint32_t load_atom_4(CPUState *cpu, uintptr_t ra,
345
void *pv, MemOp memop)
346
{
347
uintptr_t pi = (uintptr_t)pv;
348
@@ -XXX,XX +XXX,XX @@ static uint32_t load_atom_4(CPUArchState *env, uintptr_t ra,
349
}
350
}
351
352
- atmax = required_atomicity(env, pi, memop);
353
+ atmax = required_atomicity(cpu, pi, memop);
354
switch (atmax) {
355
case MO_8:
356
case MO_16:
357
@@ -XXX,XX +XXX,XX @@ static uint32_t load_atom_4(CPUArchState *env, uintptr_t ra,
358
return load_atom_extract_al4x2(pv);
359
case MO_32:
360
if (!(pi & 4)) {
361
- return load_atom_extract_al8_or_exit(env, ra, pv, 4);
362
+ return load_atom_extract_al8_or_exit(cpu, ra, pv, 4);
363
}
364
- return load_atom_extract_al16_or_exit(env, ra, pv, 4);
365
+ return load_atom_extract_al16_or_exit(cpu, ra, pv, 4);
366
default:
367
g_assert_not_reached();
368
}
369
@@ -XXX,XX +XXX,XX @@ static uint32_t load_atom_4(CPUArchState *env, uintptr_t ra,
370
*
371
* Load 8 bytes from @p, honoring the atomicity of @memop.
372
*/
373
-static uint64_t load_atom_8(CPUArchState *env, uintptr_t ra,
374
+static uint64_t load_atom_8(CPUState *cpu, uintptr_t ra,
375
void *pv, MemOp memop)
376
{
377
uintptr_t pi = (uintptr_t)pv;
378
@@ -XXX,XX +XXX,XX @@ static uint64_t load_atom_8(CPUArchState *env, uintptr_t ra,
379
return load_atom_extract_al16_or_al8(pv, 8);
380
}
381
382
- atmax = required_atomicity(env, pi, memop);
383
+ atmax = required_atomicity(cpu, pi, memop);
384
if (atmax == MO_64) {
385
if (!HAVE_al8 && (pi & 7) == 0) {
386
- load_atomic8_or_exit(env, ra, pv);
387
+ load_atomic8_or_exit(cpu, ra, pv);
388
}
389
- return load_atom_extract_al16_or_exit(env, ra, pv, 8);
390
+ return load_atom_extract_al16_or_exit(cpu, ra, pv, 8);
391
}
392
if (HAVE_al8_fast) {
393
return load_atom_extract_al8x2(pv);
394
@@ -XXX,XX +XXX,XX @@ static uint64_t load_atom_8(CPUArchState *env, uintptr_t ra,
395
if (HAVE_al8) {
396
return load_atom_extract_al8x2(pv);
397
}
398
- cpu_loop_exit_atomic(env_cpu(env), ra);
399
+ cpu_loop_exit_atomic(cpu, ra);
400
default:
401
g_assert_not_reached();
402
}
403
@@ -XXX,XX +XXX,XX @@ static uint64_t load_atom_8(CPUArchState *env, uintptr_t ra,
404
*
405
* Load 16 bytes from @p, honoring the atomicity of @memop.
406
*/
407
-static Int128 load_atom_16(CPUArchState *env, uintptr_t ra,
408
+static Int128 load_atom_16(CPUState *cpu, uintptr_t ra,
409
void *pv, MemOp memop)
410
{
411
uintptr_t pi = (uintptr_t)pv;
412
@@ -XXX,XX +XXX,XX @@ static Int128 load_atom_16(CPUArchState *env, uintptr_t ra,
413
return atomic16_read_ro(pv);
414
}
415
416
- atmax = required_atomicity(env, pi, memop);
417
+ atmax = required_atomicity(cpu, pi, memop);
418
switch (atmax) {
419
case MO_8:
420
memcpy(&r, pv, 16);
421
@@ -XXX,XX +XXX,XX @@ static Int128 load_atom_16(CPUArchState *env, uintptr_t ra,
422
break;
423
case MO_64:
424
if (!HAVE_al8) {
425
- cpu_loop_exit_atomic(env_cpu(env), ra);
426
+ cpu_loop_exit_atomic(cpu, ra);
427
}
428
a = load_atomic8(pv);
429
b = load_atomic8(pv + 8);
430
break;
431
case -MO_64:
432
if (!HAVE_al8) {
433
- cpu_loop_exit_atomic(env_cpu(env), ra);
434
+ cpu_loop_exit_atomic(cpu, ra);
435
}
436
a = load_atom_extract_al8x2(pv);
437
b = load_atom_extract_al8x2(pv + 8);
438
break;
439
case MO_128:
440
- return load_atomic16_or_exit(env, ra, pv);
441
+ return load_atomic16_or_exit(cpu, ra, pv);
442
default:
443
g_assert_not_reached();
444
}
445
@@ -XXX,XX +XXX,XX @@ static uint64_t store_whole_le16(void *pv, int size, Int128 val_le)
446
*
447
* Store 2 bytes to @p, honoring the atomicity of @memop.
448
*/
449
-static void store_atom_2(CPUArchState *env, uintptr_t ra,
450
+static void store_atom_2(CPUState *cpu, uintptr_t ra,
451
void *pv, MemOp memop, uint16_t val)
452
{
453
uintptr_t pi = (uintptr_t)pv;
454
@@ -XXX,XX +XXX,XX @@ static void store_atom_2(CPUArchState *env, uintptr_t ra,
455
return;
456
}
457
458
- atmax = required_atomicity(env, pi, memop);
459
+ atmax = required_atomicity(cpu, pi, memop);
460
if (atmax == MO_8) {
461
stw_he_p(pv, val);
462
return;
463
@@ -XXX,XX +XXX,XX @@ static void store_atom_2(CPUArchState *env, uintptr_t ra,
464
g_assert_not_reached();
465
}
466
467
- cpu_loop_exit_atomic(env_cpu(env), ra);
468
+ cpu_loop_exit_atomic(cpu, ra);
469
}
470
471
/**
472
@@ -XXX,XX +XXX,XX @@ static void store_atom_2(CPUArchState *env, uintptr_t ra,
473
*
474
* Store 4 bytes to @p, honoring the atomicity of @memop.
475
*/
476
-static void store_atom_4(CPUArchState *env, uintptr_t ra,
477
+static void store_atom_4(CPUState *cpu, uintptr_t ra,
478
void *pv, MemOp memop, uint32_t val)
479
{
480
uintptr_t pi = (uintptr_t)pv;
481
@@ -XXX,XX +XXX,XX @@ static void store_atom_4(CPUArchState *env, uintptr_t ra,
482
return;
483
}
484
485
- atmax = required_atomicity(env, pi, memop);
486
+ atmax = required_atomicity(cpu, pi, memop);
487
switch (atmax) {
488
case MO_8:
489
stl_he_p(pv, val);
490
@@ -XXX,XX +XXX,XX @@ static void store_atom_4(CPUArchState *env, uintptr_t ra,
491
return;
492
}
493
}
494
- cpu_loop_exit_atomic(env_cpu(env), ra);
495
+ cpu_loop_exit_atomic(cpu, ra);
496
default:
497
g_assert_not_reached();
498
}
499
@@ -XXX,XX +XXX,XX @@ static void store_atom_4(CPUArchState *env, uintptr_t ra,
500
*
501
* Store 8 bytes to @p, honoring the atomicity of @memop.
502
*/
503
-static void store_atom_8(CPUArchState *env, uintptr_t ra,
504
+static void store_atom_8(CPUState *cpu, uintptr_t ra,
505
void *pv, MemOp memop, uint64_t val)
506
{
507
uintptr_t pi = (uintptr_t)pv;
508
@@ -XXX,XX +XXX,XX @@ static void store_atom_8(CPUArchState *env, uintptr_t ra,
509
return;
510
}
511
512
- atmax = required_atomicity(env, pi, memop);
513
+ atmax = required_atomicity(cpu, pi, memop);
514
switch (atmax) {
515
case MO_8:
516
stq_he_p(pv, val);
517
@@ -XXX,XX +XXX,XX @@ static void store_atom_8(CPUArchState *env, uintptr_t ra,
518
default:
519
g_assert_not_reached();
520
}
521
- cpu_loop_exit_atomic(env_cpu(env), ra);
522
+ cpu_loop_exit_atomic(cpu, ra);
523
}
524
525
/**
526
@@ -XXX,XX +XXX,XX @@ static void store_atom_8(CPUArchState *env, uintptr_t ra,
527
*
528
* Store 16 bytes to @p, honoring the atomicity of @memop.
529
*/
530
-static void store_atom_16(CPUArchState *env, uintptr_t ra,
531
+static void store_atom_16(CPUState *cpu, uintptr_t ra,
532
void *pv, MemOp memop, Int128 val)
533
{
534
uintptr_t pi = (uintptr_t)pv;
535
@@ -XXX,XX +XXX,XX @@ static void store_atom_16(CPUArchState *env, uintptr_t ra,
536
return;
537
}
538
539
- atmax = required_atomicity(env, pi, memop);
540
+ atmax = required_atomicity(cpu, pi, memop);
541
542
a = HOST_BIG_ENDIAN ? int128_gethi(val) : int128_getlo(val);
543
b = HOST_BIG_ENDIAN ? int128_getlo(val) : int128_gethi(val);
544
@@ -XXX,XX +XXX,XX @@ static void store_atom_16(CPUArchState *env, uintptr_t ra,
545
default:
546
g_assert_not_reached();
547
}
548
- cpu_loop_exit_atomic(env_cpu(env), ra);
549
+ cpu_loop_exit_atomic(cpu, ra);
550
}
551
--
552
2.34.1
553
554
diff view generated by jsdifflib
New patch
1
From: Anton Johansson <anjo@rev.ng>
1
2
3
The function is no longer used to access the TLB,
4
and has been replaced by cpu->neg.tlb.
5
6
Signed-off-by: Anton Johansson <anjo@rev.ng>
7
Message-Id: <20230912153428.17816-9-anjo@rev.ng>
8
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
9
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
10
[rth: Merge comment update patch]
11
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
12
---
13
include/exec/cpu-all.h | 11 -----------
14
tcg/aarch64/tcg-target.c.inc | 2 +-
15
tcg/arm/tcg-target.c.inc | 2 +-
16
3 files changed, 2 insertions(+), 13 deletions(-)
17
18
diff --git a/include/exec/cpu-all.h b/include/exec/cpu-all.h
19
index XXXXXXX..XXXXXXX 100644
20
--- a/include/exec/cpu-all.h
21
+++ b/include/exec/cpu-all.h
22
@@ -XXX,XX +XXX,XX @@ static inline CPUState *env_cpu(CPUArchState *env)
23
return (void *)env - sizeof(CPUState);
24
}
25
26
-/**
27
- * env_tlb(env)
28
- * @env: The architecture environment
29
- *
30
- * Return the CPUTLB state associated with the environment.
31
- */
32
-static inline CPUTLB *env_tlb(CPUArchState *env)
33
-{
34
- return &env_cpu(env)->neg.tlb;
35
-}
36
-
37
#endif /* CPU_ALL_H */
38
diff --git a/tcg/aarch64/tcg-target.c.inc b/tcg/aarch64/tcg-target.c.inc
39
index XXXXXXX..XXXXXXX 100644
40
--- a/tcg/aarch64/tcg-target.c.inc
41
+++ b/tcg/aarch64/tcg-target.c.inc
42
@@ -XXX,XX +XXX,XX @@ static TCGLabelQemuLdst *prepare_host_addr(TCGContext *s, HostAddress *h,
43
mask_type = (s->page_bits + s->tlb_dyn_max_bits > 32
44
? TCG_TYPE_I64 : TCG_TYPE_I32);
45
46
- /* Load env_tlb(env)->f[mmu_idx].{mask,table} into {tmp0,tmp1}. */
47
+ /* Load cpu->neg.tlb.f[mmu_idx].{mask,table} into {tmp0,tmp1}. */
48
QEMU_BUILD_BUG_ON(offsetof(CPUTLBDescFast, mask) != 0);
49
QEMU_BUILD_BUG_ON(offsetof(CPUTLBDescFast, table) != 8);
50
tcg_out_insn(s, 3314, LDP, TCG_REG_TMP0, TCG_REG_TMP1, TCG_AREG0,
51
diff --git a/tcg/arm/tcg-target.c.inc b/tcg/arm/tcg-target.c.inc
52
index XXXXXXX..XXXXXXX 100644
53
--- a/tcg/arm/tcg-target.c.inc
54
+++ b/tcg/arm/tcg-target.c.inc
55
@@ -XXX,XX +XXX,XX @@ static TCGLabelQemuLdst *prepare_host_addr(TCGContext *s, HostAddress *h,
56
ldst->addrlo_reg = addrlo;
57
ldst->addrhi_reg = addrhi;
58
59
- /* Load env_tlb(env)->f[mmu_idx].{mask,table} into {r0,r1}. */
60
+ /* Load cpu->neg.tlb.f[mmu_idx].{mask,table} into {r0,r1}. */
61
QEMU_BUILD_BUG_ON(offsetof(CPUTLBDescFast, mask) != 0);
62
QEMU_BUILD_BUG_ON(offsetof(CPUTLBDescFast, table) != 4);
63
tcg_out_ldrd_8(s, COND_AL, TCG_REG_R0, TCG_AREG0, fast_off);
64
--
65
2.34.1
66
67
diff view generated by jsdifflib
New patch
1
From: Anton Johansson <anjo@rev.ng>
1
2
3
The prototype of do_[st|ld]*_mmu() is unified between system- and
4
user-mode allowing a large chunk of helper_[st|ld]*() and cpu_[st|ld]*()
5
functions to be expressed in same manner between both modes. These
6
functions will be moved to ldst_common.c.inc in a following commit.
7
8
Signed-off-by: Anton Johansson <anjo@rev.ng>
9
Message-Id: <20230912153428.17816-11-anjo@rev.ng>
10
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
11
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
12
---
13
accel/tcg/cputlb.c | 16 ++--
14
accel/tcg/user-exec.c | 183 ++++++++++++++++++++++++------------------
15
2 files changed, 117 insertions(+), 82 deletions(-)
16
17
diff --git a/accel/tcg/cputlb.c b/accel/tcg/cputlb.c
18
index XXXXXXX..XXXXXXX 100644
19
--- a/accel/tcg/cputlb.c
20
+++ b/accel/tcg/cputlb.c
21
@@ -XXX,XX +XXX,XX @@ static void do_st_8(CPUState *cpu, MMULookupPageData *p, uint64_t val,
22
}
23
}
24
25
-void helper_stb_mmu(CPUArchState *env, uint64_t addr, uint32_t val,
26
- MemOpIdx oi, uintptr_t ra)
27
+static void do_st1_mmu(CPUState *cpu, vaddr addr, uint8_t val,
28
+ MemOpIdx oi, uintptr_t ra)
29
{
30
MMULookupLocals l;
31
bool crosspage;
32
33
- tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_8);
34
cpu_req_mo(TCG_MO_LD_ST | TCG_MO_ST_ST);
35
- crosspage = mmu_lookup(env_cpu(env), addr, oi, ra, MMU_DATA_STORE, &l);
36
+ crosspage = mmu_lookup(cpu, addr, oi, ra, MMU_DATA_STORE, &l);
37
tcg_debug_assert(!crosspage);
38
39
- do_st_1(env_cpu(env), &l.page[0], val, l.mmu_idx, ra);
40
+ do_st_1(cpu, &l.page[0], val, l.mmu_idx, ra);
41
+}
42
+
43
+void helper_stb_mmu(CPUArchState *env, uint64_t addr, uint32_t val,
44
+ MemOpIdx oi, uintptr_t ra)
45
+{
46
+ tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_8);
47
+ do_st1_mmu(env_cpu(env), addr, val, oi, ra);
48
}
49
50
static void do_st2_mmu(CPUState *cpu, vaddr addr, uint16_t val,
51
diff --git a/accel/tcg/user-exec.c b/accel/tcg/user-exec.c
52
index XXXXXXX..XXXXXXX 100644
53
--- a/accel/tcg/user-exec.c
54
+++ b/accel/tcg/user-exec.c
55
@@ -XXX,XX +XXX,XX @@ void page_reset_target_data(target_ulong start, target_ulong last) { }
56
57
/* The softmmu versions of these helpers are in cputlb.c. */
58
59
-static void *cpu_mmu_lookup(CPUArchState *env, vaddr addr,
60
+static void *cpu_mmu_lookup(CPUState *cpu, vaddr addr,
61
MemOp mop, uintptr_t ra, MMUAccessType type)
62
{
63
int a_bits = get_alignment_bits(mop);
64
@@ -XXX,XX +XXX,XX @@ static void *cpu_mmu_lookup(CPUArchState *env, vaddr addr,
65
66
/* Enforce guest required alignment. */
67
if (unlikely(addr & ((1 << a_bits) - 1))) {
68
- cpu_loop_exit_sigbus(env_cpu(env), addr, type, ra);
69
+ cpu_loop_exit_sigbus(cpu, addr, type, ra);
70
}
71
72
- ret = g2h(env_cpu(env), addr);
73
+ ret = g2h(cpu, addr);
74
set_helper_retaddr(ra);
75
return ret;
76
}
77
78
#include "ldst_atomicity.c.inc"
79
80
-static uint8_t do_ld1_mmu(CPUArchState *env, abi_ptr addr,
81
- MemOp mop, uintptr_t ra)
82
+static uint8_t do_ld1_mmu(CPUState *cpu, vaddr addr, MemOpIdx oi,
83
+ uintptr_t ra, MMUAccessType access_type)
84
{
85
void *haddr;
86
uint8_t ret;
87
88
- tcg_debug_assert((mop & MO_SIZE) == MO_8);
89
cpu_req_mo(TCG_MO_LD_LD | TCG_MO_ST_LD);
90
- haddr = cpu_mmu_lookup(env, addr, mop, ra, MMU_DATA_LOAD);
91
+ haddr = cpu_mmu_lookup(cpu, addr, get_memop(oi), ra, access_type);
92
ret = ldub_p(haddr);
93
clear_helper_retaddr();
94
return ret;
95
@@ -XXX,XX +XXX,XX @@ static uint8_t do_ld1_mmu(CPUArchState *env, abi_ptr addr,
96
tcg_target_ulong helper_ldub_mmu(CPUArchState *env, uint64_t addr,
97
MemOpIdx oi, uintptr_t ra)
98
{
99
- return do_ld1_mmu(env, addr, get_memop(oi), ra);
100
+ tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_8);
101
+ return do_ld1_mmu(env_cpu(env), addr, oi, ra, MMU_DATA_LOAD);
102
}
103
104
tcg_target_ulong helper_ldsb_mmu(CPUArchState *env, uint64_t addr,
105
MemOpIdx oi, uintptr_t ra)
106
{
107
- return (int8_t)do_ld1_mmu(env, addr, get_memop(oi), ra);
108
+ tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_8);
109
+ return (int8_t)do_ld1_mmu(env_cpu(env), addr, oi, ra, MMU_DATA_LOAD);
110
}
111
112
uint8_t cpu_ldb_mmu(CPUArchState *env, abi_ptr addr,
113
MemOpIdx oi, uintptr_t ra)
114
{
115
- uint8_t ret = do_ld1_mmu(env, addr, get_memop(oi), ra);
116
+ uint8_t ret;
117
+
118
+ tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_8);
119
+ ret = do_ld1_mmu(env_cpu(env), addr, oi, ra, MMU_DATA_LOAD);
120
qemu_plugin_vcpu_mem_cb(env_cpu(env), addr, oi, QEMU_PLUGIN_MEM_R);
121
return ret;
122
}
123
124
-static uint16_t do_ld2_mmu(CPUArchState *env, abi_ptr addr,
125
- MemOp mop, uintptr_t ra)
126
+static uint16_t do_ld2_mmu(CPUState *cpu, vaddr addr, MemOpIdx oi,
127
+ uintptr_t ra, MMUAccessType access_type)
128
{
129
void *haddr;
130
uint16_t ret;
131
+ MemOp mop = get_memop(oi);
132
133
- tcg_debug_assert((mop & MO_SIZE) == MO_16);
134
cpu_req_mo(TCG_MO_LD_LD | TCG_MO_ST_LD);
135
- haddr = cpu_mmu_lookup(env, addr, mop, ra, MMU_DATA_LOAD);
136
- ret = load_atom_2(env_cpu(env), ra, haddr, mop);
137
+ haddr = cpu_mmu_lookup(cpu, addr, mop, ra, access_type);
138
+ ret = load_atom_2(cpu, ra, haddr, mop);
139
clear_helper_retaddr();
140
141
if (mop & MO_BSWAP) {
142
@@ -XXX,XX +XXX,XX @@ static uint16_t do_ld2_mmu(CPUArchState *env, abi_ptr addr,
143
tcg_target_ulong helper_lduw_mmu(CPUArchState *env, uint64_t addr,
144
MemOpIdx oi, uintptr_t ra)
145
{
146
- return do_ld2_mmu(env, addr, get_memop(oi), ra);
147
+ tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_16);
148
+ return do_ld2_mmu(env_cpu(env), addr, oi, ra, MMU_DATA_LOAD);
149
}
150
151
tcg_target_ulong helper_ldsw_mmu(CPUArchState *env, uint64_t addr,
152
MemOpIdx oi, uintptr_t ra)
153
{
154
- return (int16_t)do_ld2_mmu(env, addr, get_memop(oi), ra);
155
+ tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_16);
156
+ return (int16_t)do_ld2_mmu(env_cpu(env), addr, oi, ra, MMU_DATA_LOAD);
157
}
158
159
uint16_t cpu_ldw_mmu(CPUArchState *env, abi_ptr addr,
160
MemOpIdx oi, uintptr_t ra)
161
{
162
- uint16_t ret = do_ld2_mmu(env, addr, get_memop(oi), ra);
163
+ uint16_t ret;
164
+
165
+ tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_16);
166
+ ret = do_ld2_mmu(env_cpu(env), addr, oi, ra, MMU_DATA_LOAD);
167
qemu_plugin_vcpu_mem_cb(env_cpu(env), addr, oi, QEMU_PLUGIN_MEM_R);
168
return ret;
169
}
170
171
-static uint32_t do_ld4_mmu(CPUArchState *env, abi_ptr addr,
172
- MemOp mop, uintptr_t ra)
173
+static uint32_t do_ld4_mmu(CPUState *cpu, vaddr addr, MemOpIdx oi,
174
+ uintptr_t ra, MMUAccessType access_type)
175
{
176
void *haddr;
177
uint32_t ret;
178
+ MemOp mop = get_memop(oi);
179
180
- tcg_debug_assert((mop & MO_SIZE) == MO_32);
181
cpu_req_mo(TCG_MO_LD_LD | TCG_MO_ST_LD);
182
- haddr = cpu_mmu_lookup(env, addr, mop, ra, MMU_DATA_LOAD);
183
- ret = load_atom_4(env_cpu(env), ra, haddr, mop);
184
+ haddr = cpu_mmu_lookup(cpu, addr, mop, ra, access_type);
185
+ ret = load_atom_4(cpu, ra, haddr, mop);
186
clear_helper_retaddr();
187
188
if (mop & MO_BSWAP) {
189
@@ -XXX,XX +XXX,XX @@ static uint32_t do_ld4_mmu(CPUArchState *env, abi_ptr addr,
190
tcg_target_ulong helper_ldul_mmu(CPUArchState *env, uint64_t addr,
191
MemOpIdx oi, uintptr_t ra)
192
{
193
- return do_ld4_mmu(env, addr, get_memop(oi), ra);
194
+ tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_32);
195
+ return do_ld4_mmu(env_cpu(env), addr, oi, ra, MMU_DATA_LOAD);
196
}
197
198
tcg_target_ulong helper_ldsl_mmu(CPUArchState *env, uint64_t addr,
199
MemOpIdx oi, uintptr_t ra)
200
{
201
- return (int32_t)do_ld4_mmu(env, addr, get_memop(oi), ra);
202
+ tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_32);
203
+ return (int32_t)do_ld4_mmu(env_cpu(env), addr, oi, ra, MMU_DATA_LOAD);
204
}
205
206
uint32_t cpu_ldl_mmu(CPUArchState *env, abi_ptr addr,
207
MemOpIdx oi, uintptr_t ra)
208
{
209
- uint32_t ret = do_ld4_mmu(env, addr, get_memop(oi), ra);
210
+ uint32_t ret;
211
+
212
+ tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_32);
213
+ ret = do_ld4_mmu(env_cpu(env), addr, oi, ra, MMU_DATA_LOAD);
214
qemu_plugin_vcpu_mem_cb(env_cpu(env), addr, oi, QEMU_PLUGIN_MEM_R);
215
return ret;
216
}
217
218
-static uint64_t do_ld8_mmu(CPUArchState *env, abi_ptr addr,
219
- MemOp mop, uintptr_t ra)
220
+static uint64_t do_ld8_mmu(CPUState *cpu, vaddr addr, MemOpIdx oi,
221
+ uintptr_t ra, MMUAccessType access_type)
222
{
223
void *haddr;
224
uint64_t ret;
225
+ MemOp mop = get_memop(oi);
226
227
- tcg_debug_assert((mop & MO_SIZE) == MO_64);
228
cpu_req_mo(TCG_MO_LD_LD | TCG_MO_ST_LD);
229
- haddr = cpu_mmu_lookup(env, addr, mop, ra, MMU_DATA_LOAD);
230
- ret = load_atom_8(env_cpu(env), ra, haddr, mop);
231
+ haddr = cpu_mmu_lookup(cpu, addr, mop, ra, access_type);
232
+ ret = load_atom_8(cpu, ra, haddr, mop);
233
clear_helper_retaddr();
234
235
if (mop & MO_BSWAP) {
236
@@ -XXX,XX +XXX,XX @@ static uint64_t do_ld8_mmu(CPUArchState *env, abi_ptr addr,
237
uint64_t helper_ldq_mmu(CPUArchState *env, uint64_t addr,
238
MemOpIdx oi, uintptr_t ra)
239
{
240
- return do_ld8_mmu(env, addr, get_memop(oi), ra);
241
+ tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_64);
242
+ return do_ld8_mmu(env_cpu(env), addr, oi, ra, MMU_DATA_LOAD);
243
}
244
245
uint64_t cpu_ldq_mmu(CPUArchState *env, abi_ptr addr,
246
MemOpIdx oi, uintptr_t ra)
247
{
248
- uint64_t ret = do_ld8_mmu(env, addr, get_memop(oi), ra);
249
+ uint64_t ret;
250
+
251
+ tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_64);
252
+ ret = do_ld8_mmu(env_cpu(env), addr, oi, ra, MMU_DATA_LOAD);
253
qemu_plugin_vcpu_mem_cb(env_cpu(env), addr, oi, QEMU_PLUGIN_MEM_R);
254
return ret;
255
}
256
257
-static Int128 do_ld16_mmu(CPUArchState *env, abi_ptr addr,
258
- MemOp mop, uintptr_t ra)
259
+static Int128 do_ld16_mmu(CPUState *cpu, abi_ptr addr,
260
+ MemOpIdx oi, uintptr_t ra)
261
{
262
void *haddr;
263
Int128 ret;
264
+ MemOp mop = get_memop(oi);
265
266
tcg_debug_assert((mop & MO_SIZE) == MO_128);
267
cpu_req_mo(TCG_MO_LD_LD | TCG_MO_ST_LD);
268
- haddr = cpu_mmu_lookup(env, addr, mop, ra, MMU_DATA_LOAD);
269
- ret = load_atom_16(env_cpu(env), ra, haddr, mop);
270
+ haddr = cpu_mmu_lookup(cpu, addr, mop, ra, MMU_DATA_LOAD);
271
+ ret = load_atom_16(cpu, ra, haddr, mop);
272
clear_helper_retaddr();
273
274
if (mop & MO_BSWAP) {
275
@@ -XXX,XX +XXX,XX @@ static Int128 do_ld16_mmu(CPUArchState *env, abi_ptr addr,
276
Int128 helper_ld16_mmu(CPUArchState *env, uint64_t addr,
277
MemOpIdx oi, uintptr_t ra)
278
{
279
- return do_ld16_mmu(env, addr, get_memop(oi), ra);
280
+ return do_ld16_mmu(env_cpu(env), addr, get_memop(oi), ra);
281
}
282
283
Int128 helper_ld_i128(CPUArchState *env, uint64_t addr, MemOpIdx oi)
284
@@ -XXX,XX +XXX,XX @@ Int128 helper_ld_i128(CPUArchState *env, uint64_t addr, MemOpIdx oi)
285
Int128 cpu_ld16_mmu(CPUArchState *env, abi_ptr addr,
286
MemOpIdx oi, uintptr_t ra)
287
{
288
- Int128 ret = do_ld16_mmu(env, addr, get_memop(oi), ra);
289
+ Int128 ret = do_ld16_mmu(env_cpu(env), addr, get_memop(oi), ra);
290
qemu_plugin_vcpu_mem_cb(env_cpu(env), addr, oi, QEMU_PLUGIN_MEM_R);
291
return ret;
292
}
293
294
-static void do_st1_mmu(CPUArchState *env, abi_ptr addr, uint8_t val,
295
- MemOp mop, uintptr_t ra)
296
+static void do_st1_mmu(CPUState *cpu, vaddr addr, uint8_t val,
297
+ MemOpIdx oi, uintptr_t ra)
298
{
299
void *haddr;
300
301
- tcg_debug_assert((mop & MO_SIZE) == MO_8);
302
cpu_req_mo(TCG_MO_LD_ST | TCG_MO_ST_ST);
303
- haddr = cpu_mmu_lookup(env, addr, mop, ra, MMU_DATA_STORE);
304
+ haddr = cpu_mmu_lookup(cpu, addr, get_memop(oi), ra, MMU_DATA_STORE);
305
stb_p(haddr, val);
306
clear_helper_retaddr();
307
}
308
@@ -XXX,XX +XXX,XX @@ static void do_st1_mmu(CPUArchState *env, abi_ptr addr, uint8_t val,
309
void helper_stb_mmu(CPUArchState *env, uint64_t addr, uint32_t val,
310
MemOpIdx oi, uintptr_t ra)
311
{
312
- do_st1_mmu(env, addr, val, get_memop(oi), ra);
313
+ tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_8);
314
+ do_st1_mmu(env_cpu(env), addr, val, oi, ra);
315
}
316
317
void cpu_stb_mmu(CPUArchState *env, abi_ptr addr, uint8_t val,
318
MemOpIdx oi, uintptr_t ra)
319
{
320
- do_st1_mmu(env, addr, val, get_memop(oi), ra);
321
+ tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_8);
322
+ do_st1_mmu(env_cpu(env), addr, val, oi, ra);
323
qemu_plugin_vcpu_mem_cb(env_cpu(env), addr, oi, QEMU_PLUGIN_MEM_W);
324
}
325
326
-static void do_st2_mmu(CPUArchState *env, abi_ptr addr, uint16_t val,
327
- MemOp mop, uintptr_t ra)
328
+static void do_st2_mmu(CPUState *cpu, vaddr addr, uint16_t val,
329
+ MemOpIdx oi, uintptr_t ra)
330
{
331
void *haddr;
332
+ MemOp mop = get_memop(oi);
333
334
- tcg_debug_assert((mop & MO_SIZE) == MO_16);
335
cpu_req_mo(TCG_MO_LD_ST | TCG_MO_ST_ST);
336
- haddr = cpu_mmu_lookup(env, addr, mop, ra, MMU_DATA_STORE);
337
+ haddr = cpu_mmu_lookup(cpu, addr, mop, ra, MMU_DATA_STORE);
338
339
if (mop & MO_BSWAP) {
340
val = bswap16(val);
341
}
342
- store_atom_2(env_cpu(env), ra, haddr, mop, val);
343
+ store_atom_2(cpu, ra, haddr, mop, val);
344
clear_helper_retaddr();
345
}
346
347
void helper_stw_mmu(CPUArchState *env, uint64_t addr, uint32_t val,
348
MemOpIdx oi, uintptr_t ra)
349
{
350
- do_st2_mmu(env, addr, val, get_memop(oi), ra);
351
+ tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_16);
352
+ do_st2_mmu(env_cpu(env), addr, val, oi, ra);
353
}
354
355
void cpu_stw_mmu(CPUArchState *env, abi_ptr addr, uint16_t val,
356
MemOpIdx oi, uintptr_t ra)
357
{
358
- do_st2_mmu(env, addr, val, get_memop(oi), ra);
359
+ tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_16);
360
+ do_st2_mmu(env_cpu(env), addr, val, oi, ra);
361
qemu_plugin_vcpu_mem_cb(env_cpu(env), addr, oi, QEMU_PLUGIN_MEM_W);
362
}
363
364
-static void do_st4_mmu(CPUArchState *env, abi_ptr addr, uint32_t val,
365
- MemOp mop, uintptr_t ra)
366
+static void do_st4_mmu(CPUState *cpu, vaddr addr, uint32_t val,
367
+ MemOpIdx oi, uintptr_t ra)
368
{
369
void *haddr;
370
+ MemOp mop = get_memop(oi);
371
372
- tcg_debug_assert((mop & MO_SIZE) == MO_32);
373
cpu_req_mo(TCG_MO_LD_ST | TCG_MO_ST_ST);
374
- haddr = cpu_mmu_lookup(env, addr, mop, ra, MMU_DATA_STORE);
375
+ haddr = cpu_mmu_lookup(cpu, addr, mop, ra, MMU_DATA_STORE);
376
377
if (mop & MO_BSWAP) {
378
val = bswap32(val);
379
}
380
- store_atom_4(env_cpu(env), ra, haddr, mop, val);
381
+ store_atom_4(cpu, ra, haddr, mop, val);
382
clear_helper_retaddr();
383
}
384
385
void helper_stl_mmu(CPUArchState *env, uint64_t addr, uint32_t val,
386
MemOpIdx oi, uintptr_t ra)
387
{
388
- do_st4_mmu(env, addr, val, get_memop(oi), ra);
389
+ tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_32);
390
+ do_st4_mmu(env_cpu(env), addr, val, oi, ra);
391
}
392
393
void cpu_stl_mmu(CPUArchState *env, abi_ptr addr, uint32_t val,
394
MemOpIdx oi, uintptr_t ra)
395
{
396
- do_st4_mmu(env, addr, val, get_memop(oi), ra);
397
+ tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_32);
398
+ do_st4_mmu(env_cpu(env), addr, val, oi, ra);
399
qemu_plugin_vcpu_mem_cb(env_cpu(env), addr, oi, QEMU_PLUGIN_MEM_W);
400
}
401
402
-static void do_st8_mmu(CPUArchState *env, abi_ptr addr, uint64_t val,
403
- MemOp mop, uintptr_t ra)
404
+static void do_st8_mmu(CPUState *cpu, vaddr addr, uint64_t val,
405
+ MemOpIdx oi, uintptr_t ra)
406
{
407
void *haddr;
408
+ MemOp mop = get_memop(oi);
409
410
- tcg_debug_assert((mop & MO_SIZE) == MO_64);
411
cpu_req_mo(TCG_MO_LD_ST | TCG_MO_ST_ST);
412
- haddr = cpu_mmu_lookup(env, addr, mop, ra, MMU_DATA_STORE);
413
+ haddr = cpu_mmu_lookup(cpu, addr, mop, ra, MMU_DATA_STORE);
414
415
if (mop & MO_BSWAP) {
416
val = bswap64(val);
417
}
418
- store_atom_8(env_cpu(env), ra, haddr, mop, val);
419
+ store_atom_8(cpu, ra, haddr, mop, val);
420
clear_helper_retaddr();
421
}
422
423
void helper_stq_mmu(CPUArchState *env, uint64_t addr, uint64_t val,
424
MemOpIdx oi, uintptr_t ra)
425
{
426
- do_st8_mmu(env, addr, val, get_memop(oi), ra);
427
+ tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_64);
428
+ do_st8_mmu(env_cpu(env), addr, val, oi, ra);
429
}
430
431
void cpu_stq_mmu(CPUArchState *env, abi_ptr addr, uint64_t val,
432
MemOpIdx oi, uintptr_t ra)
433
{
434
- do_st8_mmu(env, addr, val, get_memop(oi), ra);
435
+ tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_64);
436
+ do_st8_mmu(env_cpu(env), addr, val, oi, ra);
437
qemu_plugin_vcpu_mem_cb(env_cpu(env), addr, oi, QEMU_PLUGIN_MEM_W);
438
}
439
440
-static void do_st16_mmu(CPUArchState *env, abi_ptr addr, Int128 val,
441
- MemOp mop, uintptr_t ra)
442
+static void do_st16_mmu(CPUState *cpu, vaddr addr, Int128 val,
443
+ MemOpIdx oi, uintptr_t ra)
444
{
445
void *haddr;
446
+ MemOpIdx mop = get_memop(oi);
447
448
- tcg_debug_assert((mop & MO_SIZE) == MO_128);
449
cpu_req_mo(TCG_MO_LD_ST | TCG_MO_ST_ST);
450
- haddr = cpu_mmu_lookup(env, addr, mop, ra, MMU_DATA_STORE);
451
+ haddr = cpu_mmu_lookup(cpu, addr, mop, ra, MMU_DATA_STORE);
452
453
if (mop & MO_BSWAP) {
454
val = bswap128(val);
455
}
456
- store_atom_16(env_cpu(env), ra, haddr, mop, val);
457
+ store_atom_16(cpu, ra, haddr, mop, val);
458
clear_helper_retaddr();
459
}
460
461
void helper_st16_mmu(CPUArchState *env, uint64_t addr, Int128 val,
462
MemOpIdx oi, uintptr_t ra)
463
{
464
- do_st16_mmu(env, addr, val, get_memop(oi), ra);
465
+ tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_128);
466
+ do_st16_mmu(env_cpu(env), addr, val, oi, ra);
467
}
468
469
void helper_st_i128(CPUArchState *env, uint64_t addr, Int128 val, MemOpIdx oi)
470
{
471
+ tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_128);
472
helper_st16_mmu(env, addr, val, oi, GETPC());
473
}
474
475
void cpu_st16_mmu(CPUArchState *env, abi_ptr addr,
476
Int128 val, MemOpIdx oi, uintptr_t ra)
477
{
478
- do_st16_mmu(env, addr, val, get_memop(oi), ra);
479
+ tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_128);
480
+ do_st16_mmu(env_cpu(env), addr, val, oi, ra);
481
qemu_plugin_vcpu_mem_cb(env_cpu(env), addr, oi, QEMU_PLUGIN_MEM_W);
482
}
483
484
@@ -XXX,XX +XXX,XX @@ uint8_t cpu_ldb_code_mmu(CPUArchState *env, abi_ptr addr,
485
void *haddr;
486
uint8_t ret;
487
488
- haddr = cpu_mmu_lookup(env, addr, oi, ra, MMU_INST_FETCH);
489
+ haddr = cpu_mmu_lookup(env_cpu(env), addr, oi, ra, MMU_INST_FETCH);
490
ret = ldub_p(haddr);
491
clear_helper_retaddr();
492
return ret;
493
@@ -XXX,XX +XXX,XX @@ uint16_t cpu_ldw_code_mmu(CPUArchState *env, abi_ptr addr,
494
void *haddr;
495
uint16_t ret;
496
497
- haddr = cpu_mmu_lookup(env, addr, oi, ra, MMU_INST_FETCH);
498
+ haddr = cpu_mmu_lookup(env_cpu(env), addr, oi, ra, MMU_INST_FETCH);
499
ret = lduw_p(haddr);
500
clear_helper_retaddr();
501
if (get_memop(oi) & MO_BSWAP) {
502
@@ -XXX,XX +XXX,XX @@ uint32_t cpu_ldl_code_mmu(CPUArchState *env, abi_ptr addr,
503
void *haddr;
504
uint32_t ret;
505
506
- haddr = cpu_mmu_lookup(env, addr, oi, ra, MMU_INST_FETCH);
507
+ haddr = cpu_mmu_lookup(env_cpu(env), addr, oi, ra, MMU_INST_FETCH);
508
ret = ldl_p(haddr);
509
clear_helper_retaddr();
510
if (get_memop(oi) & MO_BSWAP) {
511
@@ -XXX,XX +XXX,XX @@ uint64_t cpu_ldq_code_mmu(CPUArchState *env, abi_ptr addr,
512
void *haddr;
513
uint64_t ret;
514
515
- haddr = cpu_mmu_lookup(env, addr, oi, ra, MMU_DATA_LOAD);
516
+ haddr = cpu_mmu_lookup(env_cpu(env), addr, oi, ra, MMU_DATA_LOAD);
517
ret = ldq_p(haddr);
518
clear_helper_retaddr();
519
if (get_memop(oi) & MO_BSWAP) {
520
--
521
2.34.1
diff view generated by jsdifflib
New patch
1
From: Anton Johansson <anjo@rev.ng>
1
2
3
A large chunk of ld/st functions are moved from cputlb.c and user-exec.c
4
to ldst_common.c.inc as their implementation is the same between both
5
modes.
6
7
Eventually, ldst_common.c.inc could be compiled into a separate
8
target-specific compilation unit, and be linked in with the targets.
9
Keeping CPUArchState usage out of cputlb.c (CPUArchState is primarily
10
used to access the mmu index in these functions).
11
12
Signed-off-by: Anton Johansson <anjo@rev.ng>
13
Message-Id: <20230912153428.17816-12-anjo@rev.ng>
14
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
15
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
16
---
17
accel/tcg/cputlb.c | 214 ----------------------------------
18
accel/tcg/user-exec.c | 193 -------------------------------
19
accel/tcg/ldst_common.c.inc | 225 ++++++++++++++++++++++++++++++++++++
20
3 files changed, 225 insertions(+), 407 deletions(-)
21
22
diff --git a/accel/tcg/cputlb.c b/accel/tcg/cputlb.c
23
index XXXXXXX..XXXXXXX 100644
24
--- a/accel/tcg/cputlb.c
25
+++ b/accel/tcg/cputlb.c
26
@@ -XXX,XX +XXX,XX @@ static uint8_t do_ld1_mmu(CPUState *cpu, vaddr addr, MemOpIdx oi,
27
return do_ld_1(cpu, &l.page[0], l.mmu_idx, access_type, ra);
28
}
29
30
-tcg_target_ulong helper_ldub_mmu(CPUArchState *env, uint64_t addr,
31
- MemOpIdx oi, uintptr_t retaddr)
32
-{
33
- tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_8);
34
- return do_ld1_mmu(env_cpu(env), addr, oi, retaddr, MMU_DATA_LOAD);
35
-}
36
-
37
static uint16_t do_ld2_mmu(CPUState *cpu, vaddr addr, MemOpIdx oi,
38
uintptr_t ra, MMUAccessType access_type)
39
{
40
@@ -XXX,XX +XXX,XX @@ static uint16_t do_ld2_mmu(CPUState *cpu, vaddr addr, MemOpIdx oi,
41
return ret;
42
}
43
44
-tcg_target_ulong helper_lduw_mmu(CPUArchState *env, uint64_t addr,
45
- MemOpIdx oi, uintptr_t retaddr)
46
-{
47
- tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_16);
48
- return do_ld2_mmu(env_cpu(env), addr, oi, retaddr, MMU_DATA_LOAD);
49
-}
50
-
51
static uint32_t do_ld4_mmu(CPUState *cpu, vaddr addr, MemOpIdx oi,
52
uintptr_t ra, MMUAccessType access_type)
53
{
54
@@ -XXX,XX +XXX,XX @@ static uint32_t do_ld4_mmu(CPUState *cpu, vaddr addr, MemOpIdx oi,
55
return ret;
56
}
57
58
-tcg_target_ulong helper_ldul_mmu(CPUArchState *env, uint64_t addr,
59
- MemOpIdx oi, uintptr_t retaddr)
60
-{
61
- tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_32);
62
- return do_ld4_mmu(env_cpu(env), addr, oi, retaddr, MMU_DATA_LOAD);
63
-}
64
-
65
static uint64_t do_ld8_mmu(CPUState *cpu, vaddr addr, MemOpIdx oi,
66
uintptr_t ra, MMUAccessType access_type)
67
{
68
@@ -XXX,XX +XXX,XX @@ static uint64_t do_ld8_mmu(CPUState *cpu, vaddr addr, MemOpIdx oi,
69
return ret;
70
}
71
72
-uint64_t helper_ldq_mmu(CPUArchState *env, uint64_t addr,
73
- MemOpIdx oi, uintptr_t retaddr)
74
-{
75
- tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_64);
76
- return do_ld8_mmu(env_cpu(env), addr, oi, retaddr, MMU_DATA_LOAD);
77
-}
78
-
79
-/*
80
- * Provide signed versions of the load routines as well. We can of course
81
- * avoid this for 64-bit data, or for 32-bit data on 32-bit host.
82
- */
83
-
84
-tcg_target_ulong helper_ldsb_mmu(CPUArchState *env, uint64_t addr,
85
- MemOpIdx oi, uintptr_t retaddr)
86
-{
87
- return (int8_t)helper_ldub_mmu(env, addr, oi, retaddr);
88
-}
89
-
90
-tcg_target_ulong helper_ldsw_mmu(CPUArchState *env, uint64_t addr,
91
- MemOpIdx oi, uintptr_t retaddr)
92
-{
93
- return (int16_t)helper_lduw_mmu(env, addr, oi, retaddr);
94
-}
95
-
96
-tcg_target_ulong helper_ldsl_mmu(CPUArchState *env, uint64_t addr,
97
- MemOpIdx oi, uintptr_t retaddr)
98
-{
99
- return (int32_t)helper_ldul_mmu(env, addr, oi, retaddr);
100
-}
101
-
102
static Int128 do_ld16_mmu(CPUState *cpu, vaddr addr,
103
MemOpIdx oi, uintptr_t ra)
104
{
105
@@ -XXX,XX +XXX,XX @@ static Int128 do_ld16_mmu(CPUState *cpu, vaddr addr,
106
return ret;
107
}
108
109
-Int128 helper_ld16_mmu(CPUArchState *env, uint64_t addr,
110
- uint32_t oi, uintptr_t retaddr)
111
-{
112
- tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_128);
113
- return do_ld16_mmu(env_cpu(env), addr, oi, retaddr);
114
-}
115
-
116
-Int128 helper_ld_i128(CPUArchState *env, uint64_t addr, uint32_t oi)
117
-{
118
- return helper_ld16_mmu(env, addr, oi, GETPC());
119
-}
120
-
121
-/*
122
- * Load helpers for cpu_ldst.h.
123
- */
124
-
125
-static void plugin_load_cb(CPUArchState *env, abi_ptr addr, MemOpIdx oi)
126
-{
127
- qemu_plugin_vcpu_mem_cb(env_cpu(env), addr, oi, QEMU_PLUGIN_MEM_R);
128
-}
129
-
130
-uint8_t cpu_ldb_mmu(CPUArchState *env, abi_ptr addr, MemOpIdx oi, uintptr_t ra)
131
-{
132
- uint8_t ret;
133
-
134
- tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_UB);
135
- ret = do_ld1_mmu(env_cpu(env), addr, oi, ra, MMU_DATA_LOAD);
136
- plugin_load_cb(env, addr, oi);
137
- return ret;
138
-}
139
-
140
-uint16_t cpu_ldw_mmu(CPUArchState *env, abi_ptr addr,
141
- MemOpIdx oi, uintptr_t ra)
142
-{
143
- uint16_t ret;
144
-
145
- tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_16);
146
- ret = do_ld2_mmu(env_cpu(env), addr, oi, ra, MMU_DATA_LOAD);
147
- plugin_load_cb(env, addr, oi);
148
- return ret;
149
-}
150
-
151
-uint32_t cpu_ldl_mmu(CPUArchState *env, abi_ptr addr,
152
- MemOpIdx oi, uintptr_t ra)
153
-{
154
- uint32_t ret;
155
-
156
- tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_32);
157
- ret = do_ld4_mmu(env_cpu(env), addr, oi, ra, MMU_DATA_LOAD);
158
- plugin_load_cb(env, addr, oi);
159
- return ret;
160
-}
161
-
162
-uint64_t cpu_ldq_mmu(CPUArchState *env, abi_ptr addr,
163
- MemOpIdx oi, uintptr_t ra)
164
-{
165
- uint64_t ret;
166
-
167
- tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_64);
168
- ret = do_ld8_mmu(env_cpu(env), addr, oi, ra, MMU_DATA_LOAD);
169
- plugin_load_cb(env, addr, oi);
170
- return ret;
171
-}
172
-
173
-Int128 cpu_ld16_mmu(CPUArchState *env, abi_ptr addr,
174
- MemOpIdx oi, uintptr_t ra)
175
-{
176
- Int128 ret;
177
-
178
- tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_128);
179
- ret = do_ld16_mmu(env_cpu(env), addr, oi, ra);
180
- plugin_load_cb(env, addr, oi);
181
- return ret;
182
-}
183
-
184
/*
185
* Store Helpers
186
*/
187
@@ -XXX,XX +XXX,XX @@ static void do_st1_mmu(CPUState *cpu, vaddr addr, uint8_t val,
188
do_st_1(cpu, &l.page[0], val, l.mmu_idx, ra);
189
}
190
191
-void helper_stb_mmu(CPUArchState *env, uint64_t addr, uint32_t val,
192
- MemOpIdx oi, uintptr_t ra)
193
-{
194
- tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_8);
195
- do_st1_mmu(env_cpu(env), addr, val, oi, ra);
196
-}
197
-
198
static void do_st2_mmu(CPUState *cpu, vaddr addr, uint16_t val,
199
MemOpIdx oi, uintptr_t ra)
200
{
201
@@ -XXX,XX +XXX,XX @@ static void do_st2_mmu(CPUState *cpu, vaddr addr, uint16_t val,
202
do_st_1(cpu, &l.page[1], b, l.mmu_idx, ra);
203
}
204
205
-void helper_stw_mmu(CPUArchState *env, uint64_t addr, uint32_t val,
206
- MemOpIdx oi, uintptr_t retaddr)
207
-{
208
- tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_16);
209
- do_st2_mmu(env_cpu(env), addr, val, oi, retaddr);
210
-}
211
-
212
static void do_st4_mmu(CPUState *cpu, vaddr addr, uint32_t val,
213
MemOpIdx oi, uintptr_t ra)
214
{
215
@@ -XXX,XX +XXX,XX @@ static void do_st4_mmu(CPUState *cpu, vaddr addr, uint32_t val,
216
(void) do_st_leN(cpu, &l.page[1], val, l.mmu_idx, l.memop, ra);
217
}
218
219
-void helper_stl_mmu(CPUArchState *env, uint64_t addr, uint32_t val,
220
- MemOpIdx oi, uintptr_t retaddr)
221
-{
222
- tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_32);
223
- do_st4_mmu(env_cpu(env), addr, val, oi, retaddr);
224
-}
225
-
226
static void do_st8_mmu(CPUState *cpu, vaddr addr, uint64_t val,
227
MemOpIdx oi, uintptr_t ra)
228
{
229
@@ -XXX,XX +XXX,XX @@ static void do_st8_mmu(CPUState *cpu, vaddr addr, uint64_t val,
230
(void) do_st_leN(cpu, &l.page[1], val, l.mmu_idx, l.memop, ra);
231
}
232
233
-void helper_stq_mmu(CPUArchState *env, uint64_t addr, uint64_t val,
234
- MemOpIdx oi, uintptr_t retaddr)
235
-{
236
- tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_64);
237
- do_st8_mmu(env_cpu(env), addr, val, oi, retaddr);
238
-}
239
-
240
static void do_st16_mmu(CPUState *cpu, vaddr addr, Int128 val,
241
MemOpIdx oi, uintptr_t ra)
242
{
243
@@ -XXX,XX +XXX,XX @@ static void do_st16_mmu(CPUState *cpu, vaddr addr, Int128 val,
244
}
245
}
246
247
-void helper_st16_mmu(CPUArchState *env, uint64_t addr, Int128 val,
248
- MemOpIdx oi, uintptr_t retaddr)
249
-{
250
- tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_128);
251
- do_st16_mmu(env_cpu(env), addr, val, oi, retaddr);
252
-}
253
-
254
-void helper_st_i128(CPUArchState *env, uint64_t addr, Int128 val, MemOpIdx oi)
255
-{
256
- helper_st16_mmu(env, addr, val, oi, GETPC());
257
-}
258
-
259
-/*
260
- * Store Helpers for cpu_ldst.h
261
- */
262
-
263
-static void plugin_store_cb(CPUArchState *env, abi_ptr addr, MemOpIdx oi)
264
-{
265
- qemu_plugin_vcpu_mem_cb(env_cpu(env), addr, oi, QEMU_PLUGIN_MEM_W);
266
-}
267
-
268
-void cpu_stb_mmu(CPUArchState *env, abi_ptr addr, uint8_t val,
269
- MemOpIdx oi, uintptr_t retaddr)
270
-{
271
- helper_stb_mmu(env, addr, val, oi, retaddr);
272
- plugin_store_cb(env, addr, oi);
273
-}
274
-
275
-void cpu_stw_mmu(CPUArchState *env, abi_ptr addr, uint16_t val,
276
- MemOpIdx oi, uintptr_t retaddr)
277
-{
278
- tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_16);
279
- do_st2_mmu(env_cpu(env), addr, val, oi, retaddr);
280
- plugin_store_cb(env, addr, oi);
281
-}
282
-
283
-void cpu_stl_mmu(CPUArchState *env, abi_ptr addr, uint32_t val,
284
- MemOpIdx oi, uintptr_t retaddr)
285
-{
286
- tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_32);
287
- do_st4_mmu(env_cpu(env), addr, val, oi, retaddr);
288
- plugin_store_cb(env, addr, oi);
289
-}
290
-
291
-void cpu_stq_mmu(CPUArchState *env, abi_ptr addr, uint64_t val,
292
- MemOpIdx oi, uintptr_t retaddr)
293
-{
294
- tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_64);
295
- do_st8_mmu(env_cpu(env), addr, val, oi, retaddr);
296
- plugin_store_cb(env, addr, oi);
297
-}
298
-
299
-void cpu_st16_mmu(CPUArchState *env, abi_ptr addr, Int128 val,
300
- MemOpIdx oi, uintptr_t retaddr)
301
-{
302
- tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_128);
303
- do_st16_mmu(env_cpu(env), addr, val, oi, retaddr);
304
- plugin_store_cb(env, addr, oi);
305
-}
306
-
307
#include "ldst_common.c.inc"
308
309
/*
310
diff --git a/accel/tcg/user-exec.c b/accel/tcg/user-exec.c
311
index XXXXXXX..XXXXXXX 100644
312
--- a/accel/tcg/user-exec.c
313
+++ b/accel/tcg/user-exec.c
314
@@ -XXX,XX +XXX,XX @@ static uint8_t do_ld1_mmu(CPUState *cpu, vaddr addr, MemOpIdx oi,
315
return ret;
316
}
317
318
-tcg_target_ulong helper_ldub_mmu(CPUArchState *env, uint64_t addr,
319
- MemOpIdx oi, uintptr_t ra)
320
-{
321
- tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_8);
322
- return do_ld1_mmu(env_cpu(env), addr, oi, ra, MMU_DATA_LOAD);
323
-}
324
-
325
-tcg_target_ulong helper_ldsb_mmu(CPUArchState *env, uint64_t addr,
326
- MemOpIdx oi, uintptr_t ra)
327
-{
328
- tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_8);
329
- return (int8_t)do_ld1_mmu(env_cpu(env), addr, oi, ra, MMU_DATA_LOAD);
330
-}
331
-
332
-uint8_t cpu_ldb_mmu(CPUArchState *env, abi_ptr addr,
333
- MemOpIdx oi, uintptr_t ra)
334
-{
335
- uint8_t ret;
336
-
337
- tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_8);
338
- ret = do_ld1_mmu(env_cpu(env), addr, oi, ra, MMU_DATA_LOAD);
339
- qemu_plugin_vcpu_mem_cb(env_cpu(env), addr, oi, QEMU_PLUGIN_MEM_R);
340
- return ret;
341
-}
342
-
343
static uint16_t do_ld2_mmu(CPUState *cpu, vaddr addr, MemOpIdx oi,
344
uintptr_t ra, MMUAccessType access_type)
345
{
346
@@ -XXX,XX +XXX,XX @@ static uint16_t do_ld2_mmu(CPUState *cpu, vaddr addr, MemOpIdx oi,
347
return ret;
348
}
349
350
-tcg_target_ulong helper_lduw_mmu(CPUArchState *env, uint64_t addr,
351
- MemOpIdx oi, uintptr_t ra)
352
-{
353
- tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_16);
354
- return do_ld2_mmu(env_cpu(env), addr, oi, ra, MMU_DATA_LOAD);
355
-}
356
-
357
-tcg_target_ulong helper_ldsw_mmu(CPUArchState *env, uint64_t addr,
358
- MemOpIdx oi, uintptr_t ra)
359
-{
360
- tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_16);
361
- return (int16_t)do_ld2_mmu(env_cpu(env), addr, oi, ra, MMU_DATA_LOAD);
362
-}
363
-
364
-uint16_t cpu_ldw_mmu(CPUArchState *env, abi_ptr addr,
365
- MemOpIdx oi, uintptr_t ra)
366
-{
367
- uint16_t ret;
368
-
369
- tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_16);
370
- ret = do_ld2_mmu(env_cpu(env), addr, oi, ra, MMU_DATA_LOAD);
371
- qemu_plugin_vcpu_mem_cb(env_cpu(env), addr, oi, QEMU_PLUGIN_MEM_R);
372
- return ret;
373
-}
374
-
375
static uint32_t do_ld4_mmu(CPUState *cpu, vaddr addr, MemOpIdx oi,
376
uintptr_t ra, MMUAccessType access_type)
377
{
378
@@ -XXX,XX +XXX,XX @@ static uint32_t do_ld4_mmu(CPUState *cpu, vaddr addr, MemOpIdx oi,
379
return ret;
380
}
381
382
-tcg_target_ulong helper_ldul_mmu(CPUArchState *env, uint64_t addr,
383
- MemOpIdx oi, uintptr_t ra)
384
-{
385
- tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_32);
386
- return do_ld4_mmu(env_cpu(env), addr, oi, ra, MMU_DATA_LOAD);
387
-}
388
-
389
-tcg_target_ulong helper_ldsl_mmu(CPUArchState *env, uint64_t addr,
390
- MemOpIdx oi, uintptr_t ra)
391
-{
392
- tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_32);
393
- return (int32_t)do_ld4_mmu(env_cpu(env), addr, oi, ra, MMU_DATA_LOAD);
394
-}
395
-
396
-uint32_t cpu_ldl_mmu(CPUArchState *env, abi_ptr addr,
397
- MemOpIdx oi, uintptr_t ra)
398
-{
399
- uint32_t ret;
400
-
401
- tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_32);
402
- ret = do_ld4_mmu(env_cpu(env), addr, oi, ra, MMU_DATA_LOAD);
403
- qemu_plugin_vcpu_mem_cb(env_cpu(env), addr, oi, QEMU_PLUGIN_MEM_R);
404
- return ret;
405
-}
406
-
407
static uint64_t do_ld8_mmu(CPUState *cpu, vaddr addr, MemOpIdx oi,
408
uintptr_t ra, MMUAccessType access_type)
409
{
410
@@ -XXX,XX +XXX,XX @@ static uint64_t do_ld8_mmu(CPUState *cpu, vaddr addr, MemOpIdx oi,
411
return ret;
412
}
413
414
-uint64_t helper_ldq_mmu(CPUArchState *env, uint64_t addr,
415
- MemOpIdx oi, uintptr_t ra)
416
-{
417
- tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_64);
418
- return do_ld8_mmu(env_cpu(env), addr, oi, ra, MMU_DATA_LOAD);
419
-}
420
-
421
-uint64_t cpu_ldq_mmu(CPUArchState *env, abi_ptr addr,
422
- MemOpIdx oi, uintptr_t ra)
423
-{
424
- uint64_t ret;
425
-
426
- tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_64);
427
- ret = do_ld8_mmu(env_cpu(env), addr, oi, ra, MMU_DATA_LOAD);
428
- qemu_plugin_vcpu_mem_cb(env_cpu(env), addr, oi, QEMU_PLUGIN_MEM_R);
429
- return ret;
430
-}
431
-
432
static Int128 do_ld16_mmu(CPUState *cpu, abi_ptr addr,
433
MemOpIdx oi, uintptr_t ra)
434
{
435
@@ -XXX,XX +XXX,XX @@ static Int128 do_ld16_mmu(CPUState *cpu, abi_ptr addr,
436
return ret;
437
}
438
439
-Int128 helper_ld16_mmu(CPUArchState *env, uint64_t addr,
440
- MemOpIdx oi, uintptr_t ra)
441
-{
442
- return do_ld16_mmu(env_cpu(env), addr, get_memop(oi), ra);
443
-}
444
-
445
-Int128 helper_ld_i128(CPUArchState *env, uint64_t addr, MemOpIdx oi)
446
-{
447
- return helper_ld16_mmu(env, addr, oi, GETPC());
448
-}
449
-
450
-Int128 cpu_ld16_mmu(CPUArchState *env, abi_ptr addr,
451
- MemOpIdx oi, uintptr_t ra)
452
-{
453
- Int128 ret = do_ld16_mmu(env_cpu(env), addr, get_memop(oi), ra);
454
- qemu_plugin_vcpu_mem_cb(env_cpu(env), addr, oi, QEMU_PLUGIN_MEM_R);
455
- return ret;
456
-}
457
-
458
static void do_st1_mmu(CPUState *cpu, vaddr addr, uint8_t val,
459
MemOpIdx oi, uintptr_t ra)
460
{
461
@@ -XXX,XX +XXX,XX @@ static void do_st1_mmu(CPUState *cpu, vaddr addr, uint8_t val,
462
clear_helper_retaddr();
463
}
464
465
-void helper_stb_mmu(CPUArchState *env, uint64_t addr, uint32_t val,
466
- MemOpIdx oi, uintptr_t ra)
467
-{
468
- tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_8);
469
- do_st1_mmu(env_cpu(env), addr, val, oi, ra);
470
-}
471
-
472
-void cpu_stb_mmu(CPUArchState *env, abi_ptr addr, uint8_t val,
473
- MemOpIdx oi, uintptr_t ra)
474
-{
475
- tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_8);
476
- do_st1_mmu(env_cpu(env), addr, val, oi, ra);
477
- qemu_plugin_vcpu_mem_cb(env_cpu(env), addr, oi, QEMU_PLUGIN_MEM_W);
478
-}
479
-
480
static void do_st2_mmu(CPUState *cpu, vaddr addr, uint16_t val,
481
MemOpIdx oi, uintptr_t ra)
482
{
483
@@ -XXX,XX +XXX,XX @@ static void do_st2_mmu(CPUState *cpu, vaddr addr, uint16_t val,
484
clear_helper_retaddr();
485
}
486
487
-void helper_stw_mmu(CPUArchState *env, uint64_t addr, uint32_t val,
488
- MemOpIdx oi, uintptr_t ra)
489
-{
490
- tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_16);
491
- do_st2_mmu(env_cpu(env), addr, val, oi, ra);
492
-}
493
-
494
-void cpu_stw_mmu(CPUArchState *env, abi_ptr addr, uint16_t val,
495
- MemOpIdx oi, uintptr_t ra)
496
-{
497
- tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_16);
498
- do_st2_mmu(env_cpu(env), addr, val, oi, ra);
499
- qemu_plugin_vcpu_mem_cb(env_cpu(env), addr, oi, QEMU_PLUGIN_MEM_W);
500
-}
501
-
502
static void do_st4_mmu(CPUState *cpu, vaddr addr, uint32_t val,
503
MemOpIdx oi, uintptr_t ra)
504
{
505
@@ -XXX,XX +XXX,XX @@ static void do_st4_mmu(CPUState *cpu, vaddr addr, uint32_t val,
506
clear_helper_retaddr();
507
}
508
509
-void helper_stl_mmu(CPUArchState *env, uint64_t addr, uint32_t val,
510
- MemOpIdx oi, uintptr_t ra)
511
-{
512
- tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_32);
513
- do_st4_mmu(env_cpu(env), addr, val, oi, ra);
514
-}
515
-
516
-void cpu_stl_mmu(CPUArchState *env, abi_ptr addr, uint32_t val,
517
- MemOpIdx oi, uintptr_t ra)
518
-{
519
- tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_32);
520
- do_st4_mmu(env_cpu(env), addr, val, oi, ra);
521
- qemu_plugin_vcpu_mem_cb(env_cpu(env), addr, oi, QEMU_PLUGIN_MEM_W);
522
-}
523
-
524
static void do_st8_mmu(CPUState *cpu, vaddr addr, uint64_t val,
525
MemOpIdx oi, uintptr_t ra)
526
{
527
@@ -XXX,XX +XXX,XX @@ static void do_st8_mmu(CPUState *cpu, vaddr addr, uint64_t val,
528
clear_helper_retaddr();
529
}
530
531
-void helper_stq_mmu(CPUArchState *env, uint64_t addr, uint64_t val,
532
- MemOpIdx oi, uintptr_t ra)
533
-{
534
- tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_64);
535
- do_st8_mmu(env_cpu(env), addr, val, oi, ra);
536
-}
537
-
538
-void cpu_stq_mmu(CPUArchState *env, abi_ptr addr, uint64_t val,
539
- MemOpIdx oi, uintptr_t ra)
540
-{
541
- tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_64);
542
- do_st8_mmu(env_cpu(env), addr, val, oi, ra);
543
- qemu_plugin_vcpu_mem_cb(env_cpu(env), addr, oi, QEMU_PLUGIN_MEM_W);
544
-}
545
-
546
static void do_st16_mmu(CPUState *cpu, vaddr addr, Int128 val,
547
MemOpIdx oi, uintptr_t ra)
548
{
549
@@ -XXX,XX +XXX,XX @@ static void do_st16_mmu(CPUState *cpu, vaddr addr, Int128 val,
550
clear_helper_retaddr();
551
}
552
553
-void helper_st16_mmu(CPUArchState *env, uint64_t addr, Int128 val,
554
- MemOpIdx oi, uintptr_t ra)
555
-{
556
- tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_128);
557
- do_st16_mmu(env_cpu(env), addr, val, oi, ra);
558
-}
559
-
560
-void helper_st_i128(CPUArchState *env, uint64_t addr, Int128 val, MemOpIdx oi)
561
-{
562
- tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_128);
563
- helper_st16_mmu(env, addr, val, oi, GETPC());
564
-}
565
-
566
-void cpu_st16_mmu(CPUArchState *env, abi_ptr addr,
567
- Int128 val, MemOpIdx oi, uintptr_t ra)
568
-{
569
- tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_128);
570
- do_st16_mmu(env_cpu(env), addr, val, oi, ra);
571
- qemu_plugin_vcpu_mem_cb(env_cpu(env), addr, oi, QEMU_PLUGIN_MEM_W);
572
-}
573
-
574
uint32_t cpu_ldub_code(CPUArchState *env, abi_ptr ptr)
575
{
576
uint32_t ret;
577
diff --git a/accel/tcg/ldst_common.c.inc b/accel/tcg/ldst_common.c.inc
578
index XXXXXXX..XXXXXXX 100644
579
--- a/accel/tcg/ldst_common.c.inc
580
+++ b/accel/tcg/ldst_common.c.inc
581
@@ -XXX,XX +XXX,XX @@
582
* This work is licensed under the terms of the GNU GPL, version 2 or later.
583
* See the COPYING file in the top-level directory.
584
*/
585
+/*
586
+ * Load helpers for tcg-ldst.h
587
+ */
588
+
589
+tcg_target_ulong helper_ldub_mmu(CPUArchState *env, uint64_t addr,
590
+ MemOpIdx oi, uintptr_t retaddr)
591
+{
592
+ tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_8);
593
+ return do_ld1_mmu(env_cpu(env), addr, oi, retaddr, MMU_DATA_LOAD);
594
+}
595
+
596
+tcg_target_ulong helper_lduw_mmu(CPUArchState *env, uint64_t addr,
597
+ MemOpIdx oi, uintptr_t retaddr)
598
+{
599
+ tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_16);
600
+ return do_ld2_mmu(env_cpu(env), addr, oi, retaddr, MMU_DATA_LOAD);
601
+}
602
+
603
+tcg_target_ulong helper_ldul_mmu(CPUArchState *env, uint64_t addr,
604
+ MemOpIdx oi, uintptr_t retaddr)
605
+{
606
+ tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_32);
607
+ return do_ld4_mmu(env_cpu(env), addr, oi, retaddr, MMU_DATA_LOAD);
608
+}
609
+
610
+uint64_t helper_ldq_mmu(CPUArchState *env, uint64_t addr,
611
+ MemOpIdx oi, uintptr_t retaddr)
612
+{
613
+ tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_64);
614
+ return do_ld8_mmu(env_cpu(env), addr, oi, retaddr, MMU_DATA_LOAD);
615
+}
616
+
617
+/*
618
+ * Provide signed versions of the load routines as well. We can of course
619
+ * avoid this for 64-bit data, or for 32-bit data on 32-bit host.
620
+ */
621
+
622
+tcg_target_ulong helper_ldsb_mmu(CPUArchState *env, uint64_t addr,
623
+ MemOpIdx oi, uintptr_t retaddr)
624
+{
625
+ return (int8_t)helper_ldub_mmu(env, addr, oi, retaddr);
626
+}
627
+
628
+tcg_target_ulong helper_ldsw_mmu(CPUArchState *env, uint64_t addr,
629
+ MemOpIdx oi, uintptr_t retaddr)
630
+{
631
+ return (int16_t)helper_lduw_mmu(env, addr, oi, retaddr);
632
+}
633
+
634
+tcg_target_ulong helper_ldsl_mmu(CPUArchState *env, uint64_t addr,
635
+ MemOpIdx oi, uintptr_t retaddr)
636
+{
637
+ return (int32_t)helper_ldul_mmu(env, addr, oi, retaddr);
638
+}
639
+
640
+Int128 helper_ld16_mmu(CPUArchState *env, uint64_t addr,
641
+ MemOpIdx oi, uintptr_t retaddr)
642
+{
643
+ tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_128);
644
+ return do_ld16_mmu(env_cpu(env), addr, oi, retaddr);
645
+}
646
+
647
+Int128 helper_ld_i128(CPUArchState *env, uint64_t addr, uint32_t oi)
648
+{
649
+ return helper_ld16_mmu(env, addr, oi, GETPC());
650
+}
651
+
652
+/*
653
+ * Store helpers for tcg-ldst.h
654
+ */
655
+
656
+void helper_stb_mmu(CPUArchState *env, uint64_t addr, uint32_t val,
657
+ MemOpIdx oi, uintptr_t ra)
658
+{
659
+ tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_8);
660
+ do_st1_mmu(env_cpu(env), addr, val, oi, ra);
661
+}
662
+
663
+void helper_stw_mmu(CPUArchState *env, uint64_t addr, uint32_t val,
664
+ MemOpIdx oi, uintptr_t retaddr)
665
+{
666
+ tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_16);
667
+ do_st2_mmu(env_cpu(env), addr, val, oi, retaddr);
668
+}
669
+
670
+void helper_stl_mmu(CPUArchState *env, uint64_t addr, uint32_t val,
671
+ MemOpIdx oi, uintptr_t retaddr)
672
+{
673
+ tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_32);
674
+ do_st4_mmu(env_cpu(env), addr, val, oi, retaddr);
675
+}
676
+
677
+void helper_stq_mmu(CPUArchState *env, uint64_t addr, uint64_t val,
678
+ MemOpIdx oi, uintptr_t retaddr)
679
+{
680
+ tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_64);
681
+ do_st8_mmu(env_cpu(env), addr, val, oi, retaddr);
682
+}
683
+
684
+void helper_st16_mmu(CPUArchState *env, uint64_t addr, Int128 val,
685
+ MemOpIdx oi, uintptr_t retaddr)
686
+{
687
+ tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_128);
688
+ do_st16_mmu(env_cpu(env), addr, val, oi, retaddr);
689
+}
690
+
691
+void helper_st_i128(CPUArchState *env, uint64_t addr, Int128 val, MemOpIdx oi)
692
+{
693
+ helper_st16_mmu(env, addr, val, oi, GETPC());
694
+}
695
+
696
+/*
697
+ * Load helpers for cpu_ldst.h
698
+ */
699
+
700
+static void plugin_load_cb(CPUArchState *env, abi_ptr addr, MemOpIdx oi)
701
+{
702
+ qemu_plugin_vcpu_mem_cb(env_cpu(env), addr, oi, QEMU_PLUGIN_MEM_R);
703
+}
704
+
705
+uint8_t cpu_ldb_mmu(CPUArchState *env, abi_ptr addr, MemOpIdx oi, uintptr_t ra)
706
+{
707
+ uint8_t ret;
708
+
709
+ tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_UB);
710
+ ret = do_ld1_mmu(env_cpu(env), addr, oi, ra, MMU_DATA_LOAD);
711
+ plugin_load_cb(env, addr, oi);
712
+ return ret;
713
+}
714
+
715
+uint16_t cpu_ldw_mmu(CPUArchState *env, abi_ptr addr,
716
+ MemOpIdx oi, uintptr_t ra)
717
+{
718
+ uint16_t ret;
719
+
720
+ tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_16);
721
+ ret = do_ld2_mmu(env_cpu(env), addr, oi, ra, MMU_DATA_LOAD);
722
+ plugin_load_cb(env, addr, oi);
723
+ return ret;
724
+}
725
+
726
+uint32_t cpu_ldl_mmu(CPUArchState *env, abi_ptr addr,
727
+ MemOpIdx oi, uintptr_t ra)
728
+{
729
+ uint32_t ret;
730
+
731
+ tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_32);
732
+ ret = do_ld4_mmu(env_cpu(env), addr, oi, ra, MMU_DATA_LOAD);
733
+ plugin_load_cb(env, addr, oi);
734
+ return ret;
735
+}
736
+
737
+uint64_t cpu_ldq_mmu(CPUArchState *env, abi_ptr addr,
738
+ MemOpIdx oi, uintptr_t ra)
739
+{
740
+ uint64_t ret;
741
+
742
+ tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_64);
743
+ ret = do_ld8_mmu(env_cpu(env), addr, oi, ra, MMU_DATA_LOAD);
744
+ plugin_load_cb(env, addr, oi);
745
+ return ret;
746
+}
747
+
748
+Int128 cpu_ld16_mmu(CPUArchState *env, abi_ptr addr,
749
+ MemOpIdx oi, uintptr_t ra)
750
+{
751
+ Int128 ret;
752
+
753
+ tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_128);
754
+ ret = do_ld16_mmu(env_cpu(env), addr, oi, ra);
755
+ plugin_load_cb(env, addr, oi);
756
+ return ret;
757
+}
758
+
759
+/*
760
+ * Store helpers for cpu_ldst.h
761
+ */
762
+
763
+static void plugin_store_cb(CPUArchState *env, abi_ptr addr, MemOpIdx oi)
764
+{
765
+ qemu_plugin_vcpu_mem_cb(env_cpu(env), addr, oi, QEMU_PLUGIN_MEM_W);
766
+}
767
+
768
+void cpu_stb_mmu(CPUArchState *env, abi_ptr addr, uint8_t val,
769
+ MemOpIdx oi, uintptr_t retaddr)
770
+{
771
+ helper_stb_mmu(env, addr, val, oi, retaddr);
772
+ plugin_store_cb(env, addr, oi);
773
+}
774
+
775
+void cpu_stw_mmu(CPUArchState *env, abi_ptr addr, uint16_t val,
776
+ MemOpIdx oi, uintptr_t retaddr)
777
+{
778
+ tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_16);
779
+ do_st2_mmu(env_cpu(env), addr, val, oi, retaddr);
780
+ plugin_store_cb(env, addr, oi);
781
+}
782
+
783
+void cpu_stl_mmu(CPUArchState *env, abi_ptr addr, uint32_t val,
784
+ MemOpIdx oi, uintptr_t retaddr)
785
+{
786
+ tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_32);
787
+ do_st4_mmu(env_cpu(env), addr, val, oi, retaddr);
788
+ plugin_store_cb(env, addr, oi);
789
+}
790
+
791
+void cpu_stq_mmu(CPUArchState *env, abi_ptr addr, uint64_t val,
792
+ MemOpIdx oi, uintptr_t retaddr)
793
+{
794
+ tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_64);
795
+ do_st8_mmu(env_cpu(env), addr, val, oi, retaddr);
796
+ plugin_store_cb(env, addr, oi);
797
+}
798
+
799
+void cpu_st16_mmu(CPUArchState *env, abi_ptr addr, Int128 val,
800
+ MemOpIdx oi, uintptr_t retaddr)
801
+{
802
+ tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_128);
803
+ do_st16_mmu(env_cpu(env), addr, val, oi, retaddr);
804
+ plugin_store_cb(env, addr, oi);
805
+}
806
+
807
+/*
808
+ * Wrappers of the above
809
+ */
810
811
uint32_t cpu_ldub_mmuidx_ra(CPUArchState *env, abi_ptr addr,
812
int mmu_idx, uintptr_t ra)
813
--
814
2.34.1
diff view generated by jsdifflib
New patch
1
From: Philippe Mathieu-Daudé <philmd@linaro.org>
1
2
3
The EXCP_* definitions don't need to be target specific,
4
move them to "exec/cpu-common.h".
5
6
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
7
Reviewed-by: Anton Johansson <anjo@rev.ng>
8
Message-Id: <20230914185718.76241-2-philmd@linaro.org>
9
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
10
---
11
include/exec/cpu-all.h | 7 -------
12
include/exec/cpu-common.h | 7 +++++++
13
2 files changed, 7 insertions(+), 7 deletions(-)
14
15
diff --git a/include/exec/cpu-all.h b/include/exec/cpu-all.h
16
index XXXXXXX..XXXXXXX 100644
17
--- a/include/exec/cpu-all.h
18
+++ b/include/exec/cpu-all.h
19
@@ -XXX,XX +XXX,XX @@
20
#include "hw/core/cpu.h"
21
#include "qemu/rcu.h"
22
23
-#define EXCP_INTERRUPT 0x10000 /* async interruption */
24
-#define EXCP_HLT 0x10001 /* hlt instruction reached */
25
-#define EXCP_DEBUG 0x10002 /* cpu stopped after a breakpoint or singlestep */
26
-#define EXCP_HALTED 0x10003 /* cpu is halted (waiting for external event) */
27
-#define EXCP_YIELD 0x10004 /* cpu wants to yield timeslice to another */
28
-#define EXCP_ATOMIC 0x10005 /* stop-the-world and emulate atomic */
29
-
30
/* some important defines:
31
*
32
* HOST_BIG_ENDIAN : whether the host cpu is big endian and
33
diff --git a/include/exec/cpu-common.h b/include/exec/cpu-common.h
34
index XXXXXXX..XXXXXXX 100644
35
--- a/include/exec/cpu-common.h
36
+++ b/include/exec/cpu-common.h
37
@@ -XXX,XX +XXX,XX @@
38
#include "exec/hwaddr.h"
39
#endif
40
41
+#define EXCP_INTERRUPT 0x10000 /* async interruption */
42
+#define EXCP_HLT 0x10001 /* hlt instruction reached */
43
+#define EXCP_DEBUG 0x10002 /* cpu stopped after a breakpoint or singlestep */
44
+#define EXCP_HALTED 0x10003 /* cpu is halted (waiting for external event) */
45
+#define EXCP_YIELD 0x10004 /* cpu wants to yield timeslice to another */
46
+#define EXCP_ATOMIC 0x10005 /* stop-the-world and emulate atomic */
47
+
48
/**
49
* vaddr:
50
* Type wide enough to contain any #target_ulong virtual address.
51
--
52
2.34.1
53
54
diff view generated by jsdifflib
New patch
1
From: Philippe Mathieu-Daudé <philmd@linaro.org>
1
2
3
While these functions are not TCG specific, they are not target
4
specific. Move them to "exec/cpu-common.h" so their callers don't
5
have to be tainted as target specific.
6
7
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
8
Reviewed-by: Anton Johansson <anjo@rev.ng>
9
Message-Id: <20230914185718.76241-3-philmd@linaro.org>
10
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
11
---
12
include/exec/cpu-common.h | 32 ++++++++++++++++++++++++++++++++
13
include/exec/exec-all.h | 30 ------------------------------
14
2 files changed, 32 insertions(+), 30 deletions(-)
15
16
diff --git a/include/exec/cpu-common.h b/include/exec/cpu-common.h
17
index XXXXXXX..XXXXXXX 100644
18
--- a/include/exec/cpu-common.h
19
+++ b/include/exec/cpu-common.h
20
@@ -XXX,XX +XXX,XX @@ int cpu_memory_rw_debug(CPUState *cpu, vaddr addr,
21
/* vl.c */
22
void list_cpus(void);
23
24
+#ifdef CONFIG_TCG
25
+/**
26
+ * cpu_unwind_state_data:
27
+ * @cpu: the cpu context
28
+ * @host_pc: the host pc within the translation
29
+ * @data: output data
30
+ *
31
+ * Attempt to load the the unwind state for a host pc occurring in
32
+ * translated code. If @host_pc is not in translated code, the
33
+ * function returns false; otherwise @data is loaded.
34
+ * This is the same unwind info as given to restore_state_to_opc.
35
+ */
36
+bool cpu_unwind_state_data(CPUState *cpu, uintptr_t host_pc, uint64_t *data);
37
+
38
+/**
39
+ * cpu_restore_state:
40
+ * @cpu: the cpu context
41
+ * @host_pc: the host pc within the translation
42
+ * @return: true if state was restored, false otherwise
43
+ *
44
+ * Attempt to restore the state for a fault occurring in translated
45
+ * code. If @host_pc is not in translated code no state is
46
+ * restored and the function returns false.
47
+ */
48
+bool cpu_restore_state(CPUState *cpu, uintptr_t host_pc);
49
+
50
+G_NORETURN void cpu_loop_exit_noexc(CPUState *cpu);
51
+G_NORETURN void cpu_loop_exit_atomic(CPUState *cpu, uintptr_t pc);
52
+#endif /* CONFIG_TCG */
53
+G_NORETURN void cpu_loop_exit(CPUState *cpu);
54
+G_NORETURN void cpu_loop_exit_restore(CPUState *cpu, uintptr_t pc);
55
+
56
#endif /* CPU_COMMON_H */
57
diff --git a/include/exec/exec-all.h b/include/exec/exec-all.h
58
index XXXXXXX..XXXXXXX 100644
59
--- a/include/exec/exec-all.h
60
+++ b/include/exec/exec-all.h
61
@@ -XXX,XX +XXX,XX @@
62
#include "exec/translation-block.h"
63
#include "qemu/clang-tsa.h"
64
65
-/**
66
- * cpu_unwind_state_data:
67
- * @cpu: the cpu context
68
- * @host_pc: the host pc within the translation
69
- * @data: output data
70
- *
71
- * Attempt to load the the unwind state for a host pc occurring in
72
- * translated code. If @host_pc is not in translated code, the
73
- * function returns false; otherwise @data is loaded.
74
- * This is the same unwind info as given to restore_state_to_opc.
75
- */
76
-bool cpu_unwind_state_data(CPUState *cpu, uintptr_t host_pc, uint64_t *data);
77
-
78
-/**
79
- * cpu_restore_state:
80
- * @cpu: the cpu context
81
- * @host_pc: the host pc within the translation
82
- * @return: true if state was restored, false otherwise
83
- *
84
- * Attempt to restore the state for a fault occurring in translated
85
- * code. If @host_pc is not in translated code no state is
86
- * restored and the function returns false.
87
- */
88
-bool cpu_restore_state(CPUState *cpu, uintptr_t host_pc);
89
-
90
-G_NORETURN void cpu_loop_exit_noexc(CPUState *cpu);
91
-G_NORETURN void cpu_loop_exit(CPUState *cpu);
92
-G_NORETURN void cpu_loop_exit_restore(CPUState *cpu, uintptr_t pc);
93
-G_NORETURN void cpu_loop_exit_atomic(CPUState *cpu, uintptr_t pc);
94
-
95
/**
96
* cpu_loop_exit_requested:
97
* @cpu: The CPU state to be tested
98
--
99
2.34.1
100
101
diff view generated by jsdifflib
New patch
1
From: Philippe Mathieu-Daudé <philmd@linaro.org>
1
2
3
In commit 00c9a5c2c3 ("accel/tcg: Restrict 'qapi-commands-machine.h'
4
to system emulation") we moved the definition to accel/tcg/ which is
5
where this function is called. No need to expose it outside.
6
7
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
8
Reviewed-by: Anton Johansson <anjo@rev.ng>
9
Message-Id: <20230914185718.76241-4-philmd@linaro.org>
10
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
11
---
12
accel/tcg/internal.h | 2 ++
13
include/exec/cpu-all.h | 5 -----
14
2 files changed, 2 insertions(+), 5 deletions(-)
15
16
diff --git a/accel/tcg/internal.h b/accel/tcg/internal.h
17
index XXXXXXX..XXXXXXX 100644
18
--- a/accel/tcg/internal.h
19
+++ b/accel/tcg/internal.h
20
@@ -XXX,XX +XXX,XX @@ static inline bool cpu_in_serial_context(CPUState *cs)
21
extern int64_t max_delay;
22
extern int64_t max_advance;
23
24
+void dump_exec_info(GString *buf);
25
+
26
extern bool one_insn_per_tb;
27
28
/**
29
diff --git a/include/exec/cpu-all.h b/include/exec/cpu-all.h
30
index XXXXXXX..XXXXXXX 100644
31
--- a/include/exec/cpu-all.h
32
+++ b/include/exec/cpu-all.h
33
@@ -XXX,XX +XXX,XX @@ static inline bool tlb_hit(uint64_t tlb_addr, vaddr addr)
34
return tlb_hit_page(tlb_addr, addr & TARGET_PAGE_MASK);
35
}
36
37
-#ifdef CONFIG_TCG
38
-/* accel/tcg/translate-all.c */
39
-void dump_exec_info(GString *buf);
40
-#endif /* CONFIG_TCG */
41
-
42
#endif /* !CONFIG_USER_ONLY */
43
44
/* accel/tcg/cpu-exec.c */
45
--
46
2.34.1
47
48
diff view generated by jsdifflib
New patch
1
From: Philippe Mathieu-Daudé <philmd@linaro.org>
1
2
3
accel-blocker.c is not target specific, move it to system_ss[].
4
5
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
6
Reviewed-by: Anton Johansson <anjo@rev.ng>
7
Message-Id: <20230914185718.76241-5-philmd@linaro.org>
8
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
9
---
10
accel/meson.build | 4 ++--
11
1 file changed, 2 insertions(+), 2 deletions(-)
12
13
diff --git a/accel/meson.build b/accel/meson.build
14
index XXXXXXX..XXXXXXX 100644
15
--- a/accel/meson.build
16
+++ b/accel/meson.build
17
@@ -XXX,XX +XXX,XX @@
18
-specific_ss.add(files('accel-common.c', 'accel-blocker.c'))
19
-system_ss.add(files('accel-softmmu.c'))
20
+specific_ss.add(files('accel-common.c'))
21
+system_ss.add(files('accel-softmmu.c', 'accel-blocker.c'))
22
user_ss.add(files('accel-user.c'))
23
24
subdir('tcg')
25
--
26
2.34.1
27
28
diff view generated by jsdifflib
New patch
1
From: Philippe Mathieu-Daudé <philmd@linaro.org>
1
2
3
We use the '-common.c' suffix for target agnostic units.
4
This file is target specific, rename it using the '-target'
5
suffix.
6
7
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
8
Reviewed-by: Anton Johansson <anjo@rev.ng>
9
Message-Id: <20230914185718.76241-6-philmd@linaro.org>
10
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
11
---
12
accel/{accel-common.c => accel-target.c} | 0
13
accel/meson.build | 2 +-
14
2 files changed, 1 insertion(+), 1 deletion(-)
15
rename accel/{accel-common.c => accel-target.c} (100%)
16
17
diff --git a/accel/accel-common.c b/accel/accel-target.c
18
similarity index 100%
19
rename from accel/accel-common.c
20
rename to accel/accel-target.c
21
diff --git a/accel/meson.build b/accel/meson.build
22
index XXXXXXX..XXXXXXX 100644
23
--- a/accel/meson.build
24
+++ b/accel/meson.build
25
@@ -XXX,XX +XXX,XX @@
26
-specific_ss.add(files('accel-common.c'))
27
+specific_ss.add(files('accel-target.c'))
28
system_ss.add(files('accel-softmmu.c', 'accel-blocker.c'))
29
user_ss.add(files('accel-user.c'))
30
31
--
32
2.34.1
33
34
diff view generated by jsdifflib
New patch
1
From: Philippe Mathieu-Daudé <philmd@linaro.org>
1
2
3
We have exec/cpu code split in 2 files for target agnostic
4
("common") and specific. Rename 'cpu.c' which is target
5
specific using the '-target' suffix. Update MAINTAINERS.
6
Remove the 's from 'cpus-common.c' to match the API cpu_foo()
7
functions.
8
9
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
10
Reviewed-by: Anton Johansson <anjo@rev.ng>
11
Message-Id: <20230914185718.76241-7-philmd@linaro.org>
12
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
13
---
14
MAINTAINERS | 4 ++--
15
meson.build | 4 ++--
16
cpus-common.c => cpu-common.c | 0
17
cpu.c => cpu-target.c | 0
18
4 files changed, 4 insertions(+), 4 deletions(-)
19
rename cpus-common.c => cpu-common.c (100%)
20
rename cpu.c => cpu-target.c (100%)
21
22
diff --git a/MAINTAINERS b/MAINTAINERS
23
index XXXXXXX..XXXXXXX 100644
24
--- a/MAINTAINERS
25
+++ b/MAINTAINERS
26
@@ -XXX,XX +XXX,XX @@ R: Paolo Bonzini <pbonzini@redhat.com>
27
S: Maintained
28
F: softmmu/cpus.c
29
F: softmmu/watchpoint.c
30
-F: cpus-common.c
31
+F: cpu-common.c
32
+F: cpu-target.c
33
F: page-vary.c
34
F: page-vary-common.c
35
F: accel/tcg/
36
@@ -XXX,XX +XXX,XX @@ M: Marcel Apfelbaum <marcel.apfelbaum@gmail.com>
37
R: Philippe Mathieu-Daudé <philmd@linaro.org>
38
R: Yanan Wang <wangyanan55@huawei.com>
39
S: Supported
40
-F: cpu.c
41
F: hw/core/cpu.c
42
F: hw/core/machine-qmp-cmds.c
43
F: hw/core/machine.c
44
diff --git a/meson.build b/meson.build
45
index XXXXXXX..XXXXXXX 100644
46
--- a/meson.build
47
+++ b/meson.build
48
@@ -XXX,XX +XXX,XX @@ if have_block
49
system_ss.add(when: 'CONFIG_WIN32', if_true: [files('os-win32.c')])
50
endif
51
52
-common_ss.add(files('cpus-common.c'))
53
-specific_ss.add(files('cpu.c'))
54
+common_ss.add(files('cpu-common.c'))
55
+specific_ss.add(files('cpu-target.c'))
56
57
subdir('softmmu')
58
59
diff --git a/cpus-common.c b/cpu-common.c
60
similarity index 100%
61
rename from cpus-common.c
62
rename to cpu-common.c
63
diff --git a/cpu.c b/cpu-target.c
64
similarity index 100%
65
rename from cpu.c
66
rename to cpu-target.c
67
--
68
2.34.1
69
70
diff view generated by jsdifflib
New patch
1
From: Philippe Mathieu-Daudé <philmd@linaro.org>
1
2
3
This matches the target agnostic 'page-vary-common.c' counterpart.
4
5
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
6
Reviewed-by: Anton Johansson <anjo@rev.ng>
7
Message-Id: <20230914185718.76241-8-philmd@linaro.org>
8
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
9
---
10
MAINTAINERS | 2 +-
11
meson.build | 2 +-
12
page-vary.c => page-vary-target.c | 0
13
3 files changed, 2 insertions(+), 2 deletions(-)
14
rename page-vary.c => page-vary-target.c (100%)
15
16
diff --git a/MAINTAINERS b/MAINTAINERS
17
index XXXXXXX..XXXXXXX 100644
18
--- a/MAINTAINERS
19
+++ b/MAINTAINERS
20
@@ -XXX,XX +XXX,XX @@ F: softmmu/cpus.c
21
F: softmmu/watchpoint.c
22
F: cpu-common.c
23
F: cpu-target.c
24
-F: page-vary.c
25
+F: page-vary-target.c
26
F: page-vary-common.c
27
F: accel/tcg/
28
F: accel/stubs/tcg-stub.c
29
diff --git a/meson.build b/meson.build
30
index XXXXXXX..XXXXXXX 100644
31
--- a/meson.build
32
+++ b/meson.build
33
@@ -XXX,XX +XXX,XX @@ if get_option('b_lto')
34
pagevary = declare_dependency(link_with: pagevary)
35
endif
36
common_ss.add(pagevary)
37
-specific_ss.add(files('page-vary.c'))
38
+specific_ss.add(files('page-vary-target.c'))
39
40
subdir('backends')
41
subdir('disas')
42
diff --git a/page-vary.c b/page-vary-target.c
43
similarity index 100%
44
rename from page-vary.c
45
rename to page-vary-target.c
46
--
47
2.34.1
48
49
diff view generated by jsdifflib
1
When single-stepping with a debugger attached to QEMU, and when an
1
From: Philippe Mathieu-Daudé <philmd@linaro.org>
2
interrupt is raised, the debugger misses the first instruction after
3
the interrupt.
4
2
5
Tested-by: Luc Michel <luc.michel@greensocs.com>
3
accel/tcg/internal.h contains target specific declarations.
6
Reviewed-by: Luc Michel <luc.michel@greensocs.com>
4
Unit files including it become "target tainted": they can not
7
Buglink: https://bugs.launchpad.net/qemu/+bug/757702
5
be compiled as target agnostic. Rename using the '-target'
8
Message-Id: <20200717163029.2737546-1-richard.henderson@linaro.org>
6
suffix to make this explicit.
7
8
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
9
Reviewed-by: Anton Johansson <anjo@rev.ng>
10
Message-Id: <20230914185718.76241-9-philmd@linaro.org>
9
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
11
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
10
---
12
---
11
accel/tcg/cpu-exec.c | 8 +++++++-
13
accel/tcg/{internal.h => internal-target.h} | 6 +++---
12
1 file changed, 7 insertions(+), 1 deletion(-)
14
accel/tcg/cpu-exec-common.c | 2 +-
15
accel/tcg/cpu-exec.c | 2 +-
16
accel/tcg/cputlb.c | 2 +-
17
accel/tcg/monitor.c | 2 +-
18
accel/tcg/tb-maint.c | 2 +-
19
accel/tcg/tcg-all.c | 2 +-
20
accel/tcg/translate-all.c | 2 +-
21
accel/tcg/translator.c | 2 +-
22
accel/tcg/user-exec.c | 2 +-
23
10 files changed, 12 insertions(+), 12 deletions(-)
24
rename accel/tcg/{internal.h => internal-target.h} (96%)
13
25
26
diff --git a/accel/tcg/internal.h b/accel/tcg/internal-target.h
27
similarity index 96%
28
rename from accel/tcg/internal.h
29
rename to accel/tcg/internal-target.h
30
index XXXXXXX..XXXXXXX 100644
31
--- a/accel/tcg/internal.h
32
+++ b/accel/tcg/internal-target.h
33
@@ -XXX,XX +XXX,XX @@
34
/*
35
- * Internal execution defines for qemu
36
+ * Internal execution defines for qemu (target specific)
37
*
38
* Copyright (c) 2003 Fabrice Bellard
39
*
40
* SPDX-License-Identifier: LGPL-2.1-or-later
41
*/
42
43
-#ifndef ACCEL_TCG_INTERNAL_H
44
-#define ACCEL_TCG_INTERNAL_H
45
+#ifndef ACCEL_TCG_INTERNAL_TARGET_H
46
+#define ACCEL_TCG_INTERNAL_TARGET_H
47
48
#include "exec/exec-all.h"
49
#include "exec/translate-all.h"
50
diff --git a/accel/tcg/cpu-exec-common.c b/accel/tcg/cpu-exec-common.c
51
index XXXXXXX..XXXXXXX 100644
52
--- a/accel/tcg/cpu-exec-common.c
53
+++ b/accel/tcg/cpu-exec-common.c
54
@@ -XXX,XX +XXX,XX @@
55
#include "sysemu/tcg.h"
56
#include "exec/exec-all.h"
57
#include "qemu/plugin.h"
58
-#include "internal.h"
59
+#include "internal-target.h"
60
61
bool tcg_allowed;
62
14
diff --git a/accel/tcg/cpu-exec.c b/accel/tcg/cpu-exec.c
63
diff --git a/accel/tcg/cpu-exec.c b/accel/tcg/cpu-exec.c
15
index XXXXXXX..XXXXXXX 100644
64
index XXXXXXX..XXXXXXX 100644
16
--- a/accel/tcg/cpu-exec.c
65
--- a/accel/tcg/cpu-exec.c
17
+++ b/accel/tcg/cpu-exec.c
66
+++ b/accel/tcg/cpu-exec.c
18
@@ -XXX,XX +XXX,XX @@ static inline bool cpu_handle_interrupt(CPUState *cpu,
67
@@ -XXX,XX +XXX,XX @@
19
else {
68
#include "tb-jmp-cache.h"
20
if (cc->cpu_exec_interrupt(cpu, interrupt_request)) {
69
#include "tb-hash.h"
21
replay_interrupt();
70
#include "tb-context.h"
22
- cpu->exception_index = -1;
71
-#include "internal.h"
23
+ /*
72
+#include "internal-target.h"
24
+ * After processing the interrupt, ensure an EXCP_DEBUG is
73
25
+ * raised when single-stepping so that GDB doesn't miss the
74
/* -icount align implementation. */
26
+ * next instruction.
75
27
+ */
76
diff --git a/accel/tcg/cputlb.c b/accel/tcg/cputlb.c
28
+ cpu->exception_index =
77
index XXXXXXX..XXXXXXX 100644
29
+ (cpu->singlestep_enabled ? EXCP_DEBUG : -1);
78
--- a/accel/tcg/cputlb.c
30
*last_tb = NULL;
79
+++ b/accel/tcg/cputlb.c
31
}
80
@@ -XXX,XX +XXX,XX @@
32
/* The target hook may have updated the 'cpu->interrupt_request';
81
#include "exec/translate-all.h"
82
#include "trace.h"
83
#include "tb-hash.h"
84
-#include "internal.h"
85
+#include "internal-target.h"
86
#ifdef CONFIG_PLUGIN
87
#include "qemu/plugin-memory.h"
88
#endif
89
diff --git a/accel/tcg/monitor.c b/accel/tcg/monitor.c
90
index XXXXXXX..XXXXXXX 100644
91
--- a/accel/tcg/monitor.c
92
+++ b/accel/tcg/monitor.c
93
@@ -XXX,XX +XXX,XX @@
94
#include "sysemu/cpu-timers.h"
95
#include "sysemu/tcg.h"
96
#include "tcg/tcg.h"
97
-#include "internal.h"
98
+#include "internal-target.h"
99
100
101
static void dump_drift_info(GString *buf)
102
diff --git a/accel/tcg/tb-maint.c b/accel/tcg/tb-maint.c
103
index XXXXXXX..XXXXXXX 100644
104
--- a/accel/tcg/tb-maint.c
105
+++ b/accel/tcg/tb-maint.c
106
@@ -XXX,XX +XXX,XX @@
107
#include "tcg/tcg.h"
108
#include "tb-hash.h"
109
#include "tb-context.h"
110
-#include "internal.h"
111
+#include "internal-target.h"
112
113
114
/* List iterators for lists of tagged pointers in TranslationBlock. */
115
diff --git a/accel/tcg/tcg-all.c b/accel/tcg/tcg-all.c
116
index XXXXXXX..XXXXXXX 100644
117
--- a/accel/tcg/tcg-all.c
118
+++ b/accel/tcg/tcg-all.c
119
@@ -XXX,XX +XXX,XX @@
120
#if !defined(CONFIG_USER_ONLY)
121
#include "hw/boards.h"
122
#endif
123
-#include "internal.h"
124
+#include "internal-target.h"
125
126
struct TCGState {
127
AccelState parent_obj;
128
diff --git a/accel/tcg/translate-all.c b/accel/tcg/translate-all.c
129
index XXXXXXX..XXXXXXX 100644
130
--- a/accel/tcg/translate-all.c
131
+++ b/accel/tcg/translate-all.c
132
@@ -XXX,XX +XXX,XX @@
133
#include "tb-jmp-cache.h"
134
#include "tb-hash.h"
135
#include "tb-context.h"
136
-#include "internal.h"
137
+#include "internal-target.h"
138
#include "perf.h"
139
#include "tcg/insn-start-words.h"
140
141
diff --git a/accel/tcg/translator.c b/accel/tcg/translator.c
142
index XXXXXXX..XXXXXXX 100644
143
--- a/accel/tcg/translator.c
144
+++ b/accel/tcg/translator.c
145
@@ -XXX,XX +XXX,XX @@
146
#include "exec/translator.h"
147
#include "exec/plugin-gen.h"
148
#include "tcg/tcg-op-common.h"
149
-#include "internal.h"
150
+#include "internal-target.h"
151
152
static void set_can_do_io(DisasContextBase *db, bool val)
153
{
154
diff --git a/accel/tcg/user-exec.c b/accel/tcg/user-exec.c
155
index XXXXXXX..XXXXXXX 100644
156
--- a/accel/tcg/user-exec.c
157
+++ b/accel/tcg/user-exec.c
158
@@ -XXX,XX +XXX,XX @@
159
#include "qemu/atomic128.h"
160
#include "trace/trace-root.h"
161
#include "tcg/tcg-ldst.h"
162
-#include "internal.h"
163
+#include "internal-target.h"
164
165
__thread uintptr_t helper_retaddr;
166
33
--
167
--
34
2.25.1
168
2.34.1
35
169
36
170
diff view generated by jsdifflib
1
From: Luc Michel <luc.michel@greensocs.com>
1
From: Philippe Mathieu-Daudé <philmd@linaro.org>
2
2
3
When single-stepping with a debugger attached to QEMU, and when an
3
Move target-agnostic declarations from "internal-target.h"
4
exception is raised, the debugger misses the first instruction after the
4
to a new "internal-common.h" header.
5
exception:
5
monitor.c now don't include target specific headers and can
6
be compiled once in system_ss[].
6
7
7
$ qemu-system-aarch64 -M virt -display none -cpu cortex-a53 -s -S
8
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
8
9
Reviewed-by: Anton Johansson <anjo@rev.ng>
9
$ aarch64-linux-gnu-gdb
10
Message-Id: <20230914185718.76241-10-philmd@linaro.org>
10
GNU gdb (GDB) 9.2
11
[...]
12
(gdb) tar rem :1234
13
Remote debugging using :1234
14
warning: No executable has been specified and target does not support
15
determining executable automatically. Try using the "file" command.
16
0x0000000000000000 in ?? ()
17
(gdb) # writing nop insns to 0x200 and 0x204
18
(gdb) set *0x200 = 0xd503201f
19
(gdb) set *0x204 = 0xd503201f
20
(gdb) # 0x0 address contains 0 which is an invalid opcode.
21
(gdb) # The CPU should raise an exception and jump to 0x200
22
(gdb) si
23
0x0000000000000204 in ?? ()
24
25
With this commit, the same run steps correctly on the first instruction
26
of the exception vector:
27
28
(gdb) si
29
0x0000000000000200 in ?? ()
30
31
Buglink: https://bugs.launchpad.net/qemu/+bug/757702
32
Signed-off-by: Luc Michel <luc.michel@greensocs.com>
33
Message-Id: <20200716193947.3058389-1-luc.michel@greensocs.com>
34
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
11
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
35
---
12
---
36
accel/tcg/cpu-exec.c | 11 +++++++++++
13
accel/tcg/internal-common.h | 17 +++++++++++++++++
37
1 file changed, 11 insertions(+)
14
accel/tcg/internal-target.h | 5 -----
15
accel/tcg/cpu-exec.c | 1 +
16
accel/tcg/monitor.c | 2 +-
17
accel/tcg/translate-all.c | 1 +
18
accel/tcg/meson.build | 3 +++
19
6 files changed, 23 insertions(+), 6 deletions(-)
20
create mode 100644 accel/tcg/internal-common.h
38
21
22
diff --git a/accel/tcg/internal-common.h b/accel/tcg/internal-common.h
23
new file mode 100644
24
index XXXXXXX..XXXXXXX
25
--- /dev/null
26
+++ b/accel/tcg/internal-common.h
27
@@ -XXX,XX +XXX,XX @@
28
+/*
29
+ * Internal execution defines for qemu (target agnostic)
30
+ *
31
+ * Copyright (c) 2003 Fabrice Bellard
32
+ *
33
+ * SPDX-License-Identifier: LGPL-2.1-or-later
34
+ */
35
+
36
+#ifndef ACCEL_TCG_INTERNAL_COMMON_H
37
+#define ACCEL_TCG_INTERNAL_COMMON_H
38
+
39
+extern int64_t max_delay;
40
+extern int64_t max_advance;
41
+
42
+void dump_exec_info(GString *buf);
43
+
44
+#endif
45
diff --git a/accel/tcg/internal-target.h b/accel/tcg/internal-target.h
46
index XXXXXXX..XXXXXXX 100644
47
--- a/accel/tcg/internal-target.h
48
+++ b/accel/tcg/internal-target.h
49
@@ -XXX,XX +XXX,XX @@ static inline bool cpu_in_serial_context(CPUState *cs)
50
return !(cs->tcg_cflags & CF_PARALLEL) || cpu_in_exclusive_context(cs);
51
}
52
53
-extern int64_t max_delay;
54
-extern int64_t max_advance;
55
-
56
-void dump_exec_info(GString *buf);
57
-
58
extern bool one_insn_per_tb;
59
60
/**
39
diff --git a/accel/tcg/cpu-exec.c b/accel/tcg/cpu-exec.c
61
diff --git a/accel/tcg/cpu-exec.c b/accel/tcg/cpu-exec.c
40
index XXXXXXX..XXXXXXX 100644
62
index XXXXXXX..XXXXXXX 100644
41
--- a/accel/tcg/cpu-exec.c
63
--- a/accel/tcg/cpu-exec.c
42
+++ b/accel/tcg/cpu-exec.c
64
+++ b/accel/tcg/cpu-exec.c
43
@@ -XXX,XX +XXX,XX @@ static inline bool cpu_handle_exception(CPUState *cpu, int *ret)
65
@@ -XXX,XX +XXX,XX @@
44
cc->do_interrupt(cpu);
66
#include "tb-jmp-cache.h"
45
qemu_mutex_unlock_iothread();
67
#include "tb-hash.h"
46
cpu->exception_index = -1;
68
#include "tb-context.h"
69
+#include "internal-common.h"
70
#include "internal-target.h"
71
72
/* -icount align implementation. */
73
diff --git a/accel/tcg/monitor.c b/accel/tcg/monitor.c
74
index XXXXXXX..XXXXXXX 100644
75
--- a/accel/tcg/monitor.c
76
+++ b/accel/tcg/monitor.c
77
@@ -XXX,XX +XXX,XX @@
78
#include "sysemu/cpu-timers.h"
79
#include "sysemu/tcg.h"
80
#include "tcg/tcg.h"
81
-#include "internal-target.h"
82
+#include "internal-common.h"
83
84
85
static void dump_drift_info(GString *buf)
86
diff --git a/accel/tcg/translate-all.c b/accel/tcg/translate-all.c
87
index XXXXXXX..XXXXXXX 100644
88
--- a/accel/tcg/translate-all.c
89
+++ b/accel/tcg/translate-all.c
90
@@ -XXX,XX +XXX,XX @@
91
#include "tb-jmp-cache.h"
92
#include "tb-hash.h"
93
#include "tb-context.h"
94
+#include "internal-common.h"
95
#include "internal-target.h"
96
#include "perf.h"
97
#include "tcg/insn-start-words.h"
98
diff --git a/accel/tcg/meson.build b/accel/tcg/meson.build
99
index XXXXXXX..XXXXXXX 100644
100
--- a/accel/tcg/meson.build
101
+++ b/accel/tcg/meson.build
102
@@ -XXX,XX +XXX,XX @@ specific_ss.add_all(when: 'CONFIG_TCG', if_true: tcg_ss)
103
104
specific_ss.add(when: ['CONFIG_SYSTEM_ONLY', 'CONFIG_TCG'], if_true: files(
105
'cputlb.c',
106
+))
47
+
107
+
48
+ if (unlikely(cpu->singlestep_enabled)) {
108
+system_ss.add(when: ['CONFIG_TCG'], if_true: files(
49
+ /*
109
'monitor.c',
50
+ * After processing the exception, ensure an EXCP_DEBUG is
110
))
51
+ * raised when single-stepping so that GDB doesn't miss the
111
52
+ * next instruction.
53
+ */
54
+ *ret = EXCP_DEBUG;
55
+ cpu_handle_debug_exception(cpu);
56
+ return true;
57
+ }
58
} else if (!replay_has_interrupt()) {
59
/* give a chance to iothread in replay mode */
60
*ret = EXCP_INTERRUPT;
61
--
112
--
62
2.25.1
113
2.34.1
63
114
64
115
diff view generated by jsdifflib
New patch
1
From: Philippe Mathieu-Daudé <philmd@linaro.org>
1
2
3
Remove the unused "exec/exec-all.h" header. There is
4
no more target specific code in it: make it target
5
agnostic (rename using the '-common' suffix). Since
6
it is TCG specific, move it to accel/tcg, updating
7
MAINTAINERS.
8
9
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
10
Reviewed-by: Anton Johansson <anjo@rev.ng>
11
Message-Id: <20230914185718.76241-11-philmd@linaro.org>
12
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
13
---
14
MAINTAINERS | 1 -
15
softmmu/icount.c => accel/tcg/icount-common.c | 3 +--
16
accel/tcg/meson.build | 1 +
17
softmmu/meson.build | 4 ----
18
4 files changed, 2 insertions(+), 7 deletions(-)
19
rename softmmu/icount.c => accel/tcg/icount-common.c (99%)
20
21
diff --git a/MAINTAINERS b/MAINTAINERS
22
index XXXXXXX..XXXXXXX 100644
23
--- a/MAINTAINERS
24
+++ b/MAINTAINERS
25
@@ -XXX,XX +XXX,XX @@ F: softmmu/main.c
26
F: softmmu/cpus.c
27
F: softmmu/cpu-throttle.c
28
F: softmmu/cpu-timers.c
29
-F: softmmu/icount.c
30
F: softmmu/runstate*
31
F: qapi/run-state.json
32
33
diff --git a/softmmu/icount.c b/accel/tcg/icount-common.c
34
similarity index 99%
35
rename from softmmu/icount.c
36
rename to accel/tcg/icount-common.c
37
index XXXXXXX..XXXXXXX 100644
38
--- a/softmmu/icount.c
39
+++ b/accel/tcg/icount-common.c
40
@@ -XXX,XX +XXX,XX @@
41
#include "migration/vmstate.h"
42
#include "qapi/error.h"
43
#include "qemu/error-report.h"
44
-#include "exec/exec-all.h"
45
#include "sysemu/cpus.h"
46
#include "sysemu/qtest.h"
47
#include "qemu/main-loop.h"
48
@@ -XXX,XX +XXX,XX @@
49
#include "hw/core/cpu.h"
50
#include "sysemu/cpu-timers.h"
51
#include "sysemu/cpu-throttle.h"
52
-#include "timers-state.h"
53
+#include "softmmu/timers-state.h"
54
55
/*
56
* ICOUNT: Instruction Counter
57
diff --git a/accel/tcg/meson.build b/accel/tcg/meson.build
58
index XXXXXXX..XXXXXXX 100644
59
--- a/accel/tcg/meson.build
60
+++ b/accel/tcg/meson.build
61
@@ -XXX,XX +XXX,XX @@ specific_ss.add(when: ['CONFIG_SYSTEM_ONLY', 'CONFIG_TCG'], if_true: files(
62
))
63
64
system_ss.add(when: ['CONFIG_TCG'], if_true: files(
65
+ 'icount-common.c',
66
'monitor.c',
67
))
68
69
diff --git a/softmmu/meson.build b/softmmu/meson.build
70
index XXXXXXX..XXXXXXX 100644
71
--- a/softmmu/meson.build
72
+++ b/softmmu/meson.build
73
@@ -XXX,XX +XXX,XX @@ specific_ss.add(when: 'CONFIG_SYSTEM_ONLY', if_true: [files(
74
'watchpoint.c',
75
)])
76
77
-specific_ss.add(when: ['CONFIG_SYSTEM_ONLY', 'CONFIG_TCG'], if_true: [files(
78
- 'icount.c',
79
-)])
80
-
81
system_ss.add(files(
82
'balloon.c',
83
'bootdevice.c',
84
--
85
2.34.1
86
87
diff view generated by jsdifflib
1
Forgetting this asserts when tcg_gen_cmp_vec is called from
1
From: Philippe Mathieu-Daudé <philmd@linaro.org>
2
within tcg_gen_cmpsel_vec.
3
2
4
Fixes: 72b4c792c7a
3
cpu_in_serial_context() is not target specific,
4
move it declaration to "internal-common.h" (which
5
we include in the 4 source files modified).
6
7
Remove the unused "exec/exec-all.h" header from
8
cpu-exec-common.c. There is no more target specific
9
code in this file: make it target agnostic.
10
11
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
12
Reviewed-by: Anton Johansson <anjo@rev.ng>
13
Message-Id: <20230914185718.76241-12-philmd@linaro.org>
5
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
14
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6
---
15
---
7
tcg/tcg-op-vec.c | 2 ++
16
accel/tcg/internal-common.h | 11 +++++++++++
8
1 file changed, 2 insertions(+)
17
accel/tcg/internal-target.h | 9 ---------
18
accel/tcg/cpu-exec-common.c | 3 +--
19
accel/tcg/cputlb.c | 1 +
20
accel/tcg/tb-maint.c | 1 +
21
accel/tcg/user-exec.c | 1 +
22
accel/tcg/meson.build | 4 +++-
23
7 files changed, 18 insertions(+), 12 deletions(-)
9
24
10
diff --git a/tcg/tcg-op-vec.c b/tcg/tcg-op-vec.c
25
diff --git a/accel/tcg/internal-common.h b/accel/tcg/internal-common.h
11
index XXXXXXX..XXXXXXX 100644
26
index XXXXXXX..XXXXXXX 100644
12
--- a/tcg/tcg-op-vec.c
27
--- a/accel/tcg/internal-common.h
13
+++ b/tcg/tcg-op-vec.c
28
+++ b/accel/tcg/internal-common.h
14
@@ -XXX,XX +XXX,XX @@ static void do_minmax(unsigned vece, TCGv_vec r, TCGv_vec a,
29
@@ -XXX,XX +XXX,XX @@
15
TCGv_vec b, TCGOpcode opc, TCGCond cond)
30
#ifndef ACCEL_TCG_INTERNAL_COMMON_H
16
{
31
#define ACCEL_TCG_INTERNAL_COMMON_H
17
if (!do_op3(vece, r, a, b, opc)) {
32
18
+ const TCGOpcode *hold_list = tcg_swap_vecop_list(NULL);
33
+#include "exec/translation-block.h"
19
tcg_gen_cmpsel_vec(cond, vece, r, a, b, a, b);
34
+
20
+ tcg_swap_vecop_list(hold_list);
35
extern int64_t max_delay;
36
extern int64_t max_advance;
37
38
void dump_exec_info(GString *buf);
39
40
+/*
41
+ * Return true if CS is not running in parallel with other cpus, either
42
+ * because there are no other cpus or we are within an exclusive context.
43
+ */
44
+static inline bool cpu_in_serial_context(CPUState *cs)
45
+{
46
+ return !(cs->tcg_cflags & CF_PARALLEL) || cpu_in_exclusive_context(cs);
47
+}
48
+
49
#endif
50
diff --git a/accel/tcg/internal-target.h b/accel/tcg/internal-target.h
51
index XXXXXXX..XXXXXXX 100644
52
--- a/accel/tcg/internal-target.h
53
+++ b/accel/tcg/internal-target.h
54
@@ -XXX,XX +XXX,XX @@ static inline vaddr log_pc(CPUState *cpu, const TranslationBlock *tb)
21
}
55
}
22
}
56
}
23
57
58
-/*
59
- * Return true if CS is not running in parallel with other cpus, either
60
- * because there are no other cpus or we are within an exclusive context.
61
- */
62
-static inline bool cpu_in_serial_context(CPUState *cs)
63
-{
64
- return !(cs->tcg_cflags & CF_PARALLEL) || cpu_in_exclusive_context(cs);
65
-}
66
-
67
extern bool one_insn_per_tb;
68
69
/**
70
diff --git a/accel/tcg/cpu-exec-common.c b/accel/tcg/cpu-exec-common.c
71
index XXXXXXX..XXXXXXX 100644
72
--- a/accel/tcg/cpu-exec-common.c
73
+++ b/accel/tcg/cpu-exec-common.c
74
@@ -XXX,XX +XXX,XX @@
75
#include "qemu/osdep.h"
76
#include "sysemu/cpus.h"
77
#include "sysemu/tcg.h"
78
-#include "exec/exec-all.h"
79
#include "qemu/plugin.h"
80
-#include "internal-target.h"
81
+#include "internal-common.h"
82
83
bool tcg_allowed;
84
85
diff --git a/accel/tcg/cputlb.c b/accel/tcg/cputlb.c
86
index XXXXXXX..XXXXXXX 100644
87
--- a/accel/tcg/cputlb.c
88
+++ b/accel/tcg/cputlb.c
89
@@ -XXX,XX +XXX,XX @@
90
#include "exec/translate-all.h"
91
#include "trace.h"
92
#include "tb-hash.h"
93
+#include "internal-common.h"
94
#include "internal-target.h"
95
#ifdef CONFIG_PLUGIN
96
#include "qemu/plugin-memory.h"
97
diff --git a/accel/tcg/tb-maint.c b/accel/tcg/tb-maint.c
98
index XXXXXXX..XXXXXXX 100644
99
--- a/accel/tcg/tb-maint.c
100
+++ b/accel/tcg/tb-maint.c
101
@@ -XXX,XX +XXX,XX @@
102
#include "tcg/tcg.h"
103
#include "tb-hash.h"
104
#include "tb-context.h"
105
+#include "internal-common.h"
106
#include "internal-target.h"
107
108
109
diff --git a/accel/tcg/user-exec.c b/accel/tcg/user-exec.c
110
index XXXXXXX..XXXXXXX 100644
111
--- a/accel/tcg/user-exec.c
112
+++ b/accel/tcg/user-exec.c
113
@@ -XXX,XX +XXX,XX @@
114
#include "qemu/atomic128.h"
115
#include "trace/trace-root.h"
116
#include "tcg/tcg-ldst.h"
117
+#include "internal-common.h"
118
#include "internal-target.h"
119
120
__thread uintptr_t helper_retaddr;
121
diff --git a/accel/tcg/meson.build b/accel/tcg/meson.build
122
index XXXXXXX..XXXXXXX 100644
123
--- a/accel/tcg/meson.build
124
+++ b/accel/tcg/meson.build
125
@@ -XXX,XX +XXX,XX @@
126
tcg_ss = ss.source_set()
127
+common_ss.add(when: 'CONFIG_TCG', if_true: files(
128
+ 'cpu-exec-common.c',
129
+))
130
tcg_ss.add(files(
131
'tcg-all.c',
132
- 'cpu-exec-common.c',
133
'cpu-exec.c',
134
'tb-maint.c',
135
'tcg-runtime-gvec.c',
24
--
136
--
25
2.25.1
137
2.34.1
26
138
27
139
diff view generated by jsdifflib
New patch
1
We can load tcg_ctx just as easily within the callee.
1
2
3
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
4
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
5
---
6
include/tcg/tcg.h | 2 +-
7
accel/tcg/tcg-all.c | 2 +-
8
bsd-user/main.c | 2 +-
9
linux-user/main.c | 2 +-
10
tcg/tcg.c | 3 ++-
11
5 files changed, 6 insertions(+), 5 deletions(-)
12
13
diff --git a/include/tcg/tcg.h b/include/tcg/tcg.h
14
index XXXXXXX..XXXXXXX 100644
15
--- a/include/tcg/tcg.h
16
+++ b/include/tcg/tcg.h
17
@@ -XXX,XX +XXX,XX @@ static inline void *tcg_malloc(int size)
18
19
void tcg_init(size_t tb_size, int splitwx, unsigned max_cpus);
20
void tcg_register_thread(void);
21
-void tcg_prologue_init(TCGContext *s);
22
+void tcg_prologue_init(void);
23
void tcg_func_start(TCGContext *s);
24
25
int tcg_gen_code(TCGContext *s, TranslationBlock *tb, uint64_t pc_start);
26
diff --git a/accel/tcg/tcg-all.c b/accel/tcg/tcg-all.c
27
index XXXXXXX..XXXXXXX 100644
28
--- a/accel/tcg/tcg-all.c
29
+++ b/accel/tcg/tcg-all.c
30
@@ -XXX,XX +XXX,XX @@ static int tcg_init_machine(MachineState *ms)
31
* There's no guest base to take into account, so go ahead and
32
* initialize the prologue now.
33
*/
34
- tcg_prologue_init(tcg_ctx);
35
+ tcg_prologue_init();
36
#endif
37
38
return 0;
39
diff --git a/bsd-user/main.c b/bsd-user/main.c
40
index XXXXXXX..XXXXXXX 100644
41
--- a/bsd-user/main.c
42
+++ b/bsd-user/main.c
43
@@ -XXX,XX +XXX,XX @@ int main(int argc, char **argv)
44
* generating the prologue until now so that the prologue can take
45
* the real value of GUEST_BASE into account.
46
*/
47
- tcg_prologue_init(tcg_ctx);
48
+ tcg_prologue_init();
49
50
target_cpu_init(env, regs);
51
52
diff --git a/linux-user/main.c b/linux-user/main.c
53
index XXXXXXX..XXXXXXX 100644
54
--- a/linux-user/main.c
55
+++ b/linux-user/main.c
56
@@ -XXX,XX +XXX,XX @@ int main(int argc, char **argv, char **envp)
57
/* Now that we've loaded the binary, GUEST_BASE is fixed. Delay
58
generating the prologue until now so that the prologue can take
59
the real value of GUEST_BASE into account. */
60
- tcg_prologue_init(tcg_ctx);
61
+ tcg_prologue_init();
62
63
target_cpu_copy_regs(env, regs);
64
65
diff --git a/tcg/tcg.c b/tcg/tcg.c
66
index XXXXXXX..XXXXXXX 100644
67
--- a/tcg/tcg.c
68
+++ b/tcg/tcg.c
69
@@ -XXX,XX +XXX,XX @@ TranslationBlock *tcg_tb_alloc(TCGContext *s)
70
return tb;
71
}
72
73
-void tcg_prologue_init(TCGContext *s)
74
+void tcg_prologue_init(void)
75
{
76
+ TCGContext *s = tcg_ctx;
77
size_t prologue_size;
78
79
s->code_ptr = s->code_gen_ptr;
80
--
81
2.34.1
82
83
diff view generated by jsdifflib
New patch
1
1
The tcg/tcg.h header is a big bucket, containing stuff related to
2
the translators and the JIT backend. The places that initialize
3
tcg or create new threads do not need all of that, so split out
4
these three functions to a new header.
5
6
Suggested-by: Peter Maydell <peter.maydell@linaro.org>
7
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
8
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
9
---
10
include/tcg/startup.h | 58 +++++++++++++++++++++++++++++++++
11
include/tcg/tcg.h | 3 --
12
accel/tcg/tcg-accel-ops-mttcg.c | 2 +-
13
accel/tcg/tcg-accel-ops-rr.c | 2 +-
14
accel/tcg/tcg-all.c | 2 +-
15
bsd-user/main.c | 2 +-
16
linux-user/main.c | 2 +-
17
linux-user/syscall.c | 2 +-
18
tcg/tcg.c | 1 +
19
9 files changed, 65 insertions(+), 9 deletions(-)
20
create mode 100644 include/tcg/startup.h
21
22
diff --git a/include/tcg/startup.h b/include/tcg/startup.h
23
new file mode 100644
24
index XXXXXXX..XXXXXXX
25
--- /dev/null
26
+++ b/include/tcg/startup.h
27
@@ -XXX,XX +XXX,XX @@
28
+/*
29
+ * Tiny Code Generator for QEMU: definitions used by runtime startup
30
+ *
31
+ * Copyright (c) 2008 Fabrice Bellard
32
+ *
33
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
34
+ * of this software and associated documentation files (the "Software"), to deal
35
+ * in the Software without restriction, including without limitation the rights
36
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
37
+ * copies of the Software, and to permit persons to whom the Software is
38
+ * furnished to do so, subject to the following conditions:
39
+ *
40
+ * The above copyright notice and this permission notice shall be included in
41
+ * all copies or substantial portions of the Software.
42
+ *
43
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
44
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
45
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
46
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
47
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
48
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
49
+ * THE SOFTWARE.
50
+ */
51
+
52
+#ifndef TCG_STARTUP_H
53
+#define TCG_STARTUP_H
54
+
55
+/**
56
+ * tcg_init: Initialize the TCG runtime
57
+ * @tb_size: translation buffer size
58
+ * @splitwx: use separate rw and rx mappings
59
+ * @max_cpus: number of vcpus in system mode
60
+ *
61
+ * Allocate and initialize TCG resources, especially the JIT buffer.
62
+ * In user-only mode, @max_cpus is unused.
63
+ */
64
+void tcg_init(size_t tb_size, int splitwx, unsigned max_cpus);
65
+
66
+/**
67
+ * tcg_register_thread: Register this thread with the TCG runtime
68
+ *
69
+ * All TCG threads except the parent (i.e. the one that called the TCG
70
+ * accelerator's init_machine() method) must register with this
71
+ * function before initiating translation.
72
+ */
73
+void tcg_register_thread(void);
74
+
75
+/**
76
+ * tcg_prologue_init(): Generate the code for the TCG prologue
77
+ *
78
+ * In softmmu this is done automatically as part of the TCG
79
+ * accelerator's init_machine() method, but for user-mode, the
80
+ * user-mode code must call this function after it has loaded
81
+ * the guest binary and the value of guest_base is known.
82
+ */
83
+void tcg_prologue_init(void);
84
+
85
+#endif
86
diff --git a/include/tcg/tcg.h b/include/tcg/tcg.h
87
index XXXXXXX..XXXXXXX 100644
88
--- a/include/tcg/tcg.h
89
+++ b/include/tcg/tcg.h
90
@@ -XXX,XX +XXX,XX @@ static inline void *tcg_malloc(int size)
91
}
92
}
93
94
-void tcg_init(size_t tb_size, int splitwx, unsigned max_cpus);
95
-void tcg_register_thread(void);
96
-void tcg_prologue_init(void);
97
void tcg_func_start(TCGContext *s);
98
99
int tcg_gen_code(TCGContext *s, TranslationBlock *tb, uint64_t pc_start);
100
diff --git a/accel/tcg/tcg-accel-ops-mttcg.c b/accel/tcg/tcg-accel-ops-mttcg.c
101
index XXXXXXX..XXXXXXX 100644
102
--- a/accel/tcg/tcg-accel-ops-mttcg.c
103
+++ b/accel/tcg/tcg-accel-ops-mttcg.c
104
@@ -XXX,XX +XXX,XX @@
105
#include "qemu/guest-random.h"
106
#include "exec/exec-all.h"
107
#include "hw/boards.h"
108
-#include "tcg/tcg.h"
109
+#include "tcg/startup.h"
110
#include "tcg-accel-ops.h"
111
#include "tcg-accel-ops-mttcg.h"
112
113
diff --git a/accel/tcg/tcg-accel-ops-rr.c b/accel/tcg/tcg-accel-ops-rr.c
114
index XXXXXXX..XXXXXXX 100644
115
--- a/accel/tcg/tcg-accel-ops-rr.c
116
+++ b/accel/tcg/tcg-accel-ops-rr.c
117
@@ -XXX,XX +XXX,XX @@
118
#include "qemu/notify.h"
119
#include "qemu/guest-random.h"
120
#include "exec/exec-all.h"
121
-#include "tcg/tcg.h"
122
+#include "tcg/startup.h"
123
#include "tcg-accel-ops.h"
124
#include "tcg-accel-ops-rr.h"
125
#include "tcg-accel-ops-icount.h"
126
diff --git a/accel/tcg/tcg-all.c b/accel/tcg/tcg-all.c
127
index XXXXXXX..XXXXXXX 100644
128
--- a/accel/tcg/tcg-all.c
129
+++ b/accel/tcg/tcg-all.c
130
@@ -XXX,XX +XXX,XX @@
131
#include "sysemu/tcg.h"
132
#include "exec/replay-core.h"
133
#include "sysemu/cpu-timers.h"
134
-#include "tcg/tcg.h"
135
+#include "tcg/startup.h"
136
#include "tcg/oversized-guest.h"
137
#include "qapi/error.h"
138
#include "qemu/error-report.h"
139
diff --git a/bsd-user/main.c b/bsd-user/main.c
140
index XXXXXXX..XXXXXXX 100644
141
--- a/bsd-user/main.c
142
+++ b/bsd-user/main.c
143
@@ -XXX,XX +XXX,XX @@
144
#include "qemu/help_option.h"
145
#include "qemu/module.h"
146
#include "exec/exec-all.h"
147
-#include "tcg/tcg.h"
148
+#include "tcg/startup.h"
149
#include "qemu/timer.h"
150
#include "qemu/envlist.h"
151
#include "qemu/cutils.h"
152
diff --git a/linux-user/main.c b/linux-user/main.c
153
index XXXXXXX..XXXXXXX 100644
154
--- a/linux-user/main.c
155
+++ b/linux-user/main.c
156
@@ -XXX,XX +XXX,XX @@
157
#include "exec/exec-all.h"
158
#include "exec/gdbstub.h"
159
#include "gdbstub/user.h"
160
-#include "tcg/tcg.h"
161
+#include "tcg/startup.h"
162
#include "qemu/timer.h"
163
#include "qemu/envlist.h"
164
#include "qemu/guest-random.h"
165
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
166
index XXXXXXX..XXXXXXX 100644
167
--- a/linux-user/syscall.c
168
+++ b/linux-user/syscall.c
169
@@ -XXX,XX +XXX,XX @@
170
#include "qemu/memfd.h"
171
#include "qemu/queue.h"
172
#include "qemu/plugin.h"
173
+#include "tcg/startup.h"
174
#include "target_mman.h"
175
#include <elf.h>
176
#include <endian.h>
177
@@ -XXX,XX +XXX,XX @@
178
#include "special-errno.h"
179
#include "qapi/error.h"
180
#include "fd-trans.h"
181
-#include "tcg/tcg.h"
182
#include "cpu_loop-common.h"
183
184
#ifndef CLONE_IO
185
diff --git a/tcg/tcg.c b/tcg/tcg.c
186
index XXXXXXX..XXXXXXX 100644
187
--- a/tcg/tcg.c
188
+++ b/tcg/tcg.c
189
@@ -XXX,XX +XXX,XX @@
190
#include "qemu/timer.h"
191
#include "exec/translation-block.h"
192
#include "exec/tlb-common.h"
193
+#include "tcg/startup.h"
194
#include "tcg/tcg-op-common.h"
195
196
#if UINTPTR_MAX == UINT32_MAX
197
--
198
2.34.1
199
200
diff view generated by jsdifflib
New patch
1
Use abi_ullong not uint64_t so that the alignment of the field
2
and therefore the layout of the struct is correct.
1
3
4
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
5
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6
---
7
linux-user/hppa/signal.c | 2 +-
8
1 file changed, 1 insertion(+), 1 deletion(-)
9
10
diff --git a/linux-user/hppa/signal.c b/linux-user/hppa/signal.c
11
index XXXXXXX..XXXXXXX 100644
12
--- a/linux-user/hppa/signal.c
13
+++ b/linux-user/hppa/signal.c
14
@@ -XXX,XX +XXX,XX @@
15
struct target_sigcontext {
16
abi_ulong sc_flags;
17
abi_ulong sc_gr[32];
18
- uint64_t sc_fr[32];
19
+ abi_ullong sc_fr[32];
20
abi_ulong sc_iasq[2];
21
abi_ulong sc_iaoq[2];
22
abi_ulong sc_sar;
23
--
24
2.34.1
25
26
diff view generated by jsdifflib
New patch
1
1
This build option has been deprecated since 8.0.
2
Remove all CONFIG_GPROF code that depends on that,
3
including one errant check using TARGET_GPROF.
4
5
Acked-by: Alex Bennée <alex.bennee@linaro.org>
6
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
7
Acked-by: Paolo Bonzini <pbonzini@redhat.com>
8
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
9
---
10
docs/about/deprecated.rst | 14 --------------
11
meson.build | 12 ------------
12
bsd-user/bsd-proc.h | 3 ---
13
bsd-user/signal.c | 5 -----
14
linux-user/exit.c | 6 ------
15
linux-user/signal.c | 5 -----
16
meson_options.txt | 3 ---
17
scripts/meson-buildoptions.sh | 3 ---
18
tests/qemu-iotests/meson.build | 2 +-
19
9 files changed, 1 insertion(+), 52 deletions(-)
20
21
diff --git a/docs/about/deprecated.rst b/docs/about/deprecated.rst
22
index XXXXXXX..XXXXXXX 100644
23
--- a/docs/about/deprecated.rst
24
+++ b/docs/about/deprecated.rst
25
@@ -XXX,XX +XXX,XX @@ they were first deprecated in the 2.10.0 release.
26
What follows is a list of all features currently marked as
27
deprecated.
28
29
-Build options
30
--------------
31
-
32
-``gprof`` builds (since 8.0)
33
-''''''''''''''''''''''''''''
34
-
35
-The ``--enable-gprof`` configure setting relies on compiler
36
-instrumentation to gather its data which can distort the generated
37
-profile. As other non-instrumenting tools are available that give a
38
-more holistic view of the system with non-instrumented binaries we are
39
-deprecating the build option and no longer defend it in CI. The
40
-``--enable-gcov`` build option remains for analysis test case
41
-coverage.
42
-
43
System emulator command line arguments
44
--------------------------------------
45
46
diff --git a/meson.build b/meson.build
47
index XXXXXXX..XXXXXXX 100644
48
--- a/meson.build
49
+++ b/meson.build
50
@@ -XXX,XX +XXX,XX @@ if host_arch == 'i386' and not cc.links('''
51
qemu_common_flags = ['-march=i486'] + qemu_common_flags
52
endif
53
54
-if get_option('gprof')
55
- qemu_common_flags += ['-p']
56
- qemu_ldflags += ['-p']
57
-endif
58
-
59
if get_option('prefer_static')
60
qemu_ldflags += get_option('b_pie') ? '-static-pie' : '-static'
61
endif
62
@@ -XXX,XX +XXX,XX @@ config_host_data.set('CONFIG_DEBUG_GRAPH_LOCK', get_option('debug_graph_lock'))
63
config_host_data.set('CONFIG_DEBUG_MUTEX', get_option('debug_mutex'))
64
config_host_data.set('CONFIG_DEBUG_STACK_USAGE', get_option('debug_stack_usage'))
65
config_host_data.set('CONFIG_DEBUG_TCG', get_option('debug_tcg'))
66
-config_host_data.set('CONFIG_GPROF', get_option('gprof'))
67
config_host_data.set('CONFIG_LIVE_BLOCK_MIGRATION', get_option('live_block_migration').allowed())
68
config_host_data.set('CONFIG_QOM_CAST_DEBUG', get_option('qom_cast_debug'))
69
config_host_data.set('CONFIG_REPLICATION', get_option('replication').allowed())
70
@@ -XXX,XX +XXX,XX @@ summary_info += {'memory allocator': get_option('malloc')}
71
summary_info += {'avx2 optimization': config_host_data.get('CONFIG_AVX2_OPT')}
72
summary_info += {'avx512bw optimization': config_host_data.get('CONFIG_AVX512BW_OPT')}
73
summary_info += {'avx512f optimization': config_host_data.get('CONFIG_AVX512F_OPT')}
74
-if get_option('gprof')
75
- gprof_info = 'YES (deprecated)'
76
-else
77
- gprof_info = get_option('gprof')
78
-endif
79
-summary_info += {'gprof': gprof_info}
80
summary_info += {'gcov': get_option('b_coverage')}
81
summary_info += {'thread sanitizer': get_option('tsan')}
82
summary_info += {'CFI support': get_option('cfi')}
83
diff --git a/bsd-user/bsd-proc.h b/bsd-user/bsd-proc.h
84
index XXXXXXX..XXXXXXX 100644
85
--- a/bsd-user/bsd-proc.h
86
+++ b/bsd-user/bsd-proc.h
87
@@ -XXX,XX +XXX,XX @@
88
/* exit(2) */
89
static inline abi_long do_bsd_exit(void *cpu_env, abi_long arg1)
90
{
91
-#ifdef TARGET_GPROF
92
- _mcleanup();
93
-#endif
94
gdb_exit(arg1);
95
qemu_plugin_user_exit();
96
_exit(arg1);
97
diff --git a/bsd-user/signal.c b/bsd-user/signal.c
98
index XXXXXXX..XXXXXXX 100644
99
--- a/bsd-user/signal.c
100
+++ b/bsd-user/signal.c
101
@@ -XXX,XX +XXX,XX @@ void signal_init(void)
102
act.sa_flags = SA_SIGINFO;
103
104
for (i = 1; i <= TARGET_NSIG; i++) {
105
-#ifdef CONFIG_GPROF
106
- if (i == TARGET_SIGPROF) {
107
- continue;
108
- }
109
-#endif
110
host_sig = target_to_host_signal(i);
111
sigaction(host_sig, NULL, &oact);
112
if (oact.sa_sigaction == (void *)SIG_IGN) {
113
diff --git a/linux-user/exit.c b/linux-user/exit.c
114
index XXXXXXX..XXXXXXX 100644
115
--- a/linux-user/exit.c
116
+++ b/linux-user/exit.c
117
@@ -XXX,XX +XXX,XX @@
118
#include "qemu.h"
119
#include "user-internals.h"
120
#include "qemu/plugin.h"
121
-#ifdef CONFIG_GPROF
122
-#include <sys/gmon.h>
123
-#endif
124
125
#ifdef CONFIG_GCOV
126
extern void __gcov_dump(void);
127
@@ -XXX,XX +XXX,XX @@ extern void __gcov_dump(void);
128
129
void preexit_cleanup(CPUArchState *env, int code)
130
{
131
-#ifdef CONFIG_GPROF
132
- _mcleanup();
133
-#endif
134
#ifdef CONFIG_GCOV
135
__gcov_dump();
136
#endif
137
diff --git a/linux-user/signal.c b/linux-user/signal.c
138
index XXXXXXX..XXXXXXX 100644
139
--- a/linux-user/signal.c
140
+++ b/linux-user/signal.c
141
@@ -XXX,XX +XXX,XX @@ void signal_init(void)
142
act.sa_flags = SA_SIGINFO;
143
act.sa_sigaction = host_signal_handler;
144
for(i = 1; i <= TARGET_NSIG; i++) {
145
-#ifdef CONFIG_GPROF
146
- if (i == TARGET_SIGPROF) {
147
- continue;
148
- }
149
-#endif
150
host_sig = target_to_host_signal(i);
151
sigaction(host_sig, NULL, &oact);
152
if (oact.sa_sigaction == (void *)SIG_IGN) {
153
diff --git a/meson_options.txt b/meson_options.txt
154
index XXXXXXX..XXXXXXX 100644
155
--- a/meson_options.txt
156
+++ b/meson_options.txt
157
@@ -XXX,XX +XXX,XX @@ option('debug_stack_usage', type: 'boolean', value: false,
158
description: 'measure coroutine stack usage')
159
option('qom_cast_debug', type: 'boolean', value: true,
160
description: 'cast debugging support')
161
-option('gprof', type: 'boolean', value: false,
162
- description: 'QEMU profiling with gprof',
163
- deprecated: true)
164
option('slirp_smbd', type : 'feature', value : 'auto',
165
description: 'use smbd (at path --smbd=*) in slirp networking')
166
167
diff --git a/scripts/meson-buildoptions.sh b/scripts/meson-buildoptions.sh
168
index XXXXXXX..XXXXXXX 100644
169
--- a/scripts/meson-buildoptions.sh
170
+++ b/scripts/meson-buildoptions.sh
171
@@ -XXX,XX +XXX,XX @@ meson_options_help() {
172
printf "%s\n" ' (choices: auto/disabled/enabled/internal/system)'
173
printf "%s\n" ' --enable-fuzzing build fuzzing targets'
174
printf "%s\n" ' --enable-gcov Enable coverage tracking.'
175
- printf "%s\n" ' --enable-gprof QEMU profiling with gprof'
176
printf "%s\n" ' --enable-lto Use link time optimization'
177
printf "%s\n" ' --enable-malloc=CHOICE choose memory allocator to use [system] (choices:'
178
printf "%s\n" ' jemalloc/system/tcmalloc)'
179
@@ -XXX,XX +XXX,XX @@ _meson_option_parse() {
180
--disable-glusterfs) printf "%s" -Dglusterfs=disabled ;;
181
--enable-gnutls) printf "%s" -Dgnutls=enabled ;;
182
--disable-gnutls) printf "%s" -Dgnutls=disabled ;;
183
- --enable-gprof) printf "%s" -Dgprof=true ;;
184
- --disable-gprof) printf "%s" -Dgprof=false ;;
185
--enable-gtk) printf "%s" -Dgtk=enabled ;;
186
--disable-gtk) printf "%s" -Dgtk=disabled ;;
187
--enable-gtk-clipboard) printf "%s" -Dgtk_clipboard=enabled ;;
188
diff --git a/tests/qemu-iotests/meson.build b/tests/qemu-iotests/meson.build
189
index XXXXXXX..XXXXXXX 100644
190
--- a/tests/qemu-iotests/meson.build
191
+++ b/tests/qemu-iotests/meson.build
192
@@ -XXX,XX +XXX,XX @@
193
-if not have_tools or targetos == 'windows' or get_option('gprof')
194
+if not have_tools or targetos == 'windows'
195
subdir_done()
196
endif
197
198
--
199
2.34.1
200
201
diff view generated by jsdifflib
New patch
1
1
From: Philippe Mathieu-Daudé <philmd@linaro.org>
2
3
Commit 18a536f1f8 ("accel/tcg: Always require can_do_io") fixed
4
the GitLab issue #1884: we can now re-enable those tests.
5
6
This reverts commit f959c3d87ccfa585b105de6964a6261e368cc1da.
7
8
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
9
Acked-by: Alex Bennée <alex.bennee@linaro.org>
10
Message-Id: <20231003063808.66564-1-philmd@linaro.org>
11
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
12
---
13
tests/avocado/boot_linux_console.py | 7 -------
14
tests/avocado/machine_mips_malta.py | 6 ------
15
tests/avocado/replay_kernel.py | 7 -------
16
tests/avocado/tuxrun_baselines.py | 4 ----
17
4 files changed, 24 deletions(-)
18
19
diff --git a/tests/avocado/boot_linux_console.py b/tests/avocado/boot_linux_console.py
20
index XXXXXXX..XXXXXXX 100644
21
--- a/tests/avocado/boot_linux_console.py
22
+++ b/tests/avocado/boot_linux_console.py
23
@@ -XXX,XX +XXX,XX @@ def test_x86_64_pc(self):
24
console_pattern = 'Kernel command line: %s' % kernel_command_line
25
self.wait_for_console_pattern(console_pattern)
26
27
- @skip('https://gitlab.com/qemu-project/qemu/-/issues/1884')
28
def test_mips_malta(self):
29
"""
30
:avocado: tags=arch:mips
31
@@ -XXX,XX +XXX,XX @@ def test_mips_malta(self):
32
console_pattern = 'Kernel command line: %s' % kernel_command_line
33
self.wait_for_console_pattern(console_pattern)
34
35
- @skip('https://gitlab.com/qemu-project/qemu/-/issues/1884')
36
def test_mips64el_malta(self):
37
"""
38
This test requires the ar tool to extract "data.tar.gz" from
39
@@ -XXX,XX +XXX,XX @@ def test_mips64el_fuloong2e(self):
40
console_pattern = 'Kernel command line: %s' % kernel_command_line
41
self.wait_for_console_pattern(console_pattern)
42
43
- @skip('https://gitlab.com/qemu-project/qemu/-/issues/1884')
44
def test_mips_malta_cpio(self):
45
"""
46
:avocado: tags=arch:mips
47
@@ -XXX,XX +XXX,XX @@ def test_mips_malta_cpio(self):
48
# Wait for VM to shut down gracefully
49
self.vm.wait()
50
51
- @skip('https://gitlab.com/qemu-project/qemu/-/issues/1884')
52
@skipUnless(os.getenv('AVOCADO_ALLOW_UNTRUSTED_CODE'), 'untrusted code')
53
def test_mips64el_malta_5KEc_cpio(self):
54
"""
55
@@ -XXX,XX +XXX,XX @@ def do_test_mips_malta32el_nanomips(self, kernel_url, kernel_hash):
56
console_pattern = 'Kernel command line: %s' % kernel_command_line
57
self.wait_for_console_pattern(console_pattern)
58
59
- @skip('https://gitlab.com/qemu-project/qemu/-/issues/1884')
60
def test_mips_malta32el_nanomips_4k(self):
61
"""
62
:avocado: tags=arch:mipsel
63
@@ -XXX,XX +XXX,XX @@ def test_mips_malta32el_nanomips_4k(self):
64
kernel_hash = '477456aafd2a0f1ddc9482727f20fe9575565dd6'
65
self.do_test_mips_malta32el_nanomips(kernel_url, kernel_hash)
66
67
- @skip('https://gitlab.com/qemu-project/qemu/-/issues/1884')
68
def test_mips_malta32el_nanomips_16k_up(self):
69
"""
70
:avocado: tags=arch:mipsel
71
@@ -XXX,XX +XXX,XX @@ def test_mips_malta32el_nanomips_16k_up(self):
72
kernel_hash = 'e882868f944c71c816e832e2303b7874d044a7bc'
73
self.do_test_mips_malta32el_nanomips(kernel_url, kernel_hash)
74
75
- @skip('https://gitlab.com/qemu-project/qemu/-/issues/1884')
76
def test_mips_malta32el_nanomips_64k_dbg(self):
77
"""
78
:avocado: tags=arch:mipsel
79
diff --git a/tests/avocado/machine_mips_malta.py b/tests/avocado/machine_mips_malta.py
80
index XXXXXXX..XXXXXXX 100644
81
--- a/tests/avocado/machine_mips_malta.py
82
+++ b/tests/avocado/machine_mips_malta.py
83
@@ -XXX,XX +XXX,XX @@
84
import gzip
85
import logging
86
87
-from avocado import skip
88
from avocado import skipIf
89
from avocado import skipUnless
90
from avocado.utils import archive
91
@@ -XXX,XX +XXX,XX @@ def do_test_i6400_framebuffer_logo(self, cpu_cores_count):
92
cv2.imwrite(debug_png, screendump_bgr)
93
self.assertGreaterEqual(tuxlogo_count, cpu_cores_count)
94
95
- @skip('https://gitlab.com/qemu-project/qemu/-/issues/1884')
96
def test_mips_malta_i6400_framebuffer_logo_1core(self):
97
"""
98
:avocado: tags=arch:mips64el
99
@@ -XXX,XX +XXX,XX @@ def test_mips_malta_i6400_framebuffer_logo_1core(self):
100
"""
101
self.do_test_i6400_framebuffer_logo(1)
102
103
- @skip('https://gitlab.com/qemu-project/qemu/-/issues/1884')
104
@skipIf(os.getenv('GITLAB_CI'), 'Running on GitLab')
105
def test_mips_malta_i6400_framebuffer_logo_7cores(self):
106
"""
107
@@ -XXX,XX +XXX,XX @@ def test_mips_malta_i6400_framebuffer_logo_7cores(self):
108
"""
109
self.do_test_i6400_framebuffer_logo(7)
110
111
- @skip('https://gitlab.com/qemu-project/qemu/-/issues/1884')
112
@skipIf(os.getenv('GITLAB_CI'), 'Running on GitLab')
113
def test_mips_malta_i6400_framebuffer_logo_8cores(self):
114
"""
115
@@ -XXX,XX +XXX,XX @@ def do_test_yamon(self):
116
wait_for_console_pattern(self, prompt)
117
self.vm.shutdown()
118
119
- @skip('https://gitlab.com/qemu-project/qemu/-/issues/1884')
120
def test_mipsel_malta_yamon(self):
121
"""
122
:avocado: tags=arch:mipsel
123
@@ -XXX,XX +XXX,XX @@ def test_mipsel_malta_yamon(self):
124
"""
125
self.do_test_yamon()
126
127
- @skip('https://gitlab.com/qemu-project/qemu/-/issues/1884')
128
def test_mips64el_malta_yamon(self):
129
"""
130
:avocado: tags=arch:mips64el
131
diff --git a/tests/avocado/replay_kernel.py b/tests/avocado/replay_kernel.py
132
index XXXXXXX..XXXXXXX 100644
133
--- a/tests/avocado/replay_kernel.py
134
+++ b/tests/avocado/replay_kernel.py
135
@@ -XXX,XX +XXX,XX @@ def test_x86_64_pc(self):
136
137
self.run_rr(kernel_path, kernel_command_line, console_pattern, shift=5)
138
139
- @skip('https://gitlab.com/qemu-project/qemu/-/issues/1884')
140
def test_mips_malta(self):
141
"""
142
:avocado: tags=arch:mips
143
@@ -XXX,XX +XXX,XX @@ def test_mips_malta(self):
144
145
self.run_rr(kernel_path, kernel_command_line, console_pattern, shift=5)
146
147
- @skip('https://gitlab.com/qemu-project/qemu/-/issues/1884')
148
def test_mips64el_malta(self):
149
"""
150
This test requires the ar tool to extract "data.tar.gz" from
151
@@ -XXX,XX +XXX,XX @@ class ReplayKernelSlow(ReplayKernelBase):
152
# making it very slow.
153
timeout = 180
154
155
- @skip('https://gitlab.com/qemu-project/qemu/-/issues/1884')
156
def test_mips_malta_cpio(self):
157
"""
158
:avocado: tags=arch:mips
159
@@ -XXX,XX +XXX,XX @@ def test_mips_malta_cpio(self):
160
self.run_rr(kernel_path, kernel_command_line, console_pattern, shift=5,
161
args=('-initrd', initrd_path))
162
163
- @skip('https://gitlab.com/qemu-project/qemu/-/issues/1884')
164
@skipUnless(os.getenv('AVOCADO_ALLOW_UNTRUSTED_CODE'), 'untrusted code')
165
def test_mips64el_malta_5KEc_cpio(self):
166
"""
167
@@ -XXX,XX +XXX,XX @@ def do_test_mips_malta32el_nanomips(self, kernel_path_xz):
168
console_pattern = 'Kernel command line: %s' % kernel_command_line
169
self.run_rr(kernel_path, kernel_command_line, console_pattern, shift=5)
170
171
- @skip('https://gitlab.com/qemu-project/qemu/-/issues/1884')
172
def test_mips_malta32el_nanomips_4k(self):
173
"""
174
:avocado: tags=arch:mipsel
175
@@ -XXX,XX +XXX,XX @@ def test_mips_malta32el_nanomips_4k(self):
176
kernel_path_xz = self.fetch_asset(kernel_url, asset_hash=kernel_hash)
177
self.do_test_mips_malta32el_nanomips(kernel_path_xz)
178
179
- @skip('https://gitlab.com/qemu-project/qemu/-/issues/1884')
180
def test_mips_malta32el_nanomips_16k_up(self):
181
"""
182
:avocado: tags=arch:mipsel
183
@@ -XXX,XX +XXX,XX @@ def test_mips_malta32el_nanomips_16k_up(self):
184
kernel_path_xz = self.fetch_asset(kernel_url, asset_hash=kernel_hash)
185
self.do_test_mips_malta32el_nanomips(kernel_path_xz)
186
187
- @skip('https://gitlab.com/qemu-project/qemu/-/issues/1884')
188
def test_mips_malta32el_nanomips_64k_dbg(self):
189
"""
190
:avocado: tags=arch:mipsel
191
diff --git a/tests/avocado/tuxrun_baselines.py b/tests/avocado/tuxrun_baselines.py
192
index XXXXXXX..XXXXXXX 100644
193
--- a/tests/avocado/tuxrun_baselines.py
194
+++ b/tests/avocado/tuxrun_baselines.py
195
@@ -XXX,XX +XXX,XX @@ def test_i386(self):
196
197
self.common_tuxrun(csums=sums, drive="virtio-blk-pci")
198
199
- @skip('https://gitlab.com/qemu-project/qemu/-/issues/1884')
200
def test_mips32(self):
201
"""
202
:avocado: tags=arch:mips
203
@@ -XXX,XX +XXX,XX @@ def test_mips32(self):
204
205
self.common_tuxrun(csums=sums, drive="driver=ide-hd,bus=ide.0,unit=0")
206
207
- @skip('https://gitlab.com/qemu-project/qemu/-/issues/1884')
208
def test_mips32el(self):
209
"""
210
:avocado: tags=arch:mipsel
211
@@ -XXX,XX +XXX,XX @@ def test_mips32el(self):
212
213
self.common_tuxrun(csums=sums, drive="driver=ide-hd,bus=ide.0,unit=0")
214
215
- @skip('https://gitlab.com/qemu-project/qemu/-/issues/1884')
216
def test_mips64(self):
217
"""
218
:avocado: tags=arch:mips64
219
@@ -XXX,XX +XXX,XX @@ def test_mips64(self):
220
221
self.common_tuxrun(csums=sums, drive="driver=ide-hd,bus=ide.0,unit=0")
222
223
- @skip('https://gitlab.com/qemu-project/qemu/-/issues/1884')
224
def test_mips64el(self):
225
"""
226
:avocado: tags=arch:mips64el
227
--
228
2.34.1
229
230
diff view generated by jsdifflib
New patch
1
From: gaosong <gaosong@loongson.cn>
1
2
3
Fix:
4
5
In file included from ../tcg/tcg.c:735:
6
/home1/gaosong/bugfix/qemu/tcg/loongarch64/tcg-target.c.inc: In function ‘tcg_out_vec_op’:
7
/home1/gaosong/bugfix/qemu/tcg/loongarch64/tcg-target.c.inc:1855:9: error: a label can only be part of a statement and a declaration is not a statement
8
TCGCond cond = args[3];
9
^~~~~~~
10
11
Signed-off-by: gaosong <gaosong@loongson.cn>
12
Message-Id: <20230926075819.3602537-1-gaosong@loongson.cn>
13
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
14
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
15
---
16
tcg/loongarch64/tcg-target.c.inc | 68 ++++++++++++++++----------------
17
1 file changed, 35 insertions(+), 33 deletions(-)
18
19
diff --git a/tcg/loongarch64/tcg-target.c.inc b/tcg/loongarch64/tcg-target.c.inc
20
index XXXXXXX..XXXXXXX 100644
21
--- a/tcg/loongarch64/tcg-target.c.inc
22
+++ b/tcg/loongarch64/tcg-target.c.inc
23
@@ -XXX,XX +XXX,XX @@ static void tcg_out_vec_op(TCGContext *s, TCGOpcode opc,
24
tcg_out_opc_vnor_v(s, a0, a1, a1);
25
break;
26
case INDEX_op_cmp_vec:
27
- TCGCond cond = args[3];
28
- if (const_args[2]) {
29
- /*
30
- * cmp_vec dest, src, value
31
- * Try vseqi/vslei/vslti
32
- */
33
- int64_t value = sextract64(a2, 0, 8 << vece);
34
- if ((cond == TCG_COND_EQ || cond == TCG_COND_LE || \
35
- cond == TCG_COND_LT) && (-0x10 <= value && value <= 0x0f)) {
36
- tcg_out32(s, encode_vdvjsk5_insn(cmp_vec_imm_insn[cond][vece], \
37
- a0, a1, value));
38
- break;
39
- } else if ((cond == TCG_COND_LEU || cond == TCG_COND_LTU) &&
40
- (0x00 <= value && value <= 0x1f)) {
41
- tcg_out32(s, encode_vdvjuk5_insn(cmp_vec_imm_insn[cond][vece], \
42
- a0, a1, value));
43
- break;
44
+ {
45
+ TCGCond cond = args[3];
46
+ if (const_args[2]) {
47
+ /*
48
+ * cmp_vec dest, src, value
49
+ * Try vseqi/vslei/vslti
50
+ */
51
+ int64_t value = sextract64(a2, 0, 8 << vece);
52
+ if ((cond == TCG_COND_EQ || cond == TCG_COND_LE || \
53
+ cond == TCG_COND_LT) && (-0x10 <= value && value <= 0x0f)) {
54
+ tcg_out32(s, encode_vdvjsk5_insn(cmp_vec_imm_insn[cond][vece], \
55
+ a0, a1, value));
56
+ break;
57
+ } else if ((cond == TCG_COND_LEU || cond == TCG_COND_LTU) &&
58
+ (0x00 <= value && value <= 0x1f)) {
59
+ tcg_out32(s, encode_vdvjuk5_insn(cmp_vec_imm_insn[cond][vece], \
60
+ a0, a1, value));
61
+ break;
62
+ }
63
+
64
+ /*
65
+ * Fallback to:
66
+ * dupi_vec temp, a2
67
+ * cmp_vec a0, a1, temp, cond
68
+ */
69
+ tcg_out_dupi_vec(s, type, vece, temp_vec, a2);
70
+ a2 = temp_vec;
71
}
72
73
- /*
74
- * Fallback to:
75
- * dupi_vec temp, a2
76
- * cmp_vec a0, a1, temp, cond
77
- */
78
- tcg_out_dupi_vec(s, type, vece, temp_vec, a2);
79
- a2 = temp_vec;
80
- }
81
-
82
- insn = cmp_vec_insn[cond][vece];
83
- if (insn == 0) {
84
- TCGArg t;
85
- t = a1, a1 = a2, a2 = t;
86
- cond = tcg_swap_cond(cond);
87
insn = cmp_vec_insn[cond][vece];
88
- tcg_debug_assert(insn != 0);
89
+ if (insn == 0) {
90
+ TCGArg t;
91
+ t = a1, a1 = a2, a2 = t;
92
+ cond = tcg_swap_cond(cond);
93
+ insn = cmp_vec_insn[cond][vece];
94
+ tcg_debug_assert(insn != 0);
95
+ }
96
+ tcg_out32(s, encode_vdvjvk_insn(insn, a0, a1, a2));
97
}
98
- tcg_out32(s, encode_vdvjvk_insn(insn, a0, a1, a2));
99
break;
100
case INDEX_op_add_vec:
101
tcg_out_addsub_vec(s, vece, a0, a1, a2, const_args[2], true);
102
--
103
2.34.1
104
105
diff view generated by jsdifflib