1
The following changes since commit da1034094d375afe9e3d8ec8980550ea0f06f7e0:
1
The following changes since commit 66a6aa8f9a56a6317e074b1f5e269fecdf4ad782:
2
2
3
Merge tag 'for-upstream' of https://gitlab.com/bonzini/qemu into staging (2023-10-03 07:43:44 -0400)
3
Merge tag 'vfio-updates-20230307.1' of https://gitlab.com/alex.williamson/qemu into staging (2023-03-09 15:19:44 +0000)
4
4
5
are available in the Git repository at:
5
are available in the Git repository at:
6
6
7
https://gitlab.com/rth7680/qemu.git tags/pull-tcg-20231003
7
https://gitlab.com/rth7680/qemu.git tags/pull-tcg-20230309
8
8
9
for you to fetch changes up to 971537eca2e6c7aaf185bbf10d4cbd84cf9d8a38:
9
for you to fetch changes up to 29fc660789547ceb5d6565e7fc39d8c1f65dd157:
10
10
11
tcg/loongarch64: Fix buid error (2023-10-03 08:53:17 -0700)
11
tcg: Drop tcg_const_* (2023-03-09 11:55:56 -0800)
12
12
13
----------------------------------------------------------------
13
----------------------------------------------------------------
14
accel: Introduce AccelClass::cpu_common_[un]realize
14
accel/tcg: Fix NB_MMU_MODES to 16
15
accel: Target agnostic code movement
15
Balance of the target/ patchset which eliminates tcg_temp_free
16
accel/tcg: Cleanups to use CPUState instead of CPUArchState
16
Balance of the target/ patchset which eliminates tcg_const
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
21
17
22
----------------------------------------------------------------
18
----------------------------------------------------------------
23
Anton Johansson (9):
19
Anton Johansson (23):
24
target/arm: Replace TARGET_PAGE_ENTRY_EXTRA
20
include/exec: Set default `NB_MMU_MODES` to 16
25
accel/tcg: Modify tlb_*() to use CPUState
21
target/alpha: Remove `NB_MMU_MODES` define
26
accel/tcg: Modify probe_access_internal() to use CPUState
22
target/arm: Remove `NB_MMU_MODES` define
27
accel/tcg: Modify memory access functions to use CPUState
23
target/avr: Remove `NB_MMU_MODES` define
28
accel/tcg: Modify atomic_mmu_lookup() to use CPUState
24
target/cris: Remove `NB_MMU_MODES` define
29
accel/tcg: Use CPUState in atomicity helpers
25
target/hexagon: Remove `NB_MMU_MODES` define
30
accel/tcg: Remove env_tlb()
26
target/hppa: Remove `NB_MMU_MODES` define
31
accel/tcg: Unify user and softmmu do_[st|ld]*_mmu()
27
target/i386: Remove `NB_MMU_MODES` define
32
accel/tcg: move ld/st helpers to ldst_common.c.inc
28
target/loongarch: Remove `NB_MMU_MODES` define
29
target/m68k: Remove `NB_MMU_MODES` define
30
target/microblaze: Remove `NB_MMU_MODES` define
31
target/mips: Remove `NB_MMU_MODES` define
32
target/nios2: Remove `NB_MMU_MODES` define
33
target/openrisc: Remove `NB_MMU_MODES` define
34
target/ppc: Remove `NB_MMU_MODES` define
35
target/riscv: Remove `NB_MMU_MODES` define
36
target/rx: Remove `NB_MMU_MODES` define
37
target/s390x: Remove `NB_MMU_MODES` define
38
target/sh4: Remove `NB_MMU_MODES` define
39
target/sparc: Remove `NB_MMU_MODES` define
40
target/tricore: Remove `NB_MMU_MODES` define
41
target/xtensa: Remove `NB_MMU_MODES` define
42
include/exec: Remove guards around `NB_MMU_MODES`
33
43
34
Philippe Mathieu-Daudé (19):
44
Richard Henderson (68):
35
accel: Rename accel_cpu_realizefn() -> accel_cpu_realize()
45
target/mips: Drop tcg_temp_free from micromips_translate.c.inc
36
accel: Rename AccelCPUClass::cpu_realizefn() -> cpu_target_realize()
46
target/mips: Drop tcg_temp_free from msa_translate.c
37
accel: Rename accel_cpu_realize() -> accel_cpu_common_realize()
47
target/mips: Drop tcg_temp_free from mxu_translate.c
38
accel: Introduce accel_cpu_common_unrealize() stub
48
target/mips: Drop tcg_temp_free from nanomips_translate.c.inc
39
accel: Declare AccelClass::cpu_common_[un]realize() handlers
49
target/mips: Drop tcg_temp_free from octeon_translate.c
40
accel/tcg: Have tcg_exec_realizefn() return a boolean
50
target/mips: Drop tcg_temp_free from translate_addr_const.c
41
accel/tcg: Restrict tcg_exec_[un]realizefn() to TCG
51
target/mips: Drop tcg_temp_free from tx79_translate.c
42
exec: Make EXCP_FOO definitions target agnostic
52
target/mips: Drop tcg_temp_free from vr54xx_translate.c
43
exec: Move cpu_loop_foo() target agnostic functions to 'cpu-common.h'
53
target/mips: Drop tcg_temp_free from translate.c
44
accel/tcg: Restrict dump_exec_info() declaration
54
target/s390x: Drop free_compare
45
accel: Make accel-blocker.o target agnostic
55
target/s390x: Drop tcg_temp_free from translate_vx.c.inc
46
accel: Rename accel-common.c -> accel-target.c
56
target/s390x: Drop tcg_temp_free from translate.c
47
exec: Rename cpu.c -> cpu-target.c
57
target/s390x: Remove assert vs g_in2
48
exec: Rename target specific page-vary.c -> page-vary-target.c
58
target/s390x: Remove g_out, g_out2, g_in1, g_in2 from DisasContext
49
accel/tcg: Rename target-specific 'internal.h' -> 'internal-target.h'
59
tcg: Create tcg/tcg-temp-internal.h
50
accel/tcg: Make monitor.c a target-agnostic unit
60
target/avr: Avoid use of tcg_const_i32 in SBIC, SBIS
51
accel/tcg: Make icount.o a target agnostic unit
61
target/avr: Avoid use of tcg_const_i32 throughout
52
accel/tcg: Make cpu-exec-common.c a target agnostic unit
62
target/cris: Avoid use of tcg_const_i32 throughout
53
tests/avocado: Re-enable MIPS Malta tests (GitLab issue #1884 fixed)
63
target/hppa: Avoid tcg_const_i64 in trans_fid_f
64
target/hppa: Avoid use of tcg_const_i32 throughout
65
target/i386: Avoid use of tcg_const_* throughout
66
target/m68k: Avoid tcg_const_i32 when modified
67
target/m68k: Avoid tcg_const_i32 in bfop_reg
68
target/m68k: Avoid tcg_const_* throughout
69
target/mips: Split out gen_lxl
70
target/mips: Split out gen_lxr
71
target/mips: Avoid tcg_const_tl in gen_r6_ld
72
target/mips: Avoid tcg_const_* throughout
73
target/ppc: Split out gen_vx_vmul10
74
target/ppc: Avoid tcg_const_i64 in do_vector_shift_quad
75
target/rx: Use tcg_gen_abs_i32
76
target/rx: Use cpu_psw_z as temp in flags computation
77
target/rx: Avoid tcg_const_i32 when new temp needed
78
target/rx: Avoid tcg_const_i32
79
target/s390x: Avoid tcg_const_i64
80
target/sh4: Avoid tcg_const_i32 for TAS.B
81
target/sh4: Avoid tcg_const_i32
82
tcg/sparc: Avoid tcg_const_tl in gen_edge
83
target/tricore: Split t_n as constant from temp as variable
84
target/tricore: Rename t_off10 and use tcg_constant_i32
85
target/tricore: Use setcondi instead of explicit allocation
86
target/tricore: Drop some temp initialization
87
target/tricore: Avoid tcg_const_i32
88
tcg: Replace tcg_const_i64 in tcg-op.c
89
target/arm: Use rmode >= 0 for need_rmode
90
target/arm: Handle FPROUNDING_ODD in arm_rmode_to_sf
91
target/arm: Improve arm_rmode_to_sf
92
target/arm: Consistently use ARMFPRounding during translation
93
target/arm: Create gen_set_rmode, gen_restore_rmode
94
target/arm: Improve trans_BFCI
95
target/arm: Avoid tcg_const_ptr in gen_sve_{ldr,str}
96
target/arm: Avoid tcg_const_* in translate-mve.c
97
target/arm: Avoid tcg_const_ptr in disas_simd_zip_trn
98
target/arm: Avoid tcg_const_ptr in handle_vec_simd_sqshrn
99
target/arm: Avoid tcg_const_ptr in handle_rev
100
target/m68k: Use tcg_constant_i32 in gen_ea_mode
101
target/ppc: Avoid tcg_const_i64 in do_vcntmb
102
target/ppc: Avoid tcg_const_* in vmx-impl.c.inc
103
target/ppc: Avoid tcg_const_* in xxeval
104
target/ppc: Avoid tcg_const_* in vsx-impl.c.inc
105
target/ppc: Avoid tcg_const_* in fp-impl.c.inc
106
target/ppc: Avoid tcg_const_* in power8-pmu-regs.c.inc
107
target/ppc: Rewrite trans_ADDG6S
108
target/ppc: Fix gen_tlbsx_booke206
109
target/ppc: Avoid tcg_const_* in translate.c
110
target/tricore: Use min/max for saturate
111
tcg: Drop tcg_const_*_vec
112
tcg: Drop tcg_const_*
54
113
55
Richard Henderson (18):
114
include/exec/cpu-defs.h | 9 +-
56
accel/tcg: Move CPUTLB definitions from cpu-defs.h
115
include/tcg/tcg-op.h | 4 -
57
qom: Propagate alignment through type system
116
include/tcg/tcg-temp-internal.h | 83 +++
58
target/arm: Remove size and alignment for cpu subclasses
117
include/tcg/tcg.h | 64 ---
59
target/*: Add instance_align to all cpu base classes
118
target/alpha/cpu-param.h | 2 -
60
accel/tcg: Validate placement of CPUNegativeOffsetState
119
target/arm/cpu-param.h | 2 -
61
accel/tcg: Move CPUNegativeOffsetState into CPUState
120
target/arm/internals.h | 12 +-
62
accel/tcg: Remove CPUState.icount_decr_ptr
121
target/arm/tcg/translate.h | 17 +
63
accel/tcg: Move can_do_io to CPUNegativeOffsetState
122
target/avr/cpu-param.h | 1 -
64
accel/tcg: Remove cpu_neg()
123
target/cris/cpu-param.h | 1 -
65
tcg: Rename cpu_env to tcg_env
124
target/hexagon/cpu-param.h | 2 -
66
accel/tcg: Replace CPUState.env_ptr with cpu_env()
125
target/hppa/cpu-param.h | 1 -
67
accel/tcg: Remove cpu_set_cpustate_pointers
126
target/i386/cpu-param.h | 1 -
68
accel/tcg: Remove env_neg()
127
target/loongarch/cpu-param.h | 1 -
69
tcg: Remove TCGContext.tlb_fast_offset
128
target/m68k/cpu-param.h | 1 -
70
tcg: Remove argument to tcg_prologue_init
129
target/microblaze/cpu-param.h | 1 -
71
tcg: Split out tcg init functions to tcg/startup.h
130
target/microblaze/cpu.h | 2 +-
72
linux-user/hppa: Fix struct target_sigcontext layout
131
target/mips/cpu-param.h | 1 -
73
build: Remove --enable-gprof
132
target/nios2/cpu-param.h | 1 -
74
133
target/openrisc/cpu-param.h | 1 -
75
gaosong (1):
134
target/ppc/cpu-param.h | 1 -
76
tcg/loongarch64: Fix buid error
135
target/riscv/cpu-param.h | 1 -
77
136
target/rx/cpu-param.h | 2 -
78
MAINTAINERS | 7 +-
137
target/s390x/cpu-param.h | 1 -
79
docs/about/deprecated.rst | 14 -
138
target/sh4/cpu-param.h | 1 -
80
meson.build | 18 +-
139
target/sparc/cpu-param.h | 2 -
81
accel/tcg/atomic_template.h | 20 +-
140
target/tricore/cpu-param.h | 1 -
82
accel/tcg/internal-common.h | 28 +
141
target/xtensa/cpu-param.h | 1 -
83
accel/tcg/{internal.h => internal-target.h} | 21 +-
142
accel/tcg/plugin-gen.c | 1 +
84
bsd-user/bsd-proc.h | 3 -
143
target/arm/tcg/translate-a64.c | 168 +++---
85
include/exec/cpu-all.h | 67 +-
144
target/arm/tcg/translate-mve.c | 56 +-
86
include/exec/cpu-common.h | 39 +
145
target/arm/tcg/translate-sve.c | 28 +-
87
include/exec/cpu-defs.h | 138 ---
146
target/arm/tcg/translate-vfp.c | 26 +-
88
include/exec/cpu_ldst.h | 8 +-
147
target/arm/tcg/translate.c | 13 +-
89
include/exec/exec-all.h | 32 +-
148
target/arm/vfp_helper.c | 35 +-
90
include/hw/core/accel-cpu.h | 2 +-
149
target/avr/translate.c | 48 +-
91
include/hw/core/cpu.h | 171 ++-
150
target/cris/translate.c | 46 +-
92
include/qemu/accel.h | 12 +-
151
target/hppa/translate.c | 35 +-
93
include/tcg/startup.h | 58 +
152
target/i386/tcg/translate.c | 83 +--
94
include/tcg/tcg.h | 6 +-
153
target/m68k/translate.c | 231 ++++----
95
target/alpha/cpu.h | 1 -
154
target/mips/tcg/msa_translate.c | 9 -
96
target/arm/common-semi-target.h | 2 +-
155
target/mips/tcg/mxu_translate.c | 55 +-
97
target/arm/cpu-param.h | 12 -
156
target/mips/tcg/octeon_translate.c | 23 -
98
target/arm/cpu.h | 1 -
157
target/mips/tcg/translate.c | 819 +++++------------------------
99
target/arm/tcg/translate-a32.h | 2 +-
158
target/mips/tcg/translate_addr_const.c | 7 -
100
target/arm/tcg/translate-a64.h | 4 +-
159
target/mips/tcg/tx79_translate.c | 45 +-
101
target/arm/tcg/translate.h | 16 +-
160
target/mips/tcg/vr54xx_translate.c | 4 -
102
target/avr/cpu.h | 1 -
161
target/ppc/translate.c | 148 +++---
103
target/cris/cpu.h | 1 -
162
target/rx/translate.c | 84 ++-
104
target/hexagon/cpu.h | 2 +-
163
target/s390x/tcg/translate.c | 208 +-------
105
target/hexagon/gen_tcg.h | 120 +-
164
target/sh4/translate.c | 35 +-
106
target/hexagon/gen_tcg_hvx.h | 20 +-
165
target/sparc/translate.c | 14 +-
107
target/hexagon/macros.h | 8 +-
166
target/tricore/translate.c | 476 ++++++++---------
108
target/hppa/cpu.h | 1 -
167
tcg/tcg-op-gvec.c | 1 +
109
target/i386/cpu.h | 1 -
168
tcg/tcg-op-vec.c | 35 +-
110
target/loongarch/cpu.h | 1 -
169
tcg/tcg-op.c | 13 +-
111
target/m68k/cpu.h | 1 -
170
tcg/tcg.c | 17 +-
112
target/microblaze/cpu.h | 6 +-
171
target/cris/translate_v10.c.inc | 26 +-
113
target/mips/cpu.h | 4 +-
172
target/mips/tcg/micromips_translate.c.inc | 12 +-
114
target/mips/tcg/translate.h | 6 +-
173
target/mips/tcg/nanomips_translate.c.inc | 143 +----
115
target/nios2/cpu.h | 1 -
174
target/ppc/power8-pmu-regs.c.inc | 4 +-
116
target/openrisc/cpu.h | 1 -
175
target/ppc/translate/fixedpoint-impl.c.inc | 44 +-
117
target/ppc/cpu.h | 1 -
176
target/ppc/translate/fp-impl.c.inc | 26 +-
118
target/riscv/cpu.h | 2 +-
177
target/ppc/translate/vmx-impl.c.inc | 130 ++---
119
target/rx/cpu.h | 1 -
178
target/ppc/translate/vsx-impl.c.inc | 36 +-
120
target/s390x/cpu.h | 1 -
179
target/s390x/tcg/translate_vx.c.inc | 143 -----
121
target/sh4/cpu.h | 1 -
180
tcg/i386/tcg-target.c.inc | 9 +-
122
target/sparc/cpu.h | 1 -
181
67 files changed, 1165 insertions(+), 2388 deletions(-)
123
target/tricore/cpu.h | 1 -
182
create mode 100644 include/tcg/tcg-temp-internal.h
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
Translators are no longer required to free tcg temporaries.
1
2
3
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
4
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
5
---
6
target/mips/tcg/micromips_translate.c.inc | 8 --------
7
1 file changed, 8 deletions(-)
8
9
diff --git a/target/mips/tcg/micromips_translate.c.inc b/target/mips/tcg/micromips_translate.c.inc
10
index XXXXXXX..XXXXXXX 100644
11
--- a/target/mips/tcg/micromips_translate.c.inc
12
+++ b/target/mips/tcg/micromips_translate.c.inc
13
@@ -XXX,XX +XXX,XX @@ static void gen_ldst_multiple(DisasContext *ctx, uint32_t opc, int reglist,
14
break;
15
#endif
16
}
17
- tcg_temp_free(t0);
18
- tcg_temp_free(t1);
19
- tcg_temp_free_i32(t2);
20
}
21
22
23
@@ -XXX,XX +XXX,XX @@ static void gen_ldst_pair(DisasContext *ctx, uint32_t opc, int rd,
24
break;
25
#endif
26
}
27
- tcg_temp_free(t0);
28
- tcg_temp_free(t1);
29
}
30
31
static void gen_pool32axf(CPUMIPSState *env, DisasContext *ctx, int rt, int rs)
32
@@ -XXX,XX +XXX,XX @@ static void gen_pool32axf(CPUMIPSState *env, DisasContext *ctx, int rt, int rs)
33
34
gen_load_gpr(t0, rt);
35
gen_mtc0(ctx, t0, rs, (ctx->opcode >> 11) & 0x7);
36
- tcg_temp_free(t0);
37
}
38
break;
39
#endif
40
@@ -XXX,XX +XXX,XX @@ static void gen_pool32axf(CPUMIPSState *env, DisasContext *ctx, int rt, int rs)
41
* mode.
42
*/
43
ctx->base.is_jmp = DISAS_STOP;
44
- tcg_temp_free(t0);
45
}
46
break;
47
case EI:
48
@@ -XXX,XX +XXX,XX @@ static void gen_pool32axf(CPUMIPSState *env, DisasContext *ctx, int rt, int rs)
49
*/
50
gen_save_pc(ctx->base.pc_next + 4);
51
ctx->base.is_jmp = DISAS_EXIT;
52
- tcg_temp_free(t0);
53
}
54
break;
55
default:
56
--
57
2.34.1
58
59
diff view generated by jsdifflib
1
From: Philippe Mathieu-Daudé <philmd@linaro.org>
1
Translators are no longer required to free tcg temporaries.
2
2
3
The AccelCPUClass::cpu_realizefn handler is meant for target
3
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
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>
4
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
10
---
5
---
11
include/hw/core/accel-cpu.h | 2 +-
6
target/mips/tcg/msa_translate.c | 9 ---------
12
accel/accel-common.c | 4 ++--
7
1 file changed, 9 deletions(-)
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
8
18
diff --git a/include/hw/core/accel-cpu.h b/include/hw/core/accel-cpu.h
9
diff --git a/target/mips/tcg/msa_translate.c b/target/mips/tcg/msa_translate.c
19
index XXXXXXX..XXXXXXX 100644
10
index XXXXXXX..XXXXXXX 100644
20
--- a/include/hw/core/accel-cpu.h
11
--- a/target/mips/tcg/msa_translate.c
21
+++ b/include/hw/core/accel-cpu.h
12
+++ b/target/mips/tcg/msa_translate.c
22
@@ -XXX,XX +XXX,XX @@ typedef struct AccelCPUClass {
13
@@ -XXX,XX +XXX,XX @@ static void gen_check_zero_element(TCGv tresult, uint8_t df, uint8_t wt,
23
14
/* if some bit is non-zero then some element is zero */
24
void (*cpu_class_init)(CPUClass *cc);
15
tcg_gen_setcondi_i64(cond, t0, t0, 0);
25
void (*cpu_instance_init)(CPUState *cpu);
16
tcg_gen_trunc_i64_tl(tresult, t0);
26
- bool (*cpu_realizefn)(CPUState *cpu, Error **errp);
17
- tcg_temp_free_i64(t0);
27
+ bool (*cpu_target_realize)(CPUState *cpu, Error **errp);
18
- tcg_temp_free_i64(t1);
28
} AccelCPUClass;
19
}
29
20
30
#endif /* ACCEL_CPU_H */
21
static bool gen_msa_BxZ_V(DisasContext *ctx, int wt, int sa, TCGCond cond)
31
diff --git a/accel/accel-common.c b/accel/accel-common.c
22
@@ -XXX,XX +XXX,XX @@ static bool gen_msa_BxZ_V(DisasContext *ctx, int wt, int sa, TCGCond cond)
32
index XXXXXXX..XXXXXXX 100644
23
tcg_gen_or_i64(t0, msa_wr_d[wt << 1], msa_wr_d[(wt << 1) + 1]);
33
--- a/accel/accel-common.c
24
tcg_gen_setcondi_i64(cond, t0, t0, 0);
34
+++ b/accel/accel-common.c
25
tcg_gen_trunc_i64_tl(bcond, t0);
35
@@ -XXX,XX +XXX,XX @@ bool accel_cpu_realize(CPUState *cpu, Error **errp)
26
- tcg_temp_free_i64(t0);
36
{
27
37
CPUClass *cc = CPU_GET_CLASS(cpu);
28
ctx->btarget = ctx->base.pc_next + (sa << 2) + 4;
38
29
39
- if (cc->accel_cpu && cc->accel_cpu->cpu_realizefn) {
30
@@ -XXX,XX +XXX,XX @@ static bool trans_CTCMSA(DisasContext *ctx, arg_msa_elm *a)
40
- return cc->accel_cpu->cpu_realizefn(cpu, errp);
31
gen_load_gpr(telm, a->ws);
41
+ if (cc->accel_cpu && cc->accel_cpu->cpu_target_realize) {
32
gen_helper_msa_ctcmsa(cpu_env, telm, tcg_constant_i32(a->wd));
42
+ return cc->accel_cpu->cpu_target_realize(cpu, errp);
33
43
}
34
- tcg_temp_free(telm);
35
-
44
return true;
36
return true;
45
}
37
}
46
diff --git a/target/i386/hvf/hvf-cpu.c b/target/i386/hvf/hvf-cpu.c
38
47
index XXXXXXX..XXXXXXX 100644
39
@@ -XXX,XX +XXX,XX @@ static bool trans_CFCMSA(DisasContext *ctx, arg_msa_elm *a)
48
--- a/target/i386/hvf/hvf-cpu.c
40
gen_helper_msa_cfcmsa(telm, cpu_env, tcg_constant_i32(a->ws));
49
+++ b/target/i386/hvf/hvf-cpu.c
41
gen_store_gpr(telm, a->wd);
50
@@ -XXX,XX +XXX,XX @@ static void hvf_cpu_accel_class_init(ObjectClass *oc, void *data)
42
51
{
43
- tcg_temp_free(telm);
52
AccelCPUClass *acc = ACCEL_CPU_CLASS(oc);
44
-
53
45
return true;
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
}
46
}
58
47
59
diff --git a/target/i386/kvm/kvm-cpu.c b/target/i386/kvm/kvm-cpu.c
48
@@ -XXX,XX +XXX,XX @@ static bool trans_msa_ldst(DisasContext *ctx, arg_msa_i *a,
60
index XXXXXXX..XXXXXXX 100644
49
gen_base_offset_addr(ctx, taddr, a->ws, a->sa << a->df);
61
--- a/target/i386/kvm/kvm-cpu.c
50
gen_msa_ldst(cpu_env, tcg_constant_i32(a->wd), taddr);
62
+++ b/target/i386/kvm/kvm-cpu.c
51
63
@@ -XXX,XX +XXX,XX @@ static void kvm_cpu_accel_class_init(ObjectClass *oc, void *data)
52
- tcg_temp_free(taddr);
64
{
53
-
65
AccelCPUClass *acc = ACCEL_CPU_CLASS(oc);
54
return true;
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
}
55
}
71
static const TypeInfo kvm_cpu_accel_type_info = {
56
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
--
57
--
86
2.34.1
58
2.34.1
87
59
88
60
diff view generated by jsdifflib
1
From: Anton Johansson <anjo@rev.ng>
1
Translators are no longer required to free tcg temporaries.
2
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>
3
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>
4
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
13
---
5
---
14
include/exec/cpu_ldst.h | 8 +-
6
target/mips/tcg/mxu_translate.c | 51 ---------------------------------
15
accel/tcg/cputlb.c | 220 +++++++++++++++++++---------------------
7
1 file changed, 51 deletions(-)
16
2 files changed, 108 insertions(+), 120 deletions(-)
17
8
18
diff --git a/include/exec/cpu_ldst.h b/include/exec/cpu_ldst.h
9
diff --git a/target/mips/tcg/mxu_translate.c b/target/mips/tcg/mxu_translate.c
19
index XXXXXXX..XXXXXXX 100644
10
index XXXXXXX..XXXXXXX 100644
20
--- a/include/exec/cpu_ldst.h
11
--- a/target/mips/tcg/mxu_translate.c
21
+++ b/include/exec/cpu_ldst.h
12
+++ b/target/mips/tcg/mxu_translate.c
22
@@ -XXX,XX +XXX,XX @@ static inline uint64_t tlb_addr_write(const CPUTLBEntry *entry)
13
@@ -XXX,XX +XXX,XX @@ static void gen_mxu_s32i2m(DisasContext *ctx)
14
} else if (XRa == 16) {
15
gen_store_mxu_cr(t0);
16
}
17
-
18
- tcg_temp_free(t0);
23
}
19
}
24
20
25
/* Find the TLB index corresponding to the mmu_idx + address pair. */
21
/*
26
-static inline uintptr_t tlb_index(CPUArchState *env, uintptr_t mmu_idx,
22
@@ -XXX,XX +XXX,XX @@ static void gen_mxu_s32m2i(DisasContext *ctx)
27
+static inline uintptr_t tlb_index(CPUState *cpu, uintptr_t mmu_idx,
23
}
28
vaddr addr)
24
29
{
25
gen_store_gpr(t0, Rb);
30
- uintptr_t size_mask = env_tlb(env)->f[mmu_idx].mask >> CPU_TLB_ENTRY_BITS;
26
-
31
+ uintptr_t size_mask = cpu->neg.tlb.f[mmu_idx].mask >> CPU_TLB_ENTRY_BITS;
27
- tcg_temp_free(t0);
32
33
return (addr >> TARGET_PAGE_BITS) & size_mask;
34
}
28
}
35
29
36
/* Find the TLB entry corresponding to the mmu_idx + address pair. */
30
/*
37
-static inline CPUTLBEntry *tlb_entry(CPUArchState *env, uintptr_t mmu_idx,
31
@@ -XXX,XX +XXX,XX @@ static void gen_mxu_s8ldd(DisasContext *ctx)
38
+static inline CPUTLBEntry *tlb_entry(CPUState *cpu, uintptr_t mmu_idx,
32
}
39
vaddr addr)
33
40
{
34
gen_store_mxu_gpr(t0, XRa);
41
- return &env_tlb(env)->f[mmu_idx].table[tlb_index(env, mmu_idx, addr)];
35
-
42
+ return &cpu->neg.tlb.f[mmu_idx].table[tlb_index(cpu, mmu_idx, addr)];
36
- tcg_temp_free(t0);
37
- tcg_temp_free(t1);
43
}
38
}
44
39
45
#endif /* defined(CONFIG_USER_ONLY) */
40
/*
46
diff --git a/accel/tcg/cputlb.c b/accel/tcg/cputlb.c
41
@@ -XXX,XX +XXX,XX @@ static void gen_mxu_d16mul(DisasContext *ctx)
47
index XXXXXXX..XXXXXXX 100644
42
}
48
--- a/accel/tcg/cputlb.c
43
gen_store_mxu_gpr(t3, XRa);
49
+++ b/accel/tcg/cputlb.c
44
gen_store_mxu_gpr(t2, XRd);
50
@@ -XXX,XX +XXX,XX @@ static void tlb_mmu_flush_locked(CPUTLBDesc *desc, CPUTLBDescFast *fast)
45
-
51
memset(desc->vtable, -1, sizeof(desc->vtable));
46
- tcg_temp_free(t0);
47
- tcg_temp_free(t1);
48
- tcg_temp_free(t2);
49
- tcg_temp_free(t3);
52
}
50
}
53
51
54
-static void tlb_flush_one_mmuidx_locked(CPUArchState *env, int mmu_idx,
52
/*
55
+static void tlb_flush_one_mmuidx_locked(CPUState *cpu, int mmu_idx,
53
@@ -XXX,XX +XXX,XX @@ static void gen_mxu_d16mac(DisasContext *ctx)
56
int64_t now)
54
}
57
{
55
gen_store_mxu_gpr(t3, XRa);
58
- CPUTLBDesc *desc = &env_tlb(env)->d[mmu_idx];
56
gen_store_mxu_gpr(t2, XRd);
59
- CPUTLBDescFast *fast = &env_tlb(env)->f[mmu_idx];
57
-
60
+ CPUTLBDesc *desc = &cpu->neg.tlb.d[mmu_idx];
58
- tcg_temp_free(t0);
61
+ CPUTLBDescFast *fast = &cpu->neg.tlb.f[mmu_idx];
59
- tcg_temp_free(t1);
62
60
- tcg_temp_free(t2);
63
tlb_mmu_resize_locked(desc, fast, now);
61
- tcg_temp_free(t3);
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
}
62
}
68
63
69
-static inline void tlb_n_used_entries_inc(CPUArchState *env, uintptr_t mmu_idx)
64
/*
70
+static inline void tlb_n_used_entries_inc(CPUState *cpu, uintptr_t mmu_idx)
65
@@ -XXX,XX +XXX,XX @@ static void gen_mxu_q8mul_q8mulsu(DisasContext *ctx)
71
{
66
72
- env_tlb(env)->d[mmu_idx].n_used_entries++;
67
gen_store_mxu_gpr(t0, XRd);
73
+ cpu->neg.tlb.d[mmu_idx].n_used_entries++;
68
gen_store_mxu_gpr(t1, XRa);
69
-
70
- tcg_temp_free(t0);
71
- tcg_temp_free(t1);
72
- tcg_temp_free(t2);
73
- tcg_temp_free(t3);
74
- tcg_temp_free(t4);
75
- tcg_temp_free(t5);
76
- tcg_temp_free(t6);
77
- tcg_temp_free(t7);
74
}
78
}
75
79
76
-static inline void tlb_n_used_entries_dec(CPUArchState *env, uintptr_t mmu_idx)
80
/*
77
+static inline void tlb_n_used_entries_dec(CPUState *cpu, uintptr_t mmu_idx)
81
@@ -XXX,XX +XXX,XX @@ static void gen_mxu_s32ldd_s32lddr(DisasContext *ctx)
78
{
82
tcg_gen_qemu_ld_tl(t1, t1, ctx->mem_idx, MO_TESL ^ (sel * MO_BSWAP));
79
- env_tlb(env)->d[mmu_idx].n_used_entries--;
83
80
+ cpu->neg.tlb.d[mmu_idx].n_used_entries--;
84
gen_store_mxu_gpr(t1, XRa);
85
-
86
- tcg_temp_free(t0);
87
- tcg_temp_free(t1);
81
}
88
}
82
89
83
void tlb_init(CPUState *cpu)
90
84
{
91
@@ -XXX,XX +XXX,XX @@ static void gen_mxu_D16MAX_D16MIN(DisasContext *ctx)
85
- CPUArchState *env = cpu_env(cpu);
92
tcg_gen_shri_i32(t0, t0, 16);
86
int64_t now = get_clock_realtime();
93
/* finally update the destination */
87
int i;
94
tcg_gen_or_i32(mxu_gpr[XRa - 1], mxu_gpr[XRa - 1], t0);
88
95
-
89
- qemu_spin_init(&env_tlb(env)->c.lock);
96
- tcg_temp_free(t1);
90
+ qemu_spin_init(&cpu->neg.tlb.c.lock);
97
- tcg_temp_free(t0);
91
98
} else if (unlikely(XRb == XRc)) {
92
/* All tlbs are initialized flushed. */
99
/* both operands same -> just set destination to one of them */
93
- env_tlb(env)->c.dirty = 0;
100
tcg_gen_mov_i32(mxu_gpr[XRa - 1], mxu_gpr[XRb - 1]);
94
+ cpu->neg.tlb.c.dirty = 0;
101
@@ -XXX,XX +XXX,XX @@ static void gen_mxu_D16MAX_D16MIN(DisasContext *ctx)
95
102
tcg_gen_shri_i32(t0, t0, 16);
96
for (i = 0; i < NB_MMU_MODES; i++) {
103
/* finally update the destination */
97
- tlb_mmu_init(&env_tlb(env)->d[i], &env_tlb(env)->f[i], now);
104
tcg_gen_or_i32(mxu_gpr[XRa - 1], mxu_gpr[XRa - 1], t0);
98
+ tlb_mmu_init(&cpu->neg.tlb.d[i], &cpu->neg.tlb.f[i], now);
105
-
106
- tcg_temp_free(t1);
107
- tcg_temp_free(t0);
99
}
108
}
100
}
109
}
101
110
102
void tlb_destroy(CPUState *cpu)
111
@@ -XXX,XX +XXX,XX @@ static void gen_mxu_Q8MAX_Q8MIN(DisasContext *ctx)
103
{
112
/* finally update the destination */
104
- CPUArchState *env = cpu_env(cpu);
113
tcg_gen_or_i32(mxu_gpr[XRa - 1], mxu_gpr[XRa - 1], t0);
105
int i;
114
}
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
-
115
-
123
- full += qatomic_read(&env_tlb(env)->c.full_flush_count);
116
- tcg_temp_free(t1);
124
- part += qatomic_read(&env_tlb(env)->c.part_flush_count);
117
- tcg_temp_free(t0);
125
- elide += qatomic_read(&env_tlb(env)->c.elide_flush_count);
118
} else if (unlikely(XRb == XRc)) {
126
+ full += qatomic_read(&cpu->neg.tlb.c.full_flush_count);
119
/* both operands same -> just set destination to one of them */
127
+ part += qatomic_read(&cpu->neg.tlb.c.part_flush_count);
120
tcg_gen_mov_i32(mxu_gpr[XRa - 1], mxu_gpr[XRb - 1]);
128
+ elide += qatomic_read(&cpu->neg.tlb.c.elide_flush_count);
121
@@ -XXX,XX +XXX,XX @@ static void gen_mxu_Q8MAX_Q8MIN(DisasContext *ctx)
129
}
122
/* finally update the destination */
130
*pfull = full;
123
tcg_gen_or_i32(mxu_gpr[XRa - 1], mxu_gpr[XRa - 1], t0);
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
}
124
}
125
-
126
- tcg_temp_free(t1);
127
- tcg_temp_free(t0);
183
}
128
}
184
}
129
}
185
@@ -XXX,XX +XXX,XX @@ static inline bool tlb_flush_entry_locked(CPUTLBEntry *tlb_entry, vaddr page)
130
186
}
131
@@ -XXX,XX +XXX,XX @@ static void gen_mxu_S32ALNI(DisasContext *ctx)
187
132
tcg_gen_shri_i32(t1, t1, 24);
188
/* Called with tlb_c.lock held */
133
189
-static void tlb_flush_vtlb_page_mask_locked(CPUArchState *env, int mmu_idx,
134
tcg_gen_or_i32(mxu_gpr[XRa - 1], t0, t1);
190
+static void tlb_flush_vtlb_page_mask_locked(CPUState *cpu, int mmu_idx,
135
-
191
vaddr page,
136
- tcg_temp_free(t1);
192
vaddr mask)
137
- tcg_temp_free(t0);
193
{
138
}
194
- CPUTLBDesc *d = &env_tlb(env)->d[mmu_idx];
139
break;
195
+ CPUTLBDesc *d = &cpu->neg.tlb.d[mmu_idx];
140
case MXU_OPTN3_PTN2:
196
int k;
141
@@ -XXX,XX +XXX,XX @@ static void gen_mxu_S32ALNI(DisasContext *ctx)
197
142
tcg_gen_shri_i32(t1, t1, 16);
198
- assert_cpu_is_self(env_cpu(env));
143
199
+ assert_cpu_is_self(cpu);
144
tcg_gen_or_i32(mxu_gpr[XRa - 1], t0, t1);
200
for (k = 0; k < CPU_VTLB_SIZE; k++) {
145
-
201
if (tlb_flush_entry_mask_locked(&d->vtable[k], page, mask)) {
146
- tcg_temp_free(t1);
202
- tlb_n_used_entries_dec(env, mmu_idx);
147
- tcg_temp_free(t0);
203
+ tlb_n_used_entries_dec(cpu, mmu_idx);
148
}
149
break;
150
case MXU_OPTN3_PTN3:
151
@@ -XXX,XX +XXX,XX @@ static void gen_mxu_S32ALNI(DisasContext *ctx)
152
tcg_gen_shri_i32(t1, t1, 8);
153
154
tcg_gen_or_i32(mxu_gpr[XRa - 1], t0, t1);
155
-
156
- tcg_temp_free(t1);
157
- tcg_temp_free(t0);
158
}
159
break;
160
case MXU_OPTN3_PTN4:
161
@@ -XXX,XX +XXX,XX @@ bool decode_ase_mxu(DisasContext *ctx, uint32_t insn)
204
}
162
}
163
164
gen_set_label(l_exit);
165
- tcg_temp_free(t_mxu_cr);
205
}
166
}
206
}
167
207
168
return true;
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
--
169
--
636
2.34.1
170
2.34.1
637
171
638
172
diff view generated by jsdifflib
New patch
1
Translators are no longer required to free tcg temporaries.
1
2
3
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
4
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
5
---
6
target/mips/tcg/nanomips_translate.c.inc | 127 ++---------------------
7
1 file changed, 10 insertions(+), 117 deletions(-)
8
9
diff --git a/target/mips/tcg/nanomips_translate.c.inc b/target/mips/tcg/nanomips_translate.c.inc
10
index XXXXXXX..XXXXXXX 100644
11
--- a/target/mips/tcg/nanomips_translate.c.inc
12
+++ b/target/mips/tcg/nanomips_translate.c.inc
13
@@ -XXX,XX +XXX,XX @@ static void gen_llwp(DisasContext *ctx, uint32_t base, int16_t offset,
14
tcg_gen_extr_i64_tl(tmp1, tmp2, tval);
15
}
16
gen_store_gpr(tmp1, reg1);
17
- tcg_temp_free(tmp1);
18
gen_store_gpr(tmp2, reg2);
19
- tcg_temp_free(tmp2);
20
tcg_gen_st_i64(tval, cpu_env, offsetof(CPUMIPSState, llval_wp));
21
- tcg_temp_free_i64(tval);
22
tcg_gen_st_tl(taddr, cpu_env, offsetof(CPUMIPSState, lladdr));
23
- tcg_temp_free(taddr);
24
}
25
26
static void gen_scwp(DisasContext *ctx, uint32_t base, int16_t offset,
27
@@ -XXX,XX +XXX,XX @@ static void gen_save(DisasContext *ctx, uint8_t rt, uint8_t count,
28
29
/* adjust stack pointer */
30
gen_adjust_sp(ctx, -u);
31
-
32
- tcg_temp_free(t0);
33
- tcg_temp_free(va);
34
}
35
36
static void gen_restore(DisasContext *ctx, uint8_t rt, uint8_t count,
37
@@ -XXX,XX +XXX,XX @@ static void gen_restore(DisasContext *ctx, uint8_t rt, uint8_t count,
38
39
/* adjust stack pointer */
40
gen_adjust_sp(ctx, u);
41
-
42
- tcg_temp_free(t0);
43
- tcg_temp_free(va);
44
}
45
46
static void gen_compute_branch_nm(DisasContext *ctx, uint32_t opc,
47
@@ -XXX,XX +XXX,XX @@ static void gen_compute_branch_nm(DisasContext *ctx, uint32_t opc,
48
if (insn_bytes == 2) {
49
ctx->hflags |= MIPS_HFLAG_B16;
50
}
51
- tcg_temp_free(t0);
52
- tcg_temp_free(t1);
53
}
54
55
static void gen_pool16c_nanomips_insn(DisasContext *ctx)
56
@@ -XXX,XX +XXX,XX @@ static void gen_pool32a0_nanomips_insn(CPUMIPSState *env, DisasContext *ctx)
57
}
58
break;
59
}
60
- tcg_temp_free(t0);
61
#endif
62
} else {
63
gen_slt(ctx, OPC_SLTU, rd, rs, rt);
64
@@ -XXX,XX +XXX,XX @@ static void gen_pool32a0_nanomips_insn(CPUMIPSState *env, DisasContext *ctx)
65
/* operands of same sign, result different sign */
66
tcg_gen_setcondi_tl(TCG_COND_LT, t0, t1, 0);
67
gen_store_gpr(t0, rd);
68
-
69
- tcg_temp_free(t0);
70
- tcg_temp_free(t1);
71
- tcg_temp_free(t2);
72
}
73
break;
74
case NM_MUL:
75
@@ -XXX,XX +XXX,XX @@ static void gen_pool32a0_nanomips_insn(CPUMIPSState *env, DisasContext *ctx)
76
77
gen_load_gpr(t0, rt);
78
gen_mtc0(ctx, t0, rs, extract32(ctx->opcode, 11, 3));
79
- tcg_temp_free(t0);
80
}
81
break;
82
case NM_D_E_MT_VPE:
83
@@ -XXX,XX +XXX,XX @@ static void gen_pool32a0_nanomips_insn(CPUMIPSState *env, DisasContext *ctx)
84
}
85
break;
86
}
87
-
88
- tcg_temp_free(t0);
89
}
90
break;
91
case NM_FORK:
92
@@ -XXX,XX +XXX,XX @@ static void gen_pool32a0_nanomips_insn(CPUMIPSState *env, DisasContext *ctx)
93
gen_load_gpr(t0, rt);
94
gen_load_gpr(t1, rs);
95
gen_helper_fork(t0, t1);
96
- tcg_temp_free(t0);
97
- tcg_temp_free(t1);
98
}
99
break;
100
case NM_MFTR:
101
@@ -XXX,XX +XXX,XX @@ static void gen_pool32a0_nanomips_insn(CPUMIPSState *env, DisasContext *ctx)
102
gen_load_gpr(t0, rs);
103
gen_helper_yield(t0, cpu_env, t0);
104
gen_store_gpr(t0, rt);
105
- tcg_temp_free(t0);
106
}
107
break;
108
#endif
109
@@ -XXX,XX +XXX,XX @@ static void gen_pool32axf_1_5_nanomips_insn(DisasContext *ctx, uint32_t opc,
110
gen_reserved_instruction(ctx);
111
break;
112
}
113
-
114
- tcg_temp_free_i32(t0);
115
-
116
- tcg_temp_free(v0_t);
117
- tcg_temp_free(v1_t);
118
}
119
120
121
@@ -XXX,XX +XXX,XX @@ static void gen_pool32axf_1_nanomips_insn(DisasContext *ctx, uint32_t opc,
122
gen_reserved_instruction(ctx);
123
break;
124
}
125
-
126
- tcg_temp_free(t0);
127
- tcg_temp_free(t1);
128
- tcg_temp_free(v0_t);
129
}
130
131
static void gen_pool32axf_2_multiply(DisasContext *ctx, uint32_t opc,
132
@@ -XXX,XX +XXX,XX @@ static void gen_pool32axf_2_multiply(DisasContext *ctx, uint32_t opc,
133
gen_reserved_instruction(ctx);
134
break;
135
}
136
-
137
- tcg_temp_free_i32(t0);
138
}
139
140
static void gen_pool32axf_2_nanomips_insn(DisasContext *ctx, uint32_t opc,
141
@@ -XXX,XX +XXX,XX @@ static void gen_pool32axf_2_nanomips_insn(DisasContext *ctx, uint32_t opc,
142
tcg_gen_mul_i64(t2, t2, t3);
143
tcg_gen_concat_tl_i64(t3, cpu_LO[acc], cpu_HI[acc]);
144
tcg_gen_add_i64(t2, t2, t3);
145
- tcg_temp_free_i64(t3);
146
gen_move_low32(cpu_LO[acc], t2);
147
gen_move_high32(cpu_HI[acc], t2);
148
- tcg_temp_free_i64(t2);
149
}
150
break;
151
case NM_MULT:
152
@@ -XXX,XX +XXX,XX @@ static void gen_pool32axf_2_nanomips_insn(DisasContext *ctx, uint32_t opc,
153
tcg_gen_muls2_i32(t2, t3, t2, t3);
154
tcg_gen_ext_i32_tl(cpu_LO[acc], t2);
155
tcg_gen_ext_i32_tl(cpu_HI[acc], t3);
156
- tcg_temp_free_i32(t2);
157
- tcg_temp_free_i32(t3);
158
}
159
break;
160
case NM_EXTRV_W:
161
@@ -XXX,XX +XXX,XX @@ static void gen_pool32axf_2_nanomips_insn(DisasContext *ctx, uint32_t opc,
162
tcg_gen_mul_i64(t2, t2, t3);
163
tcg_gen_concat_tl_i64(t3, cpu_LO[acc], cpu_HI[acc]);
164
tcg_gen_add_i64(t2, t2, t3);
165
- tcg_temp_free_i64(t3);
166
gen_move_low32(cpu_LO[acc], t2);
167
gen_move_high32(cpu_HI[acc], t2);
168
- tcg_temp_free_i64(t2);
169
}
170
break;
171
case NM_MULTU:
172
@@ -XXX,XX +XXX,XX @@ static void gen_pool32axf_2_nanomips_insn(DisasContext *ctx, uint32_t opc,
173
tcg_gen_mulu2_i32(t2, t3, t2, t3);
174
tcg_gen_ext_i32_tl(cpu_LO[acc], t2);
175
tcg_gen_ext_i32_tl(cpu_HI[acc], t3);
176
- tcg_temp_free_i32(t2);
177
- tcg_temp_free_i32(t3);
178
}
179
break;
180
case NM_EXTRV_R_W:
181
@@ -XXX,XX +XXX,XX @@ static void gen_pool32axf_2_nanomips_insn(DisasContext *ctx, uint32_t opc,
182
tcg_gen_mul_i64(t2, t2, t3);
183
tcg_gen_concat_tl_i64(t3, cpu_LO[acc], cpu_HI[acc]);
184
tcg_gen_sub_i64(t2, t3, t2);
185
- tcg_temp_free_i64(t3);
186
gen_move_low32(cpu_LO[acc], t2);
187
gen_move_high32(cpu_HI[acc], t2);
188
- tcg_temp_free_i64(t2);
189
}
190
break;
191
case NM_EXTRV_RS_W:
192
@@ -XXX,XX +XXX,XX @@ static void gen_pool32axf_2_nanomips_insn(DisasContext *ctx, uint32_t opc,
193
tcg_gen_mul_i64(t2, t2, t3);
194
tcg_gen_concat_tl_i64(t3, cpu_LO[acc], cpu_HI[acc]);
195
tcg_gen_sub_i64(t2, t3, t2);
196
- tcg_temp_free_i64(t3);
197
gen_move_low32(cpu_LO[acc], t2);
198
gen_move_high32(cpu_HI[acc], t2);
199
- tcg_temp_free_i64(t2);
200
}
201
break;
202
case NM_EXTRV_S_H:
203
@@ -XXX,XX +XXX,XX @@ static void gen_pool32axf_2_nanomips_insn(DisasContext *ctx, uint32_t opc,
204
gen_reserved_instruction(ctx);
205
break;
206
}
207
-
208
- tcg_temp_free(t0);
209
- tcg_temp_free(t1);
210
-
211
- tcg_temp_free(v0_t);
212
- tcg_temp_free(v1_t);
213
}
214
215
static void gen_pool32axf_4_nanomips_insn(DisasContext *ctx, uint32_t opc,
216
@@ -XXX,XX +XXX,XX @@ static void gen_pool32axf_4_nanomips_insn(DisasContext *ctx, uint32_t opc,
217
gen_load_gpr(tv0, rt);
218
gen_helper_insv(v0_t, cpu_env, v0_t, tv0);
219
gen_store_gpr(v0_t, ret);
220
- tcg_temp_free(tv0);
221
}
222
break;
223
case NM_RADDU_W_QB:
224
@@ -XXX,XX +XXX,XX @@ static void gen_pool32axf_4_nanomips_insn(DisasContext *ctx, uint32_t opc,
225
gen_reserved_instruction(ctx);
226
break;
227
}
228
-
229
- tcg_temp_free(v0_t);
230
- tcg_temp_free(t0);
231
}
232
233
static void gen_pool32axf_7_nanomips_insn(DisasContext *ctx, uint32_t opc,
234
@@ -XXX,XX +XXX,XX @@ static void gen_pool32axf_7_nanomips_insn(DisasContext *ctx, uint32_t opc,
235
gen_reserved_instruction(ctx);
236
break;
237
}
238
- tcg_temp_free(t0);
239
- tcg_temp_free(rs_t);
240
}
241
242
243
@@ -XXX,XX +XXX,XX @@ static void gen_pool32axf_nanomips_insn(CPUMIPSState *env, DisasContext *ctx)
244
gen_store_gpr(t0, rt);
245
/* Stop translation as we may have switched the execution mode */
246
ctx->base.is_jmp = DISAS_STOP;
247
- tcg_temp_free(t0);
248
}
249
break;
250
case NM_EI:
251
@@ -XXX,XX +XXX,XX @@ static void gen_pool32axf_nanomips_insn(CPUMIPSState *env, DisasContext *ctx)
252
gen_store_gpr(t0, rt);
253
/* Stop translation as we may have switched the execution mode */
254
ctx->base.is_jmp = DISAS_STOP;
255
- tcg_temp_free(t0);
256
}
257
break;
258
case NM_RDPGPR:
259
@@ -XXX,XX +XXX,XX @@ static void gen_compute_imm_branch(DisasContext *ctx, uint32_t opc,
260
/* Unconditional branch */
261
} else if (rt == 0 && imm != 0) {
262
/* Treat as NOP */
263
- goto out;
264
+ return;
265
} else {
266
cond = TCG_COND_EQ;
267
}
268
@@ -XXX,XX +XXX,XX @@ static void gen_compute_imm_branch(DisasContext *ctx, uint32_t opc,
269
check_nms(ctx);
270
if (imm >= 32 && !(ctx->hflags & MIPS_HFLAG_64)) {
271
gen_reserved_instruction(ctx);
272
- goto out;
273
+ return;
274
} else if (rt == 0 && opc == NM_BBEQZC) {
275
/* Unconditional branch */
276
} else if (rt == 0 && opc == NM_BBNEZC) {
277
/* Treat as NOP */
278
- goto out;
279
+ return;
280
} else {
281
tcg_gen_shri_tl(t0, t0, imm);
282
tcg_gen_andi_tl(t0, t0, 1);
283
@@ -XXX,XX +XXX,XX @@ static void gen_compute_imm_branch(DisasContext *ctx, uint32_t opc,
284
case NM_BNEIC:
285
if (rt == 0 && imm == 0) {
286
/* Treat as NOP */
287
- goto out;
288
+ return;
289
} else if (rt == 0 && imm != 0) {
290
/* Unconditional branch */
291
} else {
292
@@ -XXX,XX +XXX,XX @@ static void gen_compute_imm_branch(DisasContext *ctx, uint32_t opc,
293
default:
294
MIPS_INVAL("Immediate Value Compact branch");
295
gen_reserved_instruction(ctx);
296
- goto out;
297
+ return;
298
}
299
300
/* branch completion */
301
@@ -XXX,XX +XXX,XX @@ static void gen_compute_imm_branch(DisasContext *ctx, uint32_t opc,
302
303
gen_goto_tb(ctx, 0, ctx->base.pc_next + 4);
304
}
305
-
306
-out:
307
- tcg_temp_free(t0);
308
- tcg_temp_free(t1);
309
}
310
311
/* P.BALRSC type nanoMIPS R6 branches: BALRSC and BRSC */
312
@@ -XXX,XX +XXX,XX @@ static void gen_compute_nanomips_pbalrsc_branch(DisasContext *ctx, int rs,
313
/* unconditional branch to register */
314
tcg_gen_mov_tl(cpu_PC, btarget);
315
tcg_gen_lookup_and_goto_ptr();
316
-
317
- tcg_temp_free(t0);
318
- tcg_temp_free(t1);
319
}
320
321
/* nanoMIPS Branches */
322
@@ -XXX,XX +XXX,XX @@ static void gen_compute_compact_branch_nm(DisasContext *ctx, uint32_t opc,
323
gen_load_gpr(tbase, rt);
324
tcg_gen_movi_tl(toffset, offset);
325
gen_op_addr_add(ctx, btarget, tbase, toffset);
326
- tcg_temp_free(tbase);
327
- tcg_temp_free(toffset);
328
}
329
break;
330
default:
331
MIPS_INVAL("Compact branch/jump");
332
gen_reserved_instruction(ctx);
333
- goto out;
334
+ return;
335
}
336
337
if (bcond_compute == 0) {
338
@@ -XXX,XX +XXX,XX @@ static void gen_compute_compact_branch_nm(DisasContext *ctx, uint32_t opc,
339
default:
340
MIPS_INVAL("Compact branch/jump");
341
gen_reserved_instruction(ctx);
342
- goto out;
343
+ return;
344
}
345
} else {
346
/* Conditional compact branch */
347
@@ -XXX,XX +XXX,XX @@ static void gen_compute_compact_branch_nm(DisasContext *ctx, uint32_t opc,
348
default:
349
MIPS_INVAL("Compact conditional branch/jump");
350
gen_reserved_instruction(ctx);
351
- goto out;
352
+ return;
353
}
354
355
/* branch completion */
356
@@ -XXX,XX +XXX,XX @@ static void gen_compute_compact_branch_nm(DisasContext *ctx, uint32_t opc,
357
358
gen_goto_tb(ctx, 0, ctx->base.pc_next + 4);
359
}
360
-
361
-out:
362
- tcg_temp_free(t0);
363
- tcg_temp_free(t1);
364
}
365
366
367
@@ -XXX,XX +XXX,XX @@ static void gen_compute_branch_cp1_nm(DisasContext *ctx, uint32_t op,
368
default:
369
MIPS_INVAL("cp1 cond branch");
370
gen_reserved_instruction(ctx);
371
- goto out;
372
+ return;
373
}
374
375
tcg_gen_trunc_i64_tl(bcond, t0);
376
377
ctx->btarget = btarget;
378
-
379
-out:
380
- tcg_temp_free_i64(t0);
381
}
382
383
384
@@ -XXX,XX +XXX,XX @@ static void gen_p_lsx(DisasContext *ctx, int rd, int rs, int rt)
385
break;
386
default:
387
gen_reserved_instruction(ctx);
388
- goto out;
389
+ return;
390
}
391
}
392
gen_op_addr_add(ctx, t0, t0, t1);
393
@@ -XXX,XX +XXX,XX @@ static void gen_p_lsx(DisasContext *ctx, int rd, int rs, int rt)
394
gen_reserved_instruction(ctx);
395
break;
396
}
397
-
398
-out:
399
- tcg_temp_free(t0);
400
- tcg_temp_free(t1);
401
}
402
403
static void gen_pool32f_nanomips_insn(DisasContext *ctx)
404
@@ -XXX,XX +XXX,XX @@ static void gen_pool32a5_nanomips_insn(DisasContext *ctx, int opc,
405
gen_helper_precr_sra_ph_w(v1_t, sa_t, v1_t,
406
cpu_gpr[rt]);
407
gen_store_gpr(v1_t, rt);
408
- tcg_temp_free_i32(sa_t);
409
}
410
break;
411
case 1:
412
@@ -XXX,XX +XXX,XX @@ static void gen_pool32a5_nanomips_insn(DisasContext *ctx, int opc,
413
gen_helper_precr_sra_r_ph_w(v1_t, sa_t, v1_t,
414
cpu_gpr[rt]);
415
gen_store_gpr(v1_t, rt);
416
- tcg_temp_free_i32(sa_t);
417
}
418
break;
419
}
420
@@ -XXX,XX +XXX,XX @@ static void gen_pool32a5_nanomips_insn(DisasContext *ctx, int opc,
421
tcg_gen_movi_tl(tv0, rd >> 3);
422
tcg_gen_movi_tl(tv1, imm);
423
gen_helper_shilo(tv0, tv1, cpu_env);
424
- tcg_temp_free(tv1);
425
- tcg_temp_free(tv0);
426
}
427
break;
428
case NM_MULEQ_S_W_PHL:
429
@@ -XXX,XX +XXX,XX @@ static void gen_pool32a5_nanomips_insn(DisasContext *ctx, int opc,
430
gen_reserved_instruction(ctx);
431
break;
432
}
433
-
434
- tcg_temp_free(v2_t);
435
- tcg_temp_free(v1_t);
436
- tcg_temp_free(t0);
437
}
438
439
static int decode_nanomips_32_48_opc(CPUMIPSState *env, DisasContext *ctx)
440
@@ -XXX,XX +XXX,XX @@ static int decode_nanomips_32_48_opc(CPUMIPSState *env, DisasContext *ctx)
441
442
tcg_gen_movi_tl(t0, addr);
443
tcg_gen_qemu_ld_tl(cpu_gpr[rt], t0, ctx->mem_idx, MO_TESL);
444
- tcg_temp_free(t0);
445
}
446
break;
447
case NM_SWPC48:
448
@@ -XXX,XX +XXX,XX @@ static int decode_nanomips_32_48_opc(CPUMIPSState *env, DisasContext *ctx)
449
gen_load_gpr(t1, rt);
450
451
tcg_gen_qemu_st_tl(t1, t0, ctx->mem_idx, MO_TEUL);
452
-
453
- tcg_temp_free(t0);
454
- tcg_temp_free(t1);
455
}
456
break;
457
default:
458
@@ -XXX,XX +XXX,XX @@ static int decode_nanomips_32_48_opc(CPUMIPSState *env, DisasContext *ctx)
459
gen_load_gpr(t0, rs);
460
tcg_gen_setcondi_tl(TCG_COND_EQ, t0, t0, imm);
461
gen_store_gpr(t0, rt);
462
-
463
- tcg_temp_free(t0);
464
}
465
break;
466
case NM_ADDIUNEG:
467
@@ -XXX,XX +XXX,XX @@ static int decode_nanomips_32_48_opc(CPUMIPSState *env, DisasContext *ctx)
468
469
gen_load_gpr(t0, rs);
470
gen_helper_rotx(cpu_gpr[rt], t0, shift, shiftx, stripe);
471
- tcg_temp_free(t0);
472
-
473
- tcg_temp_free_i32(shift);
474
- tcg_temp_free_i32(shiftx);
475
- tcg_temp_free_i32(stripe);
476
}
477
break;
478
case NM_P_INS:
479
@@ -XXX,XX +XXX,XX @@ static int decode_nanomips_32_48_opc(CPUMIPSState *env, DisasContext *ctx)
480
MO_UNALN);
481
break;
482
}
483
- tcg_temp_free(t0);
484
- tcg_temp_free(t1);
485
}
486
break;
487
case NM_P_LL:
488
@@ -XXX,XX +XXX,XX @@ static int decode_nanomips_32_48_opc(CPUMIPSState *env, DisasContext *ctx)
489
}
490
counter++;
491
}
492
- tcg_temp_free(va);
493
- tcg_temp_free(t1);
494
}
495
break;
496
default:
497
@@ -XXX,XX +XXX,XX @@ static int decode_nanomips_32_48_opc(CPUMIPSState *env, DisasContext *ctx)
498
gen_load_gpr(t0, rt);
499
tcg_gen_mov_tl(cpu_gpr[rd], t0);
500
gen_compute_branch_nm(ctx, OPC_BGEZAL, 4, 0, 0, s);
501
- tcg_temp_free(t0);
502
}
503
break;
504
case NM_P_BAL:
505
@@ -XXX,XX +XXX,XX @@ static int decode_isa_nanomips(CPUMIPSState *env, DisasContext *ctx)
506
if (ctx->base.pc_next & 0x1) {
507
TCGv tmp = tcg_const_tl(ctx->base.pc_next);
508
tcg_gen_st_tl(tmp, cpu_env, offsetof(CPUMIPSState, CP0_BadVAddr));
509
- tcg_temp_free(tmp);
510
generate_exception_end(ctx, EXCP_AdEL);
511
return 2;
512
}
513
@@ -XXX,XX +XXX,XX @@ static int decode_isa_nanomips(CPUMIPSState *env, DisasContext *ctx)
514
gen_load_gpr(t1, rt);
515
tcg_gen_mov_tl(cpu_gpr[rd], t0);
516
tcg_gen_mov_tl(cpu_gpr[re], t1);
517
- tcg_temp_free(t0);
518
- tcg_temp_free(t1);
519
}
520
break;
521
default:
522
--
523
2.34.1
524
525
diff view generated by jsdifflib
1
Retain the separate structure to emphasize its importance.
1
Translators are no longer required to free tcg temporaries.
2
Enforce CPUArchState always follows CPUState without padding.
3
2
4
Reviewed-by: Anton Johansson <anjo@rev.ng>
3
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
5
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
4
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6
---
5
---
7
include/exec/cpu-all.h | 22 +++++++++-------------
6
target/mips/tcg/octeon_translate.c | 23 -----------------------
8
include/hw/core/cpu.h | 17 +++++++++++++++--
7
1 file changed, 23 deletions(-)
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
8
34
diff --git a/include/exec/cpu-all.h b/include/exec/cpu-all.h
9
diff --git a/target/mips/tcg/octeon_translate.c b/target/mips/tcg/octeon_translate.c
35
index XXXXXXX..XXXXXXX 100644
10
index XXXXXXX..XXXXXXX 100644
36
--- a/include/exec/cpu-all.h
11
--- a/target/mips/tcg/octeon_translate.c
37
+++ b/include/exec/cpu-all.h
12
+++ b/target/mips/tcg/octeon_translate.c
38
@@ -XXX,XX +XXX,XX @@ int cpu_exec(CPUState *cpu);
13
@@ -XXX,XX +XXX,XX @@ static bool trans_BBIT(DisasContext *ctx, arg_BBIT *a)
39
static inline void cpu_set_cpustate_pointers(ArchCPU *cpu)
14
ctx->hflags |= MIPS_HFLAG_BC;
40
{
15
ctx->btarget = ctx->base.pc_next + 4 + a->offset * 4;
41
cpu->parent_obj.env_ptr = &cpu->env;
16
ctx->hflags |= MIPS_HFLAG_BDS32;
42
- cpu->parent_obj.icount_decr_ptr = &cpu->neg.icount_decr;
17
-
43
+ cpu->parent_obj.icount_decr_ptr = &cpu->parent_obj.neg.icount_decr;
18
- tcg_temp_free(t0);
19
return true;
44
}
20
}
45
21
46
+/* Validate correct placement of CPUArchState. */
22
@@ -XXX,XX +XXX,XX @@ static bool trans_BADDU(DisasContext *ctx, arg_BADDU *a)
47
+QEMU_BUILD_BUG_ON(offsetof(ArchCPU, parent_obj) != 0);
23
48
+QEMU_BUILD_BUG_ON(offsetof(ArchCPU, env) != sizeof(CPUState));
24
tcg_gen_add_tl(t0, t0, t1);
49
+
25
tcg_gen_andi_i64(cpu_gpr[a->rd], t0, 0xff);
50
/**
26
-
51
* env_archcpu(env)
27
- tcg_temp_free(t0);
52
* @env: The architecture environment
28
- tcg_temp_free(t1);
53
@@ -XXX,XX +XXX,XX @@ static inline void cpu_set_cpustate_pointers(ArchCPU *cpu)
29
-
54
*/
30
return true;
55
static inline ArchCPU *env_archcpu(CPUArchState *env)
56
{
57
- return container_of(env, ArchCPU, env);
58
+ return (void *)env - sizeof(CPUState);
59
}
31
}
60
32
61
/**
33
@@ -XXX,XX +XXX,XX @@ static bool trans_DMUL(DisasContext *ctx, arg_DMUL *a)
62
@@ -XXX,XX +XXX,XX @@ static inline ArchCPU *env_archcpu(CPUArchState *env)
34
gen_load_gpr(t1, a->rt);
63
*/
35
64
static inline CPUState *env_cpu(CPUArchState *env)
36
tcg_gen_mul_i64(cpu_gpr[a->rd], t0, t1);
65
{
37
-
66
- return &env_archcpu(env)->parent_obj;
38
- tcg_temp_free(t0);
67
+ return (void *)env - sizeof(CPUState);
39
- tcg_temp_free(t1);
40
-
41
return true;
68
}
42
}
69
43
70
-/*
44
@@ -XXX,XX +XXX,XX @@ static bool trans_EXTS(DisasContext *ctx, arg_EXTS *a)
71
- * Validate placement of CPUNegativeOffsetState.
45
gen_load_gpr(t0, a->rs);
72
- */
46
tcg_gen_sextract_tl(t0, t0, a->p, a->lenm1 + 1);
73
-QEMU_BUILD_BUG_ON(offsetof(ArchCPU, env) - offsetof(ArchCPU, neg) >=
47
gen_store_gpr(t0, a->rt);
74
- sizeof(CPUNegativeOffsetState) + __alignof(CPUArchState));
48
- tcg_temp_free(t0);
75
-
49
-
76
/**
50
return true;
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
}
51
}
87
52
88
/**
53
@@ -XXX,XX +XXX,XX @@ static bool trans_CINS(DisasContext *ctx, arg_CINS *a)
89
@@ -XXX,XX +XXX,XX @@ static inline CPUNegativeOffsetState *env_neg(CPUArchState *env)
54
gen_load_gpr(t0, a->rs);
90
*/
55
tcg_gen_deposit_z_tl(t0, t0, a->p, a->lenm1 + 1);
91
static inline CPUNegativeOffsetState *cpu_neg(CPUState *cpu)
56
gen_store_gpr(t0, a->rt);
92
{
57
- tcg_temp_free(t0);
93
- ArchCPU *arch_cpu = container_of(cpu, ArchCPU, parent_obj);
58
-
94
- return &arch_cpu->neg;
59
return true;
95
+ return &cpu->neg;
96
}
60
}
97
61
98
/**
62
@@ -XXX,XX +XXX,XX @@ static bool trans_POP(DisasContext *ctx, arg_POP *a)
99
diff --git a/include/hw/core/cpu.h b/include/hw/core/cpu.h
63
}
100
index XXXXXXX..XXXXXXX 100644
64
tcg_gen_ctpop_tl(t0, t0);
101
--- a/include/hw/core/cpu.h
65
gen_store_gpr(t0, a->rd);
102
+++ b/include/hw/core/cpu.h
66
- tcg_temp_free(t0);
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
-
67
-
261
/*< public >*/
68
return true;
262
+
69
}
263
+ CPUMBState env;
70
264
+
71
@@ -XXX,XX +XXX,XX @@ static bool trans_SEQNE(DisasContext *ctx, arg_SEQNE *a)
265
bool ns_axi_dp;
72
} else {
266
bool ns_axi_ip;
73
tcg_gen_setcond_tl(TCG_COND_EQ, cpu_gpr[a->rd], t1, t0);
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
}
74
}
444
75
-
445
if (cflags & CF_USE_ICOUNT) {
76
- tcg_temp_free(t0);
446
@@ -XXX,XX +XXX,XX @@ static TCGOp *gen_tb_start(DisasContextBase *db, uint32_t cflags)
77
- tcg_temp_free(t1);
447
78
-
448
if (cflags & CF_USE_ICOUNT) {
79
return true;
449
tcg_gen_st16_i32(count, cpu_env,
80
}
450
- offsetof(ArchCPU, neg.icount_decr.u16.low) -
81
451
- offsetof(ArchCPU, env));
82
@@ -XXX,XX +XXX,XX @@ static bool trans_SEQNEI(DisasContext *ctx, arg_SEQNEI *a)
452
+ offsetof(ArchCPU, parent_obj.neg.icount_decr.u16.low)
83
} else {
453
+ - offsetof(ArchCPU, env));
84
tcg_gen_setcondi_tl(TCG_COND_EQ, cpu_gpr[a->rt], t0, imm);
454
}
85
}
455
86
-
456
/*
87
- tcg_temp_free(t0);
88
-
89
return true;
90
}
457
--
91
--
458
2.34.1
92
2.34.1
93
94
diff view generated by jsdifflib
New patch
1
Translators are no longer required to free tcg temporaries.
1
2
3
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
4
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
5
---
6
target/mips/tcg/translate_addr_const.c | 7 -------
7
1 file changed, 7 deletions(-)
8
9
diff --git a/target/mips/tcg/translate_addr_const.c b/target/mips/tcg/translate_addr_const.c
10
index XXXXXXX..XXXXXXX 100644
11
--- a/target/mips/tcg/translate_addr_const.c
12
+++ b/target/mips/tcg/translate_addr_const.c
13
@@ -XXX,XX +XXX,XX @@ bool gen_lsa(DisasContext *ctx, int rd, int rt, int rs, int sa)
14
tcg_gen_shli_tl(t0, t0, sa + 1);
15
tcg_gen_add_tl(cpu_gpr[rd], t0, t1);
16
tcg_gen_ext32s_tl(cpu_gpr[rd], cpu_gpr[rd]);
17
-
18
- tcg_temp_free(t1);
19
- tcg_temp_free(t0);
20
-
21
return true;
22
}
23
24
@@ -XXX,XX +XXX,XX @@ bool gen_dlsa(DisasContext *ctx, int rd, int rt, int rs, int sa)
25
gen_load_gpr(t1, rt);
26
tcg_gen_shli_tl(t0, t0, sa + 1);
27
tcg_gen_add_tl(cpu_gpr[rd], t0, t1);
28
- tcg_temp_free(t1);
29
- tcg_temp_free(t0);
30
-
31
return true;
32
}
33
--
34
2.34.1
35
36
diff view generated by jsdifflib
1
From: Anton Johansson <anjo@rev.ng>
1
Translators are no longer required to free tcg temporaries.
2
2
3
The prototype of do_[st|ld]*_mmu() is unified between system- and
3
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
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>
4
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
12
---
5
---
13
accel/tcg/cputlb.c | 16 ++--
6
target/mips/tcg/tx79_translate.c | 41 --------------------------------
14
accel/tcg/user-exec.c | 183 ++++++++++++++++++++++++------------------
7
1 file changed, 41 deletions(-)
15
2 files changed, 117 insertions(+), 82 deletions(-)
16
8
17
diff --git a/accel/tcg/cputlb.c b/accel/tcg/cputlb.c
9
diff --git a/target/mips/tcg/tx79_translate.c b/target/mips/tcg/tx79_translate.c
18
index XXXXXXX..XXXXXXX 100644
10
index XXXXXXX..XXXXXXX 100644
19
--- a/accel/tcg/cputlb.c
11
--- a/target/mips/tcg/tx79_translate.c
20
+++ b/accel/tcg/cputlb.c
12
+++ b/target/mips/tcg/tx79_translate.c
21
@@ -XXX,XX +XXX,XX @@ static void do_st_8(CPUState *cpu, MMULookupPageData *p, uint64_t val,
13
@@ -XXX,XX +XXX,XX @@ static bool trans_parallel_arith(DisasContext *ctx, arg_r *a,
14
gen_load_gpr_hi(ax, a->rs);
15
gen_load_gpr_hi(bx, a->rt);
16
gen_logic_i64(cpu_gpr_hi[a->rd], ax, bx);
17
-
18
- tcg_temp_free(bx);
19
- tcg_temp_free(ax);
20
-
21
return true;
22
}
23
24
@@ -XXX,XX +XXX,XX @@ static bool trans_parallel_compare(DisasContext *ctx, arg_r *a,
25
tcg_gen_movcond_i64(cond, t2, t1, t0, c1, c0);
26
tcg_gen_deposit_i64(cpu_gpr_hi[a->rd], cpu_gpr_hi[a->rd], t2, wlen * i, wlen);
22
}
27
}
28
-
29
- tcg_temp_free(t2);
30
- tcg_temp_free(t1);
31
- tcg_temp_free(t0);
32
- tcg_temp_free(bx);
33
- tcg_temp_free(ax);
34
- tcg_temp_free(c1);
35
- tcg_temp_free(c0);
36
-
37
return true;
23
}
38
}
24
39
25
-void helper_stb_mmu(CPUArchState *env, uint64_t addr, uint32_t val,
40
@@ -XXX,XX +XXX,XX @@ static bool trans_LQ(DisasContext *ctx, arg_i *a)
26
- MemOpIdx oi, uintptr_t ra)
41
tcg_gen_addi_i64(addr, addr, 8);
27
+static void do_st1_mmu(CPUState *cpu, vaddr addr, uint8_t val,
42
tcg_gen_qemu_ld_i64(t0, addr, ctx->mem_idx, MO_TEUQ);
28
+ MemOpIdx oi, uintptr_t ra)
43
gen_store_gpr_hi(t0, a->rt);
29
{
44
-
30
MMULookupLocals l;
45
- tcg_temp_free(t0);
31
bool crosspage;
46
- tcg_temp_free(addr);
32
47
-
33
- tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_8);
48
return true;
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
}
49
50
50
static void do_st2_mmu(CPUState *cpu, vaddr addr, uint16_t val,
51
@@ -XXX,XX +XXX,XX @@ static bool trans_SQ(DisasContext *ctx, arg_i *a)
51
diff --git a/accel/tcg/user-exec.c b/accel/tcg/user-exec.c
52
tcg_gen_addi_i64(addr, addr, 8);
52
index XXXXXXX..XXXXXXX 100644
53
gen_load_gpr_hi(t0, a->rt);
53
--- a/accel/tcg/user-exec.c
54
tcg_gen_qemu_st_i64(t0, addr, ctx->mem_idx, MO_TEUQ);
54
+++ b/accel/tcg/user-exec.c
55
-
55
@@ -XXX,XX +XXX,XX @@ void page_reset_target_data(target_ulong start, target_ulong last) { }
56
- tcg_temp_free(addr);
56
57
- tcg_temp_free(t0);
57
/* The softmmu versions of these helpers are in cputlb.c. */
58
-
58
59
return true;
59
-static void *cpu_mmu_lookup(CPUArchState *env, vaddr addr,
60
}
60
+static void *cpu_mmu_lookup(CPUState *cpu, vaddr addr,
61
61
MemOp mop, uintptr_t ra, MMUAccessType type)
62
@@ -XXX,XX +XXX,XX @@ static bool trans_PPACW(DisasContext *ctx, arg_r *a)
62
{
63
63
int a_bits = get_alignment_bits(mop);
64
gen_load_gpr_hi(t0, a->rs); /* a1 */
64
@@ -XXX,XX +XXX,XX @@ static void *cpu_mmu_lookup(CPUArchState *env, vaddr addr,
65
tcg_gen_deposit_i64(cpu_gpr_hi[a->rd], a0, t0, 32, 32);
65
66
-
66
/* Enforce guest required alignment. */
67
- tcg_temp_free(t0);
67
if (unlikely(addr & ((1 << a_bits) - 1))) {
68
- tcg_temp_free(b0);
68
- cpu_loop_exit_sigbus(env_cpu(env), addr, type, ra);
69
- tcg_temp_free(a0);
69
+ cpu_loop_exit_sigbus(cpu, addr, type, ra);
70
-
71
return true;
72
}
73
74
@@ -XXX,XX +XXX,XX @@ static bool trans_PEXTLx(DisasContext *ctx, arg_r *a, unsigned wlen)
75
tcg_gen_shri_i64(bx, bx, wlen);
76
tcg_gen_shri_i64(ax, ax, wlen);
70
}
77
}
71
78
-
72
- ret = g2h(env_cpu(env), addr);
79
- tcg_temp_free(bx);
73
+ ret = g2h(cpu, addr);
80
- tcg_temp_free(ax);
74
set_helper_retaddr(ra);
81
-
75
return ret;
82
return true;
76
}
83
}
77
84
78
#include "ldst_atomicity.c.inc"
85
@@ -XXX,XX +XXX,XX @@ static bool trans_PEXTLW(DisasContext *ctx, arg_r *a)
79
86
gen_load_gpr(ax, a->rs);
80
-static uint8_t do_ld1_mmu(CPUArchState *env, abi_ptr addr,
87
gen_load_gpr(bx, a->rt);
81
- MemOp mop, uintptr_t ra)
88
gen_pextw(cpu_gpr[a->rd], cpu_gpr_hi[a->rd], ax, bx);
82
+static uint8_t do_ld1_mmu(CPUState *cpu, vaddr addr, MemOpIdx oi,
89
-
83
+ uintptr_t ra, MMUAccessType access_type)
90
- tcg_temp_free(bx);
84
{
91
- tcg_temp_free(ax);
85
void *haddr;
92
-
86
uint8_t ret;
93
return true;
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
}
94
}
103
95
104
tcg_target_ulong helper_ldsb_mmu(CPUArchState *env, uint64_t addr,
96
@@ -XXX,XX +XXX,XX @@ static bool trans_PEXTUW(DisasContext *ctx, arg_r *a)
105
MemOpIdx oi, uintptr_t ra)
97
gen_load_gpr_hi(ax, a->rs);
106
{
98
gen_load_gpr_hi(bx, a->rt);
107
- return (int8_t)do_ld1_mmu(env, addr, get_memop(oi), ra);
99
gen_pextw(cpu_gpr[a->rd], cpu_gpr_hi[a->rd], ax, bx);
108
+ tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_8);
100
-
109
+ return (int8_t)do_ld1_mmu(env_cpu(env), addr, oi, ra, MMU_DATA_LOAD);
101
- tcg_temp_free(bx);
102
- tcg_temp_free(ax);
103
-
104
return true;
110
}
105
}
111
106
112
uint8_t cpu_ldb_mmu(CPUArchState *env, abi_ptr addr,
107
@@ -XXX,XX +XXX,XX @@ static bool trans_PROT3W(DisasContext *ctx, arg_r *a)
113
MemOpIdx oi, uintptr_t ra)
108
114
{
109
tcg_gen_deposit_i64(cpu_gpr[a->rd], cpu_gpr[a->rt], ax, 0, 32);
115
- uint8_t ret = do_ld1_mmu(env, addr, get_memop(oi), ra);
110
tcg_gen_rotri_i64(cpu_gpr[a->rd], cpu_gpr[a->rd], 32);
116
+ uint8_t ret;
111
-
117
+
112
- tcg_temp_free(ax);
118
+ tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_8);
113
-
119
+ ret = do_ld1_mmu(env_cpu(env), addr, oi, ra, MMU_DATA_LOAD);
114
return true;
120
qemu_plugin_vcpu_mem_cb(env_cpu(env), addr, oi, QEMU_PLUGIN_MEM_R);
121
return ret;
122
}
115
}
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
--
116
--
521
2.34.1
117
2.34.1
118
119
diff view generated by jsdifflib
New patch
1
Translators are no longer required to free tcg temporaries.
1
2
3
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
4
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
5
---
6
target/mips/tcg/vr54xx_translate.c | 4 ----
7
1 file changed, 4 deletions(-)
8
9
diff --git a/target/mips/tcg/vr54xx_translate.c b/target/mips/tcg/vr54xx_translate.c
10
index XXXXXXX..XXXXXXX 100644
11
--- a/target/mips/tcg/vr54xx_translate.c
12
+++ b/target/mips/tcg/vr54xx_translate.c
13
@@ -XXX,XX +XXX,XX @@ static bool trans_mult_acc(DisasContext *ctx, arg_r *a,
14
gen_helper_mult_acc(t0, cpu_env, t0, t1);
15
16
gen_store_gpr(t0, a->rd);
17
-
18
- tcg_temp_free(t0);
19
- tcg_temp_free(t1);
20
-
21
return true;
22
}
23
24
--
25
2.34.1
26
27
diff view generated by jsdifflib
New patch
1
Translators are no longer required to free tcg temporaries.
1
2
3
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
4
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
5
---
6
target/mips/tcg/translate.c | 537 +-----------------------------------
7
1 file changed, 14 insertions(+), 523 deletions(-)
8
9
diff --git a/target/mips/tcg/translate.c b/target/mips/tcg/translate.c
10
index XXXXXXX..XXXXXXX 100644
11
--- a/target/mips/tcg/translate.c
12
+++ b/target/mips/tcg/translate.c
13
@@ -XXX,XX +XXX,XX @@ static inline void gen_load_srsgpr(int from, int to)
14
tcg_gen_add_ptr(addr, cpu_env, addr);
15
16
tcg_gen_ld_tl(t0, addr, sizeof(target_ulong) * from);
17
- tcg_temp_free_ptr(addr);
18
- tcg_temp_free_i32(t2);
19
}
20
gen_store_gpr(t0, to);
21
- tcg_temp_free(t0);
22
}
23
24
static inline void gen_store_srsgpr(int from, int to)
25
@@ -XXX,XX +XXX,XX @@ static inline void gen_store_srsgpr(int from, int to)
26
tcg_gen_add_ptr(addr, cpu_env, addr);
27
28
tcg_gen_st_tl(t0, addr, sizeof(target_ulong) * to);
29
- tcg_temp_free_ptr(addr);
30
- tcg_temp_free_i32(t2);
31
- tcg_temp_free(t0);
32
}
33
}
34
35
@@ -XXX,XX +XXX,XX @@ void gen_store_fpr32(DisasContext *ctx, TCGv_i32 t, int reg)
36
t64 = tcg_temp_new_i64();
37
tcg_gen_extu_i32_i64(t64, t);
38
tcg_gen_deposit_i64(fpu_f64[reg], fpu_f64[reg], t64, 0, 32);
39
- tcg_temp_free_i64(t64);
40
}
41
42
static void gen_load_fpr32h(DisasContext *ctx, TCGv_i32 t, int reg)
43
@@ -XXX,XX +XXX,XX @@ static void gen_store_fpr32h(DisasContext *ctx, TCGv_i32 t, int reg)
44
TCGv_i64 t64 = tcg_temp_new_i64();
45
tcg_gen_extu_i32_i64(t64, t);
46
tcg_gen_deposit_i64(fpu_f64[reg], fpu_f64[reg], t64, 32, 32);
47
- tcg_temp_free_i64(t64);
48
} else {
49
gen_store_fpr32(ctx, t, reg | 1);
50
}
51
@@ -XXX,XX +XXX,XX @@ void gen_store_fpr64(DisasContext *ctx, TCGv_i64 t, int reg)
52
t0 = tcg_temp_new_i64();
53
tcg_gen_shri_i64(t0, t, 32);
54
tcg_gen_deposit_i64(fpu_f64[reg | 1], fpu_f64[reg | 1], t0, 0, 32);
55
- tcg_temp_free_i64(t0);
56
}
57
}
58
59
@@ -XXX,XX +XXX,XX @@ static inline void gen_cmp ## type ## _ ## fmt(DisasContext *ctx, int n, \
60
default: \
61
abort(); \
62
} \
63
- tcg_temp_free_i##bits(fp0); \
64
- tcg_temp_free_i##bits(fp1); \
65
}
66
67
FOP_CONDS(, 0, d, FMT_D, 64)
68
@@ -XXX,XX +XXX,XX @@ static inline void gen_r6_cmp_ ## fmt(DisasContext *ctx, int n, \
69
abort(); \
70
} \
71
STORE; \
72
- tcg_temp_free_i ## bits(fp0); \
73
- tcg_temp_free_i ## bits(fp1); \
74
}
75
76
FOP_CONDNS(d, FMT_D, 64, gen_store_fpr64(ctx, fp0, fd))
77
@@ -XXX,XX +XXX,XX @@ static inline void op_ld_##insn(TCGv ret, TCGv arg1, int mem_idx, \
78
tcg_gen_qemu_##fname(ret, arg1, ctx->mem_idx); \
79
tcg_gen_st_tl(t0, cpu_env, offsetof(CPUMIPSState, lladdr)); \
80
tcg_gen_st_tl(ret, cpu_env, offsetof(CPUMIPSState, llval)); \
81
- tcg_temp_free(t0); \
82
}
83
#else
84
#define OP_LD_ATOMIC(insn, fname) \
85
@@ -XXX,XX +XXX,XX @@ static void gen_ld(DisasContext *ctx, uint32_t opc,
86
tcg_gen_shl_tl(t2, t2, t1);
87
gen_load_gpr(t1, rt);
88
tcg_gen_andc_tl(t1, t1, t2);
89
- tcg_temp_free(t2);
90
tcg_gen_or_tl(t0, t0, t1);
91
- tcg_temp_free(t1);
92
gen_store_gpr(t0, rt);
93
break;
94
case OPC_LDR:
95
@@ -XXX,XX +XXX,XX @@ static void gen_ld(DisasContext *ctx, uint32_t opc,
96
tcg_gen_shl_tl(t2, t2, t1);
97
gen_load_gpr(t1, rt);
98
tcg_gen_and_tl(t1, t1, t2);
99
- tcg_temp_free(t2);
100
tcg_gen_or_tl(t0, t0, t1);
101
- tcg_temp_free(t1);
102
gen_store_gpr(t0, rt);
103
break;
104
case OPC_LDPC:
105
t1 = tcg_const_tl(pc_relative_pc(ctx));
106
gen_op_addr_add(ctx, t0, t0, t1);
107
- tcg_temp_free(t1);
108
tcg_gen_qemu_ld_tl(t0, t0, mem_idx, MO_TEUQ);
109
gen_store_gpr(t0, rt);
110
break;
111
@@ -XXX,XX +XXX,XX @@ static void gen_ld(DisasContext *ctx, uint32_t opc,
112
case OPC_LWPC:
113
t1 = tcg_const_tl(pc_relative_pc(ctx));
114
gen_op_addr_add(ctx, t0, t0, t1);
115
- tcg_temp_free(t1);
116
tcg_gen_qemu_ld_tl(t0, t0, mem_idx, MO_TESL);
117
gen_store_gpr(t0, rt);
118
break;
119
@@ -XXX,XX +XXX,XX @@ static void gen_ld(DisasContext *ctx, uint32_t opc,
120
tcg_gen_shl_tl(t2, t2, t1);
121
gen_load_gpr(t1, rt);
122
tcg_gen_andc_tl(t1, t1, t2);
123
- tcg_temp_free(t2);
124
tcg_gen_or_tl(t0, t0, t1);
125
- tcg_temp_free(t1);
126
tcg_gen_ext32s_tl(t0, t0);
127
gen_store_gpr(t0, rt);
128
break;
129
@@ -XXX,XX +XXX,XX @@ static void gen_ld(DisasContext *ctx, uint32_t opc,
130
tcg_gen_shl_tl(t2, t2, t1);
131
gen_load_gpr(t1, rt);
132
tcg_gen_and_tl(t1, t1, t2);
133
- tcg_temp_free(t2);
134
tcg_gen_or_tl(t0, t0, t1);
135
- tcg_temp_free(t1);
136
tcg_gen_ext32s_tl(t0, t0);
137
gen_store_gpr(t0, rt);
138
break;
139
@@ -XXX,XX +XXX,XX @@ static void gen_ld(DisasContext *ctx, uint32_t opc,
140
gen_store_gpr(t0, rt);
141
break;
142
}
143
- tcg_temp_free(t0);
144
}
145
146
/* Store */
147
@@ -XXX,XX +XXX,XX @@ static void gen_st(DisasContext *ctx, uint32_t opc, int rt,
148
gen_helper_0e2i(swr, t1, t0, mem_idx);
149
break;
150
}
151
- tcg_temp_free(t0);
152
- tcg_temp_free(t1);
153
}
154
155
156
@@ -XXX,XX +XXX,XX @@ static void gen_st_cond(DisasContext *ctx, int rt, int base, int offset,
157
/* compare the address against that of the preceding LL */
158
gen_base_offset_addr(ctx, addr, base, offset);
159
tcg_gen_brcond_tl(TCG_COND_EQ, addr, cpu_lladdr, l1);
160
- tcg_temp_free(addr);
161
tcg_gen_movi_tl(t0, 0);
162
gen_store_gpr(t0, rt);
163
tcg_gen_br(done);
164
@@ -XXX,XX +XXX,XX @@ static void gen_st_cond(DisasContext *ctx, int rt, int base, int offset,
165
eva ? MIPS_HFLAG_UM : ctx->mem_idx, tcg_mo);
166
tcg_gen_setcond_tl(TCG_COND_EQ, t0, t0, cpu_llval);
167
gen_store_gpr(t0, rt);
168
- tcg_temp_free(val);
169
170
gen_set_label(done);
171
- tcg_temp_free(t0);
172
}
173
174
/* Load and store */
175
@@ -XXX,XX +XXX,XX @@ static void gen_flt_ldst(DisasContext *ctx, uint32_t opc, int ft,
176
tcg_gen_qemu_ld_i32(fp0, t0, ctx->mem_idx, MO_TESL |
177
ctx->default_tcg_memop_mask);
178
gen_store_fpr32(ctx, fp0, ft);
179
- tcg_temp_free_i32(fp0);
180
}
181
break;
182
case OPC_SWC1:
183
@@ -XXX,XX +XXX,XX @@ static void gen_flt_ldst(DisasContext *ctx, uint32_t opc, int ft,
184
gen_load_fpr32(ctx, fp0, ft);
185
tcg_gen_qemu_st_i32(fp0, t0, ctx->mem_idx, MO_TEUL |
186
ctx->default_tcg_memop_mask);
187
- tcg_temp_free_i32(fp0);
188
}
189
break;
190
case OPC_LDC1:
191
@@ -XXX,XX +XXX,XX @@ static void gen_flt_ldst(DisasContext *ctx, uint32_t opc, int ft,
192
tcg_gen_qemu_ld_i64(fp0, t0, ctx->mem_idx, MO_TEUQ |
193
ctx->default_tcg_memop_mask);
194
gen_store_fpr64(ctx, fp0, ft);
195
- tcg_temp_free_i64(fp0);
196
}
197
break;
198
case OPC_SDC1:
199
@@ -XXX,XX +XXX,XX @@ static void gen_flt_ldst(DisasContext *ctx, uint32_t opc, int ft,
200
gen_load_fpr64(ctx, fp0, ft);
201
tcg_gen_qemu_st_i64(fp0, t0, ctx->mem_idx, MO_TEUQ |
202
ctx->default_tcg_memop_mask);
203
- tcg_temp_free_i64(fp0);
204
}
205
break;
206
default:
207
@@ -XXX,XX +XXX,XX @@ static void gen_cop1_ldst(DisasContext *ctx, uint32_t op, int rt,
208
} else {
209
generate_exception_err(ctx, EXCP_CpU, 1);
210
}
211
- tcg_temp_free(t0);
212
}
213
214
/* Arithmetic with immediate operand */
215
@@ -XXX,XX +XXX,XX @@ static void gen_arith_imm(DisasContext *ctx, uint32_t opc,
216
tcg_gen_xori_tl(t1, t1, ~uimm);
217
tcg_gen_xori_tl(t2, t0, uimm);
218
tcg_gen_and_tl(t1, t1, t2);
219
- tcg_temp_free(t2);
220
tcg_gen_brcondi_tl(TCG_COND_GE, t1, 0, l1);
221
- tcg_temp_free(t1);
222
/* operands of same sign, result different sign */
223
generate_exception(ctx, EXCP_OVERFLOW);
224
gen_set_label(l1);
225
tcg_gen_ext32s_tl(t0, t0);
226
gen_store_gpr(t0, rt);
227
- tcg_temp_free(t0);
228
}
229
break;
230
case OPC_ADDIU:
231
@@ -XXX,XX +XXX,XX @@ static void gen_arith_imm(DisasContext *ctx, uint32_t opc,
232
tcg_gen_xori_tl(t1, t1, ~uimm);
233
tcg_gen_xori_tl(t2, t0, uimm);
234
tcg_gen_and_tl(t1, t1, t2);
235
- tcg_temp_free(t2);
236
tcg_gen_brcondi_tl(TCG_COND_GE, t1, 0, l1);
237
- tcg_temp_free(t1);
238
/* operands of same sign, result different sign */
239
generate_exception(ctx, EXCP_OVERFLOW);
240
gen_set_label(l1);
241
gen_store_gpr(t0, rt);
242
- tcg_temp_free(t0);
243
}
244
break;
245
case OPC_DADDIU:
246
@@ -XXX,XX +XXX,XX @@ static void gen_slt_imm(DisasContext *ctx, uint32_t opc,
247
tcg_gen_setcondi_tl(TCG_COND_LTU, cpu_gpr[rt], t0, uimm);
248
break;
249
}
250
- tcg_temp_free(t0);
251
}
252
253
/* Shifts with immediate operand */
254
@@ -XXX,XX +XXX,XX @@ static void gen_shift_imm(DisasContext *ctx, uint32_t opc,
255
tcg_gen_trunc_tl_i32(t1, t0);
256
tcg_gen_rotri_i32(t1, t1, uimm);
257
tcg_gen_ext_i32_tl(cpu_gpr[rt], t1);
258
- tcg_temp_free_i32(t1);
259
} else {
260
tcg_gen_ext32s_tl(cpu_gpr[rt], t0);
261
}
262
@@ -XXX,XX +XXX,XX @@ static void gen_shift_imm(DisasContext *ctx, uint32_t opc,
263
break;
264
#endif
265
}
266
- tcg_temp_free(t0);
267
}
268
269
/* Arithmetic */
270
@@ -XXX,XX +XXX,XX @@ static void gen_arith(DisasContext *ctx, uint32_t opc,
271
tcg_gen_xor_tl(t1, t1, t2);
272
tcg_gen_xor_tl(t2, t0, t2);
273
tcg_gen_andc_tl(t1, t2, t1);
274
- tcg_temp_free(t2);
275
tcg_gen_brcondi_tl(TCG_COND_GE, t1, 0, l1);
276
- tcg_temp_free(t1);
277
/* operands of same sign, result different sign */
278
generate_exception(ctx, EXCP_OVERFLOW);
279
gen_set_label(l1);
280
gen_store_gpr(t0, rd);
281
- tcg_temp_free(t0);
282
}
283
break;
284
case OPC_ADDU:
285
@@ -XXX,XX +XXX,XX @@ static void gen_arith(DisasContext *ctx, uint32_t opc,
286
tcg_gen_xor_tl(t2, t1, t2);
287
tcg_gen_xor_tl(t1, t0, t1);
288
tcg_gen_and_tl(t1, t1, t2);
289
- tcg_temp_free(t2);
290
tcg_gen_brcondi_tl(TCG_COND_GE, t1, 0, l1);
291
- tcg_temp_free(t1);
292
/*
293
* operands of different sign, first operand and the result
294
* of different sign
295
@@ -XXX,XX +XXX,XX @@ static void gen_arith(DisasContext *ctx, uint32_t opc,
296
generate_exception(ctx, EXCP_OVERFLOW);
297
gen_set_label(l1);
298
gen_store_gpr(t0, rd);
299
- tcg_temp_free(t0);
300
}
301
break;
302
case OPC_SUBU:
303
@@ -XXX,XX +XXX,XX @@ static void gen_arith(DisasContext *ctx, uint32_t opc,
304
tcg_gen_xor_tl(t1, t1, t2);
305
tcg_gen_xor_tl(t2, t0, t2);
306
tcg_gen_andc_tl(t1, t2, t1);
307
- tcg_temp_free(t2);
308
tcg_gen_brcondi_tl(TCG_COND_GE, t1, 0, l1);
309
- tcg_temp_free(t1);
310
/* operands of same sign, result different sign */
311
generate_exception(ctx, EXCP_OVERFLOW);
312
gen_set_label(l1);
313
gen_store_gpr(t0, rd);
314
- tcg_temp_free(t0);
315
}
316
break;
317
case OPC_DADDU:
318
@@ -XXX,XX +XXX,XX @@ static void gen_arith(DisasContext *ctx, uint32_t opc,
319
tcg_gen_xor_tl(t2, t1, t2);
320
tcg_gen_xor_tl(t1, t0, t1);
321
tcg_gen_and_tl(t1, t1, t2);
322
- tcg_temp_free(t2);
323
tcg_gen_brcondi_tl(TCG_COND_GE, t1, 0, l1);
324
- tcg_temp_free(t1);
325
/*
326
* Operands of different sign, first operand and result different
327
* sign.
328
@@ -XXX,XX +XXX,XX @@ static void gen_arith(DisasContext *ctx, uint32_t opc,
329
generate_exception(ctx, EXCP_OVERFLOW);
330
gen_set_label(l1);
331
gen_store_gpr(t0, rd);
332
- tcg_temp_free(t0);
333
}
334
break;
335
case OPC_DSUBU:
336
@@ -XXX,XX +XXX,XX @@ static void gen_cond_move(DisasContext *ctx, uint32_t opc,
337
tcg_gen_movcond_tl(TCG_COND_EQ, cpu_gpr[rd], t0, t1, t2, t1);
338
break;
339
}
340
- tcg_temp_free(t2);
341
- tcg_temp_free(t1);
342
- tcg_temp_free(t0);
343
}
344
345
/* Logic */
346
@@ -XXX,XX +XXX,XX @@ static void gen_slt(DisasContext *ctx, uint32_t opc,
347
tcg_gen_setcond_tl(TCG_COND_LTU, cpu_gpr[rd], t0, t1);
348
break;
349
}
350
- tcg_temp_free(t0);
351
- tcg_temp_free(t1);
352
}
353
354
/* Shifts */
355
@@ -XXX,XX +XXX,XX @@ static void gen_shift(DisasContext *ctx, uint32_t opc,
356
tcg_gen_andi_i32(t2, t2, 0x1f);
357
tcg_gen_rotr_i32(t2, t3, t2);
358
tcg_gen_ext_i32_tl(cpu_gpr[rd], t2);
359
- tcg_temp_free_i32(t2);
360
- tcg_temp_free_i32(t3);
361
}
362
break;
363
#if defined(TARGET_MIPS64)
364
@@ -XXX,XX +XXX,XX @@ static void gen_shift(DisasContext *ctx, uint32_t opc,
365
break;
366
#endif
367
}
368
- tcg_temp_free(t0);
369
- tcg_temp_free(t1);
370
}
371
372
/* Arithmetic on HI/LO registers */
373
@@ -XXX,XX +XXX,XX @@ static inline void gen_r6_ld(target_long addr, int reg, int memidx,
374
TCGv t0 = tcg_const_tl(addr);
375
tcg_gen_qemu_ld_tl(t0, t0, memidx, memop);
376
gen_store_gpr(t0, reg);
377
- tcg_temp_free(t0);
378
}
379
380
static inline void gen_pcrel(DisasContext *ctx, int opc, target_ulong pc,
381
@@ -XXX,XX +XXX,XX @@ static void gen_r6_muldiv(DisasContext *ctx, int opc, int rd, int rs, int rt)
382
tcg_gen_movcond_tl(TCG_COND_NE, t1, t2, t3, t2, t1);
383
tcg_gen_div_tl(cpu_gpr[rd], t0, t1);
384
tcg_gen_ext32s_tl(cpu_gpr[rd], cpu_gpr[rd]);
385
- tcg_temp_free(t3);
386
- tcg_temp_free(t2);
387
}
388
break;
389
case R6_OPC_MOD:
390
@@ -XXX,XX +XXX,XX @@ static void gen_r6_muldiv(DisasContext *ctx, int opc, int rd, int rs, int rt)
391
tcg_gen_movcond_tl(TCG_COND_NE, t1, t2, t3, t2, t1);
392
tcg_gen_rem_tl(cpu_gpr[rd], t0, t1);
393
tcg_gen_ext32s_tl(cpu_gpr[rd], cpu_gpr[rd]);
394
- tcg_temp_free(t3);
395
- tcg_temp_free(t2);
396
}
397
break;
398
case R6_OPC_DIVU:
399
@@ -XXX,XX +XXX,XX @@ static void gen_r6_muldiv(DisasContext *ctx, int opc, int rd, int rs, int rt)
400
tcg_gen_movcond_tl(TCG_COND_EQ, t1, t1, t2, t3, t1);
401
tcg_gen_divu_tl(cpu_gpr[rd], t0, t1);
402
tcg_gen_ext32s_tl(cpu_gpr[rd], cpu_gpr[rd]);
403
- tcg_temp_free(t3);
404
- tcg_temp_free(t2);
405
}
406
break;
407
case R6_OPC_MODU:
408
@@ -XXX,XX +XXX,XX @@ static void gen_r6_muldiv(DisasContext *ctx, int opc, int rd, int rs, int rt)
409
tcg_gen_movcond_tl(TCG_COND_EQ, t1, t1, t2, t3, t1);
410
tcg_gen_remu_tl(cpu_gpr[rd], t0, t1);
411
tcg_gen_ext32s_tl(cpu_gpr[rd], cpu_gpr[rd]);
412
- tcg_temp_free(t3);
413
- tcg_temp_free(t2);
414
}
415
break;
416
case R6_OPC_MUL:
417
@@ -XXX,XX +XXX,XX @@ static void gen_r6_muldiv(DisasContext *ctx, int opc, int rd, int rs, int rt)
418
tcg_gen_trunc_tl_i32(t3, t1);
419
tcg_gen_mul_i32(t2, t2, t3);
420
tcg_gen_ext_i32_tl(cpu_gpr[rd], t2);
421
- tcg_temp_free_i32(t2);
422
- tcg_temp_free_i32(t3);
423
}
424
break;
425
case R6_OPC_MUH:
426
@@ -XXX,XX +XXX,XX @@ static void gen_r6_muldiv(DisasContext *ctx, int opc, int rd, int rs, int rt)
427
tcg_gen_trunc_tl_i32(t3, t1);
428
tcg_gen_muls2_i32(t2, t3, t2, t3);
429
tcg_gen_ext_i32_tl(cpu_gpr[rd], t3);
430
- tcg_temp_free_i32(t2);
431
- tcg_temp_free_i32(t3);
432
}
433
break;
434
case R6_OPC_MULU:
435
@@ -XXX,XX +XXX,XX @@ static void gen_r6_muldiv(DisasContext *ctx, int opc, int rd, int rs, int rt)
436
tcg_gen_trunc_tl_i32(t3, t1);
437
tcg_gen_mul_i32(t2, t2, t3);
438
tcg_gen_ext_i32_tl(cpu_gpr[rd], t2);
439
- tcg_temp_free_i32(t2);
440
- tcg_temp_free_i32(t3);
441
}
442
break;
443
case R6_OPC_MUHU:
444
@@ -XXX,XX +XXX,XX @@ static void gen_r6_muldiv(DisasContext *ctx, int opc, int rd, int rs, int rt)
445
tcg_gen_trunc_tl_i32(t3, t1);
446
tcg_gen_mulu2_i32(t2, t3, t2, t3);
447
tcg_gen_ext_i32_tl(cpu_gpr[rd], t3);
448
- tcg_temp_free_i32(t2);
449
- tcg_temp_free_i32(t3);
450
}
451
break;
452
#if defined(TARGET_MIPS64)
453
@@ -XXX,XX +XXX,XX @@ static void gen_r6_muldiv(DisasContext *ctx, int opc, int rd, int rs, int rt)
454
tcg_gen_movi_tl(t3, 0);
455
tcg_gen_movcond_tl(TCG_COND_NE, t1, t2, t3, t2, t1);
456
tcg_gen_div_tl(cpu_gpr[rd], t0, t1);
457
- tcg_temp_free(t3);
458
- tcg_temp_free(t2);
459
}
460
break;
461
case R6_OPC_DMOD:
462
@@ -XXX,XX +XXX,XX @@ static void gen_r6_muldiv(DisasContext *ctx, int opc, int rd, int rs, int rt)
463
tcg_gen_movi_tl(t3, 0);
464
tcg_gen_movcond_tl(TCG_COND_NE, t1, t2, t3, t2, t1);
465
tcg_gen_rem_tl(cpu_gpr[rd], t0, t1);
466
- tcg_temp_free(t3);
467
- tcg_temp_free(t2);
468
}
469
break;
470
case R6_OPC_DDIVU:
471
@@ -XXX,XX +XXX,XX @@ static void gen_r6_muldiv(DisasContext *ctx, int opc, int rd, int rs, int rt)
472
TCGv t3 = tcg_const_tl(1);
473
tcg_gen_movcond_tl(TCG_COND_EQ, t1, t1, t2, t3, t1);
474
tcg_gen_divu_i64(cpu_gpr[rd], t0, t1);
475
- tcg_temp_free(t3);
476
- tcg_temp_free(t2);
477
}
478
break;
479
case R6_OPC_DMODU:
480
@@ -XXX,XX +XXX,XX @@ static void gen_r6_muldiv(DisasContext *ctx, int opc, int rd, int rs, int rt)
481
TCGv t3 = tcg_const_tl(1);
482
tcg_gen_movcond_tl(TCG_COND_EQ, t1, t1, t2, t3, t1);
483
tcg_gen_remu_i64(cpu_gpr[rd], t0, t1);
484
- tcg_temp_free(t3);
485
- tcg_temp_free(t2);
486
}
487
break;
488
case R6_OPC_DMUL:
489
@@ -XXX,XX +XXX,XX @@ static void gen_r6_muldiv(DisasContext *ctx, int opc, int rd, int rs, int rt)
490
{
491
TCGv t2 = tcg_temp_new();
492
tcg_gen_muls2_i64(t2, cpu_gpr[rd], t0, t1);
493
- tcg_temp_free(t2);
494
}
495
break;
496
case R6_OPC_DMULU:
497
@@ -XXX,XX +XXX,XX @@ static void gen_r6_muldiv(DisasContext *ctx, int opc, int rd, int rs, int rt)
498
{
499
TCGv t2 = tcg_temp_new();
500
tcg_gen_mulu2_i64(t2, cpu_gpr[rd], t0, t1);
501
- tcg_temp_free(t2);
502
}
503
break;
504
#endif
505
default:
506
MIPS_INVAL("r6 mul/div");
507
gen_reserved_instruction(ctx);
508
- goto out;
509
+ break;
510
}
511
- out:
512
- tcg_temp_free(t0);
513
- tcg_temp_free(t1);
514
}
515
516
#if defined(TARGET_MIPS64)
517
@@ -XXX,XX +XXX,XX @@ static void gen_div1_tx79(DisasContext *ctx, uint32_t opc, int rs, int rt)
518
tcg_gen_rem_tl(cpu_HI[1], t0, t1);
519
tcg_gen_ext32s_tl(cpu_LO[1], cpu_LO[1]);
520
tcg_gen_ext32s_tl(cpu_HI[1], cpu_HI[1]);
521
- tcg_temp_free(t3);
522
- tcg_temp_free(t2);
523
}
524
break;
525
case MMI_OPC_DIVU1:
526
@@ -XXX,XX +XXX,XX @@ static void gen_div1_tx79(DisasContext *ctx, uint32_t opc, int rs, int rt)
527
tcg_gen_remu_tl(cpu_HI[1], t0, t1);
528
tcg_gen_ext32s_tl(cpu_LO[1], cpu_LO[1]);
529
tcg_gen_ext32s_tl(cpu_HI[1], cpu_HI[1]);
530
- tcg_temp_free(t3);
531
- tcg_temp_free(t2);
532
}
533
break;
534
default:
535
MIPS_INVAL("div1 TX79");
536
gen_reserved_instruction(ctx);
537
- goto out;
538
+ break;
539
}
540
- out:
541
- tcg_temp_free(t0);
542
- tcg_temp_free(t1);
543
}
544
#endif
545
546
@@ -XXX,XX +XXX,XX @@ static void gen_muldiv(DisasContext *ctx, uint32_t opc,
547
tcg_gen_rem_tl(cpu_HI[acc], t0, t1);
548
tcg_gen_ext32s_tl(cpu_LO[acc], cpu_LO[acc]);
549
tcg_gen_ext32s_tl(cpu_HI[acc], cpu_HI[acc]);
550
- tcg_temp_free(t3);
551
- tcg_temp_free(t2);
552
}
553
break;
554
case OPC_DIVU:
555
@@ -XXX,XX +XXX,XX @@ static void gen_muldiv(DisasContext *ctx, uint32_t opc,
556
tcg_gen_remu_tl(cpu_HI[acc], t0, t1);
557
tcg_gen_ext32s_tl(cpu_LO[acc], cpu_LO[acc]);
558
tcg_gen_ext32s_tl(cpu_HI[acc], cpu_HI[acc]);
559
- tcg_temp_free(t3);
560
- tcg_temp_free(t2);
561
}
562
break;
563
case OPC_MULT:
564
@@ -XXX,XX +XXX,XX @@ static void gen_muldiv(DisasContext *ctx, uint32_t opc,
565
tcg_gen_muls2_i32(t2, t3, t2, t3);
566
tcg_gen_ext_i32_tl(cpu_LO[acc], t2);
567
tcg_gen_ext_i32_tl(cpu_HI[acc], t3);
568
- tcg_temp_free_i32(t2);
569
- tcg_temp_free_i32(t3);
570
}
571
break;
572
case OPC_MULTU:
573
@@ -XXX,XX +XXX,XX @@ static void gen_muldiv(DisasContext *ctx, uint32_t opc,
574
tcg_gen_mulu2_i32(t2, t3, t2, t3);
575
tcg_gen_ext_i32_tl(cpu_LO[acc], t2);
576
tcg_gen_ext_i32_tl(cpu_HI[acc], t3);
577
- tcg_temp_free_i32(t2);
578
- tcg_temp_free_i32(t3);
579
}
580
break;
581
#if defined(TARGET_MIPS64)
582
@@ -XXX,XX +XXX,XX @@ static void gen_muldiv(DisasContext *ctx, uint32_t opc,
583
tcg_gen_movcond_tl(TCG_COND_NE, t1, t2, t3, t2, t1);
584
tcg_gen_div_tl(cpu_LO[acc], t0, t1);
585
tcg_gen_rem_tl(cpu_HI[acc], t0, t1);
586
- tcg_temp_free(t3);
587
- tcg_temp_free(t2);
588
}
589
break;
590
case OPC_DDIVU:
591
@@ -XXX,XX +XXX,XX @@ static void gen_muldiv(DisasContext *ctx, uint32_t opc,
592
tcg_gen_movcond_tl(TCG_COND_EQ, t1, t1, t2, t3, t1);
593
tcg_gen_divu_i64(cpu_LO[acc], t0, t1);
594
tcg_gen_remu_i64(cpu_HI[acc], t0, t1);
595
- tcg_temp_free(t3);
596
- tcg_temp_free(t2);
597
}
598
break;
599
case OPC_DMULT:
600
@@ -XXX,XX +XXX,XX @@ static void gen_muldiv(DisasContext *ctx, uint32_t opc,
601
tcg_gen_mul_i64(t2, t2, t3);
602
tcg_gen_concat_tl_i64(t3, cpu_LO[acc], cpu_HI[acc]);
603
tcg_gen_add_i64(t2, t2, t3);
604
- tcg_temp_free_i64(t3);
605
gen_move_low32(cpu_LO[acc], t2);
606
gen_move_high32(cpu_HI[acc], t2);
607
- tcg_temp_free_i64(t2);
608
}
609
break;
610
case OPC_MADDU:
611
@@ -XXX,XX +XXX,XX @@ static void gen_muldiv(DisasContext *ctx, uint32_t opc,
612
tcg_gen_mul_i64(t2, t2, t3);
613
tcg_gen_concat_tl_i64(t3, cpu_LO[acc], cpu_HI[acc]);
614
tcg_gen_add_i64(t2, t2, t3);
615
- tcg_temp_free_i64(t3);
616
gen_move_low32(cpu_LO[acc], t2);
617
gen_move_high32(cpu_HI[acc], t2);
618
- tcg_temp_free_i64(t2);
619
}
620
break;
621
case OPC_MSUB:
622
@@ -XXX,XX +XXX,XX @@ static void gen_muldiv(DisasContext *ctx, uint32_t opc,
623
tcg_gen_mul_i64(t2, t2, t3);
624
tcg_gen_concat_tl_i64(t3, cpu_LO[acc], cpu_HI[acc]);
625
tcg_gen_sub_i64(t2, t3, t2);
626
- tcg_temp_free_i64(t3);
627
gen_move_low32(cpu_LO[acc], t2);
628
gen_move_high32(cpu_HI[acc], t2);
629
- tcg_temp_free_i64(t2);
630
}
631
break;
632
case OPC_MSUBU:
633
@@ -XXX,XX +XXX,XX @@ static void gen_muldiv(DisasContext *ctx, uint32_t opc,
634
tcg_gen_mul_i64(t2, t2, t3);
635
tcg_gen_concat_tl_i64(t3, cpu_LO[acc], cpu_HI[acc]);
636
tcg_gen_sub_i64(t2, t3, t2);
637
- tcg_temp_free_i64(t3);
638
gen_move_low32(cpu_LO[acc], t2);
639
gen_move_high32(cpu_HI[acc], t2);
640
- tcg_temp_free_i64(t2);
641
}
642
break;
643
default:
644
MIPS_INVAL("mul/div");
645
gen_reserved_instruction(ctx);
646
- goto out;
647
+ break;
648
}
649
- out:
650
- tcg_temp_free(t0);
651
- tcg_temp_free(t1);
652
}
653
654
/*
655
@@ -XXX,XX +XXX,XX @@ static void gen_mul_txx9(DisasContext *ctx, uint32_t opc,
656
}
657
tcg_gen_ext_i32_tl(cpu_LO[acc], t2);
658
tcg_gen_ext_i32_tl(cpu_HI[acc], t3);
659
- tcg_temp_free_i32(t2);
660
- tcg_temp_free_i32(t3);
661
}
662
break;
663
case MMI_OPC_MULTU1:
664
@@ -XXX,XX +XXX,XX @@ static void gen_mul_txx9(DisasContext *ctx, uint32_t opc,
665
}
666
tcg_gen_ext_i32_tl(cpu_LO[acc], t2);
667
tcg_gen_ext_i32_tl(cpu_HI[acc], t3);
668
- tcg_temp_free_i32(t2);
669
- tcg_temp_free_i32(t3);
670
}
671
break;
672
case MMI_OPC_MADD1:
673
@@ -XXX,XX +XXX,XX @@ static void gen_mul_txx9(DisasContext *ctx, uint32_t opc,
674
tcg_gen_mul_i64(t2, t2, t3);
675
tcg_gen_concat_tl_i64(t3, cpu_LO[acc], cpu_HI[acc]);
676
tcg_gen_add_i64(t2, t2, t3);
677
- tcg_temp_free_i64(t3);
678
gen_move_low32(cpu_LO[acc], t2);
679
gen_move_high32(cpu_HI[acc], t2);
680
if (rd) {
681
gen_move_low32(cpu_gpr[rd], t2);
682
}
683
- tcg_temp_free_i64(t2);
684
}
685
break;
686
case MMI_OPC_MADDU1:
687
@@ -XXX,XX +XXX,XX @@ static void gen_mul_txx9(DisasContext *ctx, uint32_t opc,
688
tcg_gen_mul_i64(t2, t2, t3);
689
tcg_gen_concat_tl_i64(t3, cpu_LO[acc], cpu_HI[acc]);
690
tcg_gen_add_i64(t2, t2, t3);
691
- tcg_temp_free_i64(t3);
692
gen_move_low32(cpu_LO[acc], t2);
693
gen_move_high32(cpu_HI[acc], t2);
694
if (rd) {
695
gen_move_low32(cpu_gpr[rd], t2);
696
}
697
- tcg_temp_free_i64(t2);
698
}
699
break;
700
default:
701
MIPS_INVAL("mul/madd TXx9");
702
gen_reserved_instruction(ctx);
703
- goto out;
704
+ break;
705
}
706
-
707
- out:
708
- tcg_temp_free(t0);
709
- tcg_temp_free(t1);
710
}
711
712
static void gen_cl(DisasContext *ctx, uint32_t opc,
713
@@ -XXX,XX +XXX,XX @@ static void gen_loongson_integer(DisasContext *ctx, uint32_t opc,
714
break;
715
#endif
716
}
717
-
718
- tcg_temp_free(t0);
719
- tcg_temp_free(t1);
720
}
721
722
/* Loongson multimedia instructions */
723
@@ -XXX,XX +XXX,XX @@ static void gen_loongson_multimedia(DisasContext *ctx, int rd, int rs, int rt)
724
tcg_gen_xor_i64(t1, t1, t2);
725
tcg_gen_xor_i64(t2, t2, t0);
726
tcg_gen_andc_i64(t1, t2, t1);
727
- tcg_temp_free_i64(t2);
728
tcg_gen_brcondi_i64(TCG_COND_GE, t1, 0, lab);
729
generate_exception(ctx, EXCP_OVERFLOW);
730
gen_set_label(lab);
731
@@ -XXX,XX +XXX,XX @@ static void gen_loongson_multimedia(DisasContext *ctx, int rd, int rs, int rt)
732
tcg_gen_xor_i64(t1, t1, t2);
733
tcg_gen_xor_i64(t2, t2, t0);
734
tcg_gen_and_i64(t1, t1, t2);
735
- tcg_temp_free_i64(t2);
736
tcg_gen_brcondi_i64(TCG_COND_GE, t1, 0, lab);
737
generate_exception(ctx, EXCP_OVERFLOW);
738
gen_set_label(lab);
739
@@ -XXX,XX +XXX,XX @@ static void gen_loongson_multimedia(DisasContext *ctx, int rd, int rs, int rt)
740
tcg_gen_extrl_i64_i32(t32, t64);
741
tcg_gen_deposit_i32(fpu_fcr31, fpu_fcr31, t32,
742
get_fp_bit(cc), 1);
743
-
744
- tcg_temp_free_i32(t32);
745
- tcg_temp_free_i64(t64);
746
}
747
- goto no_rd;
748
- break;
749
+ return;
750
default:
751
MIPS_INVAL("loongson_cp2");
752
gen_reserved_instruction(ctx);
753
@@ -XXX,XX +XXX,XX @@ static void gen_loongson_multimedia(DisasContext *ctx, int rd, int rs, int rt)
754
}
755
756
gen_store_fpr64(ctx, t0, rd);
757
-
758
-no_rd:
759
- tcg_temp_free_i64(t0);
760
- tcg_temp_free_i64(t1);
761
}
762
763
static void gen_loongson_lswc2(DisasContext *ctx, int rt,
764
@@ -XXX,XX +XXX,XX @@ static void gen_loongson_lswc2(DisasContext *ctx, int rt,
765
ctx->default_tcg_memop_mask);
766
gen_store_gpr(t1, rt);
767
gen_store_gpr(t0, lsq_rt1);
768
- tcg_temp_free(t1);
769
break;
770
case OPC_GSLQC1:
771
check_cp1_enabled(ctx);
772
@@ -XXX,XX +XXX,XX @@ static void gen_loongson_lswc2(DisasContext *ctx, int rt,
773
ctx->default_tcg_memop_mask);
774
gen_store_fpr64(ctx, t1, rt);
775
gen_store_fpr64(ctx, t0, lsq_rt1);
776
- tcg_temp_free(t1);
777
break;
778
case OPC_GSSQ:
779
t1 = tcg_temp_new();
780
@@ -XXX,XX +XXX,XX @@ static void gen_loongson_lswc2(DisasContext *ctx, int rt,
781
gen_load_gpr(t1, lsq_rt1);
782
tcg_gen_qemu_st_tl(t1, t0, ctx->mem_idx, MO_TEUQ |
783
ctx->default_tcg_memop_mask);
784
- tcg_temp_free(t1);
785
break;
786
case OPC_GSSQC1:
787
check_cp1_enabled(ctx);
788
@@ -XXX,XX +XXX,XX @@ static void gen_loongson_lswc2(DisasContext *ctx, int rt,
789
gen_load_fpr64(ctx, t1, lsq_rt1);
790
tcg_gen_qemu_st_tl(t1, t0, ctx->mem_idx, MO_TEUQ |
791
ctx->default_tcg_memop_mask);
792
- tcg_temp_free(t1);
793
break;
794
#endif
795
case OPC_GSSHFL:
796
@@ -XXX,XX +XXX,XX @@ static void gen_loongson_lswc2(DisasContext *ctx, int rt,
797
gen_load_fpr32(ctx, fp0, rt);
798
tcg_gen_ext_i32_tl(t1, fp0);
799
tcg_gen_andc_tl(t1, t1, t2);
800
- tcg_temp_free(t2);
801
tcg_gen_or_tl(t0, t0, t1);
802
- tcg_temp_free(t1);
803
#if defined(TARGET_MIPS64)
804
tcg_gen_extrl_i64_i32(fp0, t0);
805
#else
806
tcg_gen_ext32s_tl(fp0, t0);
807
#endif
808
gen_store_fpr32(ctx, fp0, rt);
809
- tcg_temp_free_i32(fp0);
810
break;
811
case OPC_GSLWRC1:
812
check_cp1_enabled(ctx);
813
@@ -XXX,XX +XXX,XX @@ static void gen_loongson_lswc2(DisasContext *ctx, int rt,
814
gen_load_fpr32(ctx, fp0, rt);
815
tcg_gen_ext_i32_tl(t1, fp0);
816
tcg_gen_and_tl(t1, t1, t2);
817
- tcg_temp_free(t2);
818
tcg_gen_or_tl(t0, t0, t1);
819
- tcg_temp_free(t1);
820
#if defined(TARGET_MIPS64)
821
tcg_gen_extrl_i64_i32(fp0, t0);
822
#else
823
tcg_gen_ext32s_tl(fp0, t0);
824
#endif
825
gen_store_fpr32(ctx, fp0, rt);
826
- tcg_temp_free_i32(fp0);
827
break;
828
#if defined(TARGET_MIPS64)
829
case OPC_GSLDLC1:
830
@@ -XXX,XX +XXX,XX @@ static void gen_loongson_lswc2(DisasContext *ctx, int rt,
831
tcg_gen_shl_tl(t2, t2, t1);
832
gen_load_fpr64(ctx, t1, rt);
833
tcg_gen_andc_tl(t1, t1, t2);
834
- tcg_temp_free(t2);
835
tcg_gen_or_tl(t0, t0, t1);
836
- tcg_temp_free(t1);
837
gen_store_fpr64(ctx, t0, rt);
838
break;
839
case OPC_GSLDRC1:
840
@@ -XXX,XX +XXX,XX @@ static void gen_loongson_lswc2(DisasContext *ctx, int rt,
841
tcg_gen_shl_tl(t2, t2, t1);
842
gen_load_fpr64(ctx, t1, rt);
843
tcg_gen_and_tl(t1, t1, t2);
844
- tcg_temp_free(t2);
845
tcg_gen_or_tl(t0, t0, t1);
846
- tcg_temp_free(t1);
847
gen_store_fpr64(ctx, t0, rt);
848
break;
849
#endif
850
@@ -XXX,XX +XXX,XX @@ static void gen_loongson_lswc2(DisasContext *ctx, int rt,
851
gen_load_fpr32(ctx, fp0, rt);
852
tcg_gen_ext_i32_tl(t1, fp0);
853
gen_helper_0e2i(swl, t1, t0, ctx->mem_idx);
854
- tcg_temp_free_i32(fp0);
855
- tcg_temp_free(t1);
856
break;
857
case OPC_GSSWRC1:
858
check_cp1_enabled(ctx);
859
@@ -XXX,XX +XXX,XX @@ static void gen_loongson_lswc2(DisasContext *ctx, int rt,
860
gen_load_fpr32(ctx, fp0, rt);
861
tcg_gen_ext_i32_tl(t1, fp0);
862
gen_helper_0e2i(swr, t1, t0, ctx->mem_idx);
863
- tcg_temp_free_i32(fp0);
864
- tcg_temp_free(t1);
865
break;
866
#if defined(TARGET_MIPS64)
867
case OPC_GSSDLC1:
868
@@ -XXX,XX +XXX,XX @@ static void gen_loongson_lswc2(DisasContext *ctx, int rt,
869
gen_base_offset_addr(ctx, t0, rs, shf_offset);
870
gen_load_fpr64(ctx, t1, rt);
871
gen_helper_0e2i(sdl, t1, t0, ctx->mem_idx);
872
- tcg_temp_free(t1);
873
break;
874
case OPC_GSSDRC1:
875
check_cp1_enabled(ctx);
876
@@ -XXX,XX +XXX,XX @@ static void gen_loongson_lswc2(DisasContext *ctx, int rt,
877
gen_base_offset_addr(ctx, t0, rs, shf_offset);
878
gen_load_fpr64(ctx, t1, rt);
879
gen_helper_0e2i(sdr, t1, t0, ctx->mem_idx);
880
- tcg_temp_free(t1);
881
break;
882
#endif
883
default:
884
@@ -XXX,XX +XXX,XX @@ static void gen_loongson_lswc2(DisasContext *ctx, int rt,
885
gen_reserved_instruction(ctx);
886
break;
887
}
888
- tcg_temp_free(t0);
889
}
890
891
/* Loongson EXT LDC2/SDC2 */
892
@@ -XXX,XX +XXX,XX @@ static void gen_loongson_lsdc2(DisasContext *ctx, int rt,
893
tcg_gen_qemu_ld_i32(fp0, t0, ctx->mem_idx, MO_TESL |
894
ctx->default_tcg_memop_mask);
895
gen_store_fpr32(ctx, fp0, rt);
896
- tcg_temp_free_i32(fp0);
897
break;
898
#if defined(TARGET_MIPS64)
899
case OPC_GSLDXC1:
900
@@ -XXX,XX +XXX,XX @@ static void gen_loongson_lsdc2(DisasContext *ctx, int rt,
901
t1 = tcg_temp_new();
902
gen_load_gpr(t1, rt);
903
tcg_gen_qemu_st_tl(t1, t0, ctx->mem_idx, MO_SB);
904
- tcg_temp_free(t1);
905
break;
906
case OPC_GSSHX:
907
t1 = tcg_temp_new();
908
gen_load_gpr(t1, rt);
909
tcg_gen_qemu_st_tl(t1, t0, ctx->mem_idx, MO_TEUW |
910
ctx->default_tcg_memop_mask);
911
- tcg_temp_free(t1);
912
break;
913
case OPC_GSSWX:
914
t1 = tcg_temp_new();
915
gen_load_gpr(t1, rt);
916
tcg_gen_qemu_st_tl(t1, t0, ctx->mem_idx, MO_TEUL |
917
ctx->default_tcg_memop_mask);
918
- tcg_temp_free(t1);
919
break;
920
#if defined(TARGET_MIPS64)
921
case OPC_GSSDX:
922
@@ -XXX,XX +XXX,XX @@ static void gen_loongson_lsdc2(DisasContext *ctx, int rt,
923
gen_load_gpr(t1, rt);
924
tcg_gen_qemu_st_tl(t1, t0, ctx->mem_idx, MO_TEUQ |
925
ctx->default_tcg_memop_mask);
926
- tcg_temp_free(t1);
927
break;
928
#endif
929
case OPC_GSSWXC1:
930
@@ -XXX,XX +XXX,XX @@ static void gen_loongson_lsdc2(DisasContext *ctx, int rt,
931
gen_load_fpr32(ctx, fp0, rt);
932
tcg_gen_qemu_st_i32(fp0, t0, ctx->mem_idx, MO_TEUL |
933
ctx->default_tcg_memop_mask);
934
- tcg_temp_free_i32(fp0);
935
break;
936
#if defined(TARGET_MIPS64)
937
case OPC_GSSDXC1:
938
@@ -XXX,XX +XXX,XX @@ static void gen_loongson_lsdc2(DisasContext *ctx, int rt,
939
gen_load_fpr64(ctx, t1, rt);
940
tcg_gen_qemu_st_i64(t1, t0, ctx->mem_idx, MO_TEUQ |
941
ctx->default_tcg_memop_mask);
942
- tcg_temp_free(t1);
943
break;
944
#endif
945
default:
946
break;
947
}
948
-
949
- tcg_temp_free(t0);
950
}
951
952
/* Traps */
953
@@ -XXX,XX +XXX,XX @@ static void gen_trap(DisasContext *ctx, uint32_t opc,
954
generate_exception(ctx, EXCP_TRAP);
955
gen_set_label(l1);
956
}
957
- tcg_temp_free(t0);
958
- tcg_temp_free(t1);
959
}
960
961
static void gen_goto_tb(DisasContext *ctx, int n, target_ulong dest)
962
@@ -XXX,XX +XXX,XX @@ static void gen_compute_branch(DisasContext *ctx, uint32_t opc,
963
if (insn_bytes == 2) {
964
ctx->hflags |= MIPS_HFLAG_B16;
965
}
966
- tcg_temp_free(t0);
967
- tcg_temp_free(t1);
968
}
969
970
971
@@ -XXX,XX +XXX,XX @@ static void gen_bitops(DisasContext *ctx, uint32_t opc, int rt,
972
fail:
973
MIPS_INVAL("bitops");
974
gen_reserved_instruction(ctx);
975
- tcg_temp_free(t0);
976
- tcg_temp_free(t1);
977
return;
978
}
979
gen_store_gpr(t0, rt);
980
- tcg_temp_free(t0);
981
- tcg_temp_free(t1);
982
}
983
984
static void gen_bshfl(DisasContext *ctx, uint32_t op2, int rt, int rd)
985
@@ -XXX,XX +XXX,XX @@ static void gen_bshfl(DisasContext *ctx, uint32_t op2, int rt, int rd)
986
tcg_gen_and_tl(t0, t0, t2);
987
tcg_gen_shli_tl(t0, t0, 8);
988
tcg_gen_or_tl(t0, t0, t1);
989
- tcg_temp_free(t2);
990
- tcg_temp_free(t1);
991
tcg_gen_ext32s_tl(cpu_gpr[rd], t0);
992
}
993
break;
994
@@ -XXX,XX +XXX,XX @@ static void gen_bshfl(DisasContext *ctx, uint32_t op2, int rt, int rd)
995
tcg_gen_and_tl(t0, t0, t2);
996
tcg_gen_shli_tl(t0, t0, 8);
997
tcg_gen_or_tl(cpu_gpr[rd], t0, t1);
998
- tcg_temp_free(t2);
999
- tcg_temp_free(t1);
1000
}
1001
break;
1002
case OPC_DSHD:
1003
@@ -XXX,XX +XXX,XX @@ static void gen_bshfl(DisasContext *ctx, uint32_t op2, int rt, int rd)
1004
tcg_gen_shri_tl(t1, t0, 32);
1005
tcg_gen_shli_tl(t0, t0, 32);
1006
tcg_gen_or_tl(cpu_gpr[rd], t0, t1);
1007
- tcg_temp_free(t2);
1008
- tcg_temp_free(t1);
1009
}
1010
break;
1011
#endif
1012
default:
1013
MIPS_INVAL("bsfhl");
1014
gen_reserved_instruction(ctx);
1015
- tcg_temp_free(t0);
1016
return;
1017
}
1018
- tcg_temp_free(t0);
1019
}
1020
1021
static void gen_align_bits(DisasContext *ctx, int wordsz, int rd, int rs,
1022
@@ -XXX,XX +XXX,XX @@ static void gen_align_bits(DisasContext *ctx, int wordsz, int rd, int rs,
1023
tcg_gen_concat_tl_i64(t2, t1, t0);
1024
tcg_gen_shri_i64(t2, t2, 32 - bits);
1025
gen_move_low32(cpu_gpr[rd], t2);
1026
- tcg_temp_free_i64(t2);
1027
}
1028
break;
1029
#if defined(TARGET_MIPS64)
1030
@@ -XXX,XX +XXX,XX @@ static void gen_align_bits(DisasContext *ctx, int wordsz, int rd, int rs,
1031
break;
1032
#endif
1033
}
1034
- tcg_temp_free(t1);
1035
}
1036
-
1037
- tcg_temp_free(t0);
1038
}
1039
1040
void gen_align(DisasContext *ctx, int wordsz, int rd, int rs, int rt, int bp)
1041
@@ -XXX,XX +XXX,XX @@ static void gen_bitswap(DisasContext *ctx, int opc, int rd, int rt)
1042
break;
1043
#endif
1044
}
1045
- tcg_temp_free(t0);
1046
}
1047
1048
#ifndef CONFIG_USER_ONLY
1049
@@ -XXX,XX +XXX,XX @@ static inline void gen_mthc0_entrylo(TCGv arg, target_ulong off)
1050
tcg_gen_concat32_i64(t1, t1, t0);
1051
#endif
1052
tcg_gen_st_i64(t1, cpu_env, off);
1053
- tcg_temp_free_i64(t1);
1054
- tcg_temp_free_i64(t0);
1055
}
1056
1057
static inline void gen_mthc0_store64(TCGv arg, target_ulong off)
1058
@@ -XXX,XX +XXX,XX @@ static inline void gen_mthc0_store64(TCGv arg, target_ulong off)
1059
tcg_gen_ld_i64(t1, cpu_env, off);
1060
tcg_gen_concat32_i64(t1, t1, t0);
1061
tcg_gen_st_i64(t1, cpu_env, off);
1062
- tcg_temp_free_i64(t1);
1063
- tcg_temp_free_i64(t0);
1064
}
1065
1066
static inline void gen_mfhc0_entrylo(TCGv arg, target_ulong off)
1067
@@ -XXX,XX +XXX,XX @@ static inline void gen_mfhc0_entrylo(TCGv arg, target_ulong off)
1068
tcg_gen_shri_i64(t0, t0, 32);
1069
#endif
1070
gen_move_low32(arg, t0);
1071
- tcg_temp_free_i64(t0);
1072
}
1073
1074
static inline void gen_mfhc0_load64(TCGv arg, target_ulong off, int shift)
1075
@@ -XXX,XX +XXX,XX @@ static inline void gen_mfhc0_load64(TCGv arg, target_ulong off, int shift)
1076
tcg_gen_ld_i64(t0, cpu_env, off);
1077
tcg_gen_shri_i64(t0, t0, 32 + shift);
1078
gen_move_low32(arg, t0);
1079
- tcg_temp_free_i64(t0);
1080
}
1081
1082
static inline void gen_mfc0_load32(TCGv arg, target_ulong off)
1083
@@ -XXX,XX +XXX,XX @@ static inline void gen_mfc0_load32(TCGv arg, target_ulong off)
1084
1085
tcg_gen_ld_i32(t0, cpu_env, off);
1086
tcg_gen_ext_i32_tl(arg, t0);
1087
- tcg_temp_free_i32(t0);
1088
}
1089
1090
static inline void gen_mfc0_load64(TCGv arg, target_ulong off)
1091
@@ -XXX,XX +XXX,XX @@ static inline void gen_mtc0_store32(TCGv arg, target_ulong off)
1092
1093
tcg_gen_trunc_tl_i32(t0, arg);
1094
tcg_gen_st_i32(t0, cpu_env, off);
1095
- tcg_temp_free_i32(t0);
1096
}
1097
1098
#define CP0_CHECK(c) \
1099
@@ -XXX,XX +XXX,XX @@ static void gen_mfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
1100
}
1101
#endif
1102
gen_move_low32(arg, tmp);
1103
- tcg_temp_free_i64(tmp);
1104
}
1105
register_name = "EntryLo0";
1106
break;
1107
@@ -XXX,XX +XXX,XX @@ static void gen_mfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
1108
}
1109
#endif
1110
gen_move_low32(arg, tmp);
1111
- tcg_temp_free_i64(tmp);
1112
}
1113
register_name = "EntryLo1";
1114
break;
1115
@@ -XXX,XX +XXX,XX @@ static void gen_mfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
1116
TCGv_i64 tmp = tcg_temp_new_i64();
1117
tcg_gen_ld_i64(tmp, cpu_env, offsetof(CPUMIPSState, CP0_TagLo));
1118
gen_move_low32(arg, tmp);
1119
- tcg_temp_free_i64(tmp);
1120
}
1121
register_name = "TagLo";
1122
break;
1123
@@ -XXX,XX +XXX,XX @@ static void gen_mftr(CPUMIPSState *env, DisasContext *ctx, int rt, int rd,
1124
1125
gen_load_fpr32(ctx, fp0, rt);
1126
tcg_gen_ext_i32_tl(t0, fp0);
1127
- tcg_temp_free_i32(fp0);
1128
} else {
1129
TCGv_i32 fp0 = tcg_temp_new_i32();
1130
1131
gen_load_fpr32h(ctx, fp0, rt);
1132
tcg_gen_ext_i32_tl(t0, fp0);
1133
- tcg_temp_free_i32(fp0);
1134
}
1135
break;
1136
case 3:
1137
@@ -XXX,XX +XXX,XX @@ static void gen_mftr(CPUMIPSState *env, DisasContext *ctx, int rt, int rd,
1138
}
1139
trace_mips_translate_tr("mftr", rt, u, sel, h);
1140
gen_store_gpr(t0, rd);
1141
- tcg_temp_free(t0);
1142
return;
1143
1144
die:
1145
- tcg_temp_free(t0);
1146
LOG_DISAS("mftr (reg %d u %d sel %d h %d)\n", rt, u, sel, h);
1147
gen_reserved_instruction(ctx);
1148
}
1149
@@ -XXX,XX +XXX,XX @@ static void gen_mttr(CPUMIPSState *env, DisasContext *ctx, int rd, int rt,
1150
1151
tcg_gen_trunc_tl_i32(fp0, t0);
1152
gen_store_fpr32(ctx, fp0, rd);
1153
- tcg_temp_free_i32(fp0);
1154
} else {
1155
TCGv_i32 fp0 = tcg_temp_new_i32();
1156
1157
tcg_gen_trunc_tl_i32(fp0, t0);
1158
gen_store_fpr32h(ctx, fp0, rd);
1159
- tcg_temp_free_i32(fp0);
1160
}
1161
break;
1162
case 3:
1163
@@ -XXX,XX +XXX,XX @@ static void gen_mttr(CPUMIPSState *env, DisasContext *ctx, int rd, int rt,
1164
}
1165
}
1166
trace_mips_translate_tr("mttr", rd, u, sel, h);
1167
- tcg_temp_free(t0);
1168
return;
1169
1170
die:
1171
- tcg_temp_free(t0);
1172
LOG_DISAS("mttr (reg %d u %d sel %d h %d)\n", rd, u, sel, h);
1173
gen_reserved_instruction(ctx);
1174
}
1175
@@ -XXX,XX +XXX,XX @@ static void gen_cp0(CPUMIPSState *env, DisasContext *ctx, uint32_t opc,
1176
1177
gen_load_gpr(t0, rt);
1178
gen_mtc0(ctx, t0, rd, ctx->opcode & 0x7);
1179
- tcg_temp_free(t0);
1180
}
1181
opn = "mtc0";
1182
break;
1183
@@ -XXX,XX +XXX,XX @@ static void gen_cp0(CPUMIPSState *env, DisasContext *ctx, uint32_t opc,
1184
1185
gen_load_gpr(t0, rt);
1186
gen_dmtc0(ctx, t0, rd, ctx->opcode & 0x7);
1187
- tcg_temp_free(t0);
1188
}
1189
opn = "dmtc0";
1190
break;
1191
@@ -XXX,XX +XXX,XX @@ static void gen_cp0(CPUMIPSState *env, DisasContext *ctx, uint32_t opc,
1192
TCGv t0 = tcg_temp_new();
1193
gen_load_gpr(t0, rt);
1194
gen_mthc0(ctx, t0, rd, ctx->opcode & 0x7);
1195
- tcg_temp_free(t0);
1196
}
1197
opn = "mthc0";
1198
break;
1199
@@ -XXX,XX +XXX,XX @@ static void gen_compute_branch1(DisasContext *ctx, uint32_t op,
1200
1201
if ((ctx->insn_flags & ISA_MIPS_R6) && (ctx->hflags & MIPS_HFLAG_BMASK)) {
1202
gen_reserved_instruction(ctx);
1203
- goto out;
1204
+ return;
1205
}
1206
1207
if (cc != 0) {
1208
@@ -XXX,XX +XXX,XX @@ static void gen_compute_branch1(DisasContext *ctx, uint32_t op,
1209
tcg_gen_shri_i32(t0, fpu_fcr31, get_fp_bit(cc));
1210
tcg_gen_shri_i32(t1, fpu_fcr31, get_fp_bit(cc + 1));
1211
tcg_gen_nand_i32(t0, t0, t1);
1212
- tcg_temp_free_i32(t1);
1213
tcg_gen_andi_i32(t0, t0, 1);
1214
tcg_gen_extu_i32_tl(bcond, t0);
1215
}
1216
@@ -XXX,XX +XXX,XX @@ static void gen_compute_branch1(DisasContext *ctx, uint32_t op,
1217
tcg_gen_shri_i32(t0, fpu_fcr31, get_fp_bit(cc));
1218
tcg_gen_shri_i32(t1, fpu_fcr31, get_fp_bit(cc + 1));
1219
tcg_gen_or_i32(t0, t0, t1);
1220
- tcg_temp_free_i32(t1);
1221
tcg_gen_andi_i32(t0, t0, 1);
1222
tcg_gen_extu_i32_tl(bcond, t0);
1223
}
1224
@@ -XXX,XX +XXX,XX @@ static void gen_compute_branch1(DisasContext *ctx, uint32_t op,
1225
tcg_gen_and_i32(t0, t0, t1);
1226
tcg_gen_shri_i32(t1, fpu_fcr31, get_fp_bit(cc + 3));
1227
tcg_gen_nand_i32(t0, t0, t1);
1228
- tcg_temp_free_i32(t1);
1229
tcg_gen_andi_i32(t0, t0, 1);
1230
tcg_gen_extu_i32_tl(bcond, t0);
1231
}
1232
@@ -XXX,XX +XXX,XX @@ static void gen_compute_branch1(DisasContext *ctx, uint32_t op,
1233
tcg_gen_or_i32(t0, t0, t1);
1234
tcg_gen_shri_i32(t1, fpu_fcr31, get_fp_bit(cc + 3));
1235
tcg_gen_or_i32(t0, t0, t1);
1236
- tcg_temp_free_i32(t1);
1237
tcg_gen_andi_i32(t0, t0, 1);
1238
tcg_gen_extu_i32_tl(bcond, t0);
1239
}
1240
@@ -XXX,XX +XXX,XX @@ static void gen_compute_branch1(DisasContext *ctx, uint32_t op,
1241
default:
1242
MIPS_INVAL("cp1 cond branch");
1243
gen_reserved_instruction(ctx);
1244
- goto out;
1245
+ return;
1246
}
1247
ctx->btarget = btarget;
1248
ctx->hflags |= MIPS_HFLAG_BDS32;
1249
- out:
1250
- tcg_temp_free_i32(t0);
1251
}
1252
1253
/* R6 CP1 Branches */
1254
@@ -XXX,XX +XXX,XX @@ static void gen_compute_branch1_r6(DisasContext *ctx, uint32_t op,
1255
"\n", ctx->base.pc_next);
1256
#endif
1257
gen_reserved_instruction(ctx);
1258
- goto out;
1259
+ return;
1260
}
1261
1262
gen_load_fpr64(ctx, t0, ft);
1263
@@ -XXX,XX +XXX,XX @@ static void gen_compute_branch1_r6(DisasContext *ctx, uint32_t op,
1264
default:
1265
MIPS_INVAL("cp1 cond branch");
1266
gen_reserved_instruction(ctx);
1267
- goto out;
1268
+ return;
1269
}
1270
1271
tcg_gen_trunc_i64_tl(bcond, t0);
1272
@@ -XXX,XX +XXX,XX @@ static void gen_compute_branch1_r6(DisasContext *ctx, uint32_t op,
1273
ctx->hflags |= MIPS_HFLAG_BDS32;
1274
break;
1275
}
1276
-
1277
-out:
1278
- tcg_temp_free_i64(t0);
1279
}
1280
1281
/* Coprocessor 1 (FPU) */
1282
@@ -XXX,XX +XXX,XX @@ static void gen_cp1(DisasContext *ctx, uint32_t opc, int rt, int fs)
1283
1284
gen_load_fpr32(ctx, fp0, fs);
1285
tcg_gen_ext_i32_tl(t0, fp0);
1286
- tcg_temp_free_i32(fp0);
1287
}
1288
gen_store_gpr(t0, rt);
1289
break;
1290
@@ -XXX,XX +XXX,XX @@ static void gen_cp1(DisasContext *ctx, uint32_t opc, int rt, int fs)
1291
1292
tcg_gen_trunc_tl_i32(fp0, t0);
1293
gen_store_fpr32(ctx, fp0, fs);
1294
- tcg_temp_free_i32(fp0);
1295
}
1296
break;
1297
case OPC_CFC1:
1298
@@ -XXX,XX +XXX,XX @@ static void gen_cp1(DisasContext *ctx, uint32_t opc, int rt, int fs)
1299
1300
gen_load_fpr32h(ctx, fp0, fs);
1301
tcg_gen_ext_i32_tl(t0, fp0);
1302
- tcg_temp_free_i32(fp0);
1303
}
1304
gen_store_gpr(t0, rt);
1305
break;
1306
@@ -XXX,XX +XXX,XX @@ static void gen_cp1(DisasContext *ctx, uint32_t opc, int rt, int fs)
1307
1308
tcg_gen_trunc_tl_i32(fp0, t0);
1309
gen_store_fpr32h(ctx, fp0, fs);
1310
- tcg_temp_free_i32(fp0);
1311
}
1312
break;
1313
default:
1314
MIPS_INVAL("cp1 move");
1315
gen_reserved_instruction(ctx);
1316
- goto out;
1317
+ return;
1318
}
1319
-
1320
- out:
1321
- tcg_temp_free(t0);
1322
}
1323
1324
static void gen_movci(DisasContext *ctx, int rd, int rs, int cc, int tf)
1325
@@ -XXX,XX +XXX,XX @@ static void gen_movci(DisasContext *ctx, int rd, int rs, int cc, int tf)
1326
t0 = tcg_temp_new_i32();
1327
tcg_gen_andi_i32(t0, fpu_fcr31, 1 << get_fp_bit(cc));
1328
tcg_gen_brcondi_i32(cond, t0, 0, l1);
1329
- tcg_temp_free_i32(t0);
1330
gen_load_gpr(cpu_gpr[rd], rs);
1331
gen_set_label(l1);
1332
}
1333
@@ -XXX,XX +XXX,XX @@ static inline void gen_movcf_s(DisasContext *ctx, int fs, int fd, int cc,
1334
gen_load_fpr32(ctx, t0, fs);
1335
gen_store_fpr32(ctx, t0, fd);
1336
gen_set_label(l1);
1337
- tcg_temp_free_i32(t0);
1338
}
1339
1340
static inline void gen_movcf_d(DisasContext *ctx, int fs, int fd, int cc,
1341
@@ -XXX,XX +XXX,XX @@ static inline void gen_movcf_d(DisasContext *ctx, int fs, int fd, int cc,
1342
1343
tcg_gen_andi_i32(t0, fpu_fcr31, 1 << get_fp_bit(cc));
1344
tcg_gen_brcondi_i32(cond, t0, 0, l1);
1345
- tcg_temp_free_i32(t0);
1346
fp0 = tcg_temp_new_i64();
1347
gen_load_fpr64(ctx, fp0, fs);
1348
gen_store_fpr64(ctx, fp0, fd);
1349
- tcg_temp_free_i64(fp0);
1350
gen_set_label(l1);
1351
}
1352
1353
@@ -XXX,XX +XXX,XX @@ static inline void gen_movcf_ps(DisasContext *ctx, int fs, int fd,
1354
tcg_gen_brcondi_i32(cond, t0, 0, l2);
1355
gen_load_fpr32h(ctx, t0, fs);
1356
gen_store_fpr32h(ctx, t0, fd);
1357
- tcg_temp_free_i32(t0);
1358
gen_set_label(l2);
1359
}
1360
1361
@@ -XXX,XX +XXX,XX @@ static void gen_sel_s(DisasContext *ctx, enum fopcode op1, int fd, int ft,
1362
}
1363
1364
gen_store_fpr32(ctx, fp0, fd);
1365
- tcg_temp_free_i32(fp2);
1366
- tcg_temp_free_i32(fp1);
1367
- tcg_temp_free_i32(fp0);
1368
- tcg_temp_free_i32(t1);
1369
}
1370
1371
static void gen_sel_d(DisasContext *ctx, enum fopcode op1, int fd, int ft,
1372
@@ -XXX,XX +XXX,XX @@ static void gen_sel_d(DisasContext *ctx, enum fopcode op1, int fd, int ft,
1373
}
1374
1375
gen_store_fpr64(ctx, fp0, fd);
1376
- tcg_temp_free_i64(fp2);
1377
- tcg_temp_free_i64(fp1);
1378
- tcg_temp_free_i64(fp0);
1379
- tcg_temp_free_i64(t1);
1380
}
1381
1382
static void gen_farith(DisasContext *ctx, enum fopcode op1,
1383
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
1384
gen_load_fpr32(ctx, fp0, fs);
1385
gen_load_fpr32(ctx, fp1, ft);
1386
gen_helper_float_add_s(fp0, cpu_env, fp0, fp1);
1387
- tcg_temp_free_i32(fp1);
1388
gen_store_fpr32(ctx, fp0, fd);
1389
- tcg_temp_free_i32(fp0);
1390
}
1391
break;
1392
case OPC_SUB_S:
1393
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
1394
gen_load_fpr32(ctx, fp0, fs);
1395
gen_load_fpr32(ctx, fp1, ft);
1396
gen_helper_float_sub_s(fp0, cpu_env, fp0, fp1);
1397
- tcg_temp_free_i32(fp1);
1398
gen_store_fpr32(ctx, fp0, fd);
1399
- tcg_temp_free_i32(fp0);
1400
}
1401
break;
1402
case OPC_MUL_S:
1403
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
1404
gen_load_fpr32(ctx, fp0, fs);
1405
gen_load_fpr32(ctx, fp1, ft);
1406
gen_helper_float_mul_s(fp0, cpu_env, fp0, fp1);
1407
- tcg_temp_free_i32(fp1);
1408
gen_store_fpr32(ctx, fp0, fd);
1409
- tcg_temp_free_i32(fp0);
1410
}
1411
break;
1412
case OPC_DIV_S:
1413
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
1414
gen_load_fpr32(ctx, fp0, fs);
1415
gen_load_fpr32(ctx, fp1, ft);
1416
gen_helper_float_div_s(fp0, cpu_env, fp0, fp1);
1417
- tcg_temp_free_i32(fp1);
1418
gen_store_fpr32(ctx, fp0, fd);
1419
- tcg_temp_free_i32(fp0);
1420
}
1421
break;
1422
case OPC_SQRT_S:
1423
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
1424
gen_load_fpr32(ctx, fp0, fs);
1425
gen_helper_float_sqrt_s(fp0, cpu_env, fp0);
1426
gen_store_fpr32(ctx, fp0, fd);
1427
- tcg_temp_free_i32(fp0);
1428
}
1429
break;
1430
case OPC_ABS_S:
1431
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
1432
gen_helper_float_abs_s(fp0, fp0);
1433
}
1434
gen_store_fpr32(ctx, fp0, fd);
1435
- tcg_temp_free_i32(fp0);
1436
}
1437
break;
1438
case OPC_MOV_S:
1439
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
1440
1441
gen_load_fpr32(ctx, fp0, fs);
1442
gen_store_fpr32(ctx, fp0, fd);
1443
- tcg_temp_free_i32(fp0);
1444
}
1445
break;
1446
case OPC_NEG_S:
1447
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
1448
gen_helper_float_chs_s(fp0, fp0);
1449
}
1450
gen_store_fpr32(ctx, fp0, fd);
1451
- tcg_temp_free_i32(fp0);
1452
}
1453
break;
1454
case OPC_ROUND_L_S:
1455
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
1456
} else {
1457
gen_helper_float_round_l_s(fp64, cpu_env, fp32);
1458
}
1459
- tcg_temp_free_i32(fp32);
1460
gen_store_fpr64(ctx, fp64, fd);
1461
- tcg_temp_free_i64(fp64);
1462
}
1463
break;
1464
case OPC_TRUNC_L_S:
1465
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
1466
} else {
1467
gen_helper_float_trunc_l_s(fp64, cpu_env, fp32);
1468
}
1469
- tcg_temp_free_i32(fp32);
1470
gen_store_fpr64(ctx, fp64, fd);
1471
- tcg_temp_free_i64(fp64);
1472
}
1473
break;
1474
case OPC_CEIL_L_S:
1475
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
1476
} else {
1477
gen_helper_float_ceil_l_s(fp64, cpu_env, fp32);
1478
}
1479
- tcg_temp_free_i32(fp32);
1480
gen_store_fpr64(ctx, fp64, fd);
1481
- tcg_temp_free_i64(fp64);
1482
}
1483
break;
1484
case OPC_FLOOR_L_S:
1485
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
1486
} else {
1487
gen_helper_float_floor_l_s(fp64, cpu_env, fp32);
1488
}
1489
- tcg_temp_free_i32(fp32);
1490
gen_store_fpr64(ctx, fp64, fd);
1491
- tcg_temp_free_i64(fp64);
1492
}
1493
break;
1494
case OPC_ROUND_W_S:
1495
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
1496
gen_helper_float_round_w_s(fp0, cpu_env, fp0);
1497
}
1498
gen_store_fpr32(ctx, fp0, fd);
1499
- tcg_temp_free_i32(fp0);
1500
}
1501
break;
1502
case OPC_TRUNC_W_S:
1503
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
1504
gen_helper_float_trunc_w_s(fp0, cpu_env, fp0);
1505
}
1506
gen_store_fpr32(ctx, fp0, fd);
1507
- tcg_temp_free_i32(fp0);
1508
}
1509
break;
1510
case OPC_CEIL_W_S:
1511
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
1512
gen_helper_float_ceil_w_s(fp0, cpu_env, fp0);
1513
}
1514
gen_store_fpr32(ctx, fp0, fd);
1515
- tcg_temp_free_i32(fp0);
1516
}
1517
break;
1518
case OPC_FLOOR_W_S:
1519
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
1520
gen_helper_float_floor_w_s(fp0, cpu_env, fp0);
1521
}
1522
gen_store_fpr32(ctx, fp0, fd);
1523
- tcg_temp_free_i32(fp0);
1524
}
1525
break;
1526
case OPC_SEL_S:
1527
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
1528
fp0 = tcg_temp_new_i32();
1529
gen_load_fpr32(ctx, fp0, fs);
1530
gen_store_fpr32(ctx, fp0, fd);
1531
- tcg_temp_free_i32(fp0);
1532
gen_set_label(l1);
1533
}
1534
break;
1535
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
1536
fp0 = tcg_temp_new_i32();
1537
gen_load_fpr32(ctx, fp0, fs);
1538
gen_store_fpr32(ctx, fp0, fd);
1539
- tcg_temp_free_i32(fp0);
1540
gen_set_label(l1);
1541
}
1542
}
1543
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
1544
gen_load_fpr32(ctx, fp0, fs);
1545
gen_helper_float_recip_s(fp0, cpu_env, fp0);
1546
gen_store_fpr32(ctx, fp0, fd);
1547
- tcg_temp_free_i32(fp0);
1548
}
1549
break;
1550
case OPC_RSQRT_S:
1551
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
1552
gen_load_fpr32(ctx, fp0, fs);
1553
gen_helper_float_rsqrt_s(fp0, cpu_env, fp0);
1554
gen_store_fpr32(ctx, fp0, fd);
1555
- tcg_temp_free_i32(fp0);
1556
}
1557
break;
1558
case OPC_MADDF_S:
1559
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
1560
gen_load_fpr32(ctx, fp2, fd);
1561
gen_helper_float_maddf_s(fp2, cpu_env, fp0, fp1, fp2);
1562
gen_store_fpr32(ctx, fp2, fd);
1563
- tcg_temp_free_i32(fp2);
1564
- tcg_temp_free_i32(fp1);
1565
- tcg_temp_free_i32(fp0);
1566
}
1567
break;
1568
case OPC_MSUBF_S:
1569
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
1570
gen_load_fpr32(ctx, fp2, fd);
1571
gen_helper_float_msubf_s(fp2, cpu_env, fp0, fp1, fp2);
1572
gen_store_fpr32(ctx, fp2, fd);
1573
- tcg_temp_free_i32(fp2);
1574
- tcg_temp_free_i32(fp1);
1575
- tcg_temp_free_i32(fp0);
1576
}
1577
break;
1578
case OPC_RINT_S:
1579
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
1580
gen_load_fpr32(ctx, fp0, fs);
1581
gen_helper_float_rint_s(fp0, cpu_env, fp0);
1582
gen_store_fpr32(ctx, fp0, fd);
1583
- tcg_temp_free_i32(fp0);
1584
}
1585
break;
1586
case OPC_CLASS_S:
1587
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
1588
gen_load_fpr32(ctx, fp0, fs);
1589
gen_helper_float_class_s(fp0, cpu_env, fp0);
1590
gen_store_fpr32(ctx, fp0, fd);
1591
- tcg_temp_free_i32(fp0);
1592
}
1593
break;
1594
case OPC_MIN_S: /* OPC_RECIP2_S */
1595
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
1596
gen_load_fpr32(ctx, fp1, ft);
1597
gen_helper_float_min_s(fp2, cpu_env, fp0, fp1);
1598
gen_store_fpr32(ctx, fp2, fd);
1599
- tcg_temp_free_i32(fp2);
1600
- tcg_temp_free_i32(fp1);
1601
- tcg_temp_free_i32(fp0);
1602
} else {
1603
/* OPC_RECIP2_S */
1604
check_cp1_64bitmode(ctx);
1605
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
1606
gen_load_fpr32(ctx, fp0, fs);
1607
gen_load_fpr32(ctx, fp1, ft);
1608
gen_helper_float_recip2_s(fp0, cpu_env, fp0, fp1);
1609
- tcg_temp_free_i32(fp1);
1610
gen_store_fpr32(ctx, fp0, fd);
1611
- tcg_temp_free_i32(fp0);
1612
}
1613
}
1614
break;
1615
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
1616
gen_load_fpr32(ctx, fp1, ft);
1617
gen_helper_float_mina_s(fp2, cpu_env, fp0, fp1);
1618
gen_store_fpr32(ctx, fp2, fd);
1619
- tcg_temp_free_i32(fp2);
1620
- tcg_temp_free_i32(fp1);
1621
- tcg_temp_free_i32(fp0);
1622
} else {
1623
/* OPC_RECIP1_S */
1624
check_cp1_64bitmode(ctx);
1625
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
1626
gen_load_fpr32(ctx, fp0, fs);
1627
gen_helper_float_recip1_s(fp0, cpu_env, fp0);
1628
gen_store_fpr32(ctx, fp0, fd);
1629
- tcg_temp_free_i32(fp0);
1630
}
1631
}
1632
break;
1633
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
1634
gen_load_fpr32(ctx, fp1, ft);
1635
gen_helper_float_max_s(fp1, cpu_env, fp0, fp1);
1636
gen_store_fpr32(ctx, fp1, fd);
1637
- tcg_temp_free_i32(fp1);
1638
- tcg_temp_free_i32(fp0);
1639
} else {
1640
/* OPC_RSQRT1_S */
1641
check_cp1_64bitmode(ctx);
1642
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
1643
gen_load_fpr32(ctx, fp0, fs);
1644
gen_helper_float_rsqrt1_s(fp0, cpu_env, fp0);
1645
gen_store_fpr32(ctx, fp0, fd);
1646
- tcg_temp_free_i32(fp0);
1647
}
1648
}
1649
break;
1650
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
1651
gen_load_fpr32(ctx, fp1, ft);
1652
gen_helper_float_maxa_s(fp1, cpu_env, fp0, fp1);
1653
gen_store_fpr32(ctx, fp1, fd);
1654
- tcg_temp_free_i32(fp1);
1655
- tcg_temp_free_i32(fp0);
1656
} else {
1657
/* OPC_RSQRT2_S */
1658
check_cp1_64bitmode(ctx);
1659
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
1660
gen_load_fpr32(ctx, fp0, fs);
1661
gen_load_fpr32(ctx, fp1, ft);
1662
gen_helper_float_rsqrt2_s(fp0, cpu_env, fp0, fp1);
1663
- tcg_temp_free_i32(fp1);
1664
gen_store_fpr32(ctx, fp0, fd);
1665
- tcg_temp_free_i32(fp0);
1666
}
1667
}
1668
break;
1669
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
1670
1671
gen_load_fpr32(ctx, fp32, fs);
1672
gen_helper_float_cvtd_s(fp64, cpu_env, fp32);
1673
- tcg_temp_free_i32(fp32);
1674
gen_store_fpr64(ctx, fp64, fd);
1675
- tcg_temp_free_i64(fp64);
1676
}
1677
break;
1678
case OPC_CVT_W_S:
1679
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
1680
gen_helper_float_cvt_w_s(fp0, cpu_env, fp0);
1681
}
1682
gen_store_fpr32(ctx, fp0, fd);
1683
- tcg_temp_free_i32(fp0);
1684
}
1685
break;
1686
case OPC_CVT_L_S:
1687
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
1688
} else {
1689
gen_helper_float_cvt_l_s(fp64, cpu_env, fp32);
1690
}
1691
- tcg_temp_free_i32(fp32);
1692
gen_store_fpr64(ctx, fp64, fd);
1693
- tcg_temp_free_i64(fp64);
1694
}
1695
break;
1696
case OPC_CVT_PS_S:
1697
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
1698
gen_load_fpr32(ctx, fp32_0, fs);
1699
gen_load_fpr32(ctx, fp32_1, ft);
1700
tcg_gen_concat_i32_i64(fp64, fp32_1, fp32_0);
1701
- tcg_temp_free_i32(fp32_1);
1702
- tcg_temp_free_i32(fp32_0);
1703
gen_store_fpr64(ctx, fp64, fd);
1704
- tcg_temp_free_i64(fp64);
1705
}
1706
break;
1707
case OPC_CMP_F_S:
1708
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
1709
gen_load_fpr64(ctx, fp0, fs);
1710
gen_load_fpr64(ctx, fp1, ft);
1711
gen_helper_float_add_d(fp0, cpu_env, fp0, fp1);
1712
- tcg_temp_free_i64(fp1);
1713
gen_store_fpr64(ctx, fp0, fd);
1714
- tcg_temp_free_i64(fp0);
1715
}
1716
break;
1717
case OPC_SUB_D:
1718
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
1719
gen_load_fpr64(ctx, fp0, fs);
1720
gen_load_fpr64(ctx, fp1, ft);
1721
gen_helper_float_sub_d(fp0, cpu_env, fp0, fp1);
1722
- tcg_temp_free_i64(fp1);
1723
gen_store_fpr64(ctx, fp0, fd);
1724
- tcg_temp_free_i64(fp0);
1725
}
1726
break;
1727
case OPC_MUL_D:
1728
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
1729
gen_load_fpr64(ctx, fp0, fs);
1730
gen_load_fpr64(ctx, fp1, ft);
1731
gen_helper_float_mul_d(fp0, cpu_env, fp0, fp1);
1732
- tcg_temp_free_i64(fp1);
1733
gen_store_fpr64(ctx, fp0, fd);
1734
- tcg_temp_free_i64(fp0);
1735
}
1736
break;
1737
case OPC_DIV_D:
1738
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
1739
gen_load_fpr64(ctx, fp0, fs);
1740
gen_load_fpr64(ctx, fp1, ft);
1741
gen_helper_float_div_d(fp0, cpu_env, fp0, fp1);
1742
- tcg_temp_free_i64(fp1);
1743
gen_store_fpr64(ctx, fp0, fd);
1744
- tcg_temp_free_i64(fp0);
1745
}
1746
break;
1747
case OPC_SQRT_D:
1748
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
1749
gen_load_fpr64(ctx, fp0, fs);
1750
gen_helper_float_sqrt_d(fp0, cpu_env, fp0);
1751
gen_store_fpr64(ctx, fp0, fd);
1752
- tcg_temp_free_i64(fp0);
1753
}
1754
break;
1755
case OPC_ABS_D:
1756
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
1757
gen_helper_float_abs_d(fp0, fp0);
1758
}
1759
gen_store_fpr64(ctx, fp0, fd);
1760
- tcg_temp_free_i64(fp0);
1761
}
1762
break;
1763
case OPC_MOV_D:
1764
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
1765
1766
gen_load_fpr64(ctx, fp0, fs);
1767
gen_store_fpr64(ctx, fp0, fd);
1768
- tcg_temp_free_i64(fp0);
1769
}
1770
break;
1771
case OPC_NEG_D:
1772
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
1773
gen_helper_float_chs_d(fp0, fp0);
1774
}
1775
gen_store_fpr64(ctx, fp0, fd);
1776
- tcg_temp_free_i64(fp0);
1777
}
1778
break;
1779
case OPC_ROUND_L_D:
1780
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
1781
gen_helper_float_round_l_d(fp0, cpu_env, fp0);
1782
}
1783
gen_store_fpr64(ctx, fp0, fd);
1784
- tcg_temp_free_i64(fp0);
1785
}
1786
break;
1787
case OPC_TRUNC_L_D:
1788
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
1789
gen_helper_float_trunc_l_d(fp0, cpu_env, fp0);
1790
}
1791
gen_store_fpr64(ctx, fp0, fd);
1792
- tcg_temp_free_i64(fp0);
1793
}
1794
break;
1795
case OPC_CEIL_L_D:
1796
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
1797
gen_helper_float_ceil_l_d(fp0, cpu_env, fp0);
1798
}
1799
gen_store_fpr64(ctx, fp0, fd);
1800
- tcg_temp_free_i64(fp0);
1801
}
1802
break;
1803
case OPC_FLOOR_L_D:
1804
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
1805
gen_helper_float_floor_l_d(fp0, cpu_env, fp0);
1806
}
1807
gen_store_fpr64(ctx, fp0, fd);
1808
- tcg_temp_free_i64(fp0);
1809
}
1810
break;
1811
case OPC_ROUND_W_D:
1812
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
1813
} else {
1814
gen_helper_float_round_w_d(fp32, cpu_env, fp64);
1815
}
1816
- tcg_temp_free_i64(fp64);
1817
gen_store_fpr32(ctx, fp32, fd);
1818
- tcg_temp_free_i32(fp32);
1819
}
1820
break;
1821
case OPC_TRUNC_W_D:
1822
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
1823
} else {
1824
gen_helper_float_trunc_w_d(fp32, cpu_env, fp64);
1825
}
1826
- tcg_temp_free_i64(fp64);
1827
gen_store_fpr32(ctx, fp32, fd);
1828
- tcg_temp_free_i32(fp32);
1829
}
1830
break;
1831
case OPC_CEIL_W_D:
1832
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
1833
} else {
1834
gen_helper_float_ceil_w_d(fp32, cpu_env, fp64);
1835
}
1836
- tcg_temp_free_i64(fp64);
1837
gen_store_fpr32(ctx, fp32, fd);
1838
- tcg_temp_free_i32(fp32);
1839
}
1840
break;
1841
case OPC_FLOOR_W_D:
1842
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
1843
} else {
1844
gen_helper_float_floor_w_d(fp32, cpu_env, fp64);
1845
}
1846
- tcg_temp_free_i64(fp64);
1847
gen_store_fpr32(ctx, fp32, fd);
1848
- tcg_temp_free_i32(fp32);
1849
}
1850
break;
1851
case OPC_SEL_D:
1852
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
1853
fp0 = tcg_temp_new_i64();
1854
gen_load_fpr64(ctx, fp0, fs);
1855
gen_store_fpr64(ctx, fp0, fd);
1856
- tcg_temp_free_i64(fp0);
1857
gen_set_label(l1);
1858
}
1859
break;
1860
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
1861
fp0 = tcg_temp_new_i64();
1862
gen_load_fpr64(ctx, fp0, fs);
1863
gen_store_fpr64(ctx, fp0, fd);
1864
- tcg_temp_free_i64(fp0);
1865
gen_set_label(l1);
1866
}
1867
}
1868
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
1869
gen_load_fpr64(ctx, fp0, fs);
1870
gen_helper_float_recip_d(fp0, cpu_env, fp0);
1871
gen_store_fpr64(ctx, fp0, fd);
1872
- tcg_temp_free_i64(fp0);
1873
}
1874
break;
1875
case OPC_RSQRT_D:
1876
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
1877
gen_load_fpr64(ctx, fp0, fs);
1878
gen_helper_float_rsqrt_d(fp0, cpu_env, fp0);
1879
gen_store_fpr64(ctx, fp0, fd);
1880
- tcg_temp_free_i64(fp0);
1881
}
1882
break;
1883
case OPC_MADDF_D:
1884
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
1885
gen_load_fpr64(ctx, fp2, fd);
1886
gen_helper_float_maddf_d(fp2, cpu_env, fp0, fp1, fp2);
1887
gen_store_fpr64(ctx, fp2, fd);
1888
- tcg_temp_free_i64(fp2);
1889
- tcg_temp_free_i64(fp1);
1890
- tcg_temp_free_i64(fp0);
1891
}
1892
break;
1893
case OPC_MSUBF_D:
1894
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
1895
gen_load_fpr64(ctx, fp2, fd);
1896
gen_helper_float_msubf_d(fp2, cpu_env, fp0, fp1, fp2);
1897
gen_store_fpr64(ctx, fp2, fd);
1898
- tcg_temp_free_i64(fp2);
1899
- tcg_temp_free_i64(fp1);
1900
- tcg_temp_free_i64(fp0);
1901
}
1902
break;
1903
case OPC_RINT_D:
1904
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
1905
gen_load_fpr64(ctx, fp0, fs);
1906
gen_helper_float_rint_d(fp0, cpu_env, fp0);
1907
gen_store_fpr64(ctx, fp0, fd);
1908
- tcg_temp_free_i64(fp0);
1909
}
1910
break;
1911
case OPC_CLASS_D:
1912
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
1913
gen_load_fpr64(ctx, fp0, fs);
1914
gen_helper_float_class_d(fp0, cpu_env, fp0);
1915
gen_store_fpr64(ctx, fp0, fd);
1916
- tcg_temp_free_i64(fp0);
1917
}
1918
break;
1919
case OPC_MIN_D: /* OPC_RECIP2_D */
1920
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
1921
gen_load_fpr64(ctx, fp1, ft);
1922
gen_helper_float_min_d(fp1, cpu_env, fp0, fp1);
1923
gen_store_fpr64(ctx, fp1, fd);
1924
- tcg_temp_free_i64(fp1);
1925
- tcg_temp_free_i64(fp0);
1926
} else {
1927
/* OPC_RECIP2_D */
1928
check_cp1_64bitmode(ctx);
1929
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
1930
gen_load_fpr64(ctx, fp0, fs);
1931
gen_load_fpr64(ctx, fp1, ft);
1932
gen_helper_float_recip2_d(fp0, cpu_env, fp0, fp1);
1933
- tcg_temp_free_i64(fp1);
1934
gen_store_fpr64(ctx, fp0, fd);
1935
- tcg_temp_free_i64(fp0);
1936
}
1937
}
1938
break;
1939
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
1940
gen_load_fpr64(ctx, fp1, ft);
1941
gen_helper_float_mina_d(fp1, cpu_env, fp0, fp1);
1942
gen_store_fpr64(ctx, fp1, fd);
1943
- tcg_temp_free_i64(fp1);
1944
- tcg_temp_free_i64(fp0);
1945
} else {
1946
/* OPC_RECIP1_D */
1947
check_cp1_64bitmode(ctx);
1948
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
1949
gen_load_fpr64(ctx, fp0, fs);
1950
gen_helper_float_recip1_d(fp0, cpu_env, fp0);
1951
gen_store_fpr64(ctx, fp0, fd);
1952
- tcg_temp_free_i64(fp0);
1953
}
1954
}
1955
break;
1956
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
1957
gen_load_fpr64(ctx, fp1, ft);
1958
gen_helper_float_max_d(fp1, cpu_env, fp0, fp1);
1959
gen_store_fpr64(ctx, fp1, fd);
1960
- tcg_temp_free_i64(fp1);
1961
- tcg_temp_free_i64(fp0);
1962
} else {
1963
/* OPC_RSQRT1_D */
1964
check_cp1_64bitmode(ctx);
1965
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
1966
gen_load_fpr64(ctx, fp0, fs);
1967
gen_helper_float_rsqrt1_d(fp0, cpu_env, fp0);
1968
gen_store_fpr64(ctx, fp0, fd);
1969
- tcg_temp_free_i64(fp0);
1970
}
1971
}
1972
break;
1973
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
1974
gen_load_fpr64(ctx, fp1, ft);
1975
gen_helper_float_maxa_d(fp1, cpu_env, fp0, fp1);
1976
gen_store_fpr64(ctx, fp1, fd);
1977
- tcg_temp_free_i64(fp1);
1978
- tcg_temp_free_i64(fp0);
1979
} else {
1980
/* OPC_RSQRT2_D */
1981
check_cp1_64bitmode(ctx);
1982
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
1983
gen_load_fpr64(ctx, fp0, fs);
1984
gen_load_fpr64(ctx, fp1, ft);
1985
gen_helper_float_rsqrt2_d(fp0, cpu_env, fp0, fp1);
1986
- tcg_temp_free_i64(fp1);
1987
gen_store_fpr64(ctx, fp0, fd);
1988
- tcg_temp_free_i64(fp0);
1989
}
1990
}
1991
break;
1992
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
1993
1994
gen_load_fpr64(ctx, fp64, fs);
1995
gen_helper_float_cvts_d(fp32, cpu_env, fp64);
1996
- tcg_temp_free_i64(fp64);
1997
gen_store_fpr32(ctx, fp32, fd);
1998
- tcg_temp_free_i32(fp32);
1999
}
2000
break;
2001
case OPC_CVT_W_D:
2002
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
2003
} else {
2004
gen_helper_float_cvt_w_d(fp32, cpu_env, fp64);
2005
}
2006
- tcg_temp_free_i64(fp64);
2007
gen_store_fpr32(ctx, fp32, fd);
2008
- tcg_temp_free_i32(fp32);
2009
}
2010
break;
2011
case OPC_CVT_L_D:
2012
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
2013
gen_helper_float_cvt_l_d(fp0, cpu_env, fp0);
2014
}
2015
gen_store_fpr64(ctx, fp0, fd);
2016
- tcg_temp_free_i64(fp0);
2017
}
2018
break;
2019
case OPC_CVT_S_W:
2020
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
2021
gen_load_fpr32(ctx, fp0, fs);
2022
gen_helper_float_cvts_w(fp0, cpu_env, fp0);
2023
gen_store_fpr32(ctx, fp0, fd);
2024
- tcg_temp_free_i32(fp0);
2025
}
2026
break;
2027
case OPC_CVT_D_W:
2028
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
2029
2030
gen_load_fpr32(ctx, fp32, fs);
2031
gen_helper_float_cvtd_w(fp64, cpu_env, fp32);
2032
- tcg_temp_free_i32(fp32);
2033
gen_store_fpr64(ctx, fp64, fd);
2034
- tcg_temp_free_i64(fp64);
2035
}
2036
break;
2037
case OPC_CVT_S_L:
2038
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
2039
2040
gen_load_fpr64(ctx, fp64, fs);
2041
gen_helper_float_cvts_l(fp32, cpu_env, fp64);
2042
- tcg_temp_free_i64(fp64);
2043
gen_store_fpr32(ctx, fp32, fd);
2044
- tcg_temp_free_i32(fp32);
2045
}
2046
break;
2047
case OPC_CVT_D_L:
2048
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
2049
gen_load_fpr64(ctx, fp0, fs);
2050
gen_helper_float_cvtd_l(fp0, cpu_env, fp0);
2051
gen_store_fpr64(ctx, fp0, fd);
2052
- tcg_temp_free_i64(fp0);
2053
}
2054
break;
2055
case OPC_CVT_PS_PW:
2056
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
2057
gen_load_fpr64(ctx, fp0, fs);
2058
gen_helper_float_cvtps_pw(fp0, cpu_env, fp0);
2059
gen_store_fpr64(ctx, fp0, fd);
2060
- tcg_temp_free_i64(fp0);
2061
}
2062
break;
2063
case OPC_ADD_PS:
2064
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
2065
gen_load_fpr64(ctx, fp0, fs);
2066
gen_load_fpr64(ctx, fp1, ft);
2067
gen_helper_float_add_ps(fp0, cpu_env, fp0, fp1);
2068
- tcg_temp_free_i64(fp1);
2069
gen_store_fpr64(ctx, fp0, fd);
2070
- tcg_temp_free_i64(fp0);
2071
}
2072
break;
2073
case OPC_SUB_PS:
2074
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
2075
gen_load_fpr64(ctx, fp0, fs);
2076
gen_load_fpr64(ctx, fp1, ft);
2077
gen_helper_float_sub_ps(fp0, cpu_env, fp0, fp1);
2078
- tcg_temp_free_i64(fp1);
2079
gen_store_fpr64(ctx, fp0, fd);
2080
- tcg_temp_free_i64(fp0);
2081
}
2082
break;
2083
case OPC_MUL_PS:
2084
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
2085
gen_load_fpr64(ctx, fp0, fs);
2086
gen_load_fpr64(ctx, fp1, ft);
2087
gen_helper_float_mul_ps(fp0, cpu_env, fp0, fp1);
2088
- tcg_temp_free_i64(fp1);
2089
gen_store_fpr64(ctx, fp0, fd);
2090
- tcg_temp_free_i64(fp0);
2091
}
2092
break;
2093
case OPC_ABS_PS:
2094
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
2095
gen_load_fpr64(ctx, fp0, fs);
2096
gen_helper_float_abs_ps(fp0, fp0);
2097
gen_store_fpr64(ctx, fp0, fd);
2098
- tcg_temp_free_i64(fp0);
2099
}
2100
break;
2101
case OPC_MOV_PS:
2102
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
2103
2104
gen_load_fpr64(ctx, fp0, fs);
2105
gen_store_fpr64(ctx, fp0, fd);
2106
- tcg_temp_free_i64(fp0);
2107
}
2108
break;
2109
case OPC_NEG_PS:
2110
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
2111
gen_load_fpr64(ctx, fp0, fs);
2112
gen_helper_float_chs_ps(fp0, fp0);
2113
gen_store_fpr64(ctx, fp0, fd);
2114
- tcg_temp_free_i64(fp0);
2115
}
2116
break;
2117
case OPC_MOVCF_PS:
2118
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
2119
fp0 = tcg_temp_new_i64();
2120
gen_load_fpr64(ctx, fp0, fs);
2121
gen_store_fpr64(ctx, fp0, fd);
2122
- tcg_temp_free_i64(fp0);
2123
gen_set_label(l1);
2124
}
2125
break;
2126
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
2127
fp0 = tcg_temp_new_i64();
2128
gen_load_fpr64(ctx, fp0, fs);
2129
gen_store_fpr64(ctx, fp0, fd);
2130
- tcg_temp_free_i64(fp0);
2131
gen_set_label(l1);
2132
}
2133
}
2134
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
2135
gen_load_fpr64(ctx, fp0, ft);
2136
gen_load_fpr64(ctx, fp1, fs);
2137
gen_helper_float_addr_ps(fp0, cpu_env, fp0, fp1);
2138
- tcg_temp_free_i64(fp1);
2139
gen_store_fpr64(ctx, fp0, fd);
2140
- tcg_temp_free_i64(fp0);
2141
}
2142
break;
2143
case OPC_MULR_PS:
2144
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
2145
gen_load_fpr64(ctx, fp0, ft);
2146
gen_load_fpr64(ctx, fp1, fs);
2147
gen_helper_float_mulr_ps(fp0, cpu_env, fp0, fp1);
2148
- tcg_temp_free_i64(fp1);
2149
gen_store_fpr64(ctx, fp0, fd);
2150
- tcg_temp_free_i64(fp0);
2151
}
2152
break;
2153
case OPC_RECIP2_PS:
2154
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
2155
gen_load_fpr64(ctx, fp0, fs);
2156
gen_load_fpr64(ctx, fp1, ft);
2157
gen_helper_float_recip2_ps(fp0, cpu_env, fp0, fp1);
2158
- tcg_temp_free_i64(fp1);
2159
gen_store_fpr64(ctx, fp0, fd);
2160
- tcg_temp_free_i64(fp0);
2161
}
2162
break;
2163
case OPC_RECIP1_PS:
2164
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
2165
gen_load_fpr64(ctx, fp0, fs);
2166
gen_helper_float_recip1_ps(fp0, cpu_env, fp0);
2167
gen_store_fpr64(ctx, fp0, fd);
2168
- tcg_temp_free_i64(fp0);
2169
}
2170
break;
2171
case OPC_RSQRT1_PS:
2172
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
2173
gen_load_fpr64(ctx, fp0, fs);
2174
gen_helper_float_rsqrt1_ps(fp0, cpu_env, fp0);
2175
gen_store_fpr64(ctx, fp0, fd);
2176
- tcg_temp_free_i64(fp0);
2177
}
2178
break;
2179
case OPC_RSQRT2_PS:
2180
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
2181
gen_load_fpr64(ctx, fp0, fs);
2182
gen_load_fpr64(ctx, fp1, ft);
2183
gen_helper_float_rsqrt2_ps(fp0, cpu_env, fp0, fp1);
2184
- tcg_temp_free_i64(fp1);
2185
gen_store_fpr64(ctx, fp0, fd);
2186
- tcg_temp_free_i64(fp0);
2187
}
2188
break;
2189
case OPC_CVT_S_PU:
2190
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
2191
gen_load_fpr32h(ctx, fp0, fs);
2192
gen_helper_float_cvts_pu(fp0, cpu_env, fp0);
2193
gen_store_fpr32(ctx, fp0, fd);
2194
- tcg_temp_free_i32(fp0);
2195
}
2196
break;
2197
case OPC_CVT_PW_PS:
2198
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
2199
gen_load_fpr64(ctx, fp0, fs);
2200
gen_helper_float_cvtpw_ps(fp0, cpu_env, fp0);
2201
gen_store_fpr64(ctx, fp0, fd);
2202
- tcg_temp_free_i64(fp0);
2203
}
2204
break;
2205
case OPC_CVT_S_PL:
2206
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
2207
gen_load_fpr32(ctx, fp0, fs);
2208
gen_helper_float_cvts_pl(fp0, cpu_env, fp0);
2209
gen_store_fpr32(ctx, fp0, fd);
2210
- tcg_temp_free_i32(fp0);
2211
}
2212
break;
2213
case OPC_PLL_PS:
2214
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
2215
gen_load_fpr32(ctx, fp1, ft);
2216
gen_store_fpr32h(ctx, fp0, fd);
2217
gen_store_fpr32(ctx, fp1, fd);
2218
- tcg_temp_free_i32(fp0);
2219
- tcg_temp_free_i32(fp1);
2220
}
2221
break;
2222
case OPC_PLU_PS:
2223
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
2224
gen_load_fpr32h(ctx, fp1, ft);
2225
gen_store_fpr32(ctx, fp1, fd);
2226
gen_store_fpr32h(ctx, fp0, fd);
2227
- tcg_temp_free_i32(fp0);
2228
- tcg_temp_free_i32(fp1);
2229
}
2230
break;
2231
case OPC_PUL_PS:
2232
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
2233
gen_load_fpr32(ctx, fp1, ft);
2234
gen_store_fpr32(ctx, fp1, fd);
2235
gen_store_fpr32h(ctx, fp0, fd);
2236
- tcg_temp_free_i32(fp0);
2237
- tcg_temp_free_i32(fp1);
2238
}
2239
break;
2240
case OPC_PUU_PS:
2241
@@ -XXX,XX +XXX,XX @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
2242
gen_load_fpr32h(ctx, fp1, ft);
2243
gen_store_fpr32(ctx, fp1, fd);
2244
gen_store_fpr32h(ctx, fp0, fd);
2245
- tcg_temp_free_i32(fp0);
2246
- tcg_temp_free_i32(fp1);
2247
}
2248
break;
2249
case OPC_CMP_F_PS:
2250
@@ -XXX,XX +XXX,XX @@ static void gen_flt3_ldst(DisasContext *ctx, uint32_t opc,
2251
tcg_gen_qemu_ld_tl(t0, t0, ctx->mem_idx, MO_TESL);
2252
tcg_gen_trunc_tl_i32(fp0, t0);
2253
gen_store_fpr32(ctx, fp0, fd);
2254
- tcg_temp_free_i32(fp0);
2255
}
2256
break;
2257
case OPC_LDXC1:
2258
@@ -XXX,XX +XXX,XX @@ static void gen_flt3_ldst(DisasContext *ctx, uint32_t opc,
2259
TCGv_i64 fp0 = tcg_temp_new_i64();
2260
tcg_gen_qemu_ld_i64(fp0, t0, ctx->mem_idx, MO_TEUQ);
2261
gen_store_fpr64(ctx, fp0, fd);
2262
- tcg_temp_free_i64(fp0);
2263
}
2264
break;
2265
case OPC_LUXC1:
2266
@@ -XXX,XX +XXX,XX @@ static void gen_flt3_ldst(DisasContext *ctx, uint32_t opc,
2267
2268
tcg_gen_qemu_ld_i64(fp0, t0, ctx->mem_idx, MO_TEUQ);
2269
gen_store_fpr64(ctx, fp0, fd);
2270
- tcg_temp_free_i64(fp0);
2271
}
2272
break;
2273
case OPC_SWXC1:
2274
@@ -XXX,XX +XXX,XX @@ static void gen_flt3_ldst(DisasContext *ctx, uint32_t opc,
2275
TCGv_i32 fp0 = tcg_temp_new_i32();
2276
gen_load_fpr32(ctx, fp0, fs);
2277
tcg_gen_qemu_st_i32(fp0, t0, ctx->mem_idx, MO_TEUL);
2278
- tcg_temp_free_i32(fp0);
2279
}
2280
break;
2281
case OPC_SDXC1:
2282
@@ -XXX,XX +XXX,XX @@ static void gen_flt3_ldst(DisasContext *ctx, uint32_t opc,
2283
TCGv_i64 fp0 = tcg_temp_new_i64();
2284
gen_load_fpr64(ctx, fp0, fs);
2285
tcg_gen_qemu_st_i64(fp0, t0, ctx->mem_idx, MO_TEUQ);
2286
- tcg_temp_free_i64(fp0);
2287
}
2288
break;
2289
case OPC_SUXC1:
2290
@@ -XXX,XX +XXX,XX @@ static void gen_flt3_ldst(DisasContext *ctx, uint32_t opc,
2291
TCGv_i64 fp0 = tcg_temp_new_i64();
2292
gen_load_fpr64(ctx, fp0, fs);
2293
tcg_gen_qemu_st_i64(fp0, t0, ctx->mem_idx, MO_TEUQ);
2294
- tcg_temp_free_i64(fp0);
2295
}
2296
break;
2297
}
2298
- tcg_temp_free(t0);
2299
}
2300
2301
static void gen_flt3_arith(DisasContext *ctx, uint32_t opc,
2302
@@ -XXX,XX +XXX,XX @@ static void gen_flt3_arith(DisasContext *ctx, uint32_t opc,
2303
tcg_gen_br(l2);
2304
gen_set_label(l1);
2305
tcg_gen_brcondi_tl(TCG_COND_NE, t0, 4, l2);
2306
- tcg_temp_free(t0);
2307
if (cpu_is_bigendian(ctx)) {
2308
gen_load_fpr32(ctx, fp, fs);
2309
gen_load_fpr32h(ctx, fph, ft);
2310
@@ -XXX,XX +XXX,XX @@ static void gen_flt3_arith(DisasContext *ctx, uint32_t opc,
2311
gen_store_fpr32h(ctx, fp, fd);
2312
}
2313
gen_set_label(l2);
2314
- tcg_temp_free_i32(fp);
2315
- tcg_temp_free_i32(fph);
2316
}
2317
break;
2318
case OPC_MADD_S:
2319
@@ -XXX,XX +XXX,XX @@ static void gen_flt3_arith(DisasContext *ctx, uint32_t opc,
2320
gen_load_fpr32(ctx, fp1, ft);
2321
gen_load_fpr32(ctx, fp2, fr);
2322
gen_helper_float_madd_s(fp2, cpu_env, fp0, fp1, fp2);
2323
- tcg_temp_free_i32(fp0);
2324
- tcg_temp_free_i32(fp1);
2325
gen_store_fpr32(ctx, fp2, fd);
2326
- tcg_temp_free_i32(fp2);
2327
}
2328
break;
2329
case OPC_MADD_D:
2330
@@ -XXX,XX +XXX,XX @@ static void gen_flt3_arith(DisasContext *ctx, uint32_t opc,
2331
gen_load_fpr64(ctx, fp1, ft);
2332
gen_load_fpr64(ctx, fp2, fr);
2333
gen_helper_float_madd_d(fp2, cpu_env, fp0, fp1, fp2);
2334
- tcg_temp_free_i64(fp0);
2335
- tcg_temp_free_i64(fp1);
2336
gen_store_fpr64(ctx, fp2, fd);
2337
- tcg_temp_free_i64(fp2);
2338
}
2339
break;
2340
case OPC_MADD_PS:
2341
@@ -XXX,XX +XXX,XX @@ static void gen_flt3_arith(DisasContext *ctx, uint32_t opc,
2342
gen_load_fpr64(ctx, fp1, ft);
2343
gen_load_fpr64(ctx, fp2, fr);
2344
gen_helper_float_madd_ps(fp2, cpu_env, fp0, fp1, fp2);
2345
- tcg_temp_free_i64(fp0);
2346
- tcg_temp_free_i64(fp1);
2347
gen_store_fpr64(ctx, fp2, fd);
2348
- tcg_temp_free_i64(fp2);
2349
}
2350
break;
2351
case OPC_MSUB_S:
2352
@@ -XXX,XX +XXX,XX @@ static void gen_flt3_arith(DisasContext *ctx, uint32_t opc,
2353
gen_load_fpr32(ctx, fp1, ft);
2354
gen_load_fpr32(ctx, fp2, fr);
2355
gen_helper_float_msub_s(fp2, cpu_env, fp0, fp1, fp2);
2356
- tcg_temp_free_i32(fp0);
2357
- tcg_temp_free_i32(fp1);
2358
gen_store_fpr32(ctx, fp2, fd);
2359
- tcg_temp_free_i32(fp2);
2360
}
2361
break;
2362
case OPC_MSUB_D:
2363
@@ -XXX,XX +XXX,XX @@ static void gen_flt3_arith(DisasContext *ctx, uint32_t opc,
2364
gen_load_fpr64(ctx, fp1, ft);
2365
gen_load_fpr64(ctx, fp2, fr);
2366
gen_helper_float_msub_d(fp2, cpu_env, fp0, fp1, fp2);
2367
- tcg_temp_free_i64(fp0);
2368
- tcg_temp_free_i64(fp1);
2369
gen_store_fpr64(ctx, fp2, fd);
2370
- tcg_temp_free_i64(fp2);
2371
}
2372
break;
2373
case OPC_MSUB_PS:
2374
@@ -XXX,XX +XXX,XX @@ static void gen_flt3_arith(DisasContext *ctx, uint32_t opc,
2375
gen_load_fpr64(ctx, fp1, ft);
2376
gen_load_fpr64(ctx, fp2, fr);
2377
gen_helper_float_msub_ps(fp2, cpu_env, fp0, fp1, fp2);
2378
- tcg_temp_free_i64(fp0);
2379
- tcg_temp_free_i64(fp1);
2380
gen_store_fpr64(ctx, fp2, fd);
2381
- tcg_temp_free_i64(fp2);
2382
}
2383
break;
2384
case OPC_NMADD_S:
2385
@@ -XXX,XX +XXX,XX @@ static void gen_flt3_arith(DisasContext *ctx, uint32_t opc,
2386
gen_load_fpr32(ctx, fp1, ft);
2387
gen_load_fpr32(ctx, fp2, fr);
2388
gen_helper_float_nmadd_s(fp2, cpu_env, fp0, fp1, fp2);
2389
- tcg_temp_free_i32(fp0);
2390
- tcg_temp_free_i32(fp1);
2391
gen_store_fpr32(ctx, fp2, fd);
2392
- tcg_temp_free_i32(fp2);
2393
}
2394
break;
2395
case OPC_NMADD_D:
2396
@@ -XXX,XX +XXX,XX @@ static void gen_flt3_arith(DisasContext *ctx, uint32_t opc,
2397
gen_load_fpr64(ctx, fp1, ft);
2398
gen_load_fpr64(ctx, fp2, fr);
2399
gen_helper_float_nmadd_d(fp2, cpu_env, fp0, fp1, fp2);
2400
- tcg_temp_free_i64(fp0);
2401
- tcg_temp_free_i64(fp1);
2402
gen_store_fpr64(ctx, fp2, fd);
2403
- tcg_temp_free_i64(fp2);
2404
}
2405
break;
2406
case OPC_NMADD_PS:
2407
@@ -XXX,XX +XXX,XX @@ static void gen_flt3_arith(DisasContext *ctx, uint32_t opc,
2408
gen_load_fpr64(ctx, fp1, ft);
2409
gen_load_fpr64(ctx, fp2, fr);
2410
gen_helper_float_nmadd_ps(fp2, cpu_env, fp0, fp1, fp2);
2411
- tcg_temp_free_i64(fp0);
2412
- tcg_temp_free_i64(fp1);
2413
gen_store_fpr64(ctx, fp2, fd);
2414
- tcg_temp_free_i64(fp2);
2415
}
2416
break;
2417
case OPC_NMSUB_S:
2418
@@ -XXX,XX +XXX,XX @@ static void gen_flt3_arith(DisasContext *ctx, uint32_t opc,
2419
gen_load_fpr32(ctx, fp1, ft);
2420
gen_load_fpr32(ctx, fp2, fr);
2421
gen_helper_float_nmsub_s(fp2, cpu_env, fp0, fp1, fp2);
2422
- tcg_temp_free_i32(fp0);
2423
- tcg_temp_free_i32(fp1);
2424
gen_store_fpr32(ctx, fp2, fd);
2425
- tcg_temp_free_i32(fp2);
2426
}
2427
break;
2428
case OPC_NMSUB_D:
2429
@@ -XXX,XX +XXX,XX @@ static void gen_flt3_arith(DisasContext *ctx, uint32_t opc,
2430
gen_load_fpr64(ctx, fp1, ft);
2431
gen_load_fpr64(ctx, fp2, fr);
2432
gen_helper_float_nmsub_d(fp2, cpu_env, fp0, fp1, fp2);
2433
- tcg_temp_free_i64(fp0);
2434
- tcg_temp_free_i64(fp1);
2435
gen_store_fpr64(ctx, fp2, fd);
2436
- tcg_temp_free_i64(fp2);
2437
}
2438
break;
2439
case OPC_NMSUB_PS:
2440
@@ -XXX,XX +XXX,XX @@ static void gen_flt3_arith(DisasContext *ctx, uint32_t opc,
2441
gen_load_fpr64(ctx, fp1, ft);
2442
gen_load_fpr64(ctx, fp2, fr);
2443
gen_helper_float_nmsub_ps(fp2, cpu_env, fp0, fp1, fp2);
2444
- tcg_temp_free_i64(fp0);
2445
- tcg_temp_free_i64(fp1);
2446
gen_store_fpr64(ctx, fp2, fd);
2447
- tcg_temp_free_i64(fp2);
2448
}
2449
break;
2450
default:
2451
@@ -XXX,XX +XXX,XX @@ void gen_rdhwr(DisasContext *ctx, int rt, int rd, int sel)
2452
gen_reserved_instruction(ctx);
2453
break;
2454
}
2455
- tcg_temp_free(t0);
2456
}
2457
2458
static inline void clear_branch_hflags(DisasContext *ctx)
2459
@@ -XXX,XX +XXX,XX @@ static void gen_branch(DisasContext *ctx, int insn_bytes)
2460
2461
tcg_gen_andi_tl(t0, btarget, 0x1);
2462
tcg_gen_trunc_tl_i32(t1, t0);
2463
- tcg_temp_free(t0);
2464
tcg_gen_andi_i32(hflags, hflags, ~(uint32_t)MIPS_HFLAG_M16);
2465
tcg_gen_shli_i32(t1, t1, MIPS_HFLAG_M16_SHIFT);
2466
tcg_gen_or_i32(hflags, hflags, t1);
2467
- tcg_temp_free_i32(t1);
2468
2469
tcg_gen_andi_tl(cpu_PC, btarget, ~(target_ulong)0x1);
2470
} else {
2471
@@ -XXX,XX +XXX,XX @@ static void gen_compute_compact_branch(DisasContext *ctx, uint32_t opc,
2472
"\n", ctx->base.pc_next);
2473
#endif
2474
gen_reserved_instruction(ctx);
2475
- goto out;
2476
+ return;
2477
}
2478
2479
/* Load needed operands and calculate btarget */
2480
@@ -XXX,XX +XXX,XX @@ static void gen_compute_compact_branch(DisasContext *ctx, uint32_t opc,
2481
2482
gen_load_gpr(tbase, rt);
2483
gen_op_addr_add(ctx, btarget, tbase, toffset);
2484
- tcg_temp_free(tbase);
2485
}
2486
break;
2487
default:
2488
MIPS_INVAL("Compact branch/jump");
2489
gen_reserved_instruction(ctx);
2490
- goto out;
2491
+ return;
2492
}
2493
2494
if (bcond_compute == 0) {
2495
@@ -XXX,XX +XXX,XX @@ static void gen_compute_compact_branch(DisasContext *ctx, uint32_t opc,
2496
default:
2497
MIPS_INVAL("Compact branch/jump");
2498
gen_reserved_instruction(ctx);
2499
- goto out;
2500
+ return;
2501
}
2502
2503
/* Generating branch here as compact branches don't have delay slot */
2504
@@ -XXX,XX +XXX,XX @@ static void gen_compute_compact_branch(DisasContext *ctx, uint32_t opc,
2505
/* OPC_BNVC */
2506
tcg_gen_brcondi_tl(tcg_invert_cond(TCG_COND_EQ), t4, 0, fs);
2507
}
2508
- tcg_temp_free(input_overflow);
2509
- tcg_temp_free(t4);
2510
- tcg_temp_free(t3);
2511
- tcg_temp_free(t2);
2512
} else if (rs < rt && rs == 0) {
2513
/* OPC_BEQZALC, OPC_BNEZALC */
2514
if (opc == OPC_BEQZALC) {
2515
@@ -XXX,XX +XXX,XX @@ static void gen_compute_compact_branch(DisasContext *ctx, uint32_t opc,
2516
default:
2517
MIPS_INVAL("Compact conditional branch/jump");
2518
gen_reserved_instruction(ctx);
2519
- goto out;
2520
+ return;
2521
}
2522
2523
/* Generating branch here as compact branches don't have delay slot */
2524
@@ -XXX,XX +XXX,XX @@ static void gen_compute_compact_branch(DisasContext *ctx, uint32_t opc,
2525
2526
ctx->hflags |= MIPS_HFLAG_FBNSLOT;
2527
}
2528
-
2529
-out:
2530
- tcg_temp_free(t0);
2531
- tcg_temp_free(t1);
2532
}
2533
2534
void gen_addiupc(DisasContext *ctx, int rx, int imm,
2535
@@ -XXX,XX +XXX,XX @@ void gen_addiupc(DisasContext *ctx, int rx, int imm,
2536
if (!is_64_bit) {
2537
tcg_gen_ext32s_tl(cpu_gpr[rx], cpu_gpr[rx]);
2538
}
2539
-
2540
- tcg_temp_free(t0);
2541
}
2542
2543
static void gen_cache_operation(DisasContext *ctx, uint32_t op, int base,
2544
@@ -XXX,XX +XXX,XX @@ static void gen_cache_operation(DisasContext *ctx, uint32_t op, int base,
2545
TCGv t1 = tcg_temp_new();
2546
gen_base_offset_addr(ctx, t1, base, offset);
2547
gen_helper_cache(cpu_env, t1, t0);
2548
- tcg_temp_free(t1);
2549
- tcg_temp_free_i32(t0);
2550
}
2551
2552
static inline bool is_uhi(DisasContext *ctx, int sdbbp_code)
2553
@@ -XXX,XX +XXX,XX @@ void gen_ldxs(DisasContext *ctx, int base, int index, int rd)
2554
2555
tcg_gen_qemu_ld_tl(t1, t0, ctx->mem_idx, MO_TESL);
2556
gen_store_gpr(t1, rd);
2557
-
2558
- tcg_temp_free(t0);
2559
- tcg_temp_free(t1);
2560
}
2561
2562
static void gen_sync(int stype)
2563
@@ -XXX,XX +XXX,XX @@ static void gen_mips_lx(DisasContext *ctx, uint32_t opc,
2564
break;
2565
#endif
2566
}
2567
- tcg_temp_free(t0);
2568
}
2569
2570
static void gen_mipsdsp_arith(DisasContext *ctx, uint32_t op1, uint32_t op2,
2571
@@ -XXX,XX +XXX,XX @@ static void gen_mipsdsp_arith(DisasContext *ctx, uint32_t op1, uint32_t op2,
2572
TCGv_i32 sa_t = tcg_const_i32(v2);
2573
gen_helper_precr_sra_ph_w(cpu_gpr[ret], sa_t, v1_t,
2574
cpu_gpr[ret]);
2575
- tcg_temp_free_i32(sa_t);
2576
break;
2577
}
2578
case OPC_PRECR_SRA_R_PH_W:
2579
@@ -XXX,XX +XXX,XX @@ static void gen_mipsdsp_arith(DisasContext *ctx, uint32_t op1, uint32_t op2,
2580
TCGv_i32 sa_t = tcg_const_i32(v2);
2581
gen_helper_precr_sra_r_ph_w(cpu_gpr[ret], sa_t, v1_t,
2582
cpu_gpr[ret]);
2583
- tcg_temp_free_i32(sa_t);
2584
break;
2585
}
2586
case OPC_PRECRQ_PH_W:
2587
@@ -XXX,XX +XXX,XX @@ static void gen_mipsdsp_arith(DisasContext *ctx, uint32_t op1, uint32_t op2,
2588
{
2589
TCGv_i32 ret_t = tcg_const_i32(ret);
2590
gen_helper_precr_sra_qh_pw(v2_t, v1_t, v2_t, ret_t);
2591
- tcg_temp_free_i32(ret_t);
2592
break;
2593
}
2594
case OPC_PRECR_SRA_R_QH_PW:
2595
@@ -XXX,XX +XXX,XX @@ static void gen_mipsdsp_arith(DisasContext *ctx, uint32_t op1, uint32_t op2,
2596
{
2597
TCGv_i32 sa_v = tcg_const_i32(ret);
2598
gen_helper_precr_sra_r_qh_pw(v2_t, v1_t, v2_t, sa_v);
2599
- tcg_temp_free_i32(sa_v);
2600
break;
2601
}
2602
case OPC_PRECRQ_OB_QH:
2603
@@ -XXX,XX +XXX,XX @@ static void gen_mipsdsp_arith(DisasContext *ctx, uint32_t op1, uint32_t op2,
2604
break;
2605
#endif
2606
}
2607
-
2608
- tcg_temp_free(v1_t);
2609
- tcg_temp_free(v2_t);
2610
}
2611
2612
static void gen_mipsdsp_shift(DisasContext *ctx, uint32_t opc,
2613
@@ -XXX,XX +XXX,XX @@ static void gen_mipsdsp_shift(DisasContext *ctx, uint32_t opc,
2614
break;
2615
#endif
2616
}
2617
-
2618
- tcg_temp_free(t0);
2619
- tcg_temp_free(v1_t);
2620
- tcg_temp_free(v2_t);
2621
}
2622
2623
static void gen_mipsdsp_multiply(DisasContext *ctx, uint32_t op1, uint32_t op2,
2624
@@ -XXX,XX +XXX,XX @@ static void gen_mipsdsp_multiply(DisasContext *ctx, uint32_t op1, uint32_t op2,
2625
break;
2626
#endif
2627
}
2628
-
2629
- tcg_temp_free_i32(t0);
2630
- tcg_temp_free(v1_t);
2631
- tcg_temp_free(v2_t);
2632
}
2633
2634
static void gen_mipsdsp_bitinsn(DisasContext *ctx, uint32_t op1, uint32_t op2,
2635
@@ -XXX,XX +XXX,XX @@ static void gen_mipsdsp_bitinsn(DisasContext *ctx, uint32_t op1, uint32_t op2,
2636
break;
2637
#endif
2638
}
2639
- tcg_temp_free(t0);
2640
- tcg_temp_free(val_t);
2641
}
2642
2643
static void gen_mipsdsp_add_cmp_pick(DisasContext *ctx,
2644
@@ -XXX,XX +XXX,XX @@ static void gen_mipsdsp_add_cmp_pick(DisasContext *ctx,
2645
break;
2646
#endif
2647
}
2648
-
2649
- tcg_temp_free(t1);
2650
- tcg_temp_free(v1_t);
2651
- tcg_temp_free(v2_t);
2652
}
2653
2654
static void gen_mipsdsp_append(CPUMIPSState *env, DisasContext *ctx,
2655
@@ -XXX,XX +XXX,XX @@ static void gen_mipsdsp_append(CPUMIPSState *env, DisasContext *ctx,
2656
break;
2657
#endif
2658
}
2659
- tcg_temp_free(t0);
2660
}
2661
2662
static void gen_mipsdsp_accinsn(DisasContext *ctx, uint32_t op1, uint32_t op2,
2663
@@ -XXX,XX +XXX,XX @@ static void gen_mipsdsp_accinsn(DisasContext *ctx, uint32_t op1, uint32_t op2,
2664
break;
2665
#endif
2666
}
2667
-
2668
- tcg_temp_free(t0);
2669
- tcg_temp_free(t1);
2670
- tcg_temp_free(v1_t);
2671
}
2672
2673
/* End MIPSDSP functions. */
2674
@@ -XXX,XX +XXX,XX @@ static void decode_opc_special3_legacy(CPUMIPSState *env, DisasContext *ctx)
2675
gen_load_gpr(t1, rs);
2676
2677
gen_helper_insv(cpu_gpr[rt], cpu_env, t1, t0);
2678
-
2679
- tcg_temp_free(t0);
2680
- tcg_temp_free(t1);
2681
break;
2682
}
2683
default: /* Invalid */
2684
@@ -XXX,XX +XXX,XX @@ static void decode_opc_special3_legacy(CPUMIPSState *env, DisasContext *ctx)
2685
gen_load_gpr(t1, rs);
2686
2687
gen_helper_dinsv(cpu_gpr[rt], cpu_env, t1, t0);
2688
-
2689
- tcg_temp_free(t0);
2690
- tcg_temp_free(t1);
2691
break;
2692
}
2693
default: /* Invalid */
2694
@@ -XXX,XX +XXX,XX @@ static void decode_opc_special3(CPUMIPSState *env, DisasContext *ctx)
2695
gen_load_gpr(t0, rt);
2696
gen_load_gpr(t1, rs);
2697
gen_helper_fork(t0, t1);
2698
- tcg_temp_free(t0);
2699
- tcg_temp_free(t1);
2700
}
2701
break;
2702
case OPC_YIELD:
2703
@@ -XXX,XX +XXX,XX @@ static void decode_opc_special3(CPUMIPSState *env, DisasContext *ctx)
2704
gen_load_gpr(t0, rs);
2705
gen_helper_yield(t0, cpu_env, t0);
2706
gen_store_gpr(t0, rd);
2707
- tcg_temp_free(t0);
2708
}
2709
break;
2710
default:
2711
@@ -XXX,XX +XXX,XX @@ static bool decode_opc_legacy(CPUMIPSState *env, DisasContext *ctx)
2712
gen_reserved_instruction(ctx);
2713
break;
2714
}
2715
- tcg_temp_free(t0);
2716
}
2717
#endif /* !CONFIG_USER_ONLY */
2718
break;
2719
@@ -XXX,XX +XXX,XX @@ static bool decode_opc_legacy(CPUMIPSState *env, DisasContext *ctx)
2720
TCGv t0 = tcg_temp_new();
2721
gen_load_gpr(t0, rs);
2722
tcg_gen_addi_tl(cpu_gpr[rt], t0, imm << 16);
2723
- tcg_temp_free(t0);
2724
}
2725
#else
2726
gen_reserved_instruction(ctx);
2727
--
2728
2.34.1
2729
2730
diff view generated by jsdifflib
1
Replace the single use within env_tlb() and remove.
1
Translators are no longer required to free tcg temporaries.
2
2
Remove the g1 and g2 members of DisasCompare, as they were
3
Reviewed-by: Anton Johansson <anjo@rev.ng>
3
used to track which temps needed to be freed.
4
5
Acked-by: David Hildenbrand <david@redhat.com>
6
Reviewed-by: Ilya Leoshkevich <iii@linux.ibm.com>
4
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
7
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
5
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
8
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6
---
9
---
7
include/exec/cpu-all.h | 13 +------------
10
target/s390x/tcg/translate.c | 46 +-----------------------------------
8
1 file changed, 1 insertion(+), 12 deletions(-)
11
1 file changed, 1 insertion(+), 45 deletions(-)
9
12
10
diff --git a/include/exec/cpu-all.h b/include/exec/cpu-all.h
13
diff --git a/target/s390x/tcg/translate.c b/target/s390x/tcg/translate.c
11
index XXXXXXX..XXXXXXX 100644
14
index XXXXXXX..XXXXXXX 100644
12
--- a/include/exec/cpu-all.h
15
--- a/target/s390x/tcg/translate.c
13
+++ b/include/exec/cpu-all.h
16
+++ b/target/s390x/tcg/translate.c
14
@@ -XXX,XX +XXX,XX @@ static inline CPUState *env_cpu(CPUArchState *env)
17
@@ -XXX,XX +XXX,XX @@ struct DisasContext {
15
return (void *)env - sizeof(CPUState);
18
typedef struct {
19
TCGCond cond:8;
20
bool is_64;
21
- bool g1;
22
- bool g2;
23
union {
24
struct { TCGv_i64 a, b; } s64;
25
struct { TCGv_i32 a, b; } s32;
26
@@ -XXX,XX +XXX,XX @@ static void disas_jcc(DisasContext *s, DisasCompare *c, uint32_t mask)
27
c->cond = (mask ? TCG_COND_ALWAYS : TCG_COND_NEVER);
28
c->u.s32.a = cc_op;
29
c->u.s32.b = cc_op;
30
- c->g1 = c->g2 = true;
31
c->is_64 = false;
32
return;
33
}
34
@@ -XXX,XX +XXX,XX @@ static void disas_jcc(DisasContext *s, DisasCompare *c, uint32_t mask)
35
36
/* Load up the arguments of the comparison. */
37
c->is_64 = true;
38
- c->g1 = c->g2 = false;
39
switch (old_cc_op) {
40
case CC_OP_LTGT0_32:
41
c->is_64 = false;
42
@@ -XXX,XX +XXX,XX @@ static void disas_jcc(DisasContext *s, DisasCompare *c, uint32_t mask)
43
case CC_OP_FLOGR:
44
c->u.s64.a = cc_dst;
45
c->u.s64.b = tcg_constant_i64(0);
46
- c->g1 = true;
47
break;
48
case CC_OP_LTGT_64:
49
case CC_OP_LTUGTU_64:
50
c->u.s64.a = cc_src;
51
c->u.s64.b = cc_dst;
52
- c->g1 = c->g2 = true;
53
break;
54
55
case CC_OP_TM_32:
56
@@ -XXX,XX +XXX,XX @@ static void disas_jcc(DisasContext *s, DisasCompare *c, uint32_t mask)
57
case CC_OP_SUBU:
58
c->is_64 = true;
59
c->u.s64.b = tcg_constant_i64(0);
60
- c->g1 = true;
61
switch (mask) {
62
case 8 | 2:
63
case 4 | 1: /* result */
64
@@ -XXX,XX +XXX,XX @@ static void disas_jcc(DisasContext *s, DisasCompare *c, uint32_t mask)
65
case CC_OP_STATIC:
66
c->is_64 = false;
67
c->u.s32.a = cc_op;
68
- c->g1 = true;
69
switch (mask) {
70
case 0x8 | 0x4 | 0x2: /* cc != 3 */
71
cond = TCG_COND_NE;
72
@@ -XXX,XX +XXX,XX @@ static void disas_jcc(DisasContext *s, DisasCompare *c, uint32_t mask)
73
break;
74
case 0x8 | 0x2: /* cc == 0 || cc == 2 => (cc & 1) == 0 */
75
cond = TCG_COND_EQ;
76
- c->g1 = false;
77
c->u.s32.a = tcg_temp_new_i32();
78
c->u.s32.b = tcg_constant_i32(0);
79
tcg_gen_andi_i32(c->u.s32.a, cc_op, 1);
80
@@ -XXX,XX +XXX,XX @@ static void disas_jcc(DisasContext *s, DisasCompare *c, uint32_t mask)
81
break;
82
case 0x4 | 0x1: /* cc == 1 || cc == 3 => (cc & 1) != 0 */
83
cond = TCG_COND_NE;
84
- c->g1 = false;
85
c->u.s32.a = tcg_temp_new_i32();
86
c->u.s32.b = tcg_constant_i32(0);
87
tcg_gen_andi_i32(c->u.s32.a, cc_op, 1);
88
@@ -XXX,XX +XXX,XX @@ static void disas_jcc(DisasContext *s, DisasCompare *c, uint32_t mask)
89
default:
90
/* CC is masked by something else: (8 >> cc) & mask. */
91
cond = TCG_COND_NE;
92
- c->g1 = false;
93
c->u.s32.a = tcg_temp_new_i32();
94
c->u.s32.b = tcg_constant_i32(0);
95
tcg_gen_shr_i32(c->u.s32.a, tcg_constant_i32(8), cc_op);
96
@@ -XXX,XX +XXX,XX @@ static void disas_jcc(DisasContext *s, DisasCompare *c, uint32_t mask)
97
c->cond = cond;
16
}
98
}
17
99
18
-/**
100
-static void free_compare(DisasCompare *c)
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
-{
101
-{
26
- return &env_cpu(env)->neg;
102
- if (!c->g1) {
103
- if (c->is_64) {
104
- tcg_temp_free_i64(c->u.s64.a);
105
- } else {
106
- tcg_temp_free_i32(c->u.s32.a);
107
- }
108
- }
109
- if (!c->g2) {
110
- if (c->is_64) {
111
- tcg_temp_free_i64(c->u.s64.b);
112
- } else {
113
- tcg_temp_free_i32(c->u.s32.b);
114
- }
115
- }
27
-}
116
-}
28
-
117
-
29
/**
118
/* ====================================================================== */
30
* env_tlb(env)
119
/* Define the insn format enumeration. */
31
* @env: The architecture environment
120
#define F0(N) FMT_##N,
32
@@ -XXX,XX +XXX,XX @@ static inline CPUNegativeOffsetState *env_neg(CPUArchState *env)
121
@@ -XXX,XX +XXX,XX @@ static DisasJumpType help_branch(DisasContext *s, DisasCompare *c,
33
*/
122
}
34
static inline CPUTLB *env_tlb(CPUArchState *env)
123
35
{
124
egress:
36
- return &env_neg(env)->tlb;
125
- free_compare(c);
37
+ return &env_cpu(env)->neg.tlb;
126
return ret;
38
}
127
}
39
128
40
#endif /* CPU_ALL_H */
129
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_bct32(DisasContext *s, DisasOps *o)
130
131
c.cond = TCG_COND_NE;
132
c.is_64 = false;
133
- c.g1 = false;
134
- c.g2 = false;
135
136
t = tcg_temp_new_i64();
137
tcg_gen_subi_i64(t, regs[r1], 1);
138
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_bcth(DisasContext *s, DisasOps *o)
139
140
c.cond = TCG_COND_NE;
141
c.is_64 = false;
142
- c.g1 = false;
143
- c.g2 = false;
144
145
t = tcg_temp_new_i64();
146
tcg_gen_shri_i64(t, regs[r1], 32);
147
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_bct64(DisasContext *s, DisasOps *o)
148
149
c.cond = TCG_COND_NE;
150
c.is_64 = true;
151
- c.g1 = true;
152
- c.g2 = false;
153
154
tcg_gen_subi_i64(regs[r1], regs[r1], 1);
155
c.u.s64.a = regs[r1];
156
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_bx32(DisasContext *s, DisasOps *o)
157
158
c.cond = (s->insn->data ? TCG_COND_LE : TCG_COND_GT);
159
c.is_64 = false;
160
- c.g1 = false;
161
- c.g2 = false;
162
163
t = tcg_temp_new_i64();
164
tcg_gen_add_i64(t, regs[r1], regs[r3]);
165
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_bx64(DisasContext *s, DisasOps *o)
166
167
if (r1 == (r3 | 1)) {
168
c.u.s64.b = load_reg(r3 | 1);
169
- c.g2 = false;
170
} else {
171
c.u.s64.b = regs[r3 | 1];
172
- c.g2 = true;
173
}
174
175
tcg_gen_add_i64(regs[r1], regs[r1], regs[r3]);
176
c.u.s64.a = regs[r1];
177
- c.g1 = true;
178
179
return help_branch(s, &c, is_imm, imm, o->in2);
180
}
181
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_cj(DisasContext *s, DisasOps *o)
182
if (s->insn->data) {
183
c.cond = tcg_unsigned_cond(c.cond);
184
}
185
- c.is_64 = c.g1 = c.g2 = true;
186
+ c.is_64 = true;
187
c.u.s64.a = o->in1;
188
c.u.s64.b = o->in2;
189
190
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_loc(DisasContext *s, DisasOps *o)
191
if (c.is_64) {
192
tcg_gen_movcond_i64(c.cond, o->out, c.u.s64.a, c.u.s64.b,
193
o->in2, o->in1);
194
- free_compare(&c);
195
} else {
196
TCGv_i32 t32 = tcg_temp_new_i32();
197
TCGv_i64 t, z;
198
199
tcg_gen_setcond_i32(c.cond, t32, c.u.s32.a, c.u.s32.b);
200
- free_compare(&c);
201
202
t = tcg_temp_new_i64();
203
tcg_gen_extu_i32_i64(t, t32);
204
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_soc(DisasContext *s, DisasOps *o)
205
} else {
206
tcg_gen_brcond_i32(c.cond, c.u.s32.a, c.u.s32.b, lab);
207
}
208
- free_compare(&c);
209
210
r1 = get_field(s, r1);
211
a = get_address(s, 0, get_field(s, b2), get_field(s, d2));
41
--
212
--
42
2.34.1
213
2.34.1
43
214
44
215
diff view generated by jsdifflib
New patch
1
Translators are no longer required to free tcg temporaries.
1
2
3
Acked-by: David Hildenbrand <david@redhat.com>
4
Reviewed-by: Ilya Leoshkevich <iii@linux.ibm.com>
5
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
6
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7
---
8
target/s390x/tcg/translate_vx.c.inc | 143 ----------------------------
9
1 file changed, 143 deletions(-)
10
11
diff --git a/target/s390x/tcg/translate_vx.c.inc b/target/s390x/tcg/translate_vx.c.inc
12
index XXXXXXX..XXXXXXX 100644
13
--- a/target/s390x/tcg/translate_vx.c.inc
14
+++ b/target/s390x/tcg/translate_vx.c.inc
15
@@ -XXX,XX +XXX,XX @@ static void get_vec_element_ptr_i64(TCGv_ptr ptr, uint8_t reg, TCGv_i64 enr,
16
/* generate the final ptr by adding cpu_env */
17
tcg_gen_trunc_i64_ptr(ptr, tmp);
18
tcg_gen_add_ptr(ptr, ptr, cpu_env);
19
-
20
- tcg_temp_free_i64(tmp);
21
}
22
23
#define gen_gvec_2(v1, v2, gen) \
24
@@ -XXX,XX +XXX,XX @@ static void gen_gvec128_3_i64(gen_gvec128_3_i64_fn fn, uint8_t d, uint8_t a,
25
fn(dl, dh, al, ah, bl, bh);
26
write_vec_element_i64(dh, d, 0, ES_64);
27
write_vec_element_i64(dl, d, 1, ES_64);
28
-
29
- tcg_temp_free_i64(dh);
30
- tcg_temp_free_i64(dl);
31
- tcg_temp_free_i64(ah);
32
- tcg_temp_free_i64(al);
33
- tcg_temp_free_i64(bh);
34
- tcg_temp_free_i64(bl);
35
}
36
37
typedef void (*gen_gvec128_4_i64_fn)(TCGv_i64 dl, TCGv_i64 dh, TCGv_i64 al,
38
@@ -XXX,XX +XXX,XX @@ static void gen_gvec128_4_i64(gen_gvec128_4_i64_fn fn, uint8_t d, uint8_t a,
39
fn(dl, dh, al, ah, bl, bh, cl, ch);
40
write_vec_element_i64(dh, d, 0, ES_64);
41
write_vec_element_i64(dl, d, 1, ES_64);
42
-
43
- tcg_temp_free_i64(dh);
44
- tcg_temp_free_i64(dl);
45
- tcg_temp_free_i64(ah);
46
- tcg_temp_free_i64(al);
47
- tcg_temp_free_i64(bh);
48
- tcg_temp_free_i64(bl);
49
- tcg_temp_free_i64(ch);
50
- tcg_temp_free_i64(cl);
51
}
52
53
static void gen_addi2_i64(TCGv_i64 dl, TCGv_i64 dh, TCGv_i64 al, TCGv_i64 ah,
54
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_vge(DisasContext *s, DisasOps *o)
55
56
tcg_gen_qemu_ld_i64(tmp, o->addr1, get_mem_index(s), MO_TE | es);
57
write_vec_element_i64(tmp, get_field(s, v1), enr, es);
58
- tcg_temp_free_i64(tmp);
59
return DISAS_NEXT;
60
}
61
62
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_vgbm(DisasContext *s, DisasOps *o)
63
write_vec_element_i64(t, get_field(s, v1), 0, ES_64);
64
tcg_gen_movi_i64(t, generate_byte_mask(i2));
65
write_vec_element_i64(t, get_field(s, v1), 1, ES_64);
66
- tcg_temp_free_i64(t);
67
}
68
return DISAS_NEXT;
69
}
70
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_vl(DisasContext *s, DisasOps *o)
71
tcg_gen_qemu_ld_i64(t1, o->addr1, get_mem_index(s), MO_TEUQ);
72
write_vec_element_i64(t0, get_field(s, v1), 0, ES_64);
73
write_vec_element_i64(t1, get_field(s, v1), 1, ES_64);
74
- tcg_temp_free(t0);
75
- tcg_temp_free(t1);
76
return DISAS_NEXT;
77
}
78
79
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_vlrep(DisasContext *s, DisasOps *o)
80
tmp = tcg_temp_new_i64();
81
tcg_gen_qemu_ld_i64(tmp, o->addr1, get_mem_index(s), MO_TE | es);
82
gen_gvec_dup_i64(es, get_field(s, v1), tmp);
83
- tcg_temp_free_i64(tmp);
84
return DISAS_NEXT;
85
}
86
87
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_vlebr(DisasContext *s, DisasOps *o)
88
tmp = tcg_temp_new_i64();
89
tcg_gen_qemu_ld_i64(tmp, o->addr1, get_mem_index(s), MO_LE | es);
90
write_vec_element_i64(tmp, get_field(s, v1), enr, es);
91
- tcg_temp_free_i64(tmp);
92
return DISAS_NEXT;
93
}
94
95
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_vlbrrep(DisasContext *s, DisasOps *o)
96
tmp = tcg_temp_new_i64();
97
tcg_gen_qemu_ld_i64(tmp, o->addr1, get_mem_index(s), MO_LE | es);
98
gen_gvec_dup_i64(es, get_field(s, v1), tmp);
99
- tcg_temp_free_i64(tmp);
100
return DISAS_NEXT;
101
}
102
103
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_vllebrz(DisasContext *s, DisasOps *o)
104
105
write_vec_element_i64(tmp, get_field(s, v1), 0, ES_64);
106
write_vec_element_i64(tcg_constant_i64(0), get_field(s, v1), 1, ES_64);
107
- tcg_temp_free_i64(tmp);
108
return DISAS_NEXT;
109
}
110
111
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_vlbr(DisasContext *s, DisasOps *o)
112
write:
113
write_vec_element_i64(t0, get_field(s, v1), 0, ES_64);
114
write_vec_element_i64(t1, get_field(s, v1), 1, ES_64);
115
-
116
- tcg_temp_free(t0);
117
- tcg_temp_free(t1);
118
return DISAS_NEXT;
119
}
120
121
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_vle(DisasContext *s, DisasOps *o)
122
tmp = tcg_temp_new_i64();
123
tcg_gen_qemu_ld_i64(tmp, o->addr1, get_mem_index(s), MO_TE | es);
124
write_vec_element_i64(tmp, get_field(s, v1), enr, es);
125
- tcg_temp_free_i64(tmp);
126
return DISAS_NEXT;
127
}
128
129
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_vler(DisasContext *s, DisasOps *o)
130
131
write_vec_element_i64(t0, get_field(s, v1), 0, ES_64);
132
write_vec_element_i64(t1, get_field(s, v1), 1, ES_64);
133
- tcg_temp_free(t0);
134
- tcg_temp_free(t1);
135
return DISAS_NEXT;
136
}
137
138
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_vlgv(DisasContext *s, DisasOps *o)
139
default:
140
g_assert_not_reached();
141
}
142
- tcg_temp_free_ptr(ptr);
143
-
144
return DISAS_NEXT;
145
}
146
147
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_vllez(DisasContext *s, DisasOps *o)
148
tcg_gen_qemu_ld_i64(t, o->addr1, get_mem_index(s), MO_TE | es);
149
gen_gvec_dup_imm(es, get_field(s, v1), 0);
150
write_vec_element_i64(t, get_field(s, v1), enr, es);
151
- tcg_temp_free_i64(t);
152
return DISAS_NEXT;
153
}
154
155
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_vlm(DisasContext *s, DisasOps *o)
156
157
/* Store the last element, loaded first */
158
write_vec_element_i64(t0, v1, 1, ES_64);
159
-
160
- tcg_temp_free_i64(t0);
161
- tcg_temp_free_i64(t1);
162
return DISAS_NEXT;
163
}
164
165
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_vlbb(DisasContext *s, DisasOps *o)
166
167
tcg_gen_addi_ptr(a0, cpu_env, v1_offs);
168
gen_helper_vll(cpu_env, a0, o->addr1, bytes);
169
- tcg_temp_free_i64(bytes);
170
- tcg_temp_free_ptr(a0);
171
return DISAS_NEXT;
172
}
173
174
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_vlvg(DisasContext *s, DisasOps *o)
175
default:
176
g_assert_not_reached();
177
}
178
- tcg_temp_free_ptr(ptr);
179
-
180
return DISAS_NEXT;
181
}
182
183
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_vll(DisasContext *s, DisasOps *o)
184
tcg_gen_addi_i64(o->in2, o->in2, 1);
185
tcg_gen_addi_ptr(a0, cpu_env, v1_offs);
186
gen_helper_vll(cpu_env, a0, o->addr1, o->in2);
187
- tcg_temp_free_ptr(a0);
188
return DISAS_NEXT;
189
}
190
191
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_vmr(DisasContext *s, DisasOps *o)
192
write_vec_element_i64(tmp, v1, dst_idx, es);
193
}
194
}
195
- tcg_temp_free_i64(tmp);
196
return DISAS_NEXT;
197
}
198
199
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_vpk(DisasContext *s, DisasOps *o)
200
}
201
write_vec_element_i64(tmp, v1, dst_idx, dst_es);
202
}
203
- tcg_temp_free_i64(tmp);
204
} else {
205
gen_gvec_3_ool(v1, v2, v3, 0, vpk[es - 1]);
206
}
207
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_vpdi(DisasContext *s, DisasOps *o)
208
read_vec_element_i64(t1, get_field(s, v3), i3, ES_64);
209
write_vec_element_i64(t0, get_field(s, v1), 0, ES_64);
210
write_vec_element_i64(t1, get_field(s, v1), 1, ES_64);
211
- tcg_temp_free_i64(t0);
212
- tcg_temp_free_i64(t1);
213
return DISAS_NEXT;
214
}
215
216
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_vsce(DisasContext *s, DisasOps *o)
217
218
read_vec_element_i64(tmp, get_field(s, v1), enr, es);
219
tcg_gen_qemu_st_i64(tmp, o->addr1, get_mem_index(s), MO_TE | es);
220
- tcg_temp_free_i64(tmp);
221
return DISAS_NEXT;
222
}
223
224
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_vseg(DisasContext *s, DisasOps *o)
225
write_vec_element_i64(tmp, get_field(s, v1), 0, ES_64);
226
read_vec_element_i64(tmp, get_field(s, v2), idx2, es | MO_SIGN);
227
write_vec_element_i64(tmp, get_field(s, v1), 1, ES_64);
228
- tcg_temp_free_i64(tmp);
229
return DISAS_NEXT;
230
}
231
232
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_vst(DisasContext *s, DisasOps *o)
233
gen_addi_and_wrap_i64(s, o->addr1, o->addr1, 8);
234
read_vec_element_i64(tmp, get_field(s, v1), 1, ES_64);
235
tcg_gen_qemu_st_i64(tmp, o->addr1, get_mem_index(s), MO_TEUQ);
236
- tcg_temp_free_i64(tmp);
237
return DISAS_NEXT;
238
}
239
240
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_vstebr(DisasContext *s, DisasOps *o)
241
tmp = tcg_temp_new_i64();
242
read_vec_element_i64(tmp, get_field(s, v1), enr, es);
243
tcg_gen_qemu_st_i64(tmp, o->addr1, get_mem_index(s), MO_LE | es);
244
- tcg_temp_free_i64(tmp);
245
return DISAS_NEXT;
246
}
247
248
@@ -XXX,XX +XXX,XX @@ write:
249
tcg_gen_qemu_st_i64(t0, o->addr1, get_mem_index(s), MO_LEUQ);
250
gen_addi_and_wrap_i64(s, o->addr1, o->addr1, 8);
251
tcg_gen_qemu_st_i64(t1, o->addr1, get_mem_index(s), MO_LEUQ);
252
-
253
- tcg_temp_free(t0);
254
- tcg_temp_free(t1);
255
return DISAS_NEXT;
256
}
257
258
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_vste(DisasContext *s, DisasOps *o)
259
tmp = tcg_temp_new_i64();
260
read_vec_element_i64(tmp, get_field(s, v1), enr, es);
261
tcg_gen_qemu_st_i64(tmp, o->addr1, get_mem_index(s), MO_TE | es);
262
- tcg_temp_free_i64(tmp);
263
return DISAS_NEXT;
264
}
265
266
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_vster(DisasContext *s, DisasOps *o)
267
tcg_gen_qemu_st_i64(t0, o->addr1, get_mem_index(s), MO_TEUQ);
268
gen_addi_and_wrap_i64(s, o->addr1, o->addr1, 8);
269
tcg_gen_qemu_st_i64(t1, o->addr1, get_mem_index(s), MO_TEUQ);
270
-
271
- tcg_temp_free(t0);
272
- tcg_temp_free(t1);
273
return DISAS_NEXT;
274
}
275
276
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_vstm(DisasContext *s, DisasOps *o)
277
}
278
gen_addi_and_wrap_i64(s, o->addr1, o->addr1, 8);
279
}
280
- tcg_temp_free_i64(tmp);
281
return DISAS_NEXT;
282
}
283
284
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_vstl(DisasContext *s, DisasOps *o)
285
tcg_gen_addi_i64(o->in2, o->in2, 1);
286
tcg_gen_addi_ptr(a0, cpu_env, v1_offs);
287
gen_helper_vstl(cpu_env, a0, o->addr1, o->in2);
288
- tcg_temp_free_ptr(a0);
289
return DISAS_NEXT;
290
}
291
292
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_vup(DisasContext *s, DisasOps *o)
293
write_vec_element_i64(tmp, v1, dst_idx, dst_es);
294
}
295
}
296
- tcg_temp_free_i64(tmp);
297
return DISAS_NEXT;
298
}
299
300
@@ -XXX,XX +XXX,XX @@ static void gen_acc(TCGv_i64 d, TCGv_i64 a, TCGv_i64 b, uint8_t es)
301
/* Isolate and shift the carry into position */
302
tcg_gen_and_i64(d, d, msb_mask);
303
tcg_gen_shri_i64(d, d, msb_bit_nr);
304
-
305
- tcg_temp_free_i64(t1);
306
- tcg_temp_free_i64(t2);
307
- tcg_temp_free_i64(t3);
308
}
309
310
static void gen_acc8_i64(TCGv_i64 d, TCGv_i64 a, TCGv_i64 b)
311
@@ -XXX,XX +XXX,XX @@ static void gen_acc_i32(TCGv_i32 d, TCGv_i32 a, TCGv_i32 b)
312
313
tcg_gen_add_i32(t, a, b);
314
tcg_gen_setcond_i32(TCG_COND_LTU, d, t, b);
315
- tcg_temp_free_i32(t);
316
}
317
318
static void gen_acc_i64(TCGv_i64 d, TCGv_i64 a, TCGv_i64 b)
319
@@ -XXX,XX +XXX,XX @@ static void gen_acc_i64(TCGv_i64 d, TCGv_i64 a, TCGv_i64 b)
320
321
tcg_gen_add_i64(t, a, b);
322
tcg_gen_setcond_i64(TCG_COND_LTU, d, t, b);
323
- tcg_temp_free_i64(t);
324
}
325
326
static void gen_acc2_i64(TCGv_i64 dl, TCGv_i64 dh, TCGv_i64 al,
327
@@ -XXX,XX +XXX,XX @@ static void gen_acc2_i64(TCGv_i64 dl, TCGv_i64 dh, TCGv_i64 al,
328
tcg_gen_add2_i64(tl, th, th, zero, ah, zero);
329
tcg_gen_add2_i64(tl, dl, tl, th, bh, zero);
330
tcg_gen_mov_i64(dh, zero);
331
-
332
- tcg_temp_free_i64(th);
333
- tcg_temp_free_i64(tl);
334
}
335
336
static DisasJumpType op_vacc(DisasContext *s, DisasOps *o)
337
@@ -XXX,XX +XXX,XX @@ static void gen_ac2_i64(TCGv_i64 dl, TCGv_i64 dh, TCGv_i64 al, TCGv_i64 ah,
338
tcg_gen_extract_i64(tl, cl, 0, 1);
339
tcg_gen_add2_i64(dl, dh, al, ah, bl, bh);
340
tcg_gen_add2_i64(dl, dh, dl, dh, tl, zero);
341
-
342
- tcg_temp_free_i64(tl);
343
}
344
345
static DisasJumpType op_vac(DisasContext *s, DisasOps *o)
346
@@ -XXX,XX +XXX,XX @@ static void gen_accc2_i64(TCGv_i64 dl, TCGv_i64 dh, TCGv_i64 al, TCGv_i64 ah,
347
tcg_gen_add2_i64(tl, th, th, zero, ah, zero);
348
tcg_gen_add2_i64(tl, dl, tl, th, bh, zero);
349
tcg_gen_mov_i64(dh, zero);
350
-
351
- tcg_temp_free_i64(tl);
352
- tcg_temp_free_i64(th);
353
}
354
355
static DisasJumpType op_vaccc(DisasContext *s, DisasOps *o)
356
@@ -XXX,XX +XXX,XX @@ static void gen_avg_i32(TCGv_i32 d, TCGv_i32 a, TCGv_i32 b)
357
tcg_gen_addi_i64(t0, t0, 1);
358
tcg_gen_shri_i64(t0, t0, 1);
359
tcg_gen_extrl_i64_i32(d, t0);
360
-
361
- tcg_temp_free(t0);
362
- tcg_temp_free(t1);
363
}
364
365
static void gen_avg_i64(TCGv_i64 dl, TCGv_i64 al, TCGv_i64 bl)
366
@@ -XXX,XX +XXX,XX @@ static void gen_avg_i64(TCGv_i64 dl, TCGv_i64 al, TCGv_i64 bl)
367
tcg_gen_add2_i64(dl, dh, al, ah, bl, bh);
368
gen_addi2_i64(dl, dh, dl, dh, 1);
369
tcg_gen_extract2_i64(dl, dl, dh, 1);
370
-
371
- tcg_temp_free_i64(dh);
372
- tcg_temp_free_i64(ah);
373
- tcg_temp_free_i64(bh);
374
}
375
376
static DisasJumpType op_vavg(DisasContext *s, DisasOps *o)
377
@@ -XXX,XX +XXX,XX @@ static void gen_avgl_i32(TCGv_i32 d, TCGv_i32 a, TCGv_i32 b)
378
tcg_gen_addi_i64(t0, t0, 1);
379
tcg_gen_shri_i64(t0, t0, 1);
380
tcg_gen_extrl_i64_i32(d, t0);
381
-
382
- tcg_temp_free(t0);
383
- tcg_temp_free(t1);
384
}
385
386
static void gen_avgl_i64(TCGv_i64 dl, TCGv_i64 al, TCGv_i64 bl)
387
@@ -XXX,XX +XXX,XX @@ static void gen_avgl_i64(TCGv_i64 dl, TCGv_i64 al, TCGv_i64 bl)
388
tcg_gen_add2_i64(dl, dh, al, zero, bl, zero);
389
gen_addi2_i64(dl, dh, dl, dh, 1);
390
tcg_gen_extract2_i64(dl, dl, dh, 1);
391
-
392
- tcg_temp_free_i64(dh);
393
}
394
395
static DisasJumpType op_vavgl(DisasContext *s, DisasOps *o)
396
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_vcksm(DisasContext *s, DisasOps *o)
397
}
398
gen_gvec_dup_imm(ES_32, get_field(s, v1), 0);
399
write_vec_element_i32(sum, get_field(s, v1), 1, ES_32);
400
-
401
- tcg_temp_free_i32(tmp);
402
- tcg_temp_free_i32(sum);
403
return DISAS_NEXT;
404
}
405
406
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_vc(DisasContext *s, DisasOps *o)
407
read_vec_element_i64(high, get_field(s, v1), 0, ES_64);
408
read_vec_element_i64(low, get_field(s, v1), 1, ES_64);
409
gen_op_update2_cc_i64(s, CC_OP_VC, low, high);
410
-
411
- tcg_temp_free_i64(low);
412
- tcg_temp_free_i64(high);
413
}
414
return DISAS_NEXT;
415
}
416
@@ -XXX,XX +XXX,XX @@ static void gen_mal_i32(TCGv_i32 d, TCGv_i32 a, TCGv_i32 b, TCGv_i32 c)
417
418
tcg_gen_mul_i32(t0, a, b);
419
tcg_gen_add_i32(d, t0, c);
420
-
421
- tcg_temp_free_i32(t0);
422
}
423
424
static void gen_mah_i32(TCGv_i32 d, TCGv_i32 a, TCGv_i32 b, TCGv_i32 c)
425
@@ -XXX,XX +XXX,XX @@ static void gen_mah_i32(TCGv_i32 d, TCGv_i32 a, TCGv_i32 b, TCGv_i32 c)
426
tcg_gen_mul_i64(t0, t0, t1);
427
tcg_gen_add_i64(t0, t0, t2);
428
tcg_gen_extrh_i64_i32(d, t0);
429
-
430
- tcg_temp_free(t0);
431
- tcg_temp_free(t1);
432
- tcg_temp_free(t2);
433
}
434
435
static void gen_malh_i32(TCGv_i32 d, TCGv_i32 a, TCGv_i32 b, TCGv_i32 c)
436
@@ -XXX,XX +XXX,XX @@ static void gen_malh_i32(TCGv_i32 d, TCGv_i32 a, TCGv_i32 b, TCGv_i32 c)
437
tcg_gen_mul_i64(t0, t0, t1);
438
tcg_gen_add_i64(t0, t0, t2);
439
tcg_gen_extrh_i64_i32(d, t0);
440
-
441
- tcg_temp_free(t0);
442
- tcg_temp_free(t1);
443
- tcg_temp_free(t2);
444
}
445
446
static DisasJumpType op_vma(DisasContext *s, DisasOps *o)
447
@@ -XXX,XX +XXX,XX @@ static void gen_mh_i32(TCGv_i32 d, TCGv_i32 a, TCGv_i32 b)
448
TCGv_i32 t = tcg_temp_new_i32();
449
450
tcg_gen_muls2_i32(t, d, a, b);
451
- tcg_temp_free_i32(t);
452
}
453
454
static void gen_mlh_i32(TCGv_i32 d, TCGv_i32 a, TCGv_i32 b)
455
@@ -XXX,XX +XXX,XX @@ static void gen_mlh_i32(TCGv_i32 d, TCGv_i32 a, TCGv_i32 b)
456
TCGv_i32 t = tcg_temp_new_i32();
457
458
tcg_gen_mulu2_i32(t, d, a, b);
459
- tcg_temp_free_i32(t);
460
}
461
462
static DisasJumpType op_vm(DisasContext *s, DisasOps *o)
463
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_vmsl(DisasContext *s, DisasOps *o)
464
/* Store final result into v1. */
465
write_vec_element_i64(h1, get_field(s, v1), 0, ES_64);
466
write_vec_element_i64(l1, get_field(s, v1), 1, ES_64);
467
-
468
- tcg_temp_free_i64(l1);
469
- tcg_temp_free_i64(h1);
470
- tcg_temp_free_i64(l2);
471
- tcg_temp_free_i64(h2);
472
return DISAS_NEXT;
473
}
474
475
@@ -XXX,XX +XXX,XX @@ static void gen_rim_i32(TCGv_i32 d, TCGv_i32 a, TCGv_i32 b, int32_t c)
476
tcg_gen_and_i32(t, t, b);
477
tcg_gen_andc_i32(d, d, b);
478
tcg_gen_or_i32(d, d, t);
479
-
480
- tcg_temp_free_i32(t);
481
}
482
483
static void gen_rim_i64(TCGv_i64 d, TCGv_i64 a, TCGv_i64 b, int64_t c)
484
@@ -XXX,XX +XXX,XX @@ static void gen_rim_i64(TCGv_i64 d, TCGv_i64 a, TCGv_i64 b, int64_t c)
485
tcg_gen_and_i64(t, t, b);
486
tcg_gen_andc_i64(d, d, b);
487
tcg_gen_or_i64(d, d, t);
488
-
489
- tcg_temp_free_i64(t);
490
}
491
492
static DisasJumpType op_verim(DisasContext *s, DisasOps *o)
493
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_ves(DisasContext *s, DisasOps *o)
494
default:
495
g_assert_not_reached();
496
}
497
- tcg_temp_free_i32(shift);
498
}
499
return DISAS_NEXT;
500
}
501
@@ -XXX,XX +XXX,XX @@ static DisasJumpType gen_vsh_by_byte(DisasContext *s, DisasOps *o,
502
read_vec_element_i64(shift, get_field(s, v3), 7, ES_8);
503
tcg_gen_andi_i64(shift, shift, byte ? 0x78 : 7);
504
gen_gvec_2i_ool(get_field(s, v1), get_field(s, v2), shift, 0, gen);
505
- tcg_temp_free_i64(shift);
506
}
507
return DISAS_NEXT;
508
}
509
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_vsld(DisasContext *s, DisasOps *o)
510
511
write_vec_element_i64(t0, get_field(s, v1), 0, ES_64);
512
write_vec_element_i64(t1, get_field(s, v1), 1, ES_64);
513
-
514
- tcg_temp_free(t0);
515
- tcg_temp_free(t1);
516
- tcg_temp_free(t2);
517
return DISAS_NEXT;
518
}
519
520
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_vsrd(DisasContext *s, DisasOps *o)
521
522
write_vec_element_i64(t0, get_field(s, v1), 0, ES_64);
523
write_vec_element_i64(t1, get_field(s, v1), 1, ES_64);
524
-
525
- tcg_temp_free(t0);
526
- tcg_temp_free(t1);
527
- tcg_temp_free(t2);
528
return DISAS_NEXT;
529
}
530
531
@@ -XXX,XX +XXX,XX @@ static void gen_scbi2_i64(TCGv_i64 dl, TCGv_i64 dh, TCGv_i64 al,
532
/* "invert" the result: -1 -> 0; 0 -> 1 */
533
tcg_gen_addi_i64(dl, th, 1);
534
tcg_gen_mov_i64(dh, zero);
535
-
536
- tcg_temp_free_i64(th);
537
- tcg_temp_free_i64(tl);
538
}
539
540
static DisasJumpType op_vscbi(DisasContext *s, DisasOps *o)
541
@@ -XXX,XX +XXX,XX @@ static void gen_sbi2_i64(TCGv_i64 dl, TCGv_i64 dh, TCGv_i64 al, TCGv_i64 ah,
542
tcg_gen_not_i64(tl, bl);
543
tcg_gen_not_i64(th, bh);
544
gen_ac2_i64(dl, dh, al, ah, tl, th, cl, ch);
545
- tcg_temp_free_i64(tl);
546
- tcg_temp_free_i64(th);
547
}
548
549
static DisasJumpType op_vsbi(DisasContext *s, DisasOps *o)
550
@@ -XXX,XX +XXX,XX @@ static void gen_sbcbi2_i64(TCGv_i64 dl, TCGv_i64 dh, TCGv_i64 al, TCGv_i64 ah,
551
tcg_gen_not_i64(tl, bl);
552
tcg_gen_not_i64(th, bh);
553
gen_accc2_i64(dl, dh, al, ah, tl, th, cl, ch);
554
-
555
- tcg_temp_free_i64(tl);
556
- tcg_temp_free_i64(th);
557
}
558
559
static DisasJumpType op_vsbcbi(DisasContext *s, DisasOps *o)
560
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_vsumg(DisasContext *s, DisasOps *o)
561
}
562
write_vec_element_i64(sum, get_field(s, v1), dst_idx, ES_64);
563
}
564
- tcg_temp_free_i64(sum);
565
- tcg_temp_free_i64(tmp);
566
return DISAS_NEXT;
567
}
568
569
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_vsumq(DisasContext *s, DisasOps *o)
570
}
571
write_vec_element_i64(sumh, get_field(s, v1), 0, ES_64);
572
write_vec_element_i64(suml, get_field(s, v1), 1, ES_64);
573
-
574
- tcg_temp_free_i64(sumh);
575
- tcg_temp_free_i64(suml);
576
- tcg_temp_free_i64(tmpl);
577
return DISAS_NEXT;
578
}
579
580
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_vsum(DisasContext *s, DisasOps *o)
581
}
582
write_vec_element_i32(sum, get_field(s, v1), dst_idx, ES_32);
583
}
584
- tcg_temp_free_i32(sum);
585
- tcg_temp_free_i32(tmp);
586
return DISAS_NEXT;
587
}
588
589
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_vfpso(DisasContext *s, DisasOps *o)
590
read_vec_element_i64(tmp, v2, 1, ES_64);
591
write_vec_element_i64(tmp, v1, 1, ES_64);
592
}
593
-
594
- tcg_temp_free_i64(tmp);
595
-
596
return DISAS_NEXT;
597
}
598
599
--
600
2.34.1
601
602
diff view generated by jsdifflib
New patch
1
Translators are no longer required to free tcg temporaries.
1
2
3
Acked-by: David Hildenbrand <david@redhat.com>
4
Reviewed-by: Ilya Leoshkevich <iii@linux.ibm.com>
5
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
6
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7
---
8
target/s390x/tcg/translate.c | 105 -----------------------------------
9
1 file changed, 105 deletions(-)
10
11
diff --git a/target/s390x/tcg/translate.c b/target/s390x/tcg/translate.c
12
index XXXXXXX..XXXXXXX 100644
13
--- a/target/s390x/tcg/translate.c
14
+++ b/target/s390x/tcg/translate.c
15
@@ -XXX,XX +XXX,XX @@ static TCGv_i128 load_freg_128(int reg)
16
TCGv_i128 r = tcg_temp_new_i128();
17
18
tcg_gen_concat_i64_i128(r, l, h);
19
- tcg_temp_free_i64(h);
20
- tcg_temp_free_i64(l);
21
return r;
22
}
23
24
@@ -XXX,XX +XXX,XX @@ static DisasJumpType help_branch(DisasContext *s, DisasCompare *c,
25
TCGv_i64 z = tcg_constant_i64(0);
26
tcg_gen_setcond_i32(c->cond, t0, c->u.s32.a, c->u.s32.b);
27
tcg_gen_extu_i32_i64(t1, t0);
28
- tcg_temp_free_i32(t0);
29
tcg_gen_movcond_i64(TCG_COND_NE, psw_addr, t1, z, cdest, next);
30
per_branch_cond(s, TCG_COND_NE, t1, z);
31
- tcg_temp_free_i64(t1);
32
}
33
34
ret = DISAS_PC_UPDATED;
35
@@ -XXX,XX +XXX,XX @@ static void save_link_info(DisasContext *s, DisasOps *o)
36
tcg_gen_extu_i32_i64(t, cc_op);
37
tcg_gen_shli_i64(t, t, 28);
38
tcg_gen_or_i64(o->out, o->out, t);
39
- tcg_temp_free_i64(t);
40
}
41
42
static DisasJumpType op_bal(DisasContext *s, DisasOps *o)
43
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_bct32(DisasContext *s, DisasOps *o)
44
c.u.s32.a = tcg_temp_new_i32();
45
c.u.s32.b = tcg_constant_i32(0);
46
tcg_gen_extrl_i64_i32(c.u.s32.a, t);
47
- tcg_temp_free_i64(t);
48
49
return help_branch(s, &c, is_imm, imm, o->in2);
50
}
51
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_bcth(DisasContext *s, DisasOps *o)
52
c.u.s32.a = tcg_temp_new_i32();
53
c.u.s32.b = tcg_constant_i32(0);
54
tcg_gen_extrl_i64_i32(c.u.s32.a, t);
55
- tcg_temp_free_i64(t);
56
57
return help_branch(s, &c, 1, imm, o->in2);
58
}
59
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_bx32(DisasContext *s, DisasOps *o)
60
tcg_gen_extrl_i64_i32(c.u.s32.a, t);
61
tcg_gen_extrl_i64_i32(c.u.s32.b, regs[r3 | 1]);
62
store_reg32_i64(r1, t);
63
- tcg_temp_free_i64(t);
64
65
return help_branch(s, &c, is_imm, imm, o->in2);
66
}
67
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_cksm(DisasContext *s, DisasOps *o)
68
gen_helper_cksm(pair, cpu_env, o->in1, o->in2, regs[r2 + 1]);
69
set_cc_static(s);
70
tcg_gen_extr_i128_i64(o->out, len, pair);
71
- tcg_temp_free_i128(pair);
72
73
tcg_gen_add_i64(regs[r2], regs[r2], len);
74
tcg_gen_sub_i64(regs[r2 + 1], regs[r2 + 1], len);
75
- tcg_temp_free_i64(len);
76
77
return DISAS_NEXT;
78
}
79
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_clm(DisasContext *s, DisasOps *o)
80
tcg_gen_extrl_i64_i32(t1, o->in1);
81
gen_helper_clm(cc_op, cpu_env, t1, m3, o->in2);
82
set_cc_static(s);
83
- tcg_temp_free_i32(t1);
84
return DISAS_NEXT;
85
}
86
87
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_clst(DisasContext *s, DisasOps *o)
88
89
gen_helper_clst(pair, cpu_env, regs[0], o->in1, o->in2);
90
tcg_gen_extr_i128_i64(o->in2, o->in1, pair);
91
- tcg_temp_free_i128(pair);
92
93
set_cc_static(s);
94
return DISAS_NEXT;
95
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_cps(DisasContext *s, DisasOps *o)
96
tcg_gen_andi_i64(t, o->in1, 0x8000000000000000ull);
97
tcg_gen_andi_i64(o->out, o->in2, 0x7fffffffffffffffull);
98
tcg_gen_or_i64(o->out, o->out, t);
99
- tcg_temp_free_i64(t);
100
return DISAS_NEXT;
101
}
102
103
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_cs(DisasContext *s, DisasOps *o)
104
addr = get_address(s, 0, b2, d2);
105
tcg_gen_atomic_cmpxchg_i64(o->out, addr, o->in2, o->in1,
106
get_mem_index(s), s->insn->data | MO_ALIGN);
107
- tcg_temp_free_i64(addr);
108
109
/* Are the memory and expected values (un)equal? Note that this setcond
110
produces the output CC value, thus the NE sense of the test. */
111
cc = tcg_temp_new_i64();
112
tcg_gen_setcond_i64(TCG_COND_NE, cc, o->in2, o->out);
113
tcg_gen_extrl_i64_i32(cc_op, cc);
114
- tcg_temp_free_i64(cc);
115
set_cc_static(s);
116
117
return DISAS_NEXT;
118
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_csp(DisasContext *s, DisasOps *o)
119
tcg_gen_andi_i64(addr, o->in2, -1ULL << (mop & MO_SIZE));
120
tcg_gen_atomic_cmpxchg_i64(old, addr, o->in1, o->out2,
121
get_mem_index(s), mop | MO_ALIGN);
122
- tcg_temp_free_i64(addr);
123
124
/* Are the memory and expected values (un)equal? */
125
cc = tcg_temp_new_i64();
126
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_csp(DisasContext *s, DisasOps *o)
127
} else {
128
tcg_gen_mov_i64(o->out, old);
129
}
130
- tcg_temp_free_i64(old);
131
132
/* If the comparison was equal, and the LSB of R2 was set,
133
then we need to flush the TLB (for all cpus). */
134
tcg_gen_xori_i64(cc, cc, 1);
135
tcg_gen_and_i64(cc, cc, o->in2);
136
tcg_gen_brcondi_i64(TCG_COND_EQ, cc, 0, lab);
137
- tcg_temp_free_i64(cc);
138
139
gen_helper_purge(cpu_env);
140
gen_set_label(lab);
141
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_cvd(DisasContext *s, DisasOps *o)
142
TCGv_i32 t2 = tcg_temp_new_i32();
143
tcg_gen_extrl_i64_i32(t2, o->in1);
144
gen_helper_cvd(t1, t2);
145
- tcg_temp_free_i32(t2);
146
tcg_gen_qemu_st64(t1, o->in2, get_mem_index(s));
147
- tcg_temp_free_i64(t1);
148
return DISAS_NEXT;
149
}
150
151
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_divs64(DisasContext *s, DisasOps *o)
152
153
gen_helper_divs64(t, cpu_env, o->in1, o->in2);
154
tcg_gen_extr_i128_i64(o->out2, o->out, t);
155
- tcg_temp_free_i128(t);
156
return DISAS_NEXT;
157
}
158
159
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_divu64(DisasContext *s, DisasOps *o)
160
161
gen_helper_divu64(t, cpu_env, o->out, o->out2, o->in2);
162
tcg_gen_extr_i128_i64(o->out2, o->out, t);
163
- tcg_temp_free_i128(t);
164
return DISAS_NEXT;
165
}
166
167
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_epsw(DisasContext *s, DisasOps *o)
168
if (r2 != 0) {
169
store_reg32_i64(r2, psw_mask);
170
}
171
-
172
- tcg_temp_free_i64(t);
173
return DISAS_NEXT;
174
}
175
176
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_icm(DisasContext *s, DisasOps *o)
177
178
tcg_gen_movi_i64(tmp, ccm);
179
gen_op_update2_cc_i64(s, CC_OP_ICM, tmp, o->out);
180
- tcg_temp_free_i64(tmp);
181
return DISAS_NEXT;
182
}
183
184
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_ipm(DisasContext *s, DisasOps *o)
185
tcg_gen_extu_i32_i64(t2, cc_op);
186
tcg_gen_deposit_i64(t1, t1, t2, 4, 60);
187
tcg_gen_deposit_i64(o->out, o->out, t1, 24, 8);
188
- tcg_temp_free_i64(t1);
189
- tcg_temp_free_i64(t2);
190
return DISAS_NEXT;
191
}
192
193
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_loc(DisasContext *s, DisasOps *o)
194
195
t = tcg_temp_new_i64();
196
tcg_gen_extu_i32_i64(t, t32);
197
- tcg_temp_free_i32(t32);
198
199
z = tcg_constant_i64(0);
200
tcg_gen_movcond_i64(TCG_COND_NE, o->out, t, z, o->in2, o->in1);
201
- tcg_temp_free_i64(t);
202
}
203
204
return DISAS_NEXT;
205
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_lpsw(DisasContext *s, DisasOps *o)
206
/* Convert the 32-bit PSW_MASK into the 64-bit PSW_MASK. */
207
tcg_gen_shli_i64(t1, t1, 32);
208
gen_helper_load_psw(cpu_env, t1, t2);
209
- tcg_temp_free_i64(t1);
210
- tcg_temp_free_i64(t2);
211
return DISAS_NORETURN;
212
}
213
214
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_lpswe(DisasContext *s, DisasOps *o)
215
tcg_gen_addi_i64(o->in2, o->in2, 8);
216
tcg_gen_qemu_ld64(t2, o->in2, get_mem_index(s));
217
gen_helper_load_psw(cpu_env, t1, t2);
218
- tcg_temp_free_i64(t1);
219
- tcg_temp_free_i64(t2);
220
return DISAS_NORETURN;
221
}
222
#endif
223
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_lm32(DisasContext *s, DisasOps *o)
224
if (unlikely(r1 == r3)) {
225
tcg_gen_qemu_ld32u(t1, o->in2, get_mem_index(s));
226
store_reg32_i64(r1, t1);
227
- tcg_temp_free(t1);
228
return DISAS_NEXT;
229
}
230
231
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_lm32(DisasContext *s, DisasOps *o)
232
233
/* Only two registers to read. */
234
if (((r1 + 1) & 15) == r3) {
235
- tcg_temp_free(t2);
236
- tcg_temp_free(t1);
237
return DISAS_NEXT;
238
}
239
240
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_lm32(DisasContext *s, DisasOps *o)
241
tcg_gen_qemu_ld32u(t1, o->in2, get_mem_index(s));
242
store_reg32_i64(r1, t1);
243
}
244
- tcg_temp_free(t2);
245
- tcg_temp_free(t1);
246
-
247
return DISAS_NEXT;
248
}
249
250
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_lmh(DisasContext *s, DisasOps *o)
251
if (unlikely(r1 == r3)) {
252
tcg_gen_qemu_ld32u(t1, o->in2, get_mem_index(s));
253
store_reg32h_i64(r1, t1);
254
- tcg_temp_free(t1);
255
return DISAS_NEXT;
256
}
257
258
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_lmh(DisasContext *s, DisasOps *o)
259
260
/* Only two registers to read. */
261
if (((r1 + 1) & 15) == r3) {
262
- tcg_temp_free(t2);
263
- tcg_temp_free(t1);
264
return DISAS_NEXT;
265
}
266
267
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_lmh(DisasContext *s, DisasOps *o)
268
tcg_gen_qemu_ld32u(t1, o->in2, get_mem_index(s));
269
store_reg32h_i64(r1, t1);
270
}
271
- tcg_temp_free(t2);
272
- tcg_temp_free(t1);
273
-
274
return DISAS_NEXT;
275
}
276
277
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_lm64(DisasContext *s, DisasOps *o)
278
tcg_gen_addi_i64(t2, o->in2, 8 * ((r3 - r1) & 15));
279
tcg_gen_qemu_ld64(regs[r3], t2, get_mem_index(s));
280
tcg_gen_mov_i64(regs[r1], t1);
281
- tcg_temp_free(t2);
282
283
/* Only two registers to read. */
284
if (((r1 + 1) & 15) == r3) {
285
- tcg_temp_free(t1);
286
return DISAS_NEXT;
287
}
288
289
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_lm64(DisasContext *s, DisasOps *o)
290
tcg_gen_add_i64(o->in2, o->in2, t1);
291
tcg_gen_qemu_ld64(regs[r1], o->in2, get_mem_index(s));
292
}
293
- tcg_temp_free(t1);
294
-
295
return DISAS_NEXT;
296
}
297
298
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_lpd(DisasContext *s, DisasOps *o)
299
a2 = get_address(s, 0, get_field(s, b2), get_field(s, d2));
300
tcg_gen_qemu_ld_i64(o->out, a1, get_mem_index(s), mop | MO_ALIGN);
301
tcg_gen_qemu_ld_i64(o->out2, a2, get_mem_index(s), mop | MO_ALIGN);
302
- tcg_temp_free_i64(a1);
303
- tcg_temp_free_i64(a2);
304
305
/* ... and indicate that we performed them while interlocked. */
306
gen_op_movi_cc(s, 0);
307
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_mov2e(DisasContext *s, DisasOps *o)
308
}
309
310
tcg_gen_st32_i64(ar1, cpu_env, offsetof(CPUS390XState, aregs[1]));
311
- tcg_temp_free_i64(ar1);
312
-
313
return DISAS_NEXT;
314
}
315
316
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_maeb(DisasContext *s, DisasOps *o)
317
{
318
TCGv_i64 r3 = load_freg32_i64(get_field(s, r3));
319
gen_helper_maeb(o->out, cpu_env, o->in1, o->in2, r3);
320
- tcg_temp_free_i64(r3);
321
return DISAS_NEXT;
322
}
323
324
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_madb(DisasContext *s, DisasOps *o)
325
{
326
TCGv_i64 r3 = load_freg(get_field(s, r3));
327
gen_helper_madb(o->out, cpu_env, o->in1, o->in2, r3);
328
- tcg_temp_free_i64(r3);
329
return DISAS_NEXT;
330
}
331
332
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_mseb(DisasContext *s, DisasOps *o)
333
{
334
TCGv_i64 r3 = load_freg32_i64(get_field(s, r3));
335
gen_helper_mseb(o->out, cpu_env, o->in1, o->in2, r3);
336
- tcg_temp_free_i64(r3);
337
return DISAS_NEXT;
338
}
339
340
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_msdb(DisasContext *s, DisasOps *o)
341
{
342
TCGv_i64 r3 = load_freg(get_field(s, r3));
343
gen_helper_msdb(o->out, cpu_env, o->in1, o->in2, r3);
344
- tcg_temp_free_i64(r3);
345
return DISAS_NEXT;
346
}
347
348
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_nabs(DisasContext *s, DisasOps *o)
349
350
tcg_gen_neg_i64(n, o->in2);
351
tcg_gen_movcond_i64(TCG_COND_GE, o->out, o->in2, z, n, o->in2);
352
- tcg_temp_free_i64(n);
353
return DISAS_NEXT;
354
}
355
356
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_rll32(DisasContext *s, DisasOps *o)
357
tcg_gen_extrl_i64_i32(t2, o->in2);
358
tcg_gen_rotl_i32(to, t1, t2);
359
tcg_gen_extu_i32_i64(o->out, to);
360
- tcg_temp_free_i32(t1);
361
- tcg_temp_free_i32(t2);
362
- tcg_temp_free_i32(to);
363
return DISAS_NEXT;
364
}
365
366
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_soc(DisasContext *s, DisasOps *o)
367
h = tcg_temp_new_i64();
368
tcg_gen_shri_i64(h, regs[r1], 32);
369
tcg_gen_qemu_st32(h, a, get_mem_index(s));
370
- tcg_temp_free_i64(h);
371
break;
372
default:
373
g_assert_not_reached();
374
}
375
- tcg_temp_free_i64(a);
376
377
gen_set_label(lab);
378
return DISAS_NEXT;
379
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_sla(DisasContext *s, DisasOps *o)
380
t = o->in1;
381
}
382
gen_op_update2_cc_i64(s, CC_OP_SLA, t, o->in2);
383
- if (s->insn->data == 31) {
384
- tcg_temp_free_i64(t);
385
- }
386
tcg_gen_shl_i64(o->out, o->in1, o->in2);
387
/* The arithmetic left shift is curious in that it does not affect
388
the sign bit. Copy that over from the source unchanged. */
389
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_srnmt(DisasContext *s, DisasOps *o)
390
tcg_gen_ld32u_i64(tmp, cpu_env, offsetof(CPUS390XState, fpc));
391
tcg_gen_deposit_i64(tmp, tmp, o->addr1, 4, 3);
392
tcg_gen_st32_i64(tmp, cpu_env, offsetof(CPUS390XState, fpc));
393
-
394
- tcg_temp_free_i64(tmp);
395
return DISAS_NEXT;
396
}
397
398
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_ectg(DisasContext *s, DisasOps *o)
399
400
/* store second operand in GR1 */
401
tcg_gen_mov_i64(regs[1], o->in2);
402
-
403
- tcg_temp_free_i64(tmp);
404
return DISAS_NEXT;
405
}
406
407
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_stcke(DisasContext *s, DisasOps *o)
408
tcg_gen_qemu_st64(c1, o->in2, get_mem_index(s));
409
tcg_gen_addi_i64(o->in2, o->in2, 8);
410
tcg_gen_qemu_st64(c2, o->in2, get_mem_index(s));
411
- tcg_temp_free_i64(c1);
412
- tcg_temp_free_i64(c2);
413
- tcg_temp_free_i64(todpr);
414
/* ??? We don't implement clock states. */
415
gen_op_movi_cc(s, 0);
416
return DISAS_NEXT;
417
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_stnosm(DisasContext *s, DisasOps *o)
418
t = tcg_temp_new_i64();
419
tcg_gen_shri_i64(t, psw_mask, 56);
420
tcg_gen_qemu_st8(t, o->addr1, get_mem_index(s));
421
- tcg_temp_free_i64(t);
422
423
if (s->fields.op == 0xac) {
424
tcg_gen_andi_i64(psw_mask, psw_mask,
425
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_stcm(DisasContext *s, DisasOps *o)
426
}
427
break;
428
}
429
- tcg_temp_free_i64(tmp);
430
return DISAS_NEXT;
431
}
432
433
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_stmh(DisasContext *s, DisasOps *o)
434
tcg_gen_add_i64(o->in2, o->in2, t4);
435
r1 = (r1 + 1) & 15;
436
}
437
-
438
- tcg_temp_free_i64(t);
439
return DISAS_NEXT;
440
}
441
442
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_tre(DisasContext *s, DisasOps *o)
443
444
gen_helper_tre(pair, cpu_env, o->out, o->out2, o->in2);
445
tcg_gen_extr_i128_i64(o->out2, o->out, pair);
446
- tcg_temp_free_i128(pair);
447
set_cc_static(s);
448
return DISAS_NEXT;
449
}
450
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_trXX(DisasContext *s, DisasOps *o)
451
}
452
gen_helper_trXX(cc_op, cpu_env, r1, r2, tst, sizes);
453
454
- tcg_temp_free_i32(tst);
455
set_cc_static(s);
456
return DISAS_NEXT;
457
}
458
@@ -XXX,XX +XXX,XX @@ static void wout_r1_D32(DisasContext *s, DisasOps *o)
459
store_reg32_i64(r1 + 1, o->out);
460
tcg_gen_shri_i64(t, o->out, 32);
461
store_reg32_i64(r1, t);
462
- tcg_temp_free_i64(t);
463
}
464
#define SPEC_wout_r1_D32 SPEC_r1_even
465
466
@@ -XXX,XX +XXX,XX @@ static DisasJumpType translate_one(CPUS390XState *env, DisasContext *s)
467
}
468
}
469
470
- /* Free any temporaries created by the helpers. */
471
- if (o.out && !o.g_out) {
472
- tcg_temp_free_i64(o.out);
473
- }
474
- if (o.out2 && !o.g_out2) {
475
- tcg_temp_free_i64(o.out2);
476
- }
477
- if (o.in1 && !o.g_in1) {
478
- tcg_temp_free_i64(o.in1);
479
- }
480
- if (o.in2 && !o.g_in2) {
481
- tcg_temp_free_i64(o.in2);
482
- }
483
- if (o.addr1) {
484
- tcg_temp_free_i64(o.addr1);
485
- }
486
- if (o.out_128) {
487
- tcg_temp_free_i128(o.out_128);
488
- }
489
- if (o.in1_128) {
490
- tcg_temp_free_i128(o.in1_128);
491
- }
492
- if (o.in2_128) {
493
- tcg_temp_free_i128(o.in2_128);
494
- }
495
/* io should be the last instruction in tb when icount is enabled */
496
if (unlikely(icount && ret == DISAS_NEXT)) {
497
ret = DISAS_TOO_MANY;
498
--
499
2.34.1
500
501
diff view generated by jsdifflib
New patch
1
These were trying to determine if o->in2 was available for
2
use as a temporary. It's better to just allocate a new one.
1
3
4
Acked-by: David Hildenbrand <david@redhat.com>
5
Reviewed-by: Ilya Leoshkevich <iii@linux.ibm.com>
6
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
7
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
8
---
9
target/s390x/tcg/translate.c | 20 ++++++++++----------
10
1 file changed, 10 insertions(+), 10 deletions(-)
11
12
diff --git a/target/s390x/tcg/translate.c b/target/s390x/tcg/translate.c
13
index XXXXXXX..XXXXXXX 100644
14
--- a/target/s390x/tcg/translate.c
15
+++ b/target/s390x/tcg/translate.c
16
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_andi(DisasContext *s, DisasOps *o)
17
int shift = s->insn->data & 0xff;
18
int size = s->insn->data >> 8;
19
uint64_t mask = ((1ull << size) - 1) << shift;
20
+ TCGv_i64 t = tcg_temp_new_i64();
21
22
- assert(!o->g_in2);
23
- tcg_gen_shli_i64(o->in2, o->in2, shift);
24
- tcg_gen_ori_i64(o->in2, o->in2, ~mask);
25
- tcg_gen_and_i64(o->out, o->in1, o->in2);
26
+ tcg_gen_shli_i64(t, o->in2, shift);
27
+ tcg_gen_ori_i64(t, t, ~mask);
28
+ tcg_gen_and_i64(o->out, o->in1, t);
29
30
/* Produce the CC from only the bits manipulated. */
31
tcg_gen_andi_i64(cc_dst, o->out, mask);
32
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_ori(DisasContext *s, DisasOps *o)
33
int shift = s->insn->data & 0xff;
34
int size = s->insn->data >> 8;
35
uint64_t mask = ((1ull << size) - 1) << shift;
36
+ TCGv_i64 t = tcg_temp_new_i64();
37
38
- assert(!o->g_in2);
39
- tcg_gen_shli_i64(o->in2, o->in2, shift);
40
- tcg_gen_or_i64(o->out, o->in1, o->in2);
41
+ tcg_gen_shli_i64(t, o->in2, shift);
42
+ tcg_gen_or_i64(o->out, o->in1, t);
43
44
/* Produce the CC from only the bits manipulated. */
45
tcg_gen_andi_i64(cc_dst, o->out, mask);
46
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_xori(DisasContext *s, DisasOps *o)
47
int shift = s->insn->data & 0xff;
48
int size = s->insn->data >> 8;
49
uint64_t mask = ((1ull << size) - 1) << shift;
50
+ TCGv_i64 t = tcg_temp_new_i64();
51
52
- assert(!o->g_in2);
53
- tcg_gen_shli_i64(o->in2, o->in2, shift);
54
- tcg_gen_xor_i64(o->out, o->in1, o->in2);
55
+ tcg_gen_shli_i64(t, o->in2, shift);
56
+ tcg_gen_xor_i64(o->out, o->in1, t);
57
58
/* Produce the CC from only the bits manipulated. */
59
tcg_gen_andi_i64(cc_dst, o->out, mask);
60
--
61
2.34.1
62
63
diff view generated by jsdifflib
New patch
1
These fields are no longer read, so remove them and the writes.
1
2
3
Acked-by: David Hildenbrand <david@redhat.com>
4
Reviewed-by: Ilya Leoshkevich <iii@linux.ibm.com>
5
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
6
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7
---
8
target/s390x/tcg/translate.c | 17 -----------------
9
1 file changed, 17 deletions(-)
10
11
diff --git a/target/s390x/tcg/translate.c b/target/s390x/tcg/translate.c
12
index XXXXXXX..XXXXXXX 100644
13
--- a/target/s390x/tcg/translate.c
14
+++ b/target/s390x/tcg/translate.c
15
@@ -XXX,XX +XXX,XX @@ static const DisasFormatInfo format_info[] = {
16
them, and store them back. See the "in1", "in2", "prep", "wout" sets
17
of routines below for more details. */
18
typedef struct {
19
- bool g_out, g_out2, g_in1, g_in2;
20
TCGv_i64 out, out2, in1, in2;
21
TCGv_i64 addr1;
22
TCGv_i128 out_128, in1_128, in2_128;
23
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_mc(DisasContext *s, DisasOps *o)
24
static DisasJumpType op_mov2(DisasContext *s, DisasOps *o)
25
{
26
o->out = o->in2;
27
- o->g_out = o->g_in2;
28
o->in2 = NULL;
29
- o->g_in2 = false;
30
return DISAS_NEXT;
31
}
32
33
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_mov2e(DisasContext *s, DisasOps *o)
34
TCGv ar1 = tcg_temp_new_i64();
35
36
o->out = o->in2;
37
- o->g_out = o->g_in2;
38
o->in2 = NULL;
39
- o->g_in2 = false;
40
41
switch (s->base.tb->flags & FLAG_MASK_ASC) {
42
case PSW_ASC_PRIMARY >> FLAG_MASK_PSW_SHIFT:
43
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_movx(DisasContext *s, DisasOps *o)
44
{
45
o->out = o->in1;
46
o->out2 = o->in2;
47
- o->g_out = o->g_in1;
48
- o->g_out2 = o->g_in2;
49
o->in1 = NULL;
50
o->in2 = NULL;
51
- o->g_in1 = o->g_in2 = false;
52
return DISAS_NEXT;
53
}
54
55
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_rosbg(DisasContext *s, DisasOps *o)
56
/* If this is a test-only form, arrange to discard the result. */
57
if (i3 & 0x80) {
58
o->out = tcg_temp_new_i64();
59
- o->g_out = false;
60
}
61
62
i3 &= 63;
63
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_zero2(DisasContext *s, DisasOps *o)
64
{
65
o->out = tcg_const_i64(0);
66
o->out2 = o->out;
67
- o->g_out2 = true;
68
return DISAS_NEXT;
69
}
70
71
@@ -XXX,XX +XXX,XX @@ static void prep_new_x(DisasContext *s, DisasOps *o)
72
static void prep_r1(DisasContext *s, DisasOps *o)
73
{
74
o->out = regs[get_field(s, r1)];
75
- o->g_out = true;
76
}
77
#define SPEC_prep_r1 0
78
79
@@ -XXX,XX +XXX,XX @@ static void prep_r1_P(DisasContext *s, DisasOps *o)
80
int r1 = get_field(s, r1);
81
o->out = regs[r1];
82
o->out2 = regs[r1 + 1];
83
- o->g_out = o->g_out2 = true;
84
}
85
#define SPEC_prep_r1_P SPEC_r1_even
86
87
@@ -XXX,XX +XXX,XX @@ static void in1_r1(DisasContext *s, DisasOps *o)
88
static void in1_r1_o(DisasContext *s, DisasOps *o)
89
{
90
o->in1 = regs[get_field(s, r1)];
91
- o->g_in1 = true;
92
}
93
#define SPEC_in1_r1_o 0
94
95
@@ -XXX,XX +XXX,XX @@ static void in1_r1p1(DisasContext *s, DisasOps *o)
96
static void in1_r1p1_o(DisasContext *s, DisasOps *o)
97
{
98
o->in1 = regs[get_field(s, r1) + 1];
99
- o->g_in1 = true;
100
}
101
#define SPEC_in1_r1p1_o SPEC_r1_even
102
103
@@ -XXX,XX +XXX,XX @@ static void in1_r3(DisasContext *s, DisasOps *o)
104
static void in1_r3_o(DisasContext *s, DisasOps *o)
105
{
106
o->in1 = regs[get_field(s, r3)];
107
- o->g_in1 = true;
108
}
109
#define SPEC_in1_r3_o 0
110
111
@@ -XXX,XX +XXX,XX @@ static void in1_m1_64(DisasContext *s, DisasOps *o)
112
static void in2_r1_o(DisasContext *s, DisasOps *o)
113
{
114
o->in2 = regs[get_field(s, r1)];
115
- o->g_in2 = true;
116
}
117
#define SPEC_in2_r1_o 0
118
119
@@ -XXX,XX +XXX,XX @@ static void in2_r2(DisasContext *s, DisasOps *o)
120
static void in2_r2_o(DisasContext *s, DisasOps *o)
121
{
122
o->in2 = regs[get_field(s, r2)];
123
- o->g_in2 = true;
124
}
125
#define SPEC_in2_r2_o 0
126
127
--
128
2.34.1
129
130
diff view generated by jsdifflib
1
The tcg/tcg.h header is a big bucket, containing stuff related to
1
Move the tcg_temp_free_* and tcg_temp_ebb_new_* declarations
2
the translators and the JIT backend. The places that initialize
2
and inlines to the new header. These are private to the
3
tcg or create new threads do not need all of that, so split out
3
implementation, and will prevent tcg_temp_free_* from creeping
4
these three functions to a new header.
4
back into the guest front ends.
5
5
6
Suggested-by: Peter Maydell <peter.maydell@linaro.org>
6
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
7
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
7
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
8
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
8
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
9
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
9
---
10
---
10
include/tcg/startup.h | 58 +++++++++++++++++++++++++++++++++
11
include/tcg/tcg-temp-internal.h | 83 +++++++++++++++++++++++++++++++++
11
include/tcg/tcg.h | 3 --
12
include/tcg/tcg.h | 54 ---------------------
12
accel/tcg/tcg-accel-ops-mttcg.c | 2 +-
13
accel/tcg/plugin-gen.c | 1 +
13
accel/tcg/tcg-accel-ops-rr.c | 2 +-
14
tcg/tcg-op-gvec.c | 1 +
14
accel/tcg/tcg-all.c | 2 +-
15
tcg/tcg-op-vec.c | 1 +
15
bsd-user/main.c | 2 +-
16
tcg/tcg-op.c | 1 +
16
linux-user/main.c | 2 +-
17
linux-user/syscall.c | 2 +-
18
tcg/tcg.c | 1 +
17
tcg/tcg.c | 1 +
19
9 files changed, 65 insertions(+), 9 deletions(-)
18
7 files changed, 88 insertions(+), 54 deletions(-)
20
create mode 100644 include/tcg/startup.h
19
create mode 100644 include/tcg/tcg-temp-internal.h
21
20
22
diff --git a/include/tcg/startup.h b/include/tcg/startup.h
21
diff --git a/include/tcg/tcg-temp-internal.h b/include/tcg/tcg-temp-internal.h
23
new file mode 100644
22
new file mode 100644
24
index XXXXXXX..XXXXXXX
23
index XXXXXXX..XXXXXXX
25
--- /dev/null
24
--- /dev/null
26
+++ b/include/tcg/startup.h
25
+++ b/include/tcg/tcg-temp-internal.h
27
@@ -XXX,XX +XXX,XX @@
26
@@ -XXX,XX +XXX,XX @@
28
+/*
27
+/*
29
+ * Tiny Code Generator for QEMU: definitions used by runtime startup
28
+ * TCG internals related to TCG temp allocation
30
+ *
29
+ *
31
+ * Copyright (c) 2008 Fabrice Bellard
30
+ * Copyright (c) 2008 Fabrice Bellard
32
+ *
31
+ *
33
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
32
+ * 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
33
+ * of this software and associated documentation files (the "Software"), to deal
...
...
47
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
46
+ * 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
47
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
49
+ * THE SOFTWARE.
48
+ * THE SOFTWARE.
50
+ */
49
+ */
51
+
50
+
52
+#ifndef TCG_STARTUP_H
51
+#ifndef TCG_TEMP_INTERNAL_H
53
+#define TCG_STARTUP_H
52
+#define TCG_TEMP_INTERNAL_H
54
+
53
+
55
+/**
54
+/*
56
+ * tcg_init: Initialize the TCG runtime
55
+ * Allocation and freeing of EBB temps is reserved to TCG internals
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
+ */
56
+ */
64
+void tcg_init(size_t tb_size, int splitwx, unsigned max_cpus);
57
+
65
+
58
+void tcg_temp_free_internal(TCGTemp *);
66
+/**
59
+
67
+ * tcg_register_thread: Register this thread with the TCG runtime
60
+static inline void tcg_temp_free_i32(TCGv_i32 arg)
68
+ *
61
+{
69
+ * All TCG threads except the parent (i.e. the one that called the TCG
62
+ tcg_temp_free_internal(tcgv_i32_temp(arg));
70
+ * accelerator's init_machine() method) must register with this
63
+}
71
+ * function before initiating translation.
64
+
72
+ */
65
+static inline void tcg_temp_free_i64(TCGv_i64 arg)
73
+void tcg_register_thread(void);
66
+{
74
+
67
+ tcg_temp_free_internal(tcgv_i64_temp(arg));
75
+/**
68
+}
76
+ * tcg_prologue_init(): Generate the code for the TCG prologue
69
+
77
+ *
70
+static inline void tcg_temp_free_i128(TCGv_i128 arg)
78
+ * In softmmu this is done automatically as part of the TCG
71
+{
79
+ * accelerator's init_machine() method, but for user-mode, the
72
+ tcg_temp_free_internal(tcgv_i128_temp(arg));
80
+ * user-mode code must call this function after it has loaded
73
+}
81
+ * the guest binary and the value of guest_base is known.
74
+
82
+ */
75
+static inline void tcg_temp_free_ptr(TCGv_ptr arg)
83
+void tcg_prologue_init(void);
76
+{
84
+
77
+ tcg_temp_free_internal(tcgv_ptr_temp(arg));
85
+#endif
78
+}
79
+
80
+static inline void tcg_temp_free_vec(TCGv_vec arg)
81
+{
82
+ tcg_temp_free_internal(tcgv_vec_temp(arg));
83
+}
84
+
85
+static inline TCGv_i32 tcg_temp_ebb_new_i32(void)
86
+{
87
+ TCGTemp *t = tcg_temp_new_internal(TCG_TYPE_I32, TEMP_EBB);
88
+ return temp_tcgv_i32(t);
89
+}
90
+
91
+static inline TCGv_i64 tcg_temp_ebb_new_i64(void)
92
+{
93
+ TCGTemp *t = tcg_temp_new_internal(TCG_TYPE_I64, TEMP_EBB);
94
+ return temp_tcgv_i64(t);
95
+}
96
+
97
+static inline TCGv_i128 tcg_temp_ebb_new_i128(void)
98
+{
99
+ TCGTemp *t = tcg_temp_new_internal(TCG_TYPE_I128, TEMP_EBB);
100
+ return temp_tcgv_i128(t);
101
+}
102
+
103
+static inline TCGv_ptr tcg_temp_ebb_new_ptr(void)
104
+{
105
+ TCGTemp *t = tcg_temp_new_internal(TCG_TYPE_PTR, TEMP_EBB);
106
+ return temp_tcgv_ptr(t);
107
+}
108
+
109
+#endif /* TCG_TEMP_FREE_H */
86
diff --git a/include/tcg/tcg.h b/include/tcg/tcg.h
110
diff --git a/include/tcg/tcg.h b/include/tcg/tcg.h
87
index XXXXXXX..XXXXXXX 100644
111
index XXXXXXX..XXXXXXX 100644
88
--- a/include/tcg/tcg.h
112
--- a/include/tcg/tcg.h
89
+++ b/include/tcg/tcg.h
113
+++ b/include/tcg/tcg.h
90
@@ -XXX,XX +XXX,XX @@ static inline void *tcg_malloc(int size)
114
@@ -XXX,XX +XXX,XX @@ void tcg_set_frame(TCGContext *s, TCGReg reg, intptr_t start, intptr_t size);
91
}
115
TCGTemp *tcg_global_mem_new_internal(TCGType, TCGv_ptr,
92
}
116
intptr_t, const char *);
93
117
TCGTemp *tcg_temp_new_internal(TCGType, TCGTempKind);
94
-void tcg_init(size_t tb_size, int splitwx, unsigned max_cpus);
118
-void tcg_temp_free_internal(TCGTemp *);
95
-void tcg_register_thread(void);
119
TCGv_vec tcg_temp_new_vec(TCGType type);
96
-void tcg_prologue_init(void);
120
TCGv_vec tcg_temp_new_vec_matching(TCGv_vec match);
97
void tcg_func_start(TCGContext *s);
121
98
122
-static inline void tcg_temp_free_i32(TCGv_i32 arg)
99
int tcg_gen_code(TCGContext *s, TranslationBlock *tb, uint64_t pc_start);
123
-{
100
diff --git a/accel/tcg/tcg-accel-ops-mttcg.c b/accel/tcg/tcg-accel-ops-mttcg.c
124
- tcg_temp_free_internal(tcgv_i32_temp(arg));
101
index XXXXXXX..XXXXXXX 100644
125
-}
102
--- a/accel/tcg/tcg-accel-ops-mttcg.c
126
-
103
+++ b/accel/tcg/tcg-accel-ops-mttcg.c
127
-static inline void tcg_temp_free_i64(TCGv_i64 arg)
104
@@ -XXX,XX +XXX,XX @@
128
-{
105
#include "qemu/guest-random.h"
129
- tcg_temp_free_internal(tcgv_i64_temp(arg));
130
-}
131
-
132
-static inline void tcg_temp_free_i128(TCGv_i128 arg)
133
-{
134
- tcg_temp_free_internal(tcgv_i128_temp(arg));
135
-}
136
-
137
-static inline void tcg_temp_free_ptr(TCGv_ptr arg)
138
-{
139
- tcg_temp_free_internal(tcgv_ptr_temp(arg));
140
-}
141
-
142
-static inline void tcg_temp_free_vec(TCGv_vec arg)
143
-{
144
- tcg_temp_free_internal(tcgv_vec_temp(arg));
145
-}
146
-
147
static inline TCGv_i32 tcg_global_mem_new_i32(TCGv_ptr reg, intptr_t offset,
148
const char *name)
149
{
150
@@ -XXX,XX +XXX,XX @@ static inline TCGv_i32 tcg_global_mem_new_i32(TCGv_ptr reg, intptr_t offset,
151
return temp_tcgv_i32(t);
152
}
153
154
-/* Used only by tcg infrastructure: tcg-op.c or plugin-gen.c */
155
-static inline TCGv_i32 tcg_temp_ebb_new_i32(void)
156
-{
157
- TCGTemp *t = tcg_temp_new_internal(TCG_TYPE_I32, TEMP_EBB);
158
- return temp_tcgv_i32(t);
159
-}
160
-
161
static inline TCGv_i32 tcg_temp_new_i32(void)
162
{
163
TCGTemp *t = tcg_temp_new_internal(TCG_TYPE_I32, TEMP_TB);
164
@@ -XXX,XX +XXX,XX @@ static inline TCGv_i64 tcg_global_mem_new_i64(TCGv_ptr reg, intptr_t offset,
165
return temp_tcgv_i64(t);
166
}
167
168
-/* Used only by tcg infrastructure: tcg-op.c or plugin-gen.c */
169
-static inline TCGv_i64 tcg_temp_ebb_new_i64(void)
170
-{
171
- TCGTemp *t = tcg_temp_new_internal(TCG_TYPE_I64, TEMP_EBB);
172
- return temp_tcgv_i64(t);
173
-}
174
-
175
static inline TCGv_i64 tcg_temp_new_i64(void)
176
{
177
TCGTemp *t = tcg_temp_new_internal(TCG_TYPE_I64, TEMP_TB);
178
return temp_tcgv_i64(t);
179
}
180
181
-/* Used only by tcg infrastructure: tcg-op.c or plugin-gen.c */
182
-static inline TCGv_i128 tcg_temp_ebb_new_i128(void)
183
-{
184
- TCGTemp *t = tcg_temp_new_internal(TCG_TYPE_I128, TEMP_EBB);
185
- return temp_tcgv_i128(t);
186
-}
187
-
188
static inline TCGv_i128 tcg_temp_new_i128(void)
189
{
190
TCGTemp *t = tcg_temp_new_internal(TCG_TYPE_I128, TEMP_TB);
191
@@ -XXX,XX +XXX,XX @@ static inline TCGv_ptr tcg_global_mem_new_ptr(TCGv_ptr reg, intptr_t offset,
192
return temp_tcgv_ptr(t);
193
}
194
195
-/* Used only by tcg infrastructure: tcg-op.c or plugin-gen.c */
196
-static inline TCGv_ptr tcg_temp_ebb_new_ptr(void)
197
-{
198
- TCGTemp *t = tcg_temp_new_internal(TCG_TYPE_PTR, TEMP_EBB);
199
- return temp_tcgv_ptr(t);
200
-}
201
-
202
static inline TCGv_ptr tcg_temp_new_ptr(void)
203
{
204
TCGTemp *t = tcg_temp_new_internal(TCG_TYPE_PTR, TEMP_TB);
205
diff --git a/accel/tcg/plugin-gen.c b/accel/tcg/plugin-gen.c
206
index XXXXXXX..XXXXXXX 100644
207
--- a/accel/tcg/plugin-gen.c
208
+++ b/accel/tcg/plugin-gen.c
209
@@ -XXX,XX +XXX,XX @@
210
*/
211
#include "qemu/osdep.h"
212
#include "tcg/tcg.h"
213
+#include "tcg/tcg-temp-internal.h"
214
#include "tcg/tcg-op.h"
106
#include "exec/exec-all.h"
215
#include "exec/exec-all.h"
107
#include "hw/boards.h"
216
#include "exec/plugin-gen.h"
108
-#include "tcg/tcg.h"
217
diff --git a/tcg/tcg-op-gvec.c b/tcg/tcg-op-gvec.c
109
+#include "tcg/startup.h"
218
index XXXXXXX..XXXXXXX 100644
110
#include "tcg-accel-ops.h"
219
--- a/tcg/tcg-op-gvec.c
111
#include "tcg-accel-ops-mttcg.h"
220
+++ b/tcg/tcg-op-gvec.c
112
221
@@ -XXX,XX +XXX,XX @@
113
diff --git a/accel/tcg/tcg-accel-ops-rr.c b/accel/tcg/tcg-accel-ops-rr.c
222
114
index XXXXXXX..XXXXXXX 100644
223
#include "qemu/osdep.h"
115
--- a/accel/tcg/tcg-accel-ops-rr.c
224
#include "tcg/tcg.h"
116
+++ b/accel/tcg/tcg-accel-ops-rr.c
225
+#include "tcg/tcg-temp-internal.h"
117
@@ -XXX,XX +XXX,XX @@
226
#include "tcg/tcg-op.h"
118
#include "qemu/notify.h"
227
#include "tcg/tcg-op-gvec.h"
119
#include "qemu/guest-random.h"
228
#include "tcg/tcg-gvec-desc.h"
229
diff --git a/tcg/tcg-op-vec.c b/tcg/tcg-op-vec.c
230
index XXXXXXX..XXXXXXX 100644
231
--- a/tcg/tcg-op-vec.c
232
+++ b/tcg/tcg-op-vec.c
233
@@ -XXX,XX +XXX,XX @@
234
235
#include "qemu/osdep.h"
236
#include "tcg/tcg.h"
237
+#include "tcg/tcg-temp-internal.h"
238
#include "tcg/tcg-op.h"
239
#include "tcg/tcg-mo.h"
240
#include "tcg-internal.h"
241
diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c
242
index XXXXXXX..XXXXXXX 100644
243
--- a/tcg/tcg-op.c
244
+++ b/tcg/tcg-op.c
245
@@ -XXX,XX +XXX,XX @@
246
#include "qemu/osdep.h"
120
#include "exec/exec-all.h"
247
#include "exec/exec-all.h"
121
-#include "tcg/tcg.h"
248
#include "tcg/tcg.h"
122
+#include "tcg/startup.h"
249
+#include "tcg/tcg-temp-internal.h"
123
#include "tcg-accel-ops.h"
250
#include "tcg/tcg-op.h"
124
#include "tcg-accel-ops-rr.h"
251
#include "tcg/tcg-mo.h"
125
#include "tcg-accel-ops-icount.h"
252
#include "exec/plugin-gen.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
253
diff --git a/tcg/tcg.c b/tcg/tcg.c
186
index XXXXXXX..XXXXXXX 100644
254
index XXXXXXX..XXXXXXX 100644
187
--- a/tcg/tcg.c
255
--- a/tcg/tcg.c
188
+++ b/tcg/tcg.c
256
+++ b/tcg/tcg.c
189
@@ -XXX,XX +XXX,XX @@
257
@@ -XXX,XX +XXX,XX @@
190
#include "qemu/timer.h"
258
#include "elf.h"
191
#include "exec/translation-block.h"
259
#include "exec/log.h"
192
#include "exec/tlb-common.h"
260
#include "tcg/tcg-ldst.h"
193
+#include "tcg/startup.h"
261
+#include "tcg/tcg-temp-internal.h"
194
#include "tcg/tcg-op-common.h"
262
#include "tcg-internal.h"
195
263
#include "accel/tcg/perf.h"
196
#if UINTPTR_MAX == UINT32_MAX
264
197
--
265
--
198
2.34.1
266
2.34.1
199
267
200
268
diff view generated by jsdifflib
1
Accept that we will consume space in CPUState for CONFIG_USER_ONLY,
1
From: Anton Johansson <anjo@rev.ng>
2
since we cannot test CONFIG_SOFTMMU within hw/core/cpu.h.
3
2
4
Reviewed-by: Anton Johansson <anjo@rev.ng>
3
Signed-off-by: Anton Johansson <anjo@rev.ng>
4
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
5
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
6
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
7
Message-Id: <20230306175230.7110-2-anjo@rev.ng>
5
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
8
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6
---
9
---
7
include/exec/cpu-defs.h | 150 ----------------------------------------
10
include/exec/cpu-defs.h | 11 ++++++++---
8
include/hw/core/cpu.h | 141 +++++++++++++++++++++++++++++++++++++
11
1 file changed, 8 insertions(+), 3 deletions(-)
9
2 files changed, 141 insertions(+), 150 deletions(-)
10
12
11
diff --git a/include/exec/cpu-defs.h b/include/exec/cpu-defs.h
13
diff --git a/include/exec/cpu-defs.h b/include/exec/cpu-defs.h
12
index XXXXXXX..XXXXXXX 100644
14
index XXXXXXX..XXXXXXX 100644
13
--- a/include/exec/cpu-defs.h
15
--- a/include/exec/cpu-defs.h
14
+++ b/include/exec/cpu-defs.h
16
+++ b/include/exec/cpu-defs.h
15
@@ -XXX,XX +XXX,XX @@
17
@@ -XXX,XX +XXX,XX @@
16
18
#ifndef TARGET_LONG_BITS
17
#include "exec/target_long.h"
19
# error TARGET_LONG_BITS must be defined in cpu-param.h
18
20
#endif
19
-/*
21
-#ifndef NB_MMU_MODES
20
- * Fix the number of mmu modes to 16, which is also the maximum
22
-# error NB_MMU_MODES must be defined in cpu-param.h
21
- * supported by the softmmu tlb api.
23
-#endif
22
- */
24
#ifndef TARGET_PHYS_ADDR_SPACE_BITS
23
-#define NB_MMU_MODES 16
25
# error TARGET_PHYS_ADDR_SPACE_BITS must be defined in cpu-param.h
24
-
26
#endif
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 @@
27
@@ -XXX,XX +XXX,XX @@
35
28
# endif
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
29
#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
30
194
+/*
31
+/*
195
+ * Fix the number of mmu modes to 16, which is also the maximum
32
+ * Fix the number of mmu modes to 16, which is also the maximum
196
+ * supported by the softmmu tlb api.
33
+ * supported by the softmmu tlb api.
197
+ */
34
+ */
35
+#ifndef NB_MMU_MODES
198
+#define NB_MMU_MODES 16
36
+#define NB_MMU_MODES 16
37
+#endif
199
+
38
+
200
+/* Use a fully associative victim tlb of 8 entries. */
39
#define TARGET_LONG_SIZE (TARGET_LONG_BITS / 8)
201
+#define CPU_VTLB_SIZE 8
40
202
+
41
/* target_ulong is the type of a virtual address */
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
--
42
--
345
2.34.1
43
2.34.1
44
45
diff view generated by jsdifflib
New patch
1
From: Anton Johansson <anjo@rev.ng>
1
2
3
Signed-off-by: Anton Johansson <anjo@rev.ng>
4
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
5
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
6
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
7
Message-Id: <20230306175230.7110-3-anjo@rev.ng>
8
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
9
---
10
target/alpha/cpu-param.h | 2 --
11
1 file changed, 2 deletions(-)
12
13
diff --git a/target/alpha/cpu-param.h b/target/alpha/cpu-param.h
14
index XXXXXXX..XXXXXXX 100644
15
--- a/target/alpha/cpu-param.h
16
+++ b/target/alpha/cpu-param.h
17
@@ -XXX,XX +XXX,XX @@
18
#define TARGET_PHYS_ADDR_SPACE_BITS 44
19
#define TARGET_VIRT_ADDR_SPACE_BITS (30 + TARGET_PAGE_BITS)
20
21
-#define NB_MMU_MODES 3
22
-
23
#endif
24
--
25
2.34.1
26
27
diff view generated by jsdifflib
New patch
1
From: Anton Johansson <anjo@rev.ng>
1
2
3
Signed-off-by: Anton Johansson <anjo@rev.ng>
4
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
5
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
6
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
7
Message-Id: <20230306175230.7110-4-anjo@rev.ng>
8
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
9
---
10
target/arm/cpu-param.h | 2 --
11
1 file changed, 2 deletions(-)
12
13
diff --git a/target/arm/cpu-param.h b/target/arm/cpu-param.h
14
index XXXXXXX..XXXXXXX 100644
15
--- a/target/arm/cpu-param.h
16
+++ b/target/arm/cpu-param.h
17
@@ -XXX,XX +XXX,XX @@
18
bool guarded;
19
#endif
20
21
-#define NB_MMU_MODES 12
22
-
23
#endif
24
--
25
2.34.1
26
27
diff view generated by jsdifflib
New patch
1
From: Anton Johansson <anjo@rev.ng>
1
2
3
Signed-off-by: Anton Johansson <anjo@rev.ng>
4
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
5
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
6
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
7
Message-Id: <20230306175230.7110-5-anjo@rev.ng>
8
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
9
---
10
target/avr/cpu-param.h | 1 -
11
1 file changed, 1 deletion(-)
12
13
diff --git a/target/avr/cpu-param.h b/target/avr/cpu-param.h
14
index XXXXXXX..XXXXXXX 100644
15
--- a/target/avr/cpu-param.h
16
+++ b/target/avr/cpu-param.h
17
@@ -XXX,XX +XXX,XX @@
18
#define TARGET_PAGE_BITS 8
19
#define TARGET_PHYS_ADDR_SPACE_BITS 24
20
#define TARGET_VIRT_ADDR_SPACE_BITS 24
21
-#define NB_MMU_MODES 2
22
23
#endif
24
--
25
2.34.1
26
27
diff view generated by jsdifflib
New patch
1
From: Anton Johansson <anjo@rev.ng>
1
2
3
Signed-off-by: Anton Johansson <anjo@rev.ng>
4
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
5
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
6
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
7
Message-Id: <20230306175230.7110-6-anjo@rev.ng>
8
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
9
---
10
target/cris/cpu-param.h | 1 -
11
1 file changed, 1 deletion(-)
12
13
diff --git a/target/cris/cpu-param.h b/target/cris/cpu-param.h
14
index XXXXXXX..XXXXXXX 100644
15
--- a/target/cris/cpu-param.h
16
+++ b/target/cris/cpu-param.h
17
@@ -XXX,XX +XXX,XX @@
18
#define TARGET_PAGE_BITS 13
19
#define TARGET_PHYS_ADDR_SPACE_BITS 32
20
#define TARGET_VIRT_ADDR_SPACE_BITS 32
21
-#define NB_MMU_MODES 2
22
23
#endif
24
--
25
2.34.1
26
27
diff view generated by jsdifflib
New patch
1
From: Anton Johansson <anjo@rev.ng>
1
2
3
Signed-off-by: Anton Johansson <anjo@rev.ng>
4
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
5
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
6
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
7
Message-Id: <20230306175230.7110-7-anjo@rev.ng>
8
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
9
---
10
target/hexagon/cpu-param.h | 2 --
11
1 file changed, 2 deletions(-)
12
13
diff --git a/target/hexagon/cpu-param.h b/target/hexagon/cpu-param.h
14
index XXXXXXX..XXXXXXX 100644
15
--- a/target/hexagon/cpu-param.h
16
+++ b/target/hexagon/cpu-param.h
17
@@ -XXX,XX +XXX,XX @@
18
#define TARGET_PHYS_ADDR_SPACE_BITS 36
19
#define TARGET_VIRT_ADDR_SPACE_BITS 32
20
21
-#define NB_MMU_MODES 1
22
-
23
#endif
24
--
25
2.34.1
26
27
diff view generated by jsdifflib
New patch
1
From: Anton Johansson <anjo@rev.ng>
1
2
3
Signed-off-by: Anton Johansson <anjo@rev.ng>
4
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
5
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
6
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
7
Message-Id: <20230306175230.7110-8-anjo@rev.ng>
8
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
9
---
10
target/hppa/cpu-param.h | 1 -
11
1 file changed, 1 deletion(-)
12
13
diff --git a/target/hppa/cpu-param.h b/target/hppa/cpu-param.h
14
index XXXXXXX..XXXXXXX 100644
15
--- a/target/hppa/cpu-param.h
16
+++ b/target/hppa/cpu-param.h
17
@@ -XXX,XX +XXX,XX @@
18
# define TARGET_PHYS_ADDR_SPACE_BITS 32
19
#endif
20
#define TARGET_PAGE_BITS 12
21
-#define NB_MMU_MODES 5
22
23
#endif
24
--
25
2.34.1
26
27
diff view generated by jsdifflib
New patch
1
From: Anton Johansson <anjo@rev.ng>
1
2
3
Signed-off-by: Anton Johansson <anjo@rev.ng>
4
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
5
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
6
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
7
Message-Id: <20230306175230.7110-9-anjo@rev.ng>
8
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
9
---
10
target/i386/cpu-param.h | 1 -
11
1 file changed, 1 deletion(-)
12
13
diff --git a/target/i386/cpu-param.h b/target/i386/cpu-param.h
14
index XXXXXXX..XXXXXXX 100644
15
--- a/target/i386/cpu-param.h
16
+++ b/target/i386/cpu-param.h
17
@@ -XXX,XX +XXX,XX @@
18
# define TARGET_VIRT_ADDR_SPACE_BITS 32
19
#endif
20
#define TARGET_PAGE_BITS 12
21
-#define NB_MMU_MODES 5
22
23
#endif
24
--
25
2.34.1
26
27
diff view generated by jsdifflib
New patch
1
From: Anton Johansson <anjo@rev.ng>
1
2
3
Signed-off-by: Anton Johansson <anjo@rev.ng>
4
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
5
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
6
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
7
Message-Id: <20230306175230.7110-10-anjo@rev.ng>
8
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
9
---
10
target/loongarch/cpu-param.h | 1 -
11
1 file changed, 1 deletion(-)
12
13
diff --git a/target/loongarch/cpu-param.h b/target/loongarch/cpu-param.h
14
index XXXXXXX..XXXXXXX 100644
15
--- a/target/loongarch/cpu-param.h
16
+++ b/target/loongarch/cpu-param.h
17
@@ -XXX,XX +XXX,XX @@
18
#define TARGET_VIRT_ADDR_SPACE_BITS 48
19
20
#define TARGET_PAGE_BITS 14
21
-#define NB_MMU_MODES 5
22
23
#endif
24
--
25
2.34.1
26
27
diff view generated by jsdifflib
New patch
1
From: Anton Johansson <anjo@rev.ng>
1
2
3
Signed-off-by: Anton Johansson <anjo@rev.ng>
4
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
5
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
6
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
7
Message-Id: <20230306175230.7110-11-anjo@rev.ng>
8
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
9
---
10
target/m68k/cpu-param.h | 1 -
11
1 file changed, 1 deletion(-)
12
13
diff --git a/target/m68k/cpu-param.h b/target/m68k/cpu-param.h
14
index XXXXXXX..XXXXXXX 100644
15
--- a/target/m68k/cpu-param.h
16
+++ b/target/m68k/cpu-param.h
17
@@ -XXX,XX +XXX,XX @@
18
#define TARGET_PAGE_BITS 12
19
#define TARGET_PHYS_ADDR_SPACE_BITS 32
20
#define TARGET_VIRT_ADDR_SPACE_BITS 32
21
-#define NB_MMU_MODES 2
22
23
#endif
24
--
25
2.34.1
26
27
diff view generated by jsdifflib
New patch
1
From: Anton Johansson <anjo@rev.ng>
1
2
3
Signed-off-by: Anton Johansson <anjo@rev.ng>
4
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
5
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
6
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
7
Message-Id: <20230306175230.7110-12-anjo@rev.ng>
8
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
9
---
10
target/microblaze/cpu-param.h | 1 -
11
target/microblaze/cpu.h | 2 +-
12
2 files changed, 1 insertion(+), 2 deletions(-)
13
14
diff --git a/target/microblaze/cpu-param.h b/target/microblaze/cpu-param.h
15
index XXXXXXX..XXXXXXX 100644
16
--- a/target/microblaze/cpu-param.h
17
+++ b/target/microblaze/cpu-param.h
18
@@ -XXX,XX +XXX,XX @@
19
20
/* FIXME: MB uses variable pages down to 1K but linux only uses 4k. */
21
#define TARGET_PAGE_BITS 12
22
-#define NB_MMU_MODES 3
23
24
#endif
25
diff --git a/target/microblaze/cpu.h b/target/microblaze/cpu.h
26
index XXXXXXX..XXXXXXX 100644
27
--- a/target/microblaze/cpu.h
28
+++ b/target/microblaze/cpu.h
29
@@ -XXX,XX +XXX,XX @@ void mb_tcg_init(void);
30
#define MMU_NOMMU_IDX 0
31
#define MMU_KERNEL_IDX 1
32
#define MMU_USER_IDX 2
33
-/* See NB_MMU_MODES further up the file. */
34
+/* See NB_MMU_MODES in cpu-defs.h. */
35
36
#include "exec/cpu-all.h"
37
38
--
39
2.34.1
40
41
diff view generated by jsdifflib
New patch
1
From: Anton Johansson <anjo@rev.ng>
1
2
3
Signed-off-by: Anton Johansson <anjo@rev.ng>
4
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
5
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
6
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
7
Message-Id: <20230306175230.7110-13-anjo@rev.ng>
8
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
9
---
10
target/mips/cpu-param.h | 1 -
11
1 file changed, 1 deletion(-)
12
13
diff --git a/target/mips/cpu-param.h b/target/mips/cpu-param.h
14
index XXXXXXX..XXXXXXX 100644
15
--- a/target/mips/cpu-param.h
16
+++ b/target/mips/cpu-param.h
17
@@ -XXX,XX +XXX,XX @@
18
#define TARGET_PAGE_BITS_VARY
19
#define TARGET_PAGE_BITS_MIN 12
20
#endif
21
-#define NB_MMU_MODES 4
22
23
#endif
24
--
25
2.34.1
26
27
diff view generated by jsdifflib
New patch
1
From: Anton Johansson <anjo@rev.ng>
1
2
3
Signed-off-by: Anton Johansson <anjo@rev.ng>
4
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
5
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
6
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
7
Message-Id: <20230306175230.7110-14-anjo@rev.ng>
8
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
9
---
10
target/nios2/cpu-param.h | 1 -
11
1 file changed, 1 deletion(-)
12
13
diff --git a/target/nios2/cpu-param.h b/target/nios2/cpu-param.h
14
index XXXXXXX..XXXXXXX 100644
15
--- a/target/nios2/cpu-param.h
16
+++ b/target/nios2/cpu-param.h
17
@@ -XXX,XX +XXX,XX @@
18
#else
19
# define TARGET_VIRT_ADDR_SPACE_BITS 32
20
#endif
21
-#define NB_MMU_MODES 2
22
23
#endif
24
--
25
2.34.1
26
27
diff view generated by jsdifflib
New patch
1
From: Anton Johansson <anjo@rev.ng>
1
2
3
Signed-off-by: Anton Johansson <anjo@rev.ng>
4
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
5
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
6
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
7
Message-Id: <20230306175230.7110-15-anjo@rev.ng>
8
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
9
---
10
target/openrisc/cpu-param.h | 1 -
11
1 file changed, 1 deletion(-)
12
13
diff --git a/target/openrisc/cpu-param.h b/target/openrisc/cpu-param.h
14
index XXXXXXX..XXXXXXX 100644
15
--- a/target/openrisc/cpu-param.h
16
+++ b/target/openrisc/cpu-param.h
17
@@ -XXX,XX +XXX,XX @@
18
#define TARGET_PAGE_BITS 13
19
#define TARGET_PHYS_ADDR_SPACE_BITS 32
20
#define TARGET_VIRT_ADDR_SPACE_BITS 32
21
-#define NB_MMU_MODES 3
22
23
#endif
24
--
25
2.34.1
26
27
diff view generated by jsdifflib
New patch
1
From: Anton Johansson <anjo@rev.ng>
1
2
3
Signed-off-by: Anton Johansson <anjo@rev.ng>
4
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
5
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
6
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
7
Message-Id: <20230306175230.7110-16-anjo@rev.ng>
8
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
9
---
10
target/ppc/cpu-param.h | 1 -
11
1 file changed, 1 deletion(-)
12
13
diff --git a/target/ppc/cpu-param.h b/target/ppc/cpu-param.h
14
index XXXXXXX..XXXXXXX 100644
15
--- a/target/ppc/cpu-param.h
16
+++ b/target/ppc/cpu-param.h
17
@@ -XXX,XX +XXX,XX @@
18
# define TARGET_VIRT_ADDR_SPACE_BITS 32
19
#endif
20
#define TARGET_PAGE_BITS 12
21
-#define NB_MMU_MODES 10
22
23
#endif
24
--
25
2.34.1
26
27
diff view generated by jsdifflib
New patch
1
From: Anton Johansson <anjo@rev.ng>
1
2
3
Signed-off-by: Anton Johansson <anjo@rev.ng>
4
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
5
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
6
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
7
Message-Id: <20230306175230.7110-17-anjo@rev.ng>
8
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
9
---
10
target/riscv/cpu-param.h | 1 -
11
1 file changed, 1 deletion(-)
12
13
diff --git a/target/riscv/cpu-param.h b/target/riscv/cpu-param.h
14
index XXXXXXX..XXXXXXX 100644
15
--- a/target/riscv/cpu-param.h
16
+++ b/target/riscv/cpu-param.h
17
@@ -XXX,XX +XXX,XX @@
18
* - S mode HLV/HLVX/HSV 0b101
19
* - M mode HLV/HLVX/HSV 0b111
20
*/
21
-#define NB_MMU_MODES 8
22
23
#endif
24
--
25
2.34.1
26
27
diff view generated by jsdifflib
New patch
1
From: Anton Johansson <anjo@rev.ng>
1
2
3
Signed-off-by: Anton Johansson <anjo@rev.ng>
4
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
5
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
6
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
7
Message-Id: <20230306175230.7110-18-anjo@rev.ng>
8
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
9
---
10
target/rx/cpu-param.h | 2 --
11
1 file changed, 2 deletions(-)
12
13
diff --git a/target/rx/cpu-param.h b/target/rx/cpu-param.h
14
index XXXXXXX..XXXXXXX 100644
15
--- a/target/rx/cpu-param.h
16
+++ b/target/rx/cpu-param.h
17
@@ -XXX,XX +XXX,XX @@
18
#define TARGET_PHYS_ADDR_SPACE_BITS 32
19
#define TARGET_VIRT_ADDR_SPACE_BITS 32
20
21
-#define NB_MMU_MODES 1
22
-
23
#endif
24
--
25
2.34.1
26
27
diff view generated by jsdifflib
New patch
1
From: Anton Johansson <anjo@rev.ng>
1
2
3
Signed-off-by: Anton Johansson <anjo@rev.ng>
4
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
5
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
6
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
7
Message-Id: <20230306175230.7110-19-anjo@rev.ng>
8
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
9
---
10
target/s390x/cpu-param.h | 1 -
11
1 file changed, 1 deletion(-)
12
13
diff --git a/target/s390x/cpu-param.h b/target/s390x/cpu-param.h
14
index XXXXXXX..XXXXXXX 100644
15
--- a/target/s390x/cpu-param.h
16
+++ b/target/s390x/cpu-param.h
17
@@ -XXX,XX +XXX,XX @@
18
#define TARGET_PAGE_BITS 12
19
#define TARGET_PHYS_ADDR_SPACE_BITS 64
20
#define TARGET_VIRT_ADDR_SPACE_BITS 64
21
-#define NB_MMU_MODES 4
22
23
#endif
24
--
25
2.34.1
26
27
diff view generated by jsdifflib
New patch
1
From: Anton Johansson <anjo@rev.ng>
1
2
3
Signed-off-by: Anton Johansson <anjo@rev.ng>
4
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
5
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
6
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
7
Message-Id: <20230306175230.7110-20-anjo@rev.ng>
8
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
9
---
10
target/sh4/cpu-param.h | 1 -
11
1 file changed, 1 deletion(-)
12
13
diff --git a/target/sh4/cpu-param.h b/target/sh4/cpu-param.h
14
index XXXXXXX..XXXXXXX 100644
15
--- a/target/sh4/cpu-param.h
16
+++ b/target/sh4/cpu-param.h
17
@@ -XXX,XX +XXX,XX @@
18
#else
19
# define TARGET_VIRT_ADDR_SPACE_BITS 32
20
#endif
21
-#define NB_MMU_MODES 2
22
23
#endif
24
--
25
2.34.1
26
27
diff view generated by jsdifflib
1
From: Philippe Mathieu-Daudé <philmd@linaro.org>
1
From: Anton Johansson <anjo@rev.ng>
2
2
3
The EXCP_* definitions don't need to be target specific,
3
Signed-off-by: Anton Johansson <anjo@rev.ng>
4
move them to "exec/cpu-common.h".
4
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
5
5
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
6
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
6
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
7
Reviewed-by: Anton Johansson <anjo@rev.ng>
7
Message-Id: <20230306175230.7110-21-anjo@rev.ng>
8
Message-Id: <20230914185718.76241-2-philmd@linaro.org>
9
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
8
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
10
---
9
---
11
include/exec/cpu-all.h | 7 -------
10
target/sparc/cpu-param.h | 2 --
12
include/exec/cpu-common.h | 7 +++++++
11
1 file changed, 2 deletions(-)
13
2 files changed, 7 insertions(+), 7 deletions(-)
14
12
15
diff --git a/include/exec/cpu-all.h b/include/exec/cpu-all.h
13
diff --git a/target/sparc/cpu-param.h b/target/sparc/cpu-param.h
16
index XXXXXXX..XXXXXXX 100644
14
index XXXXXXX..XXXXXXX 100644
17
--- a/include/exec/cpu-all.h
15
--- a/target/sparc/cpu-param.h
18
+++ b/include/exec/cpu-all.h
16
+++ b/target/sparc/cpu-param.h
19
@@ -XXX,XX +XXX,XX @@
17
@@ -XXX,XX +XXX,XX @@
20
#include "hw/core/cpu.h"
18
# else
21
#include "qemu/rcu.h"
19
# define TARGET_VIRT_ADDR_SPACE_BITS 44
22
20
# endif
23
-#define EXCP_INTERRUPT 0x10000 /* async interruption */
21
-# define NB_MMU_MODES 6
24
-#define EXCP_HLT 0x10001 /* hlt instruction reached */
22
#else
25
-#define EXCP_DEBUG 0x10002 /* cpu stopped after a breakpoint or singlestep */
23
# define TARGET_LONG_BITS 32
26
-#define EXCP_HALTED 0x10003 /* cpu is halted (waiting for external event) */
24
# define TARGET_PAGE_BITS 12 /* 4k */
27
-#define EXCP_YIELD 0x10004 /* cpu wants to yield timeslice to another */
25
# define TARGET_PHYS_ADDR_SPACE_BITS 36
28
-#define EXCP_ATOMIC 0x10005 /* stop-the-world and emulate atomic */
26
# define TARGET_VIRT_ADDR_SPACE_BITS 32
29
-
27
-# define NB_MMU_MODES 3
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
28
#endif
40
29
41
+#define EXCP_INTERRUPT 0x10000 /* async interruption */
30
#endif
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
--
31
--
52
2.34.1
32
2.34.1
53
33
54
34
diff view generated by jsdifflib
1
From: Anton Johansson <anjo@rev.ng>
1
From: Anton Johansson <anjo@rev.ng>
2
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>
3
Signed-off-by: Anton Johansson <anjo@rev.ng>
7
Message-Id: <20230912153428.17816-9-anjo@rev.ng>
4
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
5
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
8
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
6
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
9
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
7
Message-Id: <20230306175230.7110-22-anjo@rev.ng>
10
[rth: Merge comment update patch]
11
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
8
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
12
---
9
---
13
include/exec/cpu-all.h | 11 -----------
10
target/tricore/cpu-param.h | 1 -
14
tcg/aarch64/tcg-target.c.inc | 2 +-
11
1 file changed, 1 deletion(-)
15
tcg/arm/tcg-target.c.inc | 2 +-
16
3 files changed, 2 insertions(+), 13 deletions(-)
17
12
18
diff --git a/include/exec/cpu-all.h b/include/exec/cpu-all.h
13
diff --git a/target/tricore/cpu-param.h b/target/tricore/cpu-param.h
19
index XXXXXXX..XXXXXXX 100644
14
index XXXXXXX..XXXXXXX 100644
20
--- a/include/exec/cpu-all.h
15
--- a/target/tricore/cpu-param.h
21
+++ b/include/exec/cpu-all.h
16
+++ b/target/tricore/cpu-param.h
22
@@ -XXX,XX +XXX,XX @@ static inline CPUState *env_cpu(CPUArchState *env)
17
@@ -XXX,XX +XXX,XX @@
23
return (void *)env - sizeof(CPUState);
18
#define TARGET_PAGE_BITS 14
24
}
19
#define TARGET_PHYS_ADDR_SPACE_BITS 32
25
20
#define TARGET_VIRT_ADDR_SPACE_BITS 32
26
-/**
21
-#define NB_MMU_MODES 3
27
- * env_tlb(env)
22
28
- * @env: The architecture environment
23
#endif
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
--
24
--
65
2.34.1
25
2.34.1
66
26
67
27
diff view generated by jsdifflib
1
From: Anton Johansson <anjo@rev.ng>
1
From: Anton Johansson <anjo@rev.ng>
2
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>
3
Signed-off-by: Anton Johansson <anjo@rev.ng>
9
Message-Id: <20230912153428.17816-5-anjo@rev.ng>
4
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
5
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
10
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
6
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
11
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
7
Message-Id: <20230306175230.7110-23-anjo@rev.ng>
12
[rth: Use cpu->neg.tlb instead of cpu_tlb()]
13
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
8
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
14
---
9
---
15
accel/tcg/cputlb.c | 46 +++++++++++++++++++++++-----------------------
10
target/xtensa/cpu-param.h | 1 -
16
1 file changed, 23 insertions(+), 23 deletions(-)
11
1 file changed, 1 deletion(-)
17
12
18
diff --git a/accel/tcg/cputlb.c b/accel/tcg/cputlb.c
13
diff --git a/target/xtensa/cpu-param.h b/target/xtensa/cpu-param.h
19
index XXXXXXX..XXXXXXX 100644
14
index XXXXXXX..XXXXXXX 100644
20
--- a/accel/tcg/cputlb.c
15
--- a/target/xtensa/cpu-param.h
21
+++ b/accel/tcg/cputlb.c
16
+++ b/target/xtensa/cpu-param.h
22
@@ -XXX,XX +XXX,XX @@ static void notdirty_write(CPUState *cpu, vaddr mem_vaddr, unsigned size,
17
@@ -XXX,XX +XXX,XX @@
23
}
18
#else
24
}
19
#define TARGET_VIRT_ADDR_SPACE_BITS 32
25
20
#endif
26
-static int probe_access_internal(CPUArchState *env, vaddr addr,
21
-#define NB_MMU_MODES 4
27
+static int probe_access_internal(CPUState *cpu, vaddr addr,
22
28
int fault_size, MMUAccessType access_type,
23
#endif
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
--
24
--
143
2.34.1
25
2.34.1
144
26
145
27
diff view generated by jsdifflib
1
From: Anton Johansson <anjo@rev.ng>
1
From: Anton Johansson <anjo@rev.ng>
2
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>
3
Signed-off-by: Anton Johansson <anjo@rev.ng>
14
Message-Id: <20230912153428.17816-2-anjo@rev.ng>
4
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
5
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
6
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
7
Message-Id: <20230306175230.7110-24-anjo@rev.ng>
15
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
8
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
16
---
9
---
17
include/exec/cpu-defs.h | 18 +++++++++++++++---
10
include/exec/cpu-defs.h | 2 --
18
target/arm/cpu-param.h | 12 ------------
11
1 file changed, 2 deletions(-)
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
12
26
diff --git a/include/exec/cpu-defs.h b/include/exec/cpu-defs.h
13
diff --git a/include/exec/cpu-defs.h b/include/exec/cpu-defs.h
27
index XXXXXXX..XXXXXXX 100644
14
index XXXXXXX..XXXXXXX 100644
28
--- a/include/exec/cpu-defs.h
15
--- a/include/exec/cpu-defs.h
29
+++ b/include/exec/cpu-defs.h
16
+++ b/include/exec/cpu-defs.h
30
@@ -XXX,XX +XXX,XX @@ typedef struct CPUTLBEntryFull {
17
@@ -XXX,XX +XXX,XX @@
31
* This may be used to cache items from the guest cpu
18
* Fix the number of mmu modes to 16, which is also the maximum
32
* page tables for later use by the implementation.
19
* supported by the softmmu tlb api.
33
*/
20
*/
34
-#ifdef TARGET_PAGE_ENTRY_EXTRA
21
-#ifndef NB_MMU_MODES
35
- TARGET_PAGE_ENTRY_EXTRA
22
#define NB_MMU_MODES 16
36
-#endif
23
-#endif
37
+ union {
24
38
+ /*
25
#define TARGET_LONG_SIZE (TARGET_LONG_BITS / 8)
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
26
154
--
27
--
155
2.34.1
28
2.34.1
29
30
diff view generated by jsdifflib
New patch
1
The use of separate data/port variables is existing
2
practice elsewhere, e.g. SBI, CBI.
1
3
4
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
5
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6
---
7
target/avr/translate.c | 18 ++++++++++--------
8
1 file changed, 10 insertions(+), 8 deletions(-)
9
10
diff --git a/target/avr/translate.c b/target/avr/translate.c
11
index XXXXXXX..XXXXXXX 100644
12
--- a/target/avr/translate.c
13
+++ b/target/avr/translate.c
14
@@ -XXX,XX +XXX,XX @@ static bool trans_SBRS(DisasContext *ctx, arg_SBRS *a)
15
*/
16
static bool trans_SBIC(DisasContext *ctx, arg_SBIC *a)
17
{
18
- TCGv temp = tcg_const_i32(a->reg);
19
+ TCGv data = tcg_temp_new_i32();
20
+ TCGv port = tcg_constant_i32(a->reg);
21
22
- gen_helper_inb(temp, cpu_env, temp);
23
- tcg_gen_andi_tl(temp, temp, 1 << a->bit);
24
+ gen_helper_inb(data, cpu_env, port);
25
+ tcg_gen_andi_tl(data, data, 1 << a->bit);
26
ctx->skip_cond = TCG_COND_EQ;
27
- ctx->skip_var0 = temp;
28
+ ctx->skip_var0 = data;
29
30
return true;
31
}
32
@@ -XXX,XX +XXX,XX @@ static bool trans_SBIC(DisasContext *ctx, arg_SBIC *a)
33
*/
34
static bool trans_SBIS(DisasContext *ctx, arg_SBIS *a)
35
{
36
- TCGv temp = tcg_const_i32(a->reg);
37
+ TCGv data = tcg_temp_new_i32();
38
+ TCGv port = tcg_constant_i32(a->reg);
39
40
- gen_helper_inb(temp, cpu_env, temp);
41
- tcg_gen_andi_tl(temp, temp, 1 << a->bit);
42
+ gen_helper_inb(data, cpu_env, port);
43
+ tcg_gen_andi_tl(data, data, 1 << a->bit);
44
ctx->skip_cond = TCG_COND_NE;
45
- ctx->skip_var0 = temp;
46
+ ctx->skip_var0 = data;
47
48
return true;
49
}
50
--
51
2.34.1
52
53
diff view generated by jsdifflib
New patch
1
All remaining uses are strictly read-only.
1
2
3
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
4
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
5
---
6
target/avr/translate.c | 30 +++++++++++++++---------------
7
1 file changed, 15 insertions(+), 15 deletions(-)
8
9
diff --git a/target/avr/translate.c b/target/avr/translate.c
10
index XXXXXXX..XXXXXXX 100644
11
--- a/target/avr/translate.c
12
+++ b/target/avr/translate.c
13
@@ -XXX,XX +XXX,XX @@ static bool trans_SUB(DisasContext *ctx, arg_SUB *a)
14
static bool trans_SUBI(DisasContext *ctx, arg_SUBI *a)
15
{
16
TCGv Rd = cpu_r[a->rd];
17
- TCGv Rr = tcg_const_i32(a->imm);
18
+ TCGv Rr = tcg_constant_i32(a->imm);
19
TCGv R = tcg_temp_new_i32();
20
21
tcg_gen_sub_tl(R, Rd, Rr); /* R = Rd - Imm */
22
@@ -XXX,XX +XXX,XX @@ static bool trans_SBC(DisasContext *ctx, arg_SBC *a)
23
TCGv Rd = cpu_r[a->rd];
24
TCGv Rr = cpu_r[a->rr];
25
TCGv R = tcg_temp_new_i32();
26
- TCGv zero = tcg_const_i32(0);
27
+ TCGv zero = tcg_constant_i32(0);
28
29
tcg_gen_sub_tl(R, Rd, Rr); /* R = Rd - Rr - Cf */
30
tcg_gen_sub_tl(R, R, cpu_Cf);
31
@@ -XXX,XX +XXX,XX @@ static bool trans_SBC(DisasContext *ctx, arg_SBC *a)
32
static bool trans_SBCI(DisasContext *ctx, arg_SBCI *a)
33
{
34
TCGv Rd = cpu_r[a->rd];
35
- TCGv Rr = tcg_const_i32(a->imm);
36
+ TCGv Rr = tcg_constant_i32(a->imm);
37
TCGv R = tcg_temp_new_i32();
38
- TCGv zero = tcg_const_i32(0);
39
+ TCGv zero = tcg_constant_i32(0);
40
41
tcg_gen_sub_tl(R, Rd, Rr); /* R = Rd - Rr - Cf */
42
tcg_gen_sub_tl(R, R, cpu_Cf);
43
@@ -XXX,XX +XXX,XX @@ static bool trans_COM(DisasContext *ctx, arg_COM *a)
44
static bool trans_NEG(DisasContext *ctx, arg_NEG *a)
45
{
46
TCGv Rd = cpu_r[a->rd];
47
- TCGv t0 = tcg_const_i32(0);
48
+ TCGv t0 = tcg_constant_i32(0);
49
TCGv R = tcg_temp_new_i32();
50
51
tcg_gen_sub_tl(R, t0, Rd); /* R = 0 - Rd */
52
@@ -XXX,XX +XXX,XX @@ static void gen_jmp_z(DisasContext *ctx)
53
static void gen_push_ret(DisasContext *ctx, int ret)
54
{
55
if (avr_feature(ctx->env, AVR_FEATURE_1_BYTE_PC)) {
56
- TCGv t0 = tcg_const_i32((ret & 0x0000ff));
57
+ TCGv t0 = tcg_constant_i32(ret & 0x0000ff);
58
59
tcg_gen_qemu_st_tl(t0, cpu_sp, MMU_DATA_IDX, MO_UB);
60
tcg_gen_subi_tl(cpu_sp, cpu_sp, 1);
61
} else if (avr_feature(ctx->env, AVR_FEATURE_2_BYTE_PC)) {
62
- TCGv t0 = tcg_const_i32((ret & 0x00ffff));
63
+ TCGv t0 = tcg_constant_i32(ret & 0x00ffff);
64
65
tcg_gen_subi_tl(cpu_sp, cpu_sp, 1);
66
tcg_gen_qemu_st_tl(t0, cpu_sp, MMU_DATA_IDX, MO_BEUW);
67
tcg_gen_subi_tl(cpu_sp, cpu_sp, 1);
68
} else if (avr_feature(ctx->env, AVR_FEATURE_3_BYTE_PC)) {
69
- TCGv lo = tcg_const_i32((ret & 0x0000ff));
70
- TCGv hi = tcg_const_i32((ret & 0xffff00) >> 8);
71
+ TCGv lo = tcg_constant_i32(ret & 0x0000ff);
72
+ TCGv hi = tcg_constant_i32((ret & 0xffff00) >> 8);
73
74
tcg_gen_qemu_st_tl(lo, cpu_sp, MMU_DATA_IDX, MO_UB);
75
tcg_gen_subi_tl(cpu_sp, cpu_sp, 2);
76
@@ -XXX,XX +XXX,XX @@ static bool trans_CPC(DisasContext *ctx, arg_CPC *a)
77
TCGv Rd = cpu_r[a->rd];
78
TCGv Rr = cpu_r[a->rr];
79
TCGv R = tcg_temp_new_i32();
80
- TCGv zero = tcg_const_i32(0);
81
+ TCGv zero = tcg_constant_i32(0);
82
83
tcg_gen_sub_tl(R, Rd, Rr); /* R = Rd - Rr - Cf */
84
tcg_gen_sub_tl(R, R, cpu_Cf);
85
@@ -XXX,XX +XXX,XX @@ static bool trans_CPI(DisasContext *ctx, arg_CPI *a)
86
{
87
TCGv Rd = cpu_r[a->rd];
88
int Imm = a->imm;
89
- TCGv Rr = tcg_const_i32(Imm);
90
+ TCGv Rr = tcg_constant_i32(Imm);
91
TCGv R = tcg_temp_new_i32();
92
93
tcg_gen_sub_tl(R, Rd, Rr); /* R = Rd - Rr */
94
@@ -XXX,XX +XXX,XX @@ static bool trans_SPMX(DisasContext *ctx, arg_SPMX *a)
95
static bool trans_IN(DisasContext *ctx, arg_IN *a)
96
{
97
TCGv Rd = cpu_r[a->rd];
98
- TCGv port = tcg_const_i32(a->imm);
99
+ TCGv port = tcg_constant_i32(a->imm);
100
101
gen_helper_inb(Rd, cpu_env, port);
102
return true;
103
@@ -XXX,XX +XXX,XX @@ static bool trans_IN(DisasContext *ctx, arg_IN *a)
104
static bool trans_OUT(DisasContext *ctx, arg_OUT *a)
105
{
106
TCGv Rd = cpu_r[a->rd];
107
- TCGv port = tcg_const_i32(a->imm);
108
+ TCGv port = tcg_constant_i32(a->imm);
109
110
gen_helper_outb(cpu_env, port, Rd);
111
return true;
112
@@ -XXX,XX +XXX,XX @@ static bool trans_SWAP(DisasContext *ctx, arg_SWAP *a)
113
static bool trans_SBI(DisasContext *ctx, arg_SBI *a)
114
{
115
TCGv data = tcg_temp_new_i32();
116
- TCGv port = tcg_const_i32(a->reg);
117
+ TCGv port = tcg_constant_i32(a->reg);
118
119
gen_helper_inb(data, cpu_env, port);
120
tcg_gen_ori_tl(data, data, 1 << a->bit);
121
@@ -XXX,XX +XXX,XX @@ static bool trans_SBI(DisasContext *ctx, arg_SBI *a)
122
static bool trans_CBI(DisasContext *ctx, arg_CBI *a)
123
{
124
TCGv data = tcg_temp_new_i32();
125
- TCGv port = tcg_const_i32(a->reg);
126
+ TCGv port = tcg_constant_i32(a->reg);
127
128
gen_helper_inb(data, cpu_env, port);
129
tcg_gen_andi_tl(data, data, ~(1 << a->bit));
130
--
131
2.34.1
132
133
diff view generated by jsdifflib
New patch
1
All remaining uses are strictly read-only.
1
2
3
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
4
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
5
---
6
target/cris/translate.c | 46 +++++++++++++++------------------
7
target/cris/translate_v10.c.inc | 26 +++++++++----------
8
2 files changed, 34 insertions(+), 38 deletions(-)
9
10
diff --git a/target/cris/translate.c b/target/cris/translate.c
11
index XXXXXXX..XXXXXXX 100644
12
--- a/target/cris/translate.c
13
+++ b/target/cris/translate.c
14
@@ -XXX,XX +XXX,XX @@ static const int preg_sizes[] = {
15
#define t_gen_mov_env_TN(member, tn) \
16
tcg_gen_st_tl(tn, cpu_env, offsetof(CPUCRISState, member))
17
#define t_gen_movi_env_TN(member, c) \
18
- do { \
19
- TCGv tc = tcg_const_tl(c); \
20
- t_gen_mov_env_TN(member, tc); \
21
- } while (0)
22
+ t_gen_mov_env_TN(member, tcg_constant_tl(c))
23
24
static inline void t_gen_mov_TN_preg(TCGv tn, int r)
25
{
26
@@ -XXX,XX +XXX,XX @@ static void cris_lock_irq(DisasContext *dc)
27
28
static inline void t_gen_raise_exception(uint32_t index)
29
{
30
- TCGv_i32 tmp = tcg_const_i32(index);
31
- gen_helper_raise_exception(cpu_env, tmp);
32
+ gen_helper_raise_exception(cpu_env, tcg_constant_i32(index));
33
}
34
35
static void t_gen_lsl(TCGv d, TCGv a, TCGv b)
36
@@ -XXX,XX +XXX,XX @@ static void t_gen_lsl(TCGv d, TCGv a, TCGv b)
37
TCGv t0, t_31;
38
39
t0 = tcg_temp_new();
40
- t_31 = tcg_const_tl(31);
41
+ t_31 = tcg_constant_tl(31);
42
tcg_gen_shl_tl(d, a, b);
43
44
tcg_gen_sub_tl(t0, t_31, b);
45
@@ -XXX,XX +XXX,XX @@ static int dec_addq(CPUCRISState *env, DisasContext *dc)
46
47
cris_cc_mask(dc, CC_MASK_NZVC);
48
49
- c = tcg_const_tl(dc->op1);
50
+ c = tcg_constant_tl(dc->op1);
51
cris_alu(dc, CC_OP_ADD,
52
cpu_R[dc->op2], cpu_R[dc->op2], c, 4);
53
return 2;
54
@@ -XXX,XX +XXX,XX @@ static int dec_subq(CPUCRISState *env, DisasContext *dc)
55
LOG_DIS("subq %u, $r%u\n", dc->op1, dc->op2);
56
57
cris_cc_mask(dc, CC_MASK_NZVC);
58
- c = tcg_const_tl(dc->op1);
59
+ c = tcg_constant_tl(dc->op1);
60
cris_alu(dc, CC_OP_SUB,
61
cpu_R[dc->op2], cpu_R[dc->op2], c, 4);
62
return 2;
63
@@ -XXX,XX +XXX,XX @@ static int dec_cmpq(CPUCRISState *env, DisasContext *dc)
64
LOG_DIS("cmpq %d, $r%d\n", imm, dc->op2);
65
cris_cc_mask(dc, CC_MASK_NZVC);
66
67
- c = tcg_const_tl(imm);
68
+ c = tcg_constant_tl(imm);
69
cris_alu(dc, CC_OP_CMP,
70
cpu_R[dc->op2], cpu_R[dc->op2], c, 4);
71
return 2;
72
@@ -XXX,XX +XXX,XX @@ static int dec_andq(CPUCRISState *env, DisasContext *dc)
73
LOG_DIS("andq %d, $r%d\n", imm, dc->op2);
74
cris_cc_mask(dc, CC_MASK_NZ);
75
76
- c = tcg_const_tl(imm);
77
+ c = tcg_constant_tl(imm);
78
cris_alu(dc, CC_OP_AND,
79
cpu_R[dc->op2], cpu_R[dc->op2], c, 4);
80
return 2;
81
@@ -XXX,XX +XXX,XX @@ static int dec_orq(CPUCRISState *env, DisasContext *dc)
82
LOG_DIS("orq %d, $r%d\n", imm, dc->op2);
83
cris_cc_mask(dc, CC_MASK_NZ);
84
85
- c = tcg_const_tl(imm);
86
+ c = tcg_constant_tl(imm);
87
cris_alu(dc, CC_OP_OR,
88
cpu_R[dc->op2], cpu_R[dc->op2], c, 4);
89
return 2;
90
@@ -XXX,XX +XXX,XX @@ static int dec_btstq(CPUCRISState *env, DisasContext *dc)
91
LOG_DIS("btstq %u, $r%d\n", dc->op1, dc->op2);
92
93
cris_cc_mask(dc, CC_MASK_NZ);
94
- c = tcg_const_tl(dc->op1);
95
+ c = tcg_constant_tl(dc->op1);
96
cris_evaluate_flags(dc);
97
gen_helper_btst(cpu_PR[PR_CCS], cpu_env, cpu_R[dc->op2],
98
c, cpu_PR[PR_CCS]);
99
@@ -XXX,XX +XXX,XX @@ static int dec_move_rs(CPUCRISState *env, DisasContext *dc)
100
{
101
TCGv c2, c1;
102
LOG_DIS("move $r%u, $s%u\n", dc->op1, dc->op2);
103
- c1 = tcg_const_tl(dc->op1);
104
- c2 = tcg_const_tl(dc->op2);
105
+ c1 = tcg_constant_tl(dc->op1);
106
+ c2 = tcg_constant_tl(dc->op2);
107
cris_cc_mask(dc, 0);
108
gen_helper_movl_sreg_reg(cpu_env, c2, c1);
109
return 2;
110
@@ -XXX,XX +XXX,XX @@ static int dec_move_sr(CPUCRISState *env, DisasContext *dc)
111
{
112
TCGv c2, c1;
113
LOG_DIS("move $s%u, $r%u\n", dc->op2, dc->op1);
114
- c1 = tcg_const_tl(dc->op1);
115
- c2 = tcg_const_tl(dc->op2);
116
+ c1 = tcg_constant_tl(dc->op1);
117
+ c2 = tcg_constant_tl(dc->op2);
118
cris_cc_mask(dc, 0);
119
gen_helper_movl_reg_sreg(cpu_env, c1, c2);
120
return 2;
121
@@ -XXX,XX +XXX,XX @@ static int dec_test_m(CPUCRISState *env, DisasContext *dc)
122
cris_cc_mask(dc, CC_MASK_NZ);
123
tcg_gen_andi_tl(cpu_PR[PR_CCS], cpu_PR[PR_CCS], ~3);
124
125
- c = tcg_const_tl(0);
126
+ c = tcg_constant_tl(0);
127
cris_alu(dc, CC_OP_CMP,
128
cpu_R[dc->op2], t[1], c, memsize_zz(dc));
129
do_postinc(dc, memsize);
130
@@ -XXX,XX +XXX,XX @@ static int dec_jas_r(CPUCRISState *env, DisasContext *dc)
131
if (dc->op2 > 15) {
132
abort();
133
}
134
- c = tcg_const_tl(dc->pc + 4);
135
+ c = tcg_constant_tl(dc->pc + 4);
136
t_gen_mov_preg_TN(dc, dc->op2, c);
137
138
cris_prepare_jmp(dc, JMP_INDIRECT);
139
@@ -XXX,XX +XXX,XX @@ static int dec_jas_im(CPUCRISState *env, DisasContext *dc)
140
141
LOG_DIS("jas 0x%x\n", imm);
142
cris_cc_mask(dc, 0);
143
- c = tcg_const_tl(dc->pc + 8);
144
+ c = tcg_constant_tl(dc->pc + 8);
145
/* Store the return address in Pd. */
146
t_gen_mov_preg_TN(dc, dc->op2, c);
147
148
@@ -XXX,XX +XXX,XX @@ static int dec_jasc_im(CPUCRISState *env, DisasContext *dc)
149
150
LOG_DIS("jasc 0x%x\n", imm);
151
cris_cc_mask(dc, 0);
152
- c = tcg_const_tl(dc->pc + 8 + 4);
153
+ c = tcg_constant_tl(dc->pc + 8 + 4);
154
/* Store the return address in Pd. */
155
t_gen_mov_preg_TN(dc, dc->op2, c);
156
157
@@ -XXX,XX +XXX,XX @@ static int dec_jasc_r(CPUCRISState *env, DisasContext *dc)
158
cris_cc_mask(dc, 0);
159
/* Store the return address in Pd. */
160
tcg_gen_mov_tl(env_btarget, cpu_R[dc->op1]);
161
- c = tcg_const_tl(dc->pc + 4 + 4);
162
+ c = tcg_constant_tl(dc->pc + 4 + 4);
163
t_gen_mov_preg_TN(dc, dc->op2, c);
164
cris_prepare_jmp(dc, JMP_INDIRECT);
165
return 2;
166
@@ -XXX,XX +XXX,XX @@ static int dec_bas_im(CPUCRISState *env, DisasContext *dc)
167
168
LOG_DIS("bas 0x%x, $p%u\n", dc->pc + simm, dc->op2);
169
cris_cc_mask(dc, 0);
170
- c = tcg_const_tl(dc->pc + 8);
171
+ c = tcg_constant_tl(dc->pc + 8);
172
/* Store the return address in Pd. */
173
t_gen_mov_preg_TN(dc, dc->op2, c);
174
175
@@ -XXX,XX +XXX,XX @@ static int dec_basc_im(CPUCRISState *env, DisasContext *dc)
176
177
LOG_DIS("basc 0x%x, $p%u\n", dc->pc + simm, dc->op2);
178
cris_cc_mask(dc, 0);
179
- c = tcg_const_tl(dc->pc + 12);
180
+ c = tcg_constant_tl(dc->pc + 12);
181
/* Store the return address in Pd. */
182
t_gen_mov_preg_TN(dc, dc->op2, c);
183
184
@@ -XXX,XX +XXX,XX @@ static int dec_rfe_etc(CPUCRISState *env, DisasContext *dc)
185
cris_cc_mask(dc, 0);
186
187
if (dc->op2 == 15) {
188
- tcg_gen_st_i32(tcg_const_i32(1), cpu_env,
189
+ tcg_gen_st_i32(tcg_constant_i32(1), cpu_env,
190
-offsetof(CRISCPU, env) + offsetof(CPUState, halted));
191
tcg_gen_movi_tl(env_pc, dc->pc + 2);
192
t_gen_raise_exception(EXCP_HLT);
193
diff --git a/target/cris/translate_v10.c.inc b/target/cris/translate_v10.c.inc
194
index XXXXXXX..XXXXXXX 100644
195
--- a/target/cris/translate_v10.c.inc
196
+++ b/target/cris/translate_v10.c.inc
197
@@ -XXX,XX +XXX,XX @@ static unsigned int dec10_quick_imm(DisasContext *dc)
198
LOG_DIS("moveq %d, $r%d\n", simm, dc->dst);
199
200
cris_cc_mask(dc, CC_MASK_NZVC);
201
- c = tcg_const_tl(simm);
202
+ c = tcg_constant_tl(simm);
203
cris_alu(dc, CC_OP_MOVE, cpu_R[dc->dst],
204
cpu_R[dc->dst], c, 4);
205
break;
206
@@ -XXX,XX +XXX,XX @@ static unsigned int dec10_quick_imm(DisasContext *dc)
207
LOG_DIS("cmpq %d, $r%d\n", simm, dc->dst);
208
209
cris_cc_mask(dc, CC_MASK_NZVC);
210
- c = tcg_const_tl(simm);
211
+ c = tcg_constant_tl(simm);
212
cris_alu(dc, CC_OP_CMP, cpu_R[dc->dst],
213
cpu_R[dc->dst], c, 4);
214
break;
215
@@ -XXX,XX +XXX,XX @@ static unsigned int dec10_quick_imm(DisasContext *dc)
216
LOG_DIS("addq %d, $r%d\n", imm, dc->dst);
217
218
cris_cc_mask(dc, CC_MASK_NZVC);
219
- c = tcg_const_tl(imm);
220
+ c = tcg_constant_tl(imm);
221
cris_alu(dc, CC_OP_ADD, cpu_R[dc->dst],
222
cpu_R[dc->dst], c, 4);
223
break;
224
@@ -XXX,XX +XXX,XX @@ static unsigned int dec10_quick_imm(DisasContext *dc)
225
LOG_DIS("andq %d, $r%d\n", simm, dc->dst);
226
227
cris_cc_mask(dc, CC_MASK_NZVC);
228
- c = tcg_const_tl(simm);
229
+ c = tcg_constant_tl(simm);
230
cris_alu(dc, CC_OP_AND, cpu_R[dc->dst],
231
cpu_R[dc->dst], c, 4);
232
break;
233
@@ -XXX,XX +XXX,XX @@ static unsigned int dec10_quick_imm(DisasContext *dc)
234
cris_cc_mask(dc, CC_MASK_NZVC);
235
op = imm & (1 << 5);
236
imm &= 0x1f;
237
- c = tcg_const_tl(imm);
238
+ c = tcg_constant_tl(imm);
239
if (op) {
240
cris_alu(dc, CC_OP_ASR, cpu_R[dc->dst],
241
cpu_R[dc->dst], c, 4);
242
@@ -XXX,XX +XXX,XX @@ static unsigned int dec10_quick_imm(DisasContext *dc)
243
}
244
imm &= 0x1f;
245
cris_cc_mask(dc, CC_MASK_NZVC);
246
- c = tcg_const_tl(imm);
247
+ c = tcg_constant_tl(imm);
248
cris_alu(dc, op, cpu_R[dc->dst],
249
cpu_R[dc->dst], c, 4);
250
break;
251
@@ -XXX,XX +XXX,XX @@ static unsigned int dec10_quick_imm(DisasContext *dc)
252
LOG_DIS("subq %d, $r%d\n", imm, dc->dst);
253
254
cris_cc_mask(dc, CC_MASK_NZVC);
255
- c = tcg_const_tl(imm);
256
+ c = tcg_constant_tl(imm);
257
cris_alu(dc, CC_OP_SUB, cpu_R[dc->dst],
258
cpu_R[dc->dst], c, 4);
259
break;
260
@@ -XXX,XX +XXX,XX @@ static unsigned int dec10_quick_imm(DisasContext *dc)
261
LOG_DIS("andq %d, $r%d\n", simm, dc->dst);
262
263
cris_cc_mask(dc, CC_MASK_NZVC);
264
- c = tcg_const_tl(simm);
265
+ c = tcg_constant_tl(simm);
266
cris_alu(dc, CC_OP_OR, cpu_R[dc->dst],
267
cpu_R[dc->dst], c, 4);
268
break;
269
@@ -XXX,XX +XXX,XX @@ static unsigned int dec10_ind(CPUCRISState *env, DisasContext *dc)
270
cris_alu_m_alloc_temps(t);
271
insn_len += dec10_prep_move_m(env, dc, 0, size, t[0]);
272
tcg_gen_andi_tl(cpu_PR[PR_CCS], cpu_PR[PR_CCS], ~3);
273
- c = tcg_const_tl(0);
274
+ c = tcg_constant_tl(0);
275
cris_alu(dc, CC_OP_CMP, cpu_R[dc->dst],
276
t[0], c, size);
277
break;
278
@@ -XXX,XX +XXX,XX @@ static unsigned int dec10_ind(CPUCRISState *env, DisasContext *dc)
279
if (dc->mode == CRISV10_MODE_AUTOINC)
280
insn_len += size;
281
282
- c = tcg_const_tl(dc->pc + insn_len);
283
+ c = tcg_constant_tl(dc->pc + insn_len);
284
t_gen_mov_preg_TN(dc, dc->dst, c);
285
dc->jmp_pc = imm;
286
cris_prepare_jmp(dc, JMP_DIRECT);
287
@@ -XXX,XX +XXX,XX @@ static unsigned int dec10_ind(CPUCRISState *env, DisasContext *dc)
288
LOG_DIS("break %d\n", dc->src);
289
cris_evaluate_flags(dc);
290
tcg_gen_movi_tl(env_pc, dc->pc + 2);
291
- c = tcg_const_tl(dc->src + 2);
292
+ c = tcg_constant_tl(dc->src + 2);
293
t_gen_mov_env_TN(trap_vector, c);
294
t_gen_raise_exception(EXCP_BREAK);
295
dc->base.is_jmp = DISAS_NORETURN;
296
@@ -XXX,XX +XXX,XX @@ static unsigned int dec10_ind(CPUCRISState *env, DisasContext *dc)
297
LOG_DIS("%d: jump.%d %d r%d r%d\n", __LINE__, size,
298
dc->opcode, dc->src, dc->dst);
299
t[0] = tcg_temp_new();
300
- c = tcg_const_tl(dc->pc + insn_len);
301
+ c = tcg_constant_tl(dc->pc + insn_len);
302
t_gen_mov_preg_TN(dc, dc->dst, c);
303
crisv10_prepare_memaddr(dc, t[0], size);
304
gen_load(dc, env_btarget, t[0], 4, 0);
305
@@ -XXX,XX +XXX,XX @@ static unsigned int dec10_ind(CPUCRISState *env, DisasContext *dc)
306
LOG_DIS("jmp pc=%x opcode=%d r%d r%d\n",
307
dc->pc, dc->opcode, dc->dst, dc->src);
308
tcg_gen_mov_tl(env_btarget, cpu_R[dc->src]);
309
- c = tcg_const_tl(dc->pc + insn_len);
310
+ c = tcg_constant_tl(dc->pc + insn_len);
311
t_gen_mov_preg_TN(dc, dc->dst, c);
312
cris_prepare_jmp(dc, JMP_INDIRECT);
313
dc->delayed_branch--; /* v10 has no dslot here. */
314
--
315
2.34.1
316
317
diff view generated by jsdifflib
1
This build option has been deprecated since 8.0.
1
Use a C test instead of a pre-processor test for the id.
2
Remove all CONFIG_GPROF code that depends on that,
2
Use tcg_constant_i64 instead of tcg_const_i64.
3
including one errant check using TARGET_GPROF.
4
3
5
Acked-by: Alex Bennée <alex.bennee@linaro.org>
6
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
4
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>
5
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
9
---
6
---
10
docs/about/deprecated.rst | 14 --------------
7
target/hppa/translate.c | 14 +++++++++-----
11
meson.build | 12 ------------
8
1 file changed, 9 insertions(+), 5 deletions(-)
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
9
21
diff --git a/docs/about/deprecated.rst b/docs/about/deprecated.rst
10
diff --git a/target/hppa/translate.c b/target/hppa/translate.c
22
index XXXXXXX..XXXXXXX 100644
11
index XXXXXXX..XXXXXXX 100644
23
--- a/docs/about/deprecated.rst
12
--- a/target/hppa/translate.c
24
+++ b/docs/about/deprecated.rst
13
+++ b/target/hppa/translate.c
25
@@ -XXX,XX +XXX,XX @@ they were first deprecated in the 2.10.0 release.
14
@@ -XXX,XX +XXX,XX @@ static void gen_fcpy_f(TCGv_i32 dst, TCGv_env unused, TCGv_i32 src)
26
What follows is a list of all features currently marked as
15
27
deprecated.
16
static bool trans_fid_f(DisasContext *ctx, arg_fid_f *a)
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
{
17
{
91
-#ifdef TARGET_GPROF
18
+ uint64_t ret;
92
- _mcleanup();
19
+
20
+ if (TARGET_REGISTER_BITS == 64) {
21
+ ret = 0x13080000000000ULL; /* PA8700 (PCX-W2) */
22
+ } else {
23
+ ret = 0x0f080000000000ULL; /* PA7300LC (PCX-L2) */
24
+ }
25
+
26
nullify_over(ctx);
27
-#if TARGET_REGISTER_BITS == 64
28
- save_frd(0, tcg_const_i64(0x13080000000000ULL)); /* PA8700 (PCX-W2) */
29
-#else
30
- save_frd(0, tcg_const_i64(0x0f080000000000ULL)); /* PA7300LC (PCX-L2) */
93
-#endif
31
-#endif
94
gdb_exit(arg1);
32
+ save_frd(0, tcg_constant_i64(ret));
95
qemu_plugin_user_exit();
33
return nullify_end(ctx);
96
_exit(arg1);
34
}
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
35
198
--
36
--
199
2.34.1
37
2.34.1
200
38
201
39
diff view generated by jsdifflib
New patch
1
All uses were read-write, so replace with a new
2
allocation and initialization.
1
3
4
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
5
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6
---
7
target/hppa/translate.c | 21 +++++++++++----------
8
1 file changed, 11 insertions(+), 10 deletions(-)
9
10
diff --git a/target/hppa/translate.c b/target/hppa/translate.c
11
index XXXXXXX..XXXXXXX 100644
12
--- a/target/hppa/translate.c
13
+++ b/target/hppa/translate.c
14
@@ -XXX,XX +XXX,XX @@
15
#define tcg_gen_extract_reg tcg_gen_extract_i64
16
#define tcg_gen_sextract_reg tcg_gen_sextract_i64
17
#define tcg_gen_extract2_reg tcg_gen_extract2_i64
18
-#define tcg_const_reg tcg_const_i64
19
-#define tcg_const_local_reg tcg_const_local_i64
20
#define tcg_constant_reg tcg_constant_i64
21
#define tcg_gen_movcond_reg tcg_gen_movcond_i64
22
#define tcg_gen_add2_reg tcg_gen_add2_i64
23
@@ -XXX,XX +XXX,XX @@
24
#define tcg_gen_extract_reg tcg_gen_extract_i32
25
#define tcg_gen_sextract_reg tcg_gen_sextract_i32
26
#define tcg_gen_extract2_reg tcg_gen_extract2_i32
27
-#define tcg_const_reg tcg_const_i32
28
-#define tcg_const_local_reg tcg_const_local_i32
29
#define tcg_constant_reg tcg_constant_i32
30
#define tcg_gen_movcond_reg tcg_gen_movcond_i32
31
#define tcg_gen_add2_reg tcg_gen_add2_i32
32
@@ -XXX,XX +XXX,XX @@ static TCGv_i32 load_frw_i32(unsigned rt)
33
static TCGv_i32 load_frw0_i32(unsigned rt)
34
{
35
if (rt == 0) {
36
- return tcg_const_i32(0);
37
+ TCGv_i32 ret = tcg_temp_new_i32();
38
+ tcg_gen_movi_i32(ret, 0);
39
+ return ret;
40
} else {
41
return load_frw_i32(rt);
42
}
43
@@ -XXX,XX +XXX,XX @@ static TCGv_i32 load_frw0_i32(unsigned rt)
44
45
static TCGv_i64 load_frw0_i64(unsigned rt)
46
{
47
+ TCGv_i64 ret = tcg_temp_new_i64();
48
if (rt == 0) {
49
- return tcg_const_i64(0);
50
+ tcg_gen_movi_i64(ret, 0);
51
} else {
52
- TCGv_i64 ret = tcg_temp_new_i64();
53
tcg_gen_ld32u_i64(ret, cpu_env,
54
offsetof(CPUHPPAState, fr[rt & 31])
55
+ (rt & 32 ? LO_OFS : HI_OFS));
56
- return ret;
57
}
58
+ return ret;
59
}
60
61
static void save_frw_i32(unsigned rt, TCGv_i32 val)
62
@@ -XXX,XX +XXX,XX @@ static TCGv_i64 load_frd(unsigned rt)
63
static TCGv_i64 load_frd0(unsigned rt)
64
{
65
if (rt == 0) {
66
- return tcg_const_i64(0);
67
+ TCGv_i64 ret = tcg_temp_new_i64();
68
+ tcg_gen_movi_i64(ret, 0);
69
+ return ret;
70
} else {
71
return load_frd(rt);
72
}
73
@@ -XXX,XX +XXX,XX @@ static bool do_depw_sar(DisasContext *ctx, unsigned rt, unsigned c,
74
/* Convert big-endian bit numbering in SAR to left-shift. */
75
tcg_gen_xori_reg(shift, cpu_sar, TARGET_REGISTER_BITS - 1);
76
77
- mask = tcg_const_reg(msb + (msb - 1));
78
+ mask = tcg_temp_new();
79
+ tcg_gen_movi_reg(mask, msb + (msb - 1));
80
tcg_gen_and_reg(tmp, val, mask);
81
if (rs) {
82
tcg_gen_shl_reg(mask, mask, shift);
83
--
84
2.34.1
85
86
diff view generated by jsdifflib
1
Allow the name 'cpu_env' to be used for something else.
1
All uses are strictly read-only. Most of the obviously so,
2
as direct arguments to gen_helper_*.
2
3
3
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
4
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
4
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
5
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
5
---
6
---
6
include/tcg/tcg.h | 2 +-
7
target/i386/tcg/translate.c | 83 +++++++++++++++++++------------------
7
target/arm/tcg/translate-a32.h | 2 +-
8
1 file changed, 42 insertions(+), 41 deletions(-)
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
9
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
10
diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c
6083
index XXXXXXX..XXXXXXX 100644
11
index XXXXXXX..XXXXXXX 100644
6084
--- a/target/i386/tcg/translate.c
12
--- a/target/i386/tcg/translate.c
6085
+++ b/target/i386/tcg/translate.c
13
+++ b/target/i386/tcg/translate.c
6086
@@ -XXX,XX +XXX,XX @@ static inline void gen_string_movl_A0_EDI(DisasContext *s)
14
@@ -XXX,XX +XXX,XX @@ static void gen_compute_eflags(DisasContext *s)
6087
15
live = cc_op_live[s->cc_op] & ~USES_CC_SRCT;
6088
static inline void gen_op_movl_T0_Dshift(DisasContext *s, MemOp ot)
16
dead = live ^ (USES_CC_DST | USES_CC_SRC | USES_CC_SRC2);
17
if (dead) {
18
- zero = tcg_const_tl(0);
19
+ zero = tcg_constant_tl(0);
20
if (dead & USES_CC_DST) {
21
dst = zero;
22
}
23
@@ -XXX,XX +XXX,XX @@ static void gen_helper_fp_arith_ST0_FT0(int op)
24
/* NOTE the exception in "r" op ordering */
25
static void gen_helper_fp_arith_STN_ST0(int op, int opreg)
6089
{
26
{
6090
- tcg_gen_ld32s_tl(s->T0, cpu_env, offsetof(CPUX86State, df));
27
- TCGv_i32 tmp = tcg_const_i32(opreg);
6091
+ tcg_gen_ld32s_tl(s->T0, tcg_env, offsetof(CPUX86State, df));
28
+ TCGv_i32 tmp = tcg_constant_i32(opreg);
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) {
29
switch (op) {
6159
case 0:
30
case 0:
6160
- gen_helper_fadd_ST0_FT0(cpu_env);
31
gen_helper_fadd_STN_ST0(cpu_env, tmp);
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)
32
@@ -XXX,XX +XXX,XX @@ static void gen_exception(DisasContext *s, int trapno)
6223
{
33
{
6224
gen_update_cc_op(s);
34
gen_update_cc_op(s);
6225
gen_update_eip_cur(s);
35
gen_update_eip_cur(s);
6226
- gen_helper_raise_exception(cpu_env, tcg_constant_i32(trapno));
36
- gen_helper_raise_exception(cpu_env, tcg_const_i32(trapno));
6227
+ gen_helper_raise_exception(tcg_env, tcg_constant_i32(trapno));
37
+ gen_helper_raise_exception(cpu_env, tcg_constant_i32(trapno));
6228
s->base.is_jmp = DISAS_NORETURN;
38
s->base.is_jmp = DISAS_NORETURN;
6229
}
39
}
6230
40
6231
@@ -XXX,XX +XXX,XX @@ static void gen_rotc_rm_T1(DisasContext *s, MemOp ot, int op1,
41
@@ -XXX,XX +XXX,XX @@ static void gen_shift_flags(DisasContext *s, MemOp ot, TCGv result,
6232
if (is_right) {
42
/* Store the results into the CC variables. If we know that the
6233
switch (ot) {
43
variable must be dead, store unconditionally. Otherwise we'll
6234
case MO_8:
44
need to not disrupt the current contents. */
6235
- gen_helper_rcrb(s->T0, cpu_env, s->T0, s->T1);
45
- z_tl = tcg_const_tl(0);
6236
+ gen_helper_rcrb(s->T0, tcg_env, s->T0, s->T1);
46
+ z_tl = tcg_constant_tl(0);
6237
break;
47
if (cc_op_live[s->cc_op] & USES_CC_DST) {
6238
case MO_16:
48
tcg_gen_movcond_tl(TCG_COND_NE, cpu_cc_dst, count, z_tl,
6239
- gen_helper_rcrw(s->T0, cpu_env, s->T0, s->T1);
49
result, cpu_cc_dst);
6240
+ gen_helper_rcrw(s->T0, tcg_env, s->T0, s->T1);
50
@@ -XXX,XX +XXX,XX @@ static void gen_shift_flags(DisasContext *s, MemOp ot, TCGv result,
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
}
51
}
6277
tcg_gen_setcond_i64(cond, s->tmp1_i64, s->tmp1_i64, bndv);
52
6278
tcg_gen_extrl_i64_i32(s->tmp2_i32, s->tmp1_i64);
53
/* Conditionally store the CC_OP value. */
6279
- gen_helper_bndck(cpu_env, s->tmp2_i32);
54
- z32 = tcg_const_i32(0);
6280
+ gen_helper_bndck(tcg_env, s->tmp2_i32);
55
+ z32 = tcg_constant_i32(0);
6281
}
56
s32 = tcg_temp_new_i32();
6282
57
tcg_gen_trunc_tl_i32(s32, count);
6283
/* used for LEA and MOV AX, mem */
58
tcg_gen_movcond_i32(TCG_COND_NE, cpu_cc_op, s32, z32, s->tmp2_i32, oldop);
59
@@ -XXX,XX +XXX,XX @@ static void gen_rot_rm_T1(DisasContext *s, MemOp ot, int op1, int is_right)
60
is 0 we keep the CC_OP_EFLAGS setting so that only CC_SRC is live.
61
Otherwise reuse CC_OP_ADCOX which have the C and O flags split out
62
exactly as we computed above. */
63
- t0 = tcg_const_i32(0);
64
+ t0 = tcg_constant_i32(0);
65
t1 = tcg_temp_new_i32();
66
tcg_gen_trunc_tl_i32(t1, s->T1);
67
tcg_gen_movi_i32(s->tmp2_i32, CC_OP_ADCOX);
6284
@@ -XXX,XX +XXX,XX @@ static void gen_cmovcc1(CPUX86State *env, DisasContext *s, MemOp ot, int b,
68
@@ -XXX,XX +XXX,XX @@ static void gen_cmovcc1(CPUX86State *env, DisasContext *s, MemOp ot, int b,
6285
69
cc.reg = t0;
6286
static inline void gen_op_movl_T0_seg(DisasContext *s, X86Seg seg_reg)
70
}
6287
{
71
if (!cc.use_reg2) {
6288
- tcg_gen_ld32u_tl(s->T0, cpu_env,
72
- cc.reg2 = tcg_const_tl(cc.imm);
6289
+ tcg_gen_ld32u_tl(s->T0, tcg_env,
73
+ cc.reg2 = tcg_constant_tl(cc.imm);
6290
offsetof(CPUX86State,segs[seg_reg].selector));
74
}
6291
}
75
6292
76
tcg_gen_movcond_tl(cc.cond, s->T0, cc.reg, cc.reg2,
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)
77
@@ -XXX,XX +XXX,XX @@ static void gen_movl_seg_T0(DisasContext *s, X86Seg seg_reg)
6302
{
78
{
6303
if (PE(s) && !VM86(s)) {
79
if (PE(s) && !VM86(s)) {
6304
tcg_gen_trunc_tl_i32(s->tmp2_i32, s->T0);
80
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);
81
- gen_helper_load_seg(cpu_env, tcg_const_i32(seg_reg), s->tmp2_i32);
6306
+ gen_helper_load_seg(tcg_env, tcg_constant_i32(seg_reg), s->tmp2_i32);
82
+ gen_helper_load_seg(cpu_env, tcg_constant_i32(seg_reg), s->tmp2_i32);
6307
/* abort translation because the addseg value may change or
83
/* abort translation because the addseg value may change or
6308
because ss32 may change. For R_SS, translation must always
84
because ss32 may change. For R_SS, translation must always
6309
stop as a special handling must be done to disable hardware
85
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)
86
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
6311
if (likely(!GUEST(s))) {
87
gen_op_mov_v_reg(s, ot, s->T1, reg);
6312
return;
88
6313
}
89
if (shift) {
6314
- gen_helper_svm_check_intercept(cpu_env, tcg_constant_i32(type));
90
- TCGv imm = tcg_const_tl(x86_ldub_code(env, s));
6315
+ gen_helper_svm_check_intercept(tcg_env, tcg_constant_i32(type));
91
+ TCGv imm = tcg_constant_tl(x86_ldub_code(env, s));
6316
}
92
gen_shiftd_rm_T1(s, ot, opreg, op, imm);
6317
93
} else {
6318
static inline void gen_stack_update(DisasContext *s, int addend)
94
gen_shiftd_rm_T1(s, ot, opreg, op, cpu_regs[R_ECX]);
6319
@@ -XXX,XX +XXX,XX @@ static void gen_interrupt(DisasContext *s, int intno)
95
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
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;
96
break;
6693
case 0x0c: /* fldenv mem */
97
case 0x0c: /* fldenv mem */
6694
- gen_helper_fldenv(cpu_env, s->A0,
98
gen_helper_fldenv(cpu_env, s->A0,
6695
+ gen_helper_fldenv(tcg_env, s->A0,
99
- tcg_const_i32(dflag - 1));
6696
tcg_constant_i32(dflag - 1));
100
+ tcg_constant_i32(dflag - 1));
6697
update_fip = update_fdp = false;
101
update_fip = update_fdp = false;
6698
break;
102
break;
6699
case 0x0d: /* fldcw mem */
103
case 0x0d: /* fldcw mem */
6700
tcg_gen_qemu_ld_i32(s->tmp2_i32, s->A0,
104
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
6701
s->mem_index, MO_LEUW);
105
break;
6702
- gen_helper_fldcw(cpu_env, s->tmp2_i32);
106
case 0x0e: /* fnstenv mem */
6703
+ gen_helper_fldcw(tcg_env, s->tmp2_i32);
107
gen_helper_fstenv(cpu_env, s->A0,
108
- tcg_const_i32(dflag - 1));
109
+ tcg_constant_i32(dflag - 1));
6704
update_fip = update_fdp = false;
110
update_fip = update_fdp = false;
6705
break;
111
break;
6706
case 0x0e: /* fnstenv mem */
112
case 0x0f: /* fnstcw mem */
6707
- gen_helper_fstenv(cpu_env, s->A0,
113
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
6708
+ gen_helper_fstenv(tcg_env, s->A0,
114
break;
6709
tcg_constant_i32(dflag - 1));
115
case 0x2c: /* frstor mem */
116
gen_helper_frstor(cpu_env, s->A0,
117
- tcg_const_i32(dflag - 1));
118
+ tcg_constant_i32(dflag - 1));
6710
update_fip = update_fdp = false;
119
update_fip = update_fdp = false;
6711
break;
120
break;
6712
case 0x0f: /* fnstcw mem */
121
case 0x2e: /* fnsave mem */
6713
- gen_helper_fnstcw(s->tmp2_i32, cpu_env);
122
gen_helper_fsave(cpu_env, s->A0,
6714
+ gen_helper_fnstcw(s->tmp2_i32, tcg_env);
123
- tcg_const_i32(dflag - 1));
6715
tcg_gen_qemu_st_i32(s->tmp2_i32, s->A0,
124
+ tcg_constant_i32(dflag - 1));
6716
s->mem_index, MO_LEUW);
6717
update_fip = update_fdp = false;
125
update_fip = update_fdp = false;
6718
break;
126
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 */
127
case 0x2f: /* fnstsw mem */
6742
- gen_helper_fnstsw(s->tmp2_i32, cpu_env);
128
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
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 */
129
case 0x08: /* fld sti */
6794
- gen_helper_fpush(cpu_env);
130
gen_helper_fpush(cpu_env);
6795
- gen_helper_fmov_ST0_STN(cpu_env,
131
gen_helper_fmov_ST0_STN(cpu_env,
6796
+ gen_helper_fpush(tcg_env);
132
- tcg_const_i32((opreg + 1) & 7));
6797
+ gen_helper_fmov_ST0_STN(tcg_env,
133
+ tcg_constant_i32((opreg + 1) & 7));
6798
tcg_constant_i32((opreg + 1) & 7));
6799
break;
134
break;
6800
case 0x09: /* fxchg sti */
135
case 0x09: /* fxchg sti */
6801
case 0x29: /* fxchg4 sti, undocumented op */
136
case 0x29: /* fxchg4 sti, undocumented op */
6802
case 0x39: /* fxchg7 sti, undocumented op */
137
case 0x39: /* fxchg7 sti, undocumented op */
6803
- gen_helper_fxchg_ST0_STN(cpu_env, tcg_constant_i32(opreg));
138
- gen_helper_fxchg_ST0_STN(cpu_env, tcg_const_i32(opreg));
6804
+ gen_helper_fxchg_ST0_STN(tcg_env, tcg_constant_i32(opreg));
139
+ gen_helper_fxchg_ST0_STN(cpu_env, tcg_constant_i32(opreg));
6805
break;
140
break;
6806
case 0x0a: /* grp d9/2 */
141
case 0x0a: /* grp d9/2 */
6807
switch (rm) {
142
switch (rm) {
6808
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
143
@@ -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
}
144
}
6969
} else {
145
} else {
6970
- gen_helper_fmov_FT0_STN(cpu_env,
146
gen_helper_fmov_FT0_STN(cpu_env,
6971
+ gen_helper_fmov_FT0_STN(tcg_env,
147
- tcg_const_i32(opreg));
6972
tcg_constant_i32(opreg));
148
+ tcg_constant_i32(opreg));
6973
gen_helper_fp_arith_ST0_FT0(op1);
149
gen_helper_fp_arith_ST0_FT0(op1);
6974
}
150
}
6975
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
151
}
6976
break;
152
break;
6977
case 0x02: /* fcom */
153
case 0x02: /* fcom */
6978
case 0x22: /* fcom2, undocumented op */
154
case 0x22: /* fcom2, undocumented op */
6979
- gen_helper_fmov_FT0_STN(cpu_env, tcg_constant_i32(opreg));
155
- gen_helper_fmov_FT0_STN(cpu_env, tcg_const_i32(opreg));
6980
- gen_helper_fcom_ST0_FT0(cpu_env);
156
+ gen_helper_fmov_FT0_STN(cpu_env, tcg_constant_i32(opreg));
6981
+ gen_helper_fmov_FT0_STN(tcg_env, tcg_constant_i32(opreg));
157
gen_helper_fcom_ST0_FT0(cpu_env);
6982
+ gen_helper_fcom_ST0_FT0(tcg_env);
6983
break;
158
break;
6984
case 0x03: /* fcomp */
159
case 0x03: /* fcomp */
6985
case 0x23: /* fcomp3, undocumented op */
160
case 0x23: /* fcomp3, undocumented op */
6986
case 0x32: /* fcomp5, undocumented op */
161
case 0x32: /* fcomp5, undocumented op */
6987
- gen_helper_fmov_FT0_STN(cpu_env, tcg_constant_i32(opreg));
162
- gen_helper_fmov_FT0_STN(cpu_env, tcg_const_i32(opreg));
6988
- gen_helper_fcom_ST0_FT0(cpu_env);
163
+ gen_helper_fmov_FT0_STN(cpu_env, tcg_constant_i32(opreg));
6989
- gen_helper_fpop(cpu_env);
164
gen_helper_fcom_ST0_FT0(cpu_env);
6990
+ gen_helper_fmov_FT0_STN(tcg_env, tcg_constant_i32(opreg));
165
gen_helper_fpop(cpu_env);
6991
+ gen_helper_fcom_ST0_FT0(tcg_env);
6992
+ gen_helper_fpop(tcg_env);
6993
break;
166
break;
6994
case 0x15: /* da/5 */
167
case 0x15: /* da/5 */
6995
switch (rm) {
168
switch (rm) {
6996
case 1: /* fucompp */
169
case 1: /* fucompp */
6997
- gen_helper_fmov_FT0_STN(cpu_env, tcg_constant_i32(1));
170
- gen_helper_fmov_FT0_STN(cpu_env, tcg_const_i32(1));
6998
- gen_helper_fucom_ST0_FT0(cpu_env);
171
+ gen_helper_fmov_FT0_STN(cpu_env, tcg_constant_i32(1));
6999
- gen_helper_fpop(cpu_env);
172
gen_helper_fucom_ST0_FT0(cpu_env);
7000
- gen_helper_fpop(cpu_env);
173
gen_helper_fpop(cpu_env);
7001
+ gen_helper_fmov_FT0_STN(tcg_env, tcg_constant_i32(1));
174
gen_helper_fpop(cpu_env);
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)
175
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
7023
goto illegal_op;
176
goto illegal_op;
7024
}
177
}
7025
gen_update_cc_op(s);
178
gen_update_cc_op(s);
7026
- gen_helper_fmov_FT0_STN(cpu_env, tcg_constant_i32(opreg));
179
- gen_helper_fmov_FT0_STN(cpu_env, tcg_const_i32(opreg));
7027
- gen_helper_fucomi_ST0_FT0(cpu_env);
180
+ gen_helper_fmov_FT0_STN(cpu_env, tcg_constant_i32(opreg));
7028
+ gen_helper_fmov_FT0_STN(tcg_env, tcg_constant_i32(opreg));
181
gen_helper_fucomi_ST0_FT0(cpu_env);
7029
+ gen_helper_fucomi_ST0_FT0(tcg_env);
7030
set_cc_op(s, CC_OP_EFLAGS);
182
set_cc_op(s, CC_OP_EFLAGS);
7031
break;
183
break;
7032
case 0x1e: /* fcomi */
7033
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
184
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
7034
goto illegal_op;
185
goto illegal_op;
7035
}
186
}
7036
gen_update_cc_op(s);
187
gen_update_cc_op(s);
7037
- gen_helper_fmov_FT0_STN(cpu_env, tcg_constant_i32(opreg));
188
- gen_helper_fmov_FT0_STN(cpu_env, tcg_const_i32(opreg));
7038
- gen_helper_fcomi_ST0_FT0(cpu_env);
189
+ gen_helper_fmov_FT0_STN(cpu_env, tcg_constant_i32(opreg));
7039
+ gen_helper_fmov_FT0_STN(tcg_env, tcg_constant_i32(opreg));
190
gen_helper_fcomi_ST0_FT0(cpu_env);
7040
+ gen_helper_fcomi_ST0_FT0(tcg_env);
7041
set_cc_op(s, CC_OP_EFLAGS);
191
set_cc_op(s, CC_OP_EFLAGS);
7042
break;
192
break;
7043
case 0x28: /* ffree sti */
193
case 0x28: /* ffree sti */
7044
- gen_helper_ffree_STN(cpu_env, tcg_constant_i32(opreg));
194
- gen_helper_ffree_STN(cpu_env, tcg_const_i32(opreg));
7045
+ gen_helper_ffree_STN(tcg_env, tcg_constant_i32(opreg));
195
+ gen_helper_ffree_STN(cpu_env, tcg_constant_i32(opreg));
7046
break;
196
break;
7047
case 0x2a: /* fst sti */
197
case 0x2a: /* fst sti */
7048
- gen_helper_fmov_STN_ST0(cpu_env, tcg_constant_i32(opreg));
198
- gen_helper_fmov_STN_ST0(cpu_env, tcg_const_i32(opreg));
7049
+ gen_helper_fmov_STN_ST0(tcg_env, tcg_constant_i32(opreg));
199
+ gen_helper_fmov_STN_ST0(cpu_env, tcg_constant_i32(opreg));
7050
break;
200
break;
7051
case 0x2b: /* fstp sti */
201
case 0x2b: /* fstp sti */
7052
case 0x0b: /* fstp1 sti, undocumented op */
202
case 0x0b: /* fstp1 sti, undocumented op */
7053
case 0x3a: /* fstp8 sti, undocumented op */
203
case 0x3a: /* fstp8 sti, undocumented op */
7054
case 0x3b: /* fstp9 sti, undocumented op */
204
case 0x3b: /* fstp9 sti, undocumented op */
7055
- gen_helper_fmov_STN_ST0(cpu_env, tcg_constant_i32(opreg));
205
- gen_helper_fmov_STN_ST0(cpu_env, tcg_const_i32(opreg));
7056
- gen_helper_fpop(cpu_env);
206
+ gen_helper_fmov_STN_ST0(cpu_env, tcg_constant_i32(opreg));
7057
+ gen_helper_fmov_STN_ST0(tcg_env, tcg_constant_i32(opreg));
207
gen_helper_fpop(cpu_env);
7058
+ gen_helper_fpop(tcg_env);
7059
break;
208
break;
7060
case 0x2c: /* fucom st(i) */
209
case 0x2c: /* fucom st(i) */
7061
- gen_helper_fmov_FT0_STN(cpu_env, tcg_constant_i32(opreg));
210
- gen_helper_fmov_FT0_STN(cpu_env, tcg_const_i32(opreg));
7062
- gen_helper_fucom_ST0_FT0(cpu_env);
211
+ gen_helper_fmov_FT0_STN(cpu_env, tcg_constant_i32(opreg));
7063
+ gen_helper_fmov_FT0_STN(tcg_env, tcg_constant_i32(opreg));
212
gen_helper_fucom_ST0_FT0(cpu_env);
7064
+ gen_helper_fucom_ST0_FT0(tcg_env);
7065
break;
213
break;
7066
case 0x2d: /* fucomp st(i) */
214
case 0x2d: /* fucomp st(i) */
7067
- gen_helper_fmov_FT0_STN(cpu_env, tcg_constant_i32(opreg));
215
- gen_helper_fmov_FT0_STN(cpu_env, tcg_const_i32(opreg));
7068
- gen_helper_fucom_ST0_FT0(cpu_env);
216
+ gen_helper_fmov_FT0_STN(cpu_env, tcg_constant_i32(opreg));
7069
- gen_helper_fpop(cpu_env);
217
gen_helper_fucom_ST0_FT0(cpu_env);
7070
+ gen_helper_fmov_FT0_STN(tcg_env, tcg_constant_i32(opreg));
218
gen_helper_fpop(cpu_env);
7071
+ gen_helper_fucom_ST0_FT0(tcg_env);
7072
+ gen_helper_fpop(tcg_env);
7073
break;
219
break;
7074
case 0x33: /* de/3 */
220
case 0x33: /* de/3 */
7075
switch (rm) {
221
switch (rm) {
7076
case 1: /* fcompp */
222
case 1: /* fcompp */
7077
- gen_helper_fmov_FT0_STN(cpu_env, tcg_constant_i32(1));
223
- gen_helper_fmov_FT0_STN(cpu_env, tcg_const_i32(1));
7078
- gen_helper_fcom_ST0_FT0(cpu_env);
224
+ gen_helper_fmov_FT0_STN(cpu_env, tcg_constant_i32(1));
7079
- gen_helper_fpop(cpu_env);
225
gen_helper_fcom_ST0_FT0(cpu_env);
7080
- gen_helper_fpop(cpu_env);
226
gen_helper_fpop(cpu_env);
7081
+ gen_helper_fmov_FT0_STN(tcg_env, tcg_constant_i32(1));
227
gen_helper_fpop(cpu_env);
7082
+ gen_helper_fcom_ST0_FT0(tcg_env);
228
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
7083
+ gen_helper_fpop(tcg_env);
7084
+ gen_helper_fpop(tcg_env);
7085
break;
7086
default:
7087
goto unknown_op;
7088
}
229
}
7089
break;
230
break;
7090
case 0x38: /* ffreep sti, undocumented op */
231
case 0x38: /* ffreep sti, undocumented op */
7091
- gen_helper_ffree_STN(cpu_env, tcg_constant_i32(opreg));
232
- gen_helper_ffree_STN(cpu_env, tcg_const_i32(opreg));
7092
- gen_helper_fpop(cpu_env);
233
+ gen_helper_ffree_STN(cpu_env, tcg_constant_i32(opreg));
7093
+ gen_helper_ffree_STN(tcg_env, tcg_constant_i32(opreg));
234
gen_helper_fpop(cpu_env);
7094
+ gen_helper_fpop(tcg_env);
7095
break;
235
break;
7096
case 0x3c: /* df/4 */
236
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)
237
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
7105
goto illegal_op;
238
goto illegal_op;
7106
}
239
}
7107
gen_update_cc_op(s);
240
gen_update_cc_op(s);
7108
- gen_helper_fmov_FT0_STN(cpu_env, tcg_constant_i32(opreg));
241
- gen_helper_fmov_FT0_STN(cpu_env, tcg_const_i32(opreg));
7109
- gen_helper_fucomi_ST0_FT0(cpu_env);
242
+ gen_helper_fmov_FT0_STN(cpu_env, tcg_constant_i32(opreg));
7110
- gen_helper_fpop(cpu_env);
243
gen_helper_fucomi_ST0_FT0(cpu_env);
7111
+ gen_helper_fmov_FT0_STN(tcg_env, tcg_constant_i32(opreg));
244
gen_helper_fpop(cpu_env);
7112
+ gen_helper_fucomi_ST0_FT0(tcg_env);
7113
+ gen_helper_fpop(tcg_env);
7114
set_cc_op(s, CC_OP_EFLAGS);
245
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)
246
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
7118
goto illegal_op;
247
goto illegal_op;
7119
}
248
}
7120
gen_update_cc_op(s);
249
gen_update_cc_op(s);
7121
- gen_helper_fmov_FT0_STN(cpu_env, tcg_constant_i32(opreg));
250
- gen_helper_fmov_FT0_STN(cpu_env, tcg_const_i32(opreg));
7122
- gen_helper_fcomi_ST0_FT0(cpu_env);
251
+ gen_helper_fmov_FT0_STN(cpu_env, tcg_constant_i32(opreg));
7123
- gen_helper_fpop(cpu_env);
252
gen_helper_fcomi_ST0_FT0(cpu_env);
7124
+ gen_helper_fmov_FT0_STN(tcg_env, tcg_constant_i32(opreg));
253
gen_helper_fpop(cpu_env);
7125
+ gen_helper_fcomi_ST0_FT0(tcg_env);
7126
+ gen_helper_fpop(tcg_env);
7127
set_cc_op(s, CC_OP_EFLAGS);
254
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)
255
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
7131
op1 = fcmov_cc[op & 3] | (((op >> 3) & 1) ^ 1);
256
op1 = fcmov_cc[op & 3] | (((op >> 3) & 1) ^ 1);
7132
l1 = gen_new_label();
257
l1 = gen_new_label();
7133
gen_jcc1_noeob(s, op1, l1);
258
gen_jcc1_noeob(s, op1, l1);
7134
- gen_helper_fmov_ST0_STN(cpu_env,
259
- gen_helper_fmov_ST0_STN(cpu_env, tcg_const_i32(opreg));
7135
+ gen_helper_fmov_ST0_STN(tcg_env,
260
+ gen_helper_fmov_ST0_STN(cpu_env,
7136
tcg_constant_i32(opreg));
261
+ tcg_constant_i32(opreg));
7137
gen_set_label(l1);
262
gen_set_label(l1);
7138
}
263
}
7139
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
264
break;
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)
265
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
7156
if (PE(s) && !VM86(s)) {
266
if (PE(s) && !VM86(s)) {
7157
gen_update_cc_op(s);
267
gen_update_cc_op(s);
7158
gen_update_eip_cur(s);
268
gen_update_eip_cur(s);
7159
- gen_helper_lret_protected(cpu_env, tcg_constant_i32(dflag - 1),
269
- gen_helper_lret_protected(cpu_env, tcg_const_i32(dflag - 1),
7160
+ gen_helper_lret_protected(tcg_env, tcg_constant_i32(dflag - 1),
270
- tcg_const_i32(val));
7161
tcg_constant_i32(val));
271
+ gen_helper_lret_protected(cpu_env, tcg_constant_i32(dflag - 1),
272
+ tcg_constant_i32(val));
7162
} else {
273
} else {
7163
gen_stack_A0(s);
274
gen_stack_A0(s);
275
/* pop offset */
7164
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
276
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
7165
if (!check_vm86_iopl(s)) {
277
if (!check_vm86_iopl(s)) {
7166
break;
278
break;
7167
}
279
}
7168
- gen_helper_iret_real(cpu_env, tcg_constant_i32(dflag - 1));
280
- gen_helper_iret_real(cpu_env, tcg_const_i32(dflag - 1));
7169
+ gen_helper_iret_real(tcg_env, tcg_constant_i32(dflag - 1));
281
+ gen_helper_iret_real(cpu_env, tcg_constant_i32(dflag - 1));
7170
} else {
282
} else {
7171
- gen_helper_iret_protected(cpu_env, tcg_constant_i32(dflag - 1),
283
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));
284
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)
285
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
7242
if (val == 0) {
286
if (val == 0) {
7243
gen_exception(s, EXCP00_DIVZ);
287
gen_exception(s, EXCP00_DIVZ);
7244
} else {
288
} else {
7245
- gen_helper_aam(cpu_env, tcg_constant_i32(val));
289
- gen_helper_aam(cpu_env, tcg_const_i32(val));
7246
+ gen_helper_aam(tcg_env, tcg_constant_i32(val));
290
+ gen_helper_aam(cpu_env, tcg_constant_i32(val));
7247
set_cc_op(s, CC_OP_LOGICB);
291
set_cc_op(s, CC_OP_LOGICB);
7248
}
292
}
7249
break;
293
break;
7250
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
294
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
7251
if (CODE64(s))
295
if (CODE64(s))
7252
goto illegal_op;
296
goto illegal_op;
7253
val = x86_ldub_code(env, s);
297
val = x86_ldub_code(env, s);
7254
- gen_helper_aad(cpu_env, tcg_constant_i32(val));
298
- gen_helper_aad(cpu_env, tcg_const_i32(val));
7255
+ gen_helper_aad(tcg_env, tcg_constant_i32(val));
299
+ gen_helper_aad(cpu_env, tcg_constant_i32(val));
7256
set_cc_op(s, CC_OP_LOGICB);
300
set_cc_op(s, CC_OP_LOGICB);
7257
break;
301
break;
7258
/************************/
302
/************************/
7259
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
303
@@ -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)) {
304
if (!PE(s)) {
7327
gen_exception_gpf(s);
305
gen_exception_gpf(s);
7328
} else {
306
} else {
7329
- gen_helper_sysenter(cpu_env);
307
- gen_helper_sysexit(cpu_env, tcg_const_i32(dflag - 1));
7330
+ gen_helper_sysenter(tcg_env);
308
+ gen_helper_sysexit(cpu_env, tcg_constant_i32(dflag - 1));
7331
s->base.is_jmp = DISAS_EOB_ONLY;
309
s->base.is_jmp = DISAS_EOB_ONLY;
7332
}
310
}
7333
break;
311
break;
7334
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
312
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
7335
if (!PE(s) || CPL(s) != 0) {
313
if (!PE(s)) {
7336
gen_exception_gpf(s);
314
gen_exception_gpf(s);
7337
} else {
315
} else {
7338
- gen_helper_sysexit(cpu_env, tcg_constant_i32(dflag - 1));
316
- gen_helper_sysret(cpu_env, tcg_const_i32(dflag - 1));
7339
+ gen_helper_sysexit(tcg_env, tcg_constant_i32(dflag - 1));
317
+ gen_helper_sysret(cpu_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 */
318
/* condition codes are modified only in long mode */
7359
if (LMA(s)) {
319
if (LMA(s)) {
7360
set_cc_op(s, CC_OP_EFLAGS);
320
set_cc_op(s, CC_OP_EFLAGS);
7361
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
321
@@ -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
}
322
}
7449
gen_update_cc_op(s);
323
gen_update_cc_op(s);
7450
gen_update_eip_cur(s);
324
gen_update_eip_cur(s);
7451
- gen_helper_mwait(cpu_env, cur_insn_len_i32(s));
325
- gen_helper_vmrun(cpu_env, tcg_const_i32(s->aflag - 1),
7452
+ gen_helper_mwait(tcg_env, cur_insn_len_i32(s));
326
+ gen_helper_vmrun(cpu_env, tcg_constant_i32(s->aflag - 1),
327
cur_insn_len_i32(s));
328
tcg_gen_exit_tb(NULL, 0);
7453
s->base.is_jmp = DISAS_NORETURN;
329
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)
330
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
7488
}
331
}
7489
gen_update_cc_op(s);
332
gen_update_cc_op(s);
7490
gen_update_eip_cur(s);
333
gen_update_eip_cur(s);
7491
- gen_helper_vmrun(cpu_env, tcg_constant_i32(s->aflag - 1),
334
- gen_helper_vmload(cpu_env, tcg_const_i32(s->aflag - 1));
7492
+ gen_helper_vmrun(tcg_env, tcg_constant_i32(s->aflag - 1),
335
+ gen_helper_vmload(cpu_env, tcg_constant_i32(s->aflag - 1));
7493
cur_insn_len_i32(s));
336
break;
7494
tcg_gen_exit_tb(NULL, 0);
337
7495
s->base.is_jmp = DISAS_NORETURN;
338
case 0xdb: /* VMSAVE */
7496
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
339
@@ -XXX,XX +XXX,XX @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
7497
}
340
}
7498
gen_update_cc_op(s);
341
gen_update_cc_op(s);
7499
gen_update_eip_cur(s);
342
gen_update_eip_cur(s);
7500
- gen_helper_vmmcall(cpu_env);
343
- gen_helper_vmsave(cpu_env, tcg_const_i32(s->aflag - 1));
7501
+ gen_helper_vmmcall(tcg_env);
344
+ gen_helper_vmsave(cpu_env, tcg_constant_i32(s->aflag - 1));
7502
break;
345
break;
7503
346
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 */
347
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
--
348
--
26977
2.34.1
349
2.34.1
26978
350
26979
351
diff view generated by jsdifflib
New patch
1
In several instances, a temp is initialized with a
2
for use as a constant, and then subsequently used
3
as an unrelated temp. Split them.
1
4
5
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
6
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7
---
8
target/m68k/translate.c | 29 ++++++++++++++++-------------
9
1 file changed, 16 insertions(+), 13 deletions(-)
10
11
diff --git a/target/m68k/translate.c b/target/m68k/translate.c
12
index XXXXXXX..XXXXXXX 100644
13
--- a/target/m68k/translate.c
14
+++ b/target/m68k/translate.c
15
@@ -XXX,XX +XXX,XX @@ static void bcd_add(TCGv dest, TCGv src)
16
* = result with some possible exceeding 0x6
17
*/
18
19
- t0 = tcg_const_i32(0x066);
20
- tcg_gen_add_i32(t0, t0, src);
21
+ t0 = tcg_temp_new();
22
+ tcg_gen_addi_i32(t0, src, 0x066);
23
24
t1 = tcg_temp_new();
25
tcg_gen_add_i32(t1, t0, dest);
26
@@ -XXX,XX +XXX,XX @@ DISAS_INSN(nbcd)
27
28
SRC_EA(env, src, OS_BYTE, 0, &addr);
29
30
- dest = tcg_const_i32(0);
31
+ dest = tcg_temp_new();
32
+ tcg_gen_movi_i32(dest, 0);
33
bcd_sub(dest, src);
34
35
DEST_EA(env, insn, OS_BYTE, dest, &addr);
36
@@ -XXX,XX +XXX,XX @@ DISAS_INSN(bitop_reg)
37
else
38
tcg_gen_andi_i32(src2, DREG(insn, 9), 31);
39
40
- tmp = tcg_const_i32(1);
41
- tcg_gen_shl_i32(tmp, tmp, src2);
42
+ tmp = tcg_temp_new();
43
+ tcg_gen_shl_i32(tmp, tcg_constant_i32(1), src2);
44
45
tcg_gen_and_i32(QREG_CC_Z, src1, tmp);
46
47
@@ -XXX,XX +XXX,XX @@ DISAS_INSN(suba)
48
49
static inline void gen_subx(DisasContext *s, TCGv src, TCGv dest, int opsize)
50
{
51
- TCGv tmp;
52
+ TCGv tmp, zero;
53
54
gen_flush_flags(s); /* compute old Z */
55
56
@@ -XXX,XX +XXX,XX @@ static inline void gen_subx(DisasContext *s, TCGv src, TCGv dest, int opsize)
57
* (X, N) = dest - (src + X);
58
*/
59
60
- tmp = tcg_const_i32(0);
61
- tcg_gen_add2_i32(QREG_CC_N, QREG_CC_X, src, tmp, QREG_CC_X, tmp);
62
- tcg_gen_sub2_i32(QREG_CC_N, QREG_CC_X, dest, tmp, QREG_CC_N, QREG_CC_X);
63
+ zero = tcg_constant_i32(0);
64
+ tcg_gen_add2_i32(QREG_CC_N, QREG_CC_X, src, zero, QREG_CC_X, zero);
65
+ tcg_gen_sub2_i32(QREG_CC_N, QREG_CC_X, dest, zero, QREG_CC_N, QREG_CC_X);
66
gen_ext(QREG_CC_N, QREG_CC_N, opsize, 1);
67
tcg_gen_andi_i32(QREG_CC_X, QREG_CC_X, 1);
68
69
/* Compute signed-overflow for subtract. */
70
71
+ tmp = tcg_temp_new();
72
tcg_gen_xor_i32(QREG_CC_V, QREG_CC_N, dest);
73
tcg_gen_xor_i32(tmp, dest, src);
74
tcg_gen_and_i32(QREG_CC_V, QREG_CC_V, tmp);
75
@@ -XXX,XX +XXX,XX @@ DISAS_INSN(adda)
76
77
static inline void gen_addx(DisasContext *s, TCGv src, TCGv dest, int opsize)
78
{
79
- TCGv tmp;
80
+ TCGv tmp, zero;
81
82
gen_flush_flags(s); /* compute old Z */
83
84
@@ -XXX,XX +XXX,XX @@ static inline void gen_addx(DisasContext *s, TCGv src, TCGv dest, int opsize)
85
* (X, N) = src + dest + X;
86
*/
87
88
- tmp = tcg_const_i32(0);
89
- tcg_gen_add2_i32(QREG_CC_N, QREG_CC_X, QREG_CC_X, tmp, dest, tmp);
90
- tcg_gen_add2_i32(QREG_CC_N, QREG_CC_X, QREG_CC_N, QREG_CC_X, src, tmp);
91
+ zero = tcg_constant_i32(0);
92
+ tcg_gen_add2_i32(QREG_CC_N, QREG_CC_X, QREG_CC_X, zero, dest, zero);
93
+ tcg_gen_add2_i32(QREG_CC_N, QREG_CC_X, QREG_CC_N, QREG_CC_X, src, zero);
94
gen_ext(QREG_CC_N, QREG_CC_N, opsize, 1);
95
96
/* Compute signed-overflow for addition. */
97
98
+ tmp = tcg_temp_new();
99
tcg_gen_xor_i32(QREG_CC_V, QREG_CC_N, src);
100
tcg_gen_xor_i32(tmp, dest, src);
101
tcg_gen_andc_i32(QREG_CC_V, QREG_CC_V, tmp);
102
--
103
2.34.1
104
105
diff view generated by jsdifflib
New patch
1
Tidy up the whole function, hoisting is_bfffo as a common test
2
for whether tlen and tofs needed. Use tcg_constant_i32, and load
3
a separate temporary for mask.
1
4
5
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
6
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7
---
8
target/m68k/translate.c | 42 ++++++++++++++++++++---------------------
9
1 file changed, 20 insertions(+), 22 deletions(-)
10
11
diff --git a/target/m68k/translate.c b/target/m68k/translate.c
12
index XXXXXXX..XXXXXXX 100644
13
--- a/target/m68k/translate.c
14
+++ b/target/m68k/translate.c
15
@@ -XXX,XX +XXX,XX @@ DISAS_INSN(bfop_reg)
16
TCGv src = DREG(insn, 0);
17
int len = ((extract32(ext, 0, 5) - 1) & 31) + 1;
18
int ofs = extract32(ext, 6, 5); /* big bit-endian */
19
- TCGv mask, tofs, tlen;
20
-
21
- tofs = NULL;
22
- tlen = NULL;
23
- if ((insn & 0x0f00) == 0x0d00) { /* bfffo */
24
- tofs = tcg_temp_new();
25
- tlen = tcg_temp_new();
26
- }
27
+ TCGv mask, tofs = NULL, tlen = NULL;
28
+ bool is_bfffo = (insn & 0x0f00) == 0x0d00;
29
30
if ((ext & 0x820) == 0) {
31
/* Immediate width and offset. */
32
@@ -XXX,XX +XXX,XX @@ DISAS_INSN(bfop_reg)
33
tcg_gen_rotli_i32(QREG_CC_N, src, ofs);
34
}
35
tcg_gen_andi_i32(QREG_CC_N, QREG_CC_N, ~maski);
36
- mask = tcg_const_i32(ror32(maski, ofs));
37
- if (tofs) {
38
- tcg_gen_movi_i32(tofs, ofs);
39
- tcg_gen_movi_i32(tlen, len);
40
+
41
+ mask = tcg_constant_i32(ror32(maski, ofs));
42
+ if (is_bfffo) {
43
+ tofs = tcg_constant_i32(ofs);
44
+ tlen = tcg_constant_i32(len);
45
}
46
} else {
47
TCGv tmp = tcg_temp_new();
48
+
49
+ mask = tcg_temp_new();
50
if (ext & 0x20) {
51
/* Variable width */
52
tcg_gen_subi_i32(tmp, DREG(ext, 0), 1);
53
tcg_gen_andi_i32(tmp, tmp, 31);
54
- mask = tcg_const_i32(0x7fffffffu);
55
- tcg_gen_shr_i32(mask, mask, tmp);
56
- if (tlen) {
57
+ tcg_gen_shr_i32(mask, tcg_constant_i32(0x7fffffffu), tmp);
58
+ if (is_bfffo) {
59
+ tlen = tcg_temp_new();
60
tcg_gen_addi_i32(tlen, tmp, 1);
61
}
62
} else {
63
/* Immediate width */
64
- mask = tcg_const_i32(0x7fffffffu >> (len - 1));
65
- if (tlen) {
66
- tcg_gen_movi_i32(tlen, len);
67
+ tcg_gen_movi_i32(mask, 0x7fffffffu >> (len - 1));
68
+ if (is_bfffo) {
69
+ tlen = tcg_constant_i32(len);
70
}
71
}
72
+
73
if (ext & 0x800) {
74
/* Variable offset */
75
tcg_gen_andi_i32(tmp, DREG(ext, 6), 31);
76
tcg_gen_rotl_i32(QREG_CC_N, src, tmp);
77
tcg_gen_andc_i32(QREG_CC_N, QREG_CC_N, mask);
78
tcg_gen_rotr_i32(mask, mask, tmp);
79
- if (tofs) {
80
- tcg_gen_mov_i32(tofs, tmp);
81
+ if (is_bfffo) {
82
+ tofs = tmp;
83
}
84
} else {
85
/* Immediate offset (and variable width) */
86
tcg_gen_rotli_i32(QREG_CC_N, src, ofs);
87
tcg_gen_andc_i32(QREG_CC_N, QREG_CC_N, mask);
88
tcg_gen_rotri_i32(mask, mask, ofs);
89
- if (tofs) {
90
- tcg_gen_movi_i32(tofs, ofs);
91
+ if (is_bfffo) {
92
+ tofs = tcg_constant_i32(ofs);
93
}
94
}
95
}
96
--
97
2.34.1
98
99
diff view generated by jsdifflib
1
From: Anton Johansson <anjo@rev.ng>
1
All remaining uses are strictly read-only.
2
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>
3
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
10
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
4
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
11
---
5
---
12
accel/tcg/cputlb.c | 20 ++++----
6
target/m68k/translate.c | 158 ++++++++++++++++++++--------------------
13
accel/tcg/user-exec.c | 16 +++----
7
1 file changed, 77 insertions(+), 81 deletions(-)
14
accel/tcg/ldst_atomicity.c.inc | 88 +++++++++++++++++-----------------
15
3 files changed, 62 insertions(+), 62 deletions(-)
16
8
17
diff --git a/accel/tcg/cputlb.c b/accel/tcg/cputlb.c
9
diff --git a/target/m68k/translate.c b/target/m68k/translate.c
18
index XXXXXXX..XXXXXXX 100644
10
index XXXXXXX..XXXXXXX 100644
19
--- a/accel/tcg/cputlb.c
11
--- a/target/m68k/translate.c
20
+++ b/accel/tcg/cputlb.c
12
+++ b/target/m68k/translate.c
21
@@ -XXX,XX +XXX,XX @@ static uint64_t do_ld_whole_be8(CPUState *cpu, uintptr_t ra,
13
@@ -XXX,XX +XXX,XX @@ static void gen_jmp(DisasContext *s, TCGv dest)
22
MMULookupPageData *p, uint64_t ret_be)
14
15
static void gen_raise_exception(int nr)
23
{
16
{
24
int o = p->addr & 7;
17
- TCGv_i32 tmp;
25
- uint64_t x = load_atomic8_or_exit(cpu_env(cpu), ra, p->haddr - o);
18
-
26
+ uint64_t x = load_atomic8_or_exit(cpu, ra, p->haddr - o);
19
- tmp = tcg_const_i32(nr);
27
20
- gen_helper_raise_exception(cpu_env, tmp);
28
x = cpu_to_be64(x);
21
+ gen_helper_raise_exception(cpu_env, tcg_constant_i32(nr));
29
x <<= o * 8;
22
}
30
@@ -XXX,XX +XXX,XX @@ static Int128 do_ld_whole_be16(CPUState *cpu, uintptr_t ra,
23
31
MMULookupPageData *p, uint64_t ret_be)
24
static void gen_raise_exception_format2(DisasContext *s, int nr,
32
{
25
@@ -XXX,XX +XXX,XX @@ static TCGv gen_lea_indexed(CPUM68KState *env, DisasContext *s, TCGv base)
33
int o = p->addr & 15;
26
if ((ext & 0x80) == 0) {
34
- Int128 x, y = load_atomic16_or_exit(cpu_env(cpu), ra, p->haddr - o);
27
/* base not suppressed */
35
+ Int128 x, y = load_atomic16_or_exit(cpu, ra, p->haddr - o);
28
if (IS_NULL_QREG(base)) {
36
int size = p->size;
29
- base = tcg_const_i32(offset + bd);
37
30
+ base = tcg_constant_i32(offset + bd);
38
if (!HOST_BIG_ENDIAN) {
31
bd = 0;
39
@@ -XXX,XX +XXX,XX @@ static uint16_t do_ld_2(CPUState *cpu, MMULookupPageData *p, int mmu_idx,
32
}
40
}
33
if (!IS_NULL_QREG(add)) {
41
} else {
34
@@ -XXX,XX +XXX,XX @@ static TCGv gen_lea_indexed(CPUM68KState *env, DisasContext *s, TCGv base)
42
/* Perform the load host endian, then swap if necessary. */
35
add = tmp;
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
}
36
}
68
} else {
37
} else {
69
/* Perform the load host endian. */
38
- add = tcg_const_i32(bd);
70
- ret = load_atom_16(cpu_env(cpu), ra, l.page[0].haddr, l.memop);
39
+ add = tcg_constant_i32(bd);
71
+ ret = load_atom_16(cpu, ra, l.page[0].haddr, l.memop);
40
}
72
if (l.memop & MO_BSWAP) {
41
if ((ext & 3) != 0) {
73
ret = bswap128(ret);
42
/* memory indirect */
43
@@ -XXX,XX +XXX,XX @@ static void gen_flush_flags(DisasContext *s)
44
break;
45
46
default:
47
- t0 = tcg_const_i32(s->cc_op);
48
- gen_helper_flush_flags(cpu_env, t0);
49
+ gen_helper_flush_flags(cpu_env, tcg_constant_i32(s->cc_op));
50
s->cc_op_synced = 1;
51
break;
52
}
53
@@ -XXX,XX +XXX,XX @@ static TCGv gen_lea_mode(CPUM68KState *env, DisasContext *s,
54
switch (reg0) {
55
case 0: /* Absolute short. */
56
offset = (int16_t)read_im16(env, s);
57
- return tcg_const_i32(offset);
58
+ return tcg_constant_i32(offset);
59
case 1: /* Absolute long. */
60
offset = read_im32(env, s);
61
- return tcg_const_i32(offset);
62
+ return tcg_constant_i32(offset);
63
case 2: /* pc displacement */
64
offset = s->pc;
65
offset += (int16_t)read_im16(env, s);
66
- return tcg_const_i32(offset);
67
+ return tcg_constant_i32(offset);
68
case 3: /* pc index+displacement. */
69
return gen_lea_indexed(env, s, NULL_QREG);
70
case 4: /* Immediate. */
71
@@ -XXX,XX +XXX,XX @@ static int gen_ea_mode_fp(CPUM68KState *env, DisasContext *s, int mode,
74
}
72
}
75
@@ -XXX,XX +XXX,XX @@ static void do_st_2(CPUState *cpu, MMULookupPageData *p, uint16_t val,
73
switch (opsize) {
76
if (memop & MO_BSWAP) {
74
case OS_BYTE:
77
val = bswap16(val);
75
- tmp = tcg_const_i32((int8_t)read_im8(env, s));
76
+ tmp = tcg_constant_i32((int8_t)read_im8(env, s));
77
gen_helper_exts32(cpu_env, fp, tmp);
78
break;
79
case OS_WORD:
80
- tmp = tcg_const_i32((int16_t)read_im16(env, s));
81
+ tmp = tcg_constant_i32((int16_t)read_im16(env, s));
82
gen_helper_exts32(cpu_env, fp, tmp);
83
break;
84
case OS_LONG:
85
- tmp = tcg_const_i32(read_im32(env, s));
86
+ tmp = tcg_constant_i32(read_im32(env, s));
87
gen_helper_exts32(cpu_env, fp, tmp);
88
break;
89
case OS_SINGLE:
90
- tmp = tcg_const_i32(read_im32(env, s));
91
+ tmp = tcg_constant_i32(read_im32(env, s));
92
gen_helper_extf32(cpu_env, fp, tmp);
93
break;
94
case OS_DOUBLE:
95
- t64 = tcg_const_i64(read_im64(env, s));
96
+ t64 = tcg_constant_i64(read_im64(env, s));
97
gen_helper_extf64(cpu_env, fp, t64);
98
break;
99
case OS_EXTENDED:
100
@@ -XXX,XX +XXX,XX @@ static int gen_ea_mode_fp(CPUM68KState *env, DisasContext *s, int mode,
101
gen_exception(s, s->base.pc_next, EXCP_FP_UNIMP);
102
break;
103
}
104
- tmp = tcg_const_i32(read_im32(env, s) >> 16);
105
+ tmp = tcg_constant_i32(read_im32(env, s) >> 16);
106
tcg_gen_st16_i32(tmp, fp, offsetof(FPReg, l.upper));
107
- t64 = tcg_const_i64(read_im64(env, s));
108
+ t64 = tcg_constant_i64(read_im64(env, s));
109
tcg_gen_st_i64(t64, fp, offsetof(FPReg, l.lower));
110
break;
111
case OS_PACKED:
112
@@ -XXX,XX +XXX,XX @@ static void gen_cc_cond(DisasCompare *c, DisasContext *s, int cond)
113
goto done;
114
case 10: /* PL */
115
case 11: /* MI */
116
- c->v2 = tcg_const_i32(0);
117
+ c->v2 = tcg_constant_i32(0);
118
c->v1 = tmp = tcg_temp_new();
119
tcg_gen_sub_i32(tmp, QREG_CC_N, QREG_CC_V);
120
gen_ext(tmp, tmp, op - CC_OP_CMPB, 1);
121
@@ -XXX,XX +XXX,XX @@ static void gen_cc_cond(DisasCompare *c, DisasContext *s, int cond)
78
}
122
}
79
- store_atom_2(cpu_env(cpu), ra, p->haddr, memop, val);
123
}
80
+ store_atom_2(cpu, ra, p->haddr, memop, val);
124
81
}
125
- c->v2 = tcg_const_i32(0);
82
}
126
+ c->v2 = tcg_constant_i32(0);
83
127
84
@@ -XXX,XX +XXX,XX @@ static void do_st_4(CPUState *cpu, MMULookupPageData *p, uint32_t val,
128
switch (cond) {
85
if (memop & MO_BSWAP) {
129
case 0: /* T */
86
val = bswap32(val);
130
@@ -XXX,XX +XXX,XX @@ DISAS_INSN(movem)
87
}
131
88
- store_atom_4(cpu_env(cpu), ra, p->haddr, memop, val);
132
addr = tcg_temp_new();
89
+ store_atom_4(cpu, ra, p->haddr, memop, val);
133
tcg_gen_mov_i32(addr, tmp);
90
}
134
- incr = tcg_const_i32(opsize_bytes(opsize));
91
}
135
+ incr = tcg_constant_i32(opsize_bytes(opsize));
92
136
93
@@ -XXX,XX +XXX,XX @@ static void do_st_8(CPUState *cpu, MMULookupPageData *p, uint64_t val,
137
if (is_load) {
94
if (memop & MO_BSWAP) {
138
/* memory to register */
95
val = bswap64(val);
139
@@ -XXX,XX +XXX,XX @@ DISAS_INSN(arith_im)
96
}
140
opsize = insn_opsize(insn);
97
- store_atom_8(cpu_env(cpu), ra, p->haddr, memop, val);
141
switch (opsize) {
98
+ store_atom_8(cpu, ra, p->haddr, memop, val);
142
case OS_BYTE:
99
}
143
- im = tcg_const_i32((int8_t)read_im8(env, s));
100
}
144
+ im = tcg_constant_i32((int8_t)read_im8(env, s));
101
145
break;
102
@@ -XXX,XX +XXX,XX @@ static void do_st16_mmu(CPUState *cpu, vaddr addr, Int128 val,
146
case OS_WORD:
103
if (l.memop & MO_BSWAP) {
147
- im = tcg_const_i32((int16_t)read_im16(env, s));
104
val = bswap128(val);
148
+ im = tcg_constant_i32((int16_t)read_im16(env, s));
105
}
149
break;
106
- store_atom_16(cpu_env(cpu), ra, l.page[0].haddr, l.memop, val);
150
case OS_LONG:
107
+ store_atom_16(cpu, ra, l.page[0].haddr, l.memop, val);
151
- im = tcg_const_i32(read_im32(env, s));
108
}
152
+ im = tcg_constant_i32(read_im32(env, s));
109
return;
153
break;
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:
154
default:
337
g_assert_not_reached();
155
g_assert_not_reached();
338
}
156
@@ -XXX,XX +XXX,XX @@ DISAS_INSN(cas2w)
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
{
157
{
347
uintptr_t pi = (uintptr_t)pv;
158
uint16_t ext1, ext2;
348
@@ -XXX,XX +XXX,XX @@ static uint32_t load_atom_4(CPUArchState *env, uintptr_t ra,
159
TCGv addr1, addr2;
349
}
160
- TCGv regs;
350
}
161
351
162
/* cas2 Dc1:Dc2,Du1:Du2,(Rn1):(Rn2) */
352
- atmax = required_atomicity(env, pi, memop);
163
353
+ atmax = required_atomicity(cpu, pi, memop);
164
@@ -XXX,XX +XXX,XX @@ DISAS_INSN(cas2w)
354
switch (atmax) {
165
* Dc2 = (R2)
355
case MO_8:
166
*/
356
case MO_16:
167
357
@@ -XXX,XX +XXX,XX @@ static uint32_t load_atom_4(CPUArchState *env, uintptr_t ra,
168
- regs = tcg_const_i32(REG(ext2, 6) |
358
return load_atom_extract_al4x2(pv);
169
- (REG(ext1, 6) << 3) |
359
case MO_32:
170
- (REG(ext2, 0) << 6) |
360
if (!(pi & 4)) {
171
- (REG(ext1, 0) << 9));
361
- return load_atom_extract_al8_or_exit(env, ra, pv, 4);
172
if (tb_cflags(s->base.tb) & CF_PARALLEL) {
362
+ return load_atom_extract_al8_or_exit(cpu, ra, pv, 4);
173
gen_helper_exit_atomic(cpu_env);
363
}
174
} else {
364
- return load_atom_extract_al16_or_exit(env, ra, pv, 4);
175
+ TCGv regs = tcg_constant_i32(REG(ext2, 6) |
365
+ return load_atom_extract_al16_or_exit(cpu, ra, pv, 4);
176
+ (REG(ext1, 6) << 3) |
366
default:
177
+ (REG(ext2, 0) << 6) |
367
g_assert_not_reached();
178
+ (REG(ext1, 0) << 9));
368
}
179
gen_helper_cas2w(cpu_env, regs, addr1, addr2);
369
@@ -XXX,XX +XXX,XX @@ static uint32_t load_atom_4(CPUArchState *env, uintptr_t ra,
180
}
370
*
181
371
* Load 8 bytes from @p, honoring the atomicity of @memop.
182
@@ -XXX,XX +XXX,XX @@ DISAS_INSN(cas2l)
372
*/
183
* Dc2 = (R2)
373
-static uint64_t load_atom_8(CPUArchState *env, uintptr_t ra,
184
*/
374
+static uint64_t load_atom_8(CPUState *cpu, uintptr_t ra,
185
375
void *pv, MemOp memop)
186
- regs = tcg_const_i32(REG(ext2, 6) |
187
- (REG(ext1, 6) << 3) |
188
- (REG(ext2, 0) << 6) |
189
- (REG(ext1, 0) << 9));
190
+ regs = tcg_constant_i32(REG(ext2, 6) |
191
+ (REG(ext1, 6) << 3) |
192
+ (REG(ext2, 0) << 6) |
193
+ (REG(ext1, 0) << 9));
194
if (tb_cflags(s->base.tb) & CF_PARALLEL) {
195
gen_helper_cas2l_parallel(cpu_env, regs, addr1, addr2);
196
} else {
197
@@ -XXX,XX +XXX,XX @@ DISAS_INSN(negx)
198
* (X, N) = -(src + X);
199
*/
200
201
- z = tcg_const_i32(0);
202
+ z = tcg_constant_i32(0);
203
tcg_gen_add2_i32(QREG_CC_N, QREG_CC_X, src, z, QREG_CC_X, z);
204
tcg_gen_sub2_i32(QREG_CC_N, QREG_CC_X, z, z, QREG_CC_N, QREG_CC_X);
205
gen_ext(QREG_CC_N, QREG_CC_N, opsize, 1);
206
@@ -XXX,XX +XXX,XX @@ DISAS_INSN(clr)
207
int opsize;
208
TCGv zero;
209
210
- zero = tcg_const_i32(0);
211
-
212
+ zero = tcg_constant_i32(0);
213
opsize = insn_opsize(insn);
214
DEST_EA(env, insn, opsize, zero, NULL);
215
gen_logic_cc(s, zero, opsize);
216
@@ -XXX,XX +XXX,XX @@ DISAS_INSN(jump)
217
}
218
if ((insn & 0x40) == 0) {
219
/* jsr */
220
- gen_push(s, tcg_const_i32(s->pc));
221
+ gen_push(s, tcg_constant_i32(s->pc));
222
}
223
gen_jmp(s, tmp);
224
}
225
@@ -XXX,XX +XXX,XX @@ DISAS_INSN(addsubq)
226
if (imm == 0) {
227
imm = 8;
228
}
229
- val = tcg_const_i32(imm);
230
+ val = tcg_constant_i32(imm);
231
dest = tcg_temp_new();
232
tcg_gen_mov_i32(dest, src);
233
if ((insn & 0x38) == 0x08) {
234
@@ -XXX,XX +XXX,XX @@ DISAS_INSN(branch)
235
}
236
if (op == 1) {
237
/* bsr */
238
- gen_push(s, tcg_const_i32(s->pc));
239
+ gen_push(s, tcg_constant_i32(s->pc));
240
}
241
if (op > 1) {
242
/* Bcc */
243
@@ -XXX,XX +XXX,XX @@ DISAS_INSN(mov3q)
244
int val;
245
246
val = (insn >> 9) & 7;
247
- if (val == 0)
248
+ if (val == 0) {
249
val = -1;
250
- src = tcg_const_i32(val);
251
+ }
252
+ src = tcg_constant_i32(val);
253
gen_logic_cc(s, src, OS_LONG);
254
DEST_EA(env, insn, OS_LONG, src, NULL);
255
}
256
@@ -XXX,XX +XXX,XX @@ static inline void shift_reg(DisasContext *s, uint16_t insn, int opsize)
257
tcg_gen_extr_i64_i32(QREG_CC_N, QREG_CC_C, t64);
258
/* Note that C=0 if shift count is 0, and we get that for free. */
259
} else {
260
- TCGv zero = tcg_const_i32(0);
261
+ TCGv zero = tcg_constant_i32(0);
262
tcg_gen_extrl_i64_i32(QREG_CC_N, t64);
263
tcg_gen_shri_i32(QREG_CC_C, QREG_CC_N, bits);
264
tcg_gen_movcond_i32(TCG_COND_EQ, QREG_CC_C,
265
@@ -XXX,XX +XXX,XX @@ static inline void shift_reg(DisasContext *s, uint16_t insn, int opsize)
266
* V = ((s ^ t) & (-1 << (bits - 1))) != 0
267
*/
268
if (!logical && m68k_feature(s->env, M68K_FEATURE_M68K)) {
269
- TCGv_i64 tt = tcg_const_i64(32);
270
+ TCGv_i64 tt = tcg_constant_i64(32);
271
/* if shift is greater than 32, use 32 */
272
tcg_gen_movcond_i64(TCG_COND_GT, s64, s64, tt, tt, s64);
273
/* Sign extend the input to 64 bits; re-do the shift. */
274
@@ -XXX,XX +XXX,XX @@ static TCGv rotate_x(TCGv reg, TCGv shift, int left, int size)
376
{
275
{
377
uintptr_t pi = (uintptr_t)pv;
276
TCGv X, shl, shr, shx, sz, zero;
378
@@ -XXX,XX +XXX,XX @@ static uint64_t load_atom_8(CPUArchState *env, uintptr_t ra,
277
379
return load_atom_extract_al16_or_al8(pv, 8);
278
- sz = tcg_const_i32(size);
380
}
279
+ sz = tcg_constant_i32(size);
381
280
382
- atmax = required_atomicity(env, pi, memop);
281
shr = tcg_temp_new();
383
+ atmax = required_atomicity(cpu, pi, memop);
282
shl = tcg_temp_new();
384
if (atmax == MO_64) {
283
@@ -XXX,XX +XXX,XX @@ static TCGv rotate_x(TCGv reg, TCGv shift, int left, int size)
385
if (!HAVE_al8 && (pi & 7) == 0) {
284
tcg_gen_sub_i32(shr, shr, shift); /* shr = size + 1 - shift */
386
- load_atomic8_or_exit(env, ra, pv);
285
tcg_gen_subi_i32(shx, shift, 1); /* shx = shift - 1 */
387
+ load_atomic8_or_exit(cpu, ra, pv);
286
/* shx = shx < 0 ? size : shx; */
388
}
287
- zero = tcg_const_i32(0);
389
- return load_atom_extract_al16_or_exit(env, ra, pv, 8);
288
+ zero = tcg_constant_i32(0);
390
+ return load_atom_extract_al16_or_exit(cpu, ra, pv, 8);
289
tcg_gen_movcond_i32(TCG_COND_LT, shx, shx, zero, sz, shx);
391
}
290
} else {
392
if (HAVE_al8_fast) {
291
tcg_gen_mov_i32(shr, shift); /* shr = shift */
393
return load_atom_extract_al8x2(pv);
292
@@ -XXX,XX +XXX,XX @@ static TCGv rotate32_x(TCGv reg, TCGv shift, int left)
394
@@ -XXX,XX +XXX,XX @@ static uint64_t load_atom_8(CPUArchState *env, uintptr_t ra,
293
395
if (HAVE_al8) {
294
/* if shift == 0, register and X are not affected */
396
return load_atom_extract_al8x2(pv);
295
397
}
296
- zero = tcg_const_i32(0);
398
- cpu_loop_exit_atomic(env_cpu(env), ra);
297
+ zero = tcg_constant_i32(0);
399
+ cpu_loop_exit_atomic(cpu, ra);
298
tcg_gen_movcond_i32(TCG_COND_EQ, X, shift, zero, QREG_CC_X, X);
400
default:
299
tcg_gen_movcond_i32(TCG_COND_EQ, reg, shift, zero, reg, lo);
401
g_assert_not_reached();
300
402
}
301
@@ -XXX,XX +XXX,XX @@ DISAS_INSN(rotate_im)
403
@@ -XXX,XX +XXX,XX @@ static uint64_t load_atom_8(CPUArchState *env, uintptr_t ra,
302
tmp = 8;
404
*
303
}
405
* Load 16 bytes from @p, honoring the atomicity of @memop.
304
406
*/
305
- shift = tcg_const_i32(tmp);
407
-static Int128 load_atom_16(CPUArchState *env, uintptr_t ra,
306
+ shift = tcg_constant_i32(tmp);
408
+static Int128 load_atom_16(CPUState *cpu, uintptr_t ra,
307
if (insn & 8) {
409
void *pv, MemOp memop)
308
rotate(DREG(insn, 0), shift, left, 32);
309
} else {
310
@@ -XXX,XX +XXX,XX @@ DISAS_INSN(rotate8_im)
311
tmp = 8;
312
}
313
314
- shift = tcg_const_i32(tmp);
315
+ shift = tcg_constant_i32(tmp);
316
if (insn & 8) {
317
rotate(reg, shift, left, 8);
318
} else {
319
@@ -XXX,XX +XXX,XX @@ DISAS_INSN(rotate16_im)
320
tmp = 8;
321
}
322
323
- shift = tcg_const_i32(tmp);
324
+ shift = tcg_constant_i32(tmp);
325
if (insn & 8) {
326
rotate(reg, shift, left, 16);
327
} else {
328
@@ -XXX,XX +XXX,XX @@ DISAS_INSN(rotate_mem)
329
330
SRC_EA(env, src, OS_WORD, 0, &addr);
331
332
- shift = tcg_const_i32(1);
333
+ shift = tcg_constant_i32(1);
334
if (insn & 0x0200) {
335
rotate(src, shift, left, 16);
336
} else {
337
@@ -XXX,XX +XXX,XX @@ DISAS_INSN(bfext_mem)
338
if (ext & 0x20) {
339
len = DREG(ext, 0);
340
} else {
341
- len = tcg_const_i32(extract32(ext, 0, 5));
342
+ len = tcg_constant_i32(extract32(ext, 0, 5));
343
}
344
if (ext & 0x800) {
345
ofs = DREG(ext, 6);
346
} else {
347
- ofs = tcg_const_i32(extract32(ext, 6, 5));
348
+ ofs = tcg_constant_i32(extract32(ext, 6, 5));
349
}
350
351
if (is_sign) {
352
@@ -XXX,XX +XXX,XX @@ DISAS_INSN(bfop_mem)
353
if (ext & 0x20) {
354
len = DREG(ext, 0);
355
} else {
356
- len = tcg_const_i32(extract32(ext, 0, 5));
357
+ len = tcg_constant_i32(extract32(ext, 0, 5));
358
}
359
if (ext & 0x800) {
360
ofs = DREG(ext, 6);
361
} else {
362
- ofs = tcg_const_i32(extract32(ext, 6, 5));
363
+ ofs = tcg_constant_i32(extract32(ext, 6, 5));
364
}
365
366
switch (insn & 0x0f00) {
367
@@ -XXX,XX +XXX,XX @@ DISAS_INSN(bfins_mem)
368
if (ext & 0x20) {
369
len = DREG(ext, 0);
370
} else {
371
- len = tcg_const_i32(extract32(ext, 0, 5));
372
+ len = tcg_constant_i32(extract32(ext, 0, 5));
373
}
374
if (ext & 0x800) {
375
ofs = DREG(ext, 6);
376
} else {
377
- ofs = tcg_const_i32(extract32(ext, 6, 5));
378
+ ofs = tcg_constant_i32(extract32(ext, 6, 5));
379
}
380
381
gen_helper_bfins_mem(QREG_CC_N, cpu_env, addr, src, ofs, len);
382
@@ -XXX,XX +XXX,XX @@ DISAS_INSN(move16_mem)
383
TCGv reg, addr;
384
385
reg = AREG(insn, 0);
386
- addr = tcg_const_i32(read_im32(env, s));
387
+ addr = tcg_constant_i32(read_im32(env, s));
388
389
if ((insn >> 3) & 1) {
390
/* MOVE16 (xxx).L, (Ay) */
391
@@ -XXX,XX +XXX,XX @@ DISAS_INSN(cf_movec)
392
} else {
393
reg = DREG(ext, 12);
394
}
395
- gen_helper_cf_movec_to(cpu_env, tcg_const_i32(ext & 0xfff), reg);
396
+ gen_helper_cf_movec_to(cpu_env, tcg_constant_i32(ext & 0xfff), reg);
397
gen_exit_tb(s);
398
}
399
400
DISAS_INSN(m68k_movec)
410
{
401
{
411
uintptr_t pi = (uintptr_t)pv;
402
uint16_t ext;
412
@@ -XXX,XX +XXX,XX @@ static Int128 load_atom_16(CPUArchState *env, uintptr_t ra,
403
- TCGv reg;
413
return atomic16_read_ro(pv);
404
+ TCGv reg, creg;
414
}
405
415
406
if (IS_USER(s)) {
416
- atmax = required_atomicity(env, pi, memop);
407
gen_exception(s, s->base.pc_next, EXCP_PRIVILEGE);
417
+ atmax = required_atomicity(cpu, pi, memop);
408
@@ -XXX,XX +XXX,XX @@ DISAS_INSN(m68k_movec)
418
switch (atmax) {
409
} else {
419
case MO_8:
410
reg = DREG(ext, 12);
420
memcpy(&r, pv, 16);
411
}
421
@@ -XXX,XX +XXX,XX @@ static Int128 load_atom_16(CPUArchState *env, uintptr_t ra,
412
+ creg = tcg_constant_i32(ext & 0xfff);
422
break;
413
if (insn & 1) {
423
case MO_64:
414
- gen_helper_m68k_movec_to(cpu_env, tcg_const_i32(ext & 0xfff), reg);
424
if (!HAVE_al8) {
415
+ gen_helper_m68k_movec_to(cpu_env, creg, reg);
425
- cpu_loop_exit_atomic(env_cpu(env), ra);
416
} else {
426
+ cpu_loop_exit_atomic(cpu, ra);
417
- gen_helper_m68k_movec_from(reg, cpu_env, tcg_const_i32(ext & 0xfff));
427
}
418
+ gen_helper_m68k_movec_from(reg, cpu_env, creg);
428
a = load_atomic8(pv);
419
}
429
b = load_atomic8(pv + 8);
420
gen_exit_tb(s);
430
break;
421
}
431
case -MO_64:
422
@@ -XXX,XX +XXX,XX @@ DISAS_INSN(pflush)
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;
423
return;
456
}
424
}
457
425
458
- atmax = required_atomicity(env, pi, memop);
426
- opmode = tcg_const_i32((insn >> 3) & 3);
459
+ atmax = required_atomicity(cpu, pi, memop);
427
+ opmode = tcg_constant_i32((insn >> 3) & 3);
460
if (atmax == MO_8) {
428
gen_helper_pflush(cpu_env, AREG(insn, 0), opmode);
461
stw_he_p(pv, val);
429
}
430
431
@@ -XXX,XX +XXX,XX @@ DISAS_INSN(ptest)
432
gen_exception(s, s->base.pc_next, EXCP_PRIVILEGE);
462
return;
433
return;
463
@@ -XXX,XX +XXX,XX @@ static void store_atom_2(CPUArchState *env, uintptr_t ra,
434
}
464
g_assert_not_reached();
435
- is_read = tcg_const_i32((insn >> 5) & 1);
465
}
436
+ is_read = tcg_constant_i32((insn >> 5) & 1);
466
437
gen_helper_ptest(cpu_env, AREG(insn, 0), is_read);
467
- cpu_loop_exit_atomic(env_cpu(env), ra);
438
}
468
+ cpu_loop_exit_atomic(cpu, ra);
439
#endif
469
}
440
@@ -XXX,XX +XXX,XX @@ static void gen_op_fmove_fcr(CPUM68KState *env, DisasContext *s,
470
441
gen_exception(s, s->base.pc_next, EXCP_ILLEGAL);
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;
442
return;
492
}
443
}
444
- tmp = tcg_const_i32(read_im32(env, s));
445
+ tmp = tcg_constant_i32(read_im32(env, s));
446
gen_store_fcr(s, tmp, mask);
447
return;
493
}
448
}
494
- cpu_loop_exit_atomic(env_cpu(env), ra);
449
@@ -XXX,XX +XXX,XX @@ DISAS_INSN(fpu)
495
+ cpu_loop_exit_atomic(cpu, ra);
450
case 2:
496
default:
451
if (insn == 0xf200 && (ext & 0xfc00) == 0x5c00) {
497
g_assert_not_reached();
452
/* fmovecr */
498
}
453
- TCGv rom_offset = tcg_const_i32(opmode);
499
@@ -XXX,XX +XXX,XX @@ static void store_atom_4(CPUArchState *env, uintptr_t ra,
454
+ TCGv rom_offset = tcg_constant_i32(opmode);
500
*
455
cpu_dest = gen_fp_ptr(REG(ext, 7));
501
* Store 8 bytes to @p, honoring the atomicity of @memop.
456
gen_helper_fconst(cpu_env, cpu_dest, rom_offset);
502
*/
457
return;
503
-static void store_atom_8(CPUArchState *env, uintptr_t ra,
458
@@ -XXX,XX +XXX,XX @@ static void gen_fcc_cond(DisasCompare *c, DisasContext *s, int cond)
504
+static void store_atom_8(CPUState *cpu, uintptr_t ra,
505
void *pv, MemOp memop, uint64_t val)
506
{
459
{
507
uintptr_t pi = (uintptr_t)pv;
460
TCGv fpsr;
508
@@ -XXX,XX +XXX,XX @@ static void store_atom_8(CPUArchState *env, uintptr_t ra,
461
509
return;
462
- c->v2 = tcg_const_i32(0);
510
}
463
+ c->v2 = tcg_constant_i32(0);
511
464
/* TODO: Raise BSUN exception. */
512
- atmax = required_atomicity(env, pi, memop);
465
fpsr = tcg_temp_new();
513
+ atmax = required_atomicity(cpu, pi, memop);
466
gen_load_fcr(s, fpsr, M68K_FPSR);
514
switch (atmax) {
467
@@ -XXX,XX +XXX,XX @@ DISAS_INSN(fsave)
515
case MO_8:
468
516
stq_he_p(pv, val);
469
if (m68k_feature(s->env, M68K_FEATURE_M68040)) {
517
@@ -XXX,XX +XXX,XX @@ static void store_atom_8(CPUArchState *env, uintptr_t ra,
470
/* always write IDLE */
518
default:
471
- TCGv idle = tcg_const_i32(0x41000000);
519
g_assert_not_reached();
472
+ TCGv idle = tcg_constant_i32(0x41000000);
520
}
473
DEST_EA(env, insn, OS_LONG, idle, NULL);
521
- cpu_loop_exit_atomic(env_cpu(env), ra);
474
} else {
522
+ cpu_loop_exit_atomic(cpu, ra);
475
disas_undef(env, s, insn);
523
}
476
@@ -XXX,XX +XXX,XX @@ DISAS_INSN(mac)
524
477
/* Skip the accumulate if the value is already saturated. */
525
/**
478
l1 = gen_new_label();
526
@@ -XXX,XX +XXX,XX @@ static void store_atom_8(CPUArchState *env, uintptr_t ra,
479
tmp = tcg_temp_new();
527
*
480
- gen_op_and32(tmp, QREG_MACSR, tcg_const_i32(MACSR_PAV0 << acc));
528
* Store 16 bytes to @p, honoring the atomicity of @memop.
481
+ gen_op_and32(tmp, QREG_MACSR, tcg_constant_i32(MACSR_PAV0 << acc));
529
*/
482
gen_op_jmp_nz32(tmp, l1);
530
-static void store_atom_16(CPUArchState *env, uintptr_t ra,
483
}
531
+static void store_atom_16(CPUState *cpu, uintptr_t ra,
484
#endif
532
void *pv, MemOp memop, Int128 val)
485
@@ -XXX,XX +XXX,XX @@ DISAS_INSN(mac)
533
{
486
tcg_gen_add_i64(MACREG(acc), MACREG(acc), s->mactmp);
534
uintptr_t pi = (uintptr_t)pv;
487
535
@@ -XXX,XX +XXX,XX @@ static void store_atom_16(CPUArchState *env, uintptr_t ra,
488
if (s->env->macsr & MACSR_FI)
536
return;
489
- gen_helper_macsatf(cpu_env, tcg_const_i32(acc));
537
}
490
+ gen_helper_macsatf(cpu_env, tcg_constant_i32(acc));
538
491
else if (s->env->macsr & MACSR_SU)
539
- atmax = required_atomicity(env, pi, memop);
492
- gen_helper_macsats(cpu_env, tcg_const_i32(acc));
540
+ atmax = required_atomicity(cpu, pi, memop);
493
+ gen_helper_macsats(cpu_env, tcg_constant_i32(acc));
541
494
else
542
a = HOST_BIG_ENDIAN ? int128_gethi(val) : int128_getlo(val);
495
- gen_helper_macsatu(cpu_env, tcg_const_i32(acc));
543
b = HOST_BIG_ENDIAN ? int128_getlo(val) : int128_gethi(val);
496
+ gen_helper_macsatu(cpu_env, tcg_constant_i32(acc));
544
@@ -XXX,XX +XXX,XX @@ static void store_atom_16(CPUArchState *env, uintptr_t ra,
497
545
default:
498
#if 0
546
g_assert_not_reached();
499
/* Disabled because conditional branches clobber temporary vars. */
547
}
500
@@ -XXX,XX +XXX,XX @@ DISAS_INSN(mac)
548
- cpu_loop_exit_atomic(env_cpu(env), ra);
501
/* Skip the accumulate if the value is already saturated. */
549
+ cpu_loop_exit_atomic(cpu, ra);
502
l1 = gen_new_label();
550
}
503
tmp = tcg_temp_new();
504
- gen_op_and32(tmp, QREG_MACSR, tcg_const_i32(MACSR_PAV0 << acc));
505
+ gen_op_and32(tmp, QREG_MACSR, tcg_constant_i32(MACSR_PAV0 << acc));
506
gen_op_jmp_nz32(tmp, l1);
507
}
508
#endif
509
@@ -XXX,XX +XXX,XX @@ DISAS_INSN(mac)
510
else
511
tcg_gen_add_i64(MACREG(acc), MACREG(acc), s->mactmp);
512
if (s->env->macsr & MACSR_FI)
513
- gen_helper_macsatf(cpu_env, tcg_const_i32(acc));
514
+ gen_helper_macsatf(cpu_env, tcg_constant_i32(acc));
515
else if (s->env->macsr & MACSR_SU)
516
- gen_helper_macsats(cpu_env, tcg_const_i32(acc));
517
+ gen_helper_macsats(cpu_env, tcg_constant_i32(acc));
518
else
519
- gen_helper_macsatu(cpu_env, tcg_const_i32(acc));
520
+ gen_helper_macsatu(cpu_env, tcg_constant_i32(acc));
521
#if 0
522
/* Disabled because conditional branches clobber temporary vars. */
523
if (l1 != -1)
524
gen_set_label(l1);
525
#endif
526
}
527
- gen_helper_mac_set_flags(cpu_env, tcg_const_i32(acc));
528
+ gen_helper_mac_set_flags(cpu_env, tcg_constant_i32(acc));
529
530
if (insn & 0x30) {
531
TCGv rw;
532
@@ -XXX,XX +XXX,XX @@ DISAS_INSN(move_mac)
533
int src;
534
TCGv dest;
535
src = insn & 3;
536
- dest = tcg_const_i32((insn >> 9) & 3);
537
- gen_helper_mac_move(cpu_env, dest, tcg_const_i32(src));
538
+ dest = tcg_constant_i32((insn >> 9) & 3);
539
+ gen_helper_mac_move(cpu_env, dest, tcg_constant_i32(src));
540
gen_mac_clear_flags();
541
gen_helper_mac_set_flags(cpu_env, dest);
542
}
543
@@ -XXX,XX +XXX,XX @@ DISAS_INSN(from_mext)
544
TCGv reg;
545
TCGv acc;
546
reg = (insn & 8) ? AREG(insn, 0) : DREG(insn, 0);
547
- acc = tcg_const_i32((insn & 0x400) ? 2 : 0);
548
+ acc = tcg_constant_i32((insn & 0x400) ? 2 : 0);
549
if (s->env->macsr & MACSR_FI)
550
gen_helper_get_mac_extf(reg, cpu_env, acc);
551
else
552
@@ -XXX,XX +XXX,XX @@ DISAS_INSN(to_mac)
553
}
554
tcg_gen_andi_i32(QREG_MACSR, QREG_MACSR, ~(MACSR_PAV0 << accnum));
555
gen_mac_clear_flags();
556
- gen_helper_mac_set_flags(cpu_env, tcg_const_i32(accnum));
557
+ gen_helper_mac_set_flags(cpu_env, tcg_constant_i32(accnum));
558
}
559
560
DISAS_INSN(to_macsr)
561
@@ -XXX,XX +XXX,XX @@ DISAS_INSN(to_mext)
562
TCGv val;
563
TCGv acc;
564
SRC_EA(env, val, OS_LONG, 0, NULL);
565
- acc = tcg_const_i32((insn & 0x400) ? 2 : 0);
566
+ acc = tcg_constant_i32((insn & 0x400) ? 2 : 0);
567
if (s->env->macsr & MACSR_FI)
568
gen_helper_set_mac_extf(cpu_env, val, acc);
569
else if (s->env->macsr & MACSR_SU)
551
--
570
--
552
2.34.1
571
2.34.1
553
572
554
573
diff view generated by jsdifflib
New patch
1
Common subroutine for LDL and LWL.
2
Use tcg_constant_tl instead of tcg_const_tl and t2.
1
3
4
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
5
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6
---
7
target/mips/tcg/translate.c | 106 ++++++++++++------------------------
8
1 file changed, 36 insertions(+), 70 deletions(-)
9
10
diff --git a/target/mips/tcg/translate.c b/target/mips/tcg/translate.c
11
index XXXXXXX..XXXXXXX 100644
12
--- a/target/mips/tcg/translate.c
13
+++ b/target/mips/tcg/translate.c
14
@@ -XXX,XX +XXX,XX @@ static target_ulong pc_relative_pc(DisasContext *ctx)
15
return pc;
16
}
17
18
+/* LWL or LDL, depending on MemOp. */
19
+static void gen_lxl(DisasContext *ctx, TCGv reg, TCGv addr,
20
+ int mem_idx, MemOp mop)
21
+{
22
+ int sizem1 = memop_size(mop) - 1;
23
+ TCGv t0 = tcg_temp_new();
24
+ TCGv t1 = tcg_temp_new();
25
+
26
+ /*
27
+ * Do a byte access to possibly trigger a page
28
+ * fault with the unaligned address.
29
+ */
30
+ tcg_gen_qemu_ld_tl(t1, addr, mem_idx, MO_UB);
31
+ tcg_gen_andi_tl(t1, addr, sizem1);
32
+ if (!cpu_is_bigendian(ctx)) {
33
+ tcg_gen_xori_tl(t1, t1, sizem1);
34
+ }
35
+ tcg_gen_shli_tl(t1, t1, 3);
36
+ tcg_gen_andi_tl(t0, addr, ~sizem1);
37
+ tcg_gen_qemu_ld_tl(t0, t0, mem_idx, mop);
38
+ tcg_gen_shl_tl(t0, t0, t1);
39
+ tcg_gen_shl_tl(t1, tcg_constant_tl(-1), t1);
40
+ tcg_gen_andc_tl(t1, reg, t1);
41
+ tcg_gen_or_tl(reg, t0, t1);
42
+}
43
+
44
/* Load */
45
static void gen_ld(DisasContext *ctx, uint32_t opc,
46
int rt, int base, int offset)
47
@@ -XXX,XX +XXX,XX @@ static void gen_ld(DisasContext *ctx, uint32_t opc,
48
break;
49
case OPC_LDL:
50
t1 = tcg_temp_new();
51
- /*
52
- * Do a byte access to possibly trigger a page
53
- * fault with the unaligned address.
54
- */
55
- tcg_gen_qemu_ld_tl(t1, t0, mem_idx, MO_UB);
56
- tcg_gen_andi_tl(t1, t0, 7);
57
- if (!cpu_is_bigendian(ctx)) {
58
- tcg_gen_xori_tl(t1, t1, 7);
59
- }
60
- tcg_gen_shli_tl(t1, t1, 3);
61
- tcg_gen_andi_tl(t0, t0, ~7);
62
- tcg_gen_qemu_ld_tl(t0, t0, mem_idx, MO_TEUQ);
63
- tcg_gen_shl_tl(t0, t0, t1);
64
- t2 = tcg_const_tl(-1);
65
- tcg_gen_shl_tl(t2, t2, t1);
66
gen_load_gpr(t1, rt);
67
- tcg_gen_andc_tl(t1, t1, t2);
68
- tcg_gen_or_tl(t0, t0, t1);
69
- gen_store_gpr(t0, rt);
70
+ gen_lxl(ctx, t1, t0, mem_idx, MO_TEUQ);
71
+ gen_store_gpr(t1, rt);
72
break;
73
case OPC_LDR:
74
t1 = tcg_temp_new();
75
@@ -XXX,XX +XXX,XX @@ static void gen_ld(DisasContext *ctx, uint32_t opc,
76
/* fall through */
77
case OPC_LWL:
78
t1 = tcg_temp_new();
79
- /*
80
- * Do a byte access to possibly trigger a page
81
- * fault with the unaligned address.
82
- */
83
- tcg_gen_qemu_ld_tl(t1, t0, mem_idx, MO_UB);
84
- tcg_gen_andi_tl(t1, t0, 3);
85
- if (!cpu_is_bigendian(ctx)) {
86
- tcg_gen_xori_tl(t1, t1, 3);
87
- }
88
- tcg_gen_shli_tl(t1, t1, 3);
89
- tcg_gen_andi_tl(t0, t0, ~3);
90
- tcg_gen_qemu_ld_tl(t0, t0, mem_idx, MO_TEUL);
91
- tcg_gen_shl_tl(t0, t0, t1);
92
- t2 = tcg_const_tl(-1);
93
- tcg_gen_shl_tl(t2, t2, t1);
94
gen_load_gpr(t1, rt);
95
- tcg_gen_andc_tl(t1, t1, t2);
96
- tcg_gen_or_tl(t0, t0, t1);
97
- tcg_gen_ext32s_tl(t0, t0);
98
- gen_store_gpr(t0, rt);
99
+ gen_lxl(ctx, t1, t0, mem_idx, MO_TEUL);
100
+ tcg_gen_ext32s_tl(t1, t1);
101
+ gen_store_gpr(t1, rt);
102
break;
103
case OPC_LWRE:
104
mem_idx = MIPS_HFLAG_UM;
105
@@ -XXX,XX +XXX,XX @@ static void gen_loongson_lswc2(DisasContext *ctx, int rt,
106
case OPC_GSLWLC1:
107
check_cp1_enabled(ctx);
108
gen_base_offset_addr(ctx, t0, rs, shf_offset);
109
- t1 = tcg_temp_new();
110
- tcg_gen_qemu_ld_tl(t1, t0, ctx->mem_idx, MO_UB);
111
- tcg_gen_andi_tl(t1, t0, 3);
112
- if (!cpu_is_bigendian(ctx)) {
113
- tcg_gen_xori_tl(t1, t1, 3);
114
- }
115
- tcg_gen_shli_tl(t1, t1, 3);
116
- tcg_gen_andi_tl(t0, t0, ~3);
117
- tcg_gen_qemu_ld_tl(t0, t0, ctx->mem_idx, MO_TEUL);
118
- tcg_gen_shl_tl(t0, t0, t1);
119
- t2 = tcg_const_tl(-1);
120
- tcg_gen_shl_tl(t2, t2, t1);
121
fp0 = tcg_temp_new_i32();
122
gen_load_fpr32(ctx, fp0, rt);
123
+ t1 = tcg_temp_new();
124
tcg_gen_ext_i32_tl(t1, fp0);
125
- tcg_gen_andc_tl(t1, t1, t2);
126
- tcg_gen_or_tl(t0, t0, t1);
127
-#if defined(TARGET_MIPS64)
128
- tcg_gen_extrl_i64_i32(fp0, t0);
129
-#else
130
- tcg_gen_ext32s_tl(fp0, t0);
131
-#endif
132
+ gen_lxl(ctx, t1, t0, ctx->mem_idx, MO_TEUL);
133
+ tcg_gen_trunc_tl_i32(fp0, t1);
134
gen_store_fpr32(ctx, fp0, rt);
135
break;
136
case OPC_GSLWRC1:
137
@@ -XXX,XX +XXX,XX @@ static void gen_loongson_lswc2(DisasContext *ctx, int rt,
138
check_cp1_enabled(ctx);
139
gen_base_offset_addr(ctx, t0, rs, shf_offset);
140
t1 = tcg_temp_new();
141
- tcg_gen_qemu_ld_tl(t1, t0, ctx->mem_idx, MO_UB);
142
- tcg_gen_andi_tl(t1, t0, 7);
143
- if (!cpu_is_bigendian(ctx)) {
144
- tcg_gen_xori_tl(t1, t1, 7);
145
- }
146
- tcg_gen_shli_tl(t1, t1, 3);
147
- tcg_gen_andi_tl(t0, t0, ~7);
148
- tcg_gen_qemu_ld_tl(t0, t0, ctx->mem_idx, MO_TEUQ);
149
- tcg_gen_shl_tl(t0, t0, t1);
150
- t2 = tcg_const_tl(-1);
151
- tcg_gen_shl_tl(t2, t2, t1);
152
gen_load_fpr64(ctx, t1, rt);
153
- tcg_gen_andc_tl(t1, t1, t2);
154
- tcg_gen_or_tl(t0, t0, t1);
155
- gen_store_fpr64(ctx, t0, rt);
156
+ gen_lxl(ctx, t1, t0, ctx->mem_idx, MO_TEUQ);
157
+ gen_store_fpr64(ctx, t1, rt);
158
break;
159
case OPC_GSLDRC1:
160
check_cp1_enabled(ctx);
161
--
162
2.34.1
163
164
diff view generated by jsdifflib
New patch
1
Common subroutine for LDR and LWR.
2
Use tcg_constant_tl of ~1 instead of tcg_const_tl of 0x..fe.
1
3
4
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
5
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6
---
7
target/mips/tcg/translate.c | 116 +++++++++++++-----------------------
8
1 file changed, 40 insertions(+), 76 deletions(-)
9
10
diff --git a/target/mips/tcg/translate.c b/target/mips/tcg/translate.c
11
index XXXXXXX..XXXXXXX 100644
12
--- a/target/mips/tcg/translate.c
13
+++ b/target/mips/tcg/translate.c
14
@@ -XXX,XX +XXX,XX @@ static void gen_lxl(DisasContext *ctx, TCGv reg, TCGv addr,
15
tcg_gen_or_tl(reg, t0, t1);
16
}
17
18
+/* LWR or LDR, depending on MemOp. */
19
+static void gen_lxr(DisasContext *ctx, TCGv reg, TCGv addr,
20
+ int mem_idx, MemOp mop)
21
+{
22
+ int size = memop_size(mop);
23
+ int sizem1 = size - 1;
24
+ TCGv t0 = tcg_temp_new();
25
+ TCGv t1 = tcg_temp_new();
26
+
27
+ /*
28
+ * Do a byte access to possibly trigger a page
29
+ * fault with the unaligned address.
30
+ */
31
+ tcg_gen_qemu_ld_tl(t1, addr, mem_idx, MO_UB);
32
+ tcg_gen_andi_tl(t1, addr, sizem1);
33
+ if (cpu_is_bigendian(ctx)) {
34
+ tcg_gen_xori_tl(t1, t1, sizem1);
35
+ }
36
+ tcg_gen_shli_tl(t1, t1, 3);
37
+ tcg_gen_andi_tl(t0, addr, ~sizem1);
38
+ tcg_gen_qemu_ld_tl(t0, t0, mem_idx, mop);
39
+ tcg_gen_shr_tl(t0, t0, t1);
40
+ tcg_gen_xori_tl(t1, t1, size * 8 - 1);
41
+ tcg_gen_shl_tl(t1, tcg_constant_tl(~1), t1);
42
+ tcg_gen_and_tl(t1, reg, t1);
43
+ tcg_gen_or_tl(reg, t0, t1);
44
+}
45
+
46
/* Load */
47
static void gen_ld(DisasContext *ctx, uint32_t opc,
48
int rt, int base, int offset)
49
{
50
- TCGv t0, t1, t2;
51
+ TCGv t0, t1;
52
int mem_idx = ctx->mem_idx;
53
54
if (rt == 0 && ctx->insn_flags & (INSN_LOONGSON2E | INSN_LOONGSON2F |
55
@@ -XXX,XX +XXX,XX @@ static void gen_ld(DisasContext *ctx, uint32_t opc,
56
break;
57
case OPC_LDR:
58
t1 = tcg_temp_new();
59
- /*
60
- * Do a byte access to possibly trigger a page
61
- * fault with the unaligned address.
62
- */
63
- tcg_gen_qemu_ld_tl(t1, t0, mem_idx, MO_UB);
64
- tcg_gen_andi_tl(t1, t0, 7);
65
- if (cpu_is_bigendian(ctx)) {
66
- tcg_gen_xori_tl(t1, t1, 7);
67
- }
68
- tcg_gen_shli_tl(t1, t1, 3);
69
- tcg_gen_andi_tl(t0, t0, ~7);
70
- tcg_gen_qemu_ld_tl(t0, t0, mem_idx, MO_TEUQ);
71
- tcg_gen_shr_tl(t0, t0, t1);
72
- tcg_gen_xori_tl(t1, t1, 63);
73
- t2 = tcg_const_tl(0xfffffffffffffffeull);
74
- tcg_gen_shl_tl(t2, t2, t1);
75
gen_load_gpr(t1, rt);
76
- tcg_gen_and_tl(t1, t1, t2);
77
- tcg_gen_or_tl(t0, t0, t1);
78
- gen_store_gpr(t0, rt);
79
+ gen_lxr(ctx, t1, t0, mem_idx, MO_TEUQ);
80
+ gen_store_gpr(t1, rt);
81
break;
82
case OPC_LDPC:
83
t1 = tcg_const_tl(pc_relative_pc(ctx));
84
@@ -XXX,XX +XXX,XX @@ static void gen_ld(DisasContext *ctx, uint32_t opc,
85
/* fall through */
86
case OPC_LWR:
87
t1 = tcg_temp_new();
88
- /*
89
- * Do a byte access to possibly trigger a page
90
- * fault with the unaligned address.
91
- */
92
- tcg_gen_qemu_ld_tl(t1, t0, mem_idx, MO_UB);
93
- tcg_gen_andi_tl(t1, t0, 3);
94
- if (cpu_is_bigendian(ctx)) {
95
- tcg_gen_xori_tl(t1, t1, 3);
96
- }
97
- tcg_gen_shli_tl(t1, t1, 3);
98
- tcg_gen_andi_tl(t0, t0, ~3);
99
- tcg_gen_qemu_ld_tl(t0, t0, mem_idx, MO_TEUL);
100
- tcg_gen_shr_tl(t0, t0, t1);
101
- tcg_gen_xori_tl(t1, t1, 31);
102
- t2 = tcg_const_tl(0xfffffffeull);
103
- tcg_gen_shl_tl(t2, t2, t1);
104
gen_load_gpr(t1, rt);
105
- tcg_gen_and_tl(t1, t1, t2);
106
- tcg_gen_or_tl(t0, t0, t1);
107
- tcg_gen_ext32s_tl(t0, t0);
108
- gen_store_gpr(t0, rt);
109
+ gen_lxr(ctx, t1, t0, mem_idx, MO_TEUL);
110
+ tcg_gen_ext32s_tl(t1, t1);
111
+ gen_store_gpr(t1, rt);
112
break;
113
case OPC_LLE:
114
mem_idx = MIPS_HFLAG_UM;
115
@@ -XXX,XX +XXX,XX @@ static void gen_loongson_multimedia(DisasContext *ctx, int rd, int rs, int rt)
116
static void gen_loongson_lswc2(DisasContext *ctx, int rt,
117
int rs, int rd)
118
{
119
- TCGv t0, t1, t2;
120
+ TCGv t0, t1;
121
TCGv_i32 fp0;
122
#if defined(TARGET_MIPS64)
123
int lsq_rt1 = ctx->opcode & 0x1f;
124
@@ -XXX,XX +XXX,XX @@ static void gen_loongson_lswc2(DisasContext *ctx, int rt,
125
case OPC_GSLWRC1:
126
check_cp1_enabled(ctx);
127
gen_base_offset_addr(ctx, t0, rs, shf_offset);
128
- t1 = tcg_temp_new();
129
- tcg_gen_qemu_ld_tl(t1, t0, ctx->mem_idx, MO_UB);
130
- tcg_gen_andi_tl(t1, t0, 3);
131
- if (cpu_is_bigendian(ctx)) {
132
- tcg_gen_xori_tl(t1, t1, 3);
133
- }
134
- tcg_gen_shli_tl(t1, t1, 3);
135
- tcg_gen_andi_tl(t0, t0, ~3);
136
- tcg_gen_qemu_ld_tl(t0, t0, ctx->mem_idx, MO_TEUL);
137
- tcg_gen_shr_tl(t0, t0, t1);
138
- tcg_gen_xori_tl(t1, t1, 31);
139
- t2 = tcg_const_tl(0xfffffffeull);
140
- tcg_gen_shl_tl(t2, t2, t1);
141
fp0 = tcg_temp_new_i32();
142
gen_load_fpr32(ctx, fp0, rt);
143
+ t1 = tcg_temp_new();
144
tcg_gen_ext_i32_tl(t1, fp0);
145
- tcg_gen_and_tl(t1, t1, t2);
146
- tcg_gen_or_tl(t0, t0, t1);
147
-#if defined(TARGET_MIPS64)
148
- tcg_gen_extrl_i64_i32(fp0, t0);
149
-#else
150
- tcg_gen_ext32s_tl(fp0, t0);
151
-#endif
152
+ gen_lxr(ctx, t1, t0, ctx->mem_idx, MO_TEUL);
153
+ tcg_gen_trunc_tl_i32(fp0, t1);
154
gen_store_fpr32(ctx, fp0, rt);
155
break;
156
#if defined(TARGET_MIPS64)
157
@@ -XXX,XX +XXX,XX @@ static void gen_loongson_lswc2(DisasContext *ctx, int rt,
158
check_cp1_enabled(ctx);
159
gen_base_offset_addr(ctx, t0, rs, shf_offset);
160
t1 = tcg_temp_new();
161
- tcg_gen_qemu_ld_tl(t1, t0, ctx->mem_idx, MO_UB);
162
- tcg_gen_andi_tl(t1, t0, 7);
163
- if (cpu_is_bigendian(ctx)) {
164
- tcg_gen_xori_tl(t1, t1, 7);
165
- }
166
- tcg_gen_shli_tl(t1, t1, 3);
167
- tcg_gen_andi_tl(t0, t0, ~7);
168
- tcg_gen_qemu_ld_tl(t0, t0, ctx->mem_idx, MO_TEUQ);
169
- tcg_gen_shr_tl(t0, t0, t1);
170
- tcg_gen_xori_tl(t1, t1, 63);
171
- t2 = tcg_const_tl(0xfffffffffffffffeull);
172
- tcg_gen_shl_tl(t2, t2, t1);
173
gen_load_fpr64(ctx, t1, rt);
174
- tcg_gen_and_tl(t1, t1, t2);
175
- tcg_gen_or_tl(t0, t0, t1);
176
- gen_store_fpr64(ctx, t0, rt);
177
+ gen_lxr(ctx, t1, t0, ctx->mem_idx, MO_TEUQ);
178
+ gen_store_fpr64(ctx, t1, rt);
179
break;
180
#endif
181
default:
182
--
183
2.34.1
184
185
diff view generated by jsdifflib
1
From: Philippe Mathieu-Daudé <philmd@linaro.org>
1
Allocate a separate temp for modification.
2
2
3
accel/tcg/internal.h contains target specific declarations.
3
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
4
Unit files including it become "target tainted": they can not
5
be compiled as target agnostic. Rename using the '-target'
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>
11
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
4
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
12
---
5
---
13
accel/tcg/{internal.h => internal-target.h} | 6 +++---
6
target/mips/tcg/translate.c | 4 ++--
14
accel/tcg/cpu-exec-common.c | 2 +-
7
1 file changed, 2 insertions(+), 2 deletions(-)
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%)
25
8
26
diff --git a/accel/tcg/internal.h b/accel/tcg/internal-target.h
9
diff --git a/target/mips/tcg/translate.c b/target/mips/tcg/translate.c
27
similarity index 96%
28
rename from accel/tcg/internal.h
29
rename to accel/tcg/internal-target.h
30
index XXXXXXX..XXXXXXX 100644
10
index XXXXXXX..XXXXXXX 100644
31
--- a/accel/tcg/internal.h
11
--- a/target/mips/tcg/translate.c
32
+++ b/accel/tcg/internal-target.h
12
+++ b/target/mips/tcg/translate.c
33
@@ -XXX,XX +XXX,XX @@
13
@@ -XXX,XX +XXX,XX @@ static void gen_HILO(DisasContext *ctx, uint32_t opc, int acc, int reg)
34
/*
14
static inline void gen_r6_ld(target_long addr, int reg, int memidx,
35
- * Internal execution defines for qemu
15
MemOp memop)
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
63
diff --git a/accel/tcg/cpu-exec.c b/accel/tcg/cpu-exec.c
64
index XXXXXXX..XXXXXXX 100644
65
--- a/accel/tcg/cpu-exec.c
66
+++ b/accel/tcg/cpu-exec.c
67
@@ -XXX,XX +XXX,XX @@
68
#include "tb-jmp-cache.h"
69
#include "tb-hash.h"
70
#include "tb-context.h"
71
-#include "internal.h"
72
+#include "internal-target.h"
73
74
/* -icount align implementation. */
75
76
diff --git a/accel/tcg/cputlb.c b/accel/tcg/cputlb.c
77
index XXXXXXX..XXXXXXX 100644
78
--- a/accel/tcg/cputlb.c
79
+++ b/accel/tcg/cputlb.c
80
@@ -XXX,XX +XXX,XX @@
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
{
16
{
154
diff --git a/accel/tcg/user-exec.c b/accel/tcg/user-exec.c
17
- TCGv t0 = tcg_const_tl(addr);
155
index XXXXXXX..XXXXXXX 100644
18
- tcg_gen_qemu_ld_tl(t0, t0, memidx, memop);
156
--- a/accel/tcg/user-exec.c
19
+ TCGv t0 = tcg_temp_new();
157
+++ b/accel/tcg/user-exec.c
20
+ tcg_gen_qemu_ld_tl(t0, tcg_constant_tl(addr), memidx, memop);
158
@@ -XXX,XX +XXX,XX @@
21
gen_store_gpr(t0, reg);
159
#include "qemu/atomic128.h"
22
}
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
23
167
--
24
--
168
2.34.1
25
2.34.1
169
26
170
27
diff view generated by jsdifflib
New patch
1
All remaining uses are strictly read-only.
1
2
3
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
4
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
5
---
6
target/mips/tcg/mxu_translate.c | 4 +-
7
target/mips/tcg/translate.c | 56 +++++++++++------------
8
target/mips/tcg/tx79_translate.c | 4 +-
9
target/mips/tcg/micromips_translate.c.inc | 4 +-
10
target/mips/tcg/nanomips_translate.c.inc | 16 ++++---
11
5 files changed, 43 insertions(+), 41 deletions(-)
12
13
diff --git a/target/mips/tcg/mxu_translate.c b/target/mips/tcg/mxu_translate.c
14
index XXXXXXX..XXXXXXX 100644
15
--- a/target/mips/tcg/mxu_translate.c
16
+++ b/target/mips/tcg/mxu_translate.c
17
@@ -XXX,XX +XXX,XX @@ static void gen_mxu_D16MAX_D16MIN(DisasContext *ctx)
18
uint32_t XRx = XRb ? XRb : XRc;
19
/* ...and do half-word-wise max/min with one operand 0 */
20
TCGv_i32 t0 = tcg_temp_new();
21
- TCGv_i32 t1 = tcg_const_i32(0);
22
+ TCGv_i32 t1 = tcg_constant_i32(0);
23
24
/* the left half-word first */
25
tcg_gen_andi_i32(t0, mxu_gpr[XRx - 1], 0xFFFF0000);
26
@@ -XXX,XX +XXX,XX @@ static void gen_mxu_Q8MAX_Q8MIN(DisasContext *ctx)
27
uint32_t XRx = XRb ? XRb : XRc;
28
/* ...and do byte-wise max/min with one operand 0 */
29
TCGv_i32 t0 = tcg_temp_new();
30
- TCGv_i32 t1 = tcg_const_i32(0);
31
+ TCGv_i32 t1 = tcg_constant_i32(0);
32
int32_t i;
33
34
/* the leftmost byte (byte 3) first */
35
diff --git a/target/mips/tcg/translate.c b/target/mips/tcg/translate.c
36
index XXXXXXX..XXXXXXX 100644
37
--- a/target/mips/tcg/translate.c
38
+++ b/target/mips/tcg/translate.c
39
@@ -XXX,XX +XXX,XX @@ static void gen_ld(DisasContext *ctx, uint32_t opc,
40
gen_store_gpr(t1, rt);
41
break;
42
case OPC_LDPC:
43
- t1 = tcg_const_tl(pc_relative_pc(ctx));
44
+ t1 = tcg_constant_tl(pc_relative_pc(ctx));
45
gen_op_addr_add(ctx, t0, t0, t1);
46
tcg_gen_qemu_ld_tl(t0, t0, mem_idx, MO_TEUQ);
47
gen_store_gpr(t0, rt);
48
break;
49
#endif
50
case OPC_LWPC:
51
- t1 = tcg_const_tl(pc_relative_pc(ctx));
52
+ t1 = tcg_constant_tl(pc_relative_pc(ctx));
53
gen_op_addr_add(ctx, t0, t0, t1);
54
tcg_gen_qemu_ld_tl(t0, t0, mem_idx, MO_TESL);
55
gen_store_gpr(t0, rt);
56
@@ -XXX,XX +XXX,XX @@ static void gen_cond_move(DisasContext *ctx, uint32_t opc,
57
58
t0 = tcg_temp_new();
59
gen_load_gpr(t0, rt);
60
- t1 = tcg_const_tl(0);
61
+ t1 = tcg_constant_tl(0);
62
t2 = tcg_temp_new();
63
gen_load_gpr(t2, rs);
64
switch (opc) {
65
@@ -XXX,XX +XXX,XX @@ static void gen_r6_muldiv(DisasContext *ctx, int opc, int rd, int rs, int rt)
66
break;
67
case R6_OPC_DIVU:
68
{
69
- TCGv t2 = tcg_const_tl(0);
70
- TCGv t3 = tcg_const_tl(1);
71
+ TCGv t2 = tcg_constant_tl(0);
72
+ TCGv t3 = tcg_constant_tl(1);
73
tcg_gen_ext32u_tl(t0, t0);
74
tcg_gen_ext32u_tl(t1, t1);
75
tcg_gen_movcond_tl(TCG_COND_EQ, t1, t1, t2, t3, t1);
76
@@ -XXX,XX +XXX,XX @@ static void gen_r6_muldiv(DisasContext *ctx, int opc, int rd, int rs, int rt)
77
break;
78
case R6_OPC_MODU:
79
{
80
- TCGv t2 = tcg_const_tl(0);
81
- TCGv t3 = tcg_const_tl(1);
82
+ TCGv t2 = tcg_constant_tl(0);
83
+ TCGv t3 = tcg_constant_tl(1);
84
tcg_gen_ext32u_tl(t0, t0);
85
tcg_gen_ext32u_tl(t1, t1);
86
tcg_gen_movcond_tl(TCG_COND_EQ, t1, t1, t2, t3, t1);
87
@@ -XXX,XX +XXX,XX @@ static void gen_r6_muldiv(DisasContext *ctx, int opc, int rd, int rs, int rt)
88
break;
89
case R6_OPC_DDIVU:
90
{
91
- TCGv t2 = tcg_const_tl(0);
92
- TCGv t3 = tcg_const_tl(1);
93
+ TCGv t2 = tcg_constant_tl(0);
94
+ TCGv t3 = tcg_constant_tl(1);
95
tcg_gen_movcond_tl(TCG_COND_EQ, t1, t1, t2, t3, t1);
96
tcg_gen_divu_i64(cpu_gpr[rd], t0, t1);
97
}
98
break;
99
case R6_OPC_DMODU:
100
{
101
- TCGv t2 = tcg_const_tl(0);
102
- TCGv t3 = tcg_const_tl(1);
103
+ TCGv t2 = tcg_constant_tl(0);
104
+ TCGv t3 = tcg_constant_tl(1);
105
tcg_gen_movcond_tl(TCG_COND_EQ, t1, t1, t2, t3, t1);
106
tcg_gen_remu_i64(cpu_gpr[rd], t0, t1);
107
}
108
@@ -XXX,XX +XXX,XX @@ static void gen_div1_tx79(DisasContext *ctx, uint32_t opc, int rs, int rt)
109
break;
110
case MMI_OPC_DIVU1:
111
{
112
- TCGv t2 = tcg_const_tl(0);
113
- TCGv t3 = tcg_const_tl(1);
114
+ TCGv t2 = tcg_constant_tl(0);
115
+ TCGv t3 = tcg_constant_tl(1);
116
tcg_gen_ext32u_tl(t0, t0);
117
tcg_gen_ext32u_tl(t1, t1);
118
tcg_gen_movcond_tl(TCG_COND_EQ, t1, t1, t2, t3, t1);
119
@@ -XXX,XX +XXX,XX @@ static void gen_muldiv(DisasContext *ctx, uint32_t opc,
120
break;
121
case OPC_DIVU:
122
{
123
- TCGv t2 = tcg_const_tl(0);
124
- TCGv t3 = tcg_const_tl(1);
125
+ TCGv t2 = tcg_constant_tl(0);
126
+ TCGv t3 = tcg_constant_tl(1);
127
tcg_gen_ext32u_tl(t0, t0);
128
tcg_gen_ext32u_tl(t1, t1);
129
tcg_gen_movcond_tl(TCG_COND_EQ, t1, t1, t2, t3, t1);
130
@@ -XXX,XX +XXX,XX @@ static void gen_muldiv(DisasContext *ctx, uint32_t opc,
131
break;
132
case OPC_DDIVU:
133
{
134
- TCGv t2 = tcg_const_tl(0);
135
- TCGv t3 = tcg_const_tl(1);
136
+ TCGv t2 = tcg_constant_tl(0);
137
+ TCGv t3 = tcg_constant_tl(1);
138
tcg_gen_movcond_tl(TCG_COND_EQ, t1, t1, t2, t3, t1);
139
tcg_gen_divu_i64(cpu_LO[acc], t0, t1);
140
tcg_gen_remu_i64(cpu_HI[acc], t0, t1);
141
@@ -XXX,XX +XXX,XX @@ static void gen_bshfl(DisasContext *ctx, uint32_t op2, int rt, int rd)
142
case OPC_WSBH:
143
{
144
TCGv t1 = tcg_temp_new();
145
- TCGv t2 = tcg_const_tl(0x00FF00FF);
146
+ TCGv t2 = tcg_constant_tl(0x00FF00FF);
147
148
tcg_gen_shri_tl(t1, t0, 8);
149
tcg_gen_and_tl(t1, t1, t2);
150
@@ -XXX,XX +XXX,XX @@ static void gen_bshfl(DisasContext *ctx, uint32_t op2, int rt, int rd)
151
case OPC_DSBH:
152
{
153
TCGv t1 = tcg_temp_new();
154
- TCGv t2 = tcg_const_tl(0x00FF00FF00FF00FFULL);
155
+ TCGv t2 = tcg_constant_tl(0x00FF00FF00FF00FFULL);
156
157
tcg_gen_shri_tl(t1, t0, 8);
158
tcg_gen_and_tl(t1, t1, t2);
159
@@ -XXX,XX +XXX,XX @@ static void gen_bshfl(DisasContext *ctx, uint32_t op2, int rt, int rd)
160
case OPC_DSHD:
161
{
162
TCGv t1 = tcg_temp_new();
163
- TCGv t2 = tcg_const_tl(0x0000FFFF0000FFFFULL);
164
+ TCGv t2 = tcg_constant_tl(0x0000FFFF0000FFFFULL);
165
166
tcg_gen_shri_tl(t1, t0, 16);
167
tcg_gen_and_tl(t1, t1, t2);
168
@@ -XXX,XX +XXX,XX @@ static void gen_mftr(CPUMIPSState *env, DisasContext *ctx, int rt, int rd,
169
case 5:
170
case 6:
171
case 7:
172
- gen_helper_mftc0_configx(t0, cpu_env, tcg_const_tl(sel));
173
+ gen_helper_mftc0_configx(t0, cpu_env, tcg_constant_tl(sel));
174
break;
175
default:
176
goto die;
177
@@ -XXX,XX +XXX,XX @@ static inline void gen_movcf_ps(DisasContext *ctx, int fs, int fd,
178
static void gen_sel_s(DisasContext *ctx, enum fopcode op1, int fd, int ft,
179
int fs)
180
{
181
- TCGv_i32 t1 = tcg_const_i32(0);
182
+ TCGv_i32 t1 = tcg_constant_i32(0);
183
TCGv_i32 fp0 = tcg_temp_new_i32();
184
TCGv_i32 fp1 = tcg_temp_new_i32();
185
TCGv_i32 fp2 = tcg_temp_new_i32();
186
@@ -XXX,XX +XXX,XX @@ static void gen_sel_s(DisasContext *ctx, enum fopcode op1, int fd, int ft,
187
static void gen_sel_d(DisasContext *ctx, enum fopcode op1, int fd, int ft,
188
int fs)
189
{
190
- TCGv_i64 t1 = tcg_const_i64(0);
191
+ TCGv_i64 t1 = tcg_constant_i64(0);
192
TCGv_i64 fp0 = tcg_temp_new_i64();
193
TCGv_i64 fp1 = tcg_temp_new_i64();
194
TCGv_i64 fp2 = tcg_temp_new_i64();
195
@@ -XXX,XX +XXX,XX @@ void gen_addiupc(DisasContext *ctx, int rx, int imm,
196
static void gen_cache_operation(DisasContext *ctx, uint32_t op, int base,
197
int16_t offset)
198
{
199
- TCGv_i32 t0 = tcg_const_i32(op);
200
+ TCGv_i32 t0 = tcg_constant_i32(op);
201
TCGv t1 = tcg_temp_new();
202
gen_base_offset_addr(ctx, t1, base, offset);
203
gen_helper_cache(cpu_env, t1, t0);
204
@@ -XXX,XX +XXX,XX @@ static void gen_mipsdsp_arith(DisasContext *ctx, uint32_t op1, uint32_t op2,
205
case OPC_PRECR_SRA_PH_W:
206
check_dsp_r2(ctx);
207
{
208
- TCGv_i32 sa_t = tcg_const_i32(v2);
209
+ TCGv_i32 sa_t = tcg_constant_i32(v2);
210
gen_helper_precr_sra_ph_w(cpu_gpr[ret], sa_t, v1_t,
211
cpu_gpr[ret]);
212
break;
213
@@ -XXX,XX +XXX,XX @@ static void gen_mipsdsp_arith(DisasContext *ctx, uint32_t op1, uint32_t op2,
214
case OPC_PRECR_SRA_R_PH_W:
215
check_dsp_r2(ctx);
216
{
217
- TCGv_i32 sa_t = tcg_const_i32(v2);
218
+ TCGv_i32 sa_t = tcg_constant_i32(v2);
219
gen_helper_precr_sra_r_ph_w(cpu_gpr[ret], sa_t, v1_t,
220
cpu_gpr[ret]);
221
break;
222
@@ -XXX,XX +XXX,XX @@ static void gen_mipsdsp_arith(DisasContext *ctx, uint32_t op1, uint32_t op2,
223
case OPC_PRECR_SRA_QH_PW:
224
check_dsp_r2(ctx);
225
{
226
- TCGv_i32 ret_t = tcg_const_i32(ret);
227
+ TCGv_i32 ret_t = tcg_constant_i32(ret);
228
gen_helper_precr_sra_qh_pw(v2_t, v1_t, v2_t, ret_t);
229
break;
230
}
231
case OPC_PRECR_SRA_R_QH_PW:
232
check_dsp_r2(ctx);
233
{
234
- TCGv_i32 sa_v = tcg_const_i32(ret);
235
+ TCGv_i32 sa_v = tcg_constant_i32(ret);
236
gen_helper_precr_sra_r_qh_pw(v2_t, v1_t, v2_t, sa_v);
237
break;
238
}
239
diff --git a/target/mips/tcg/tx79_translate.c b/target/mips/tcg/tx79_translate.c
240
index XXXXXXX..XXXXXXX 100644
241
--- a/target/mips/tcg/tx79_translate.c
242
+++ b/target/mips/tcg/tx79_translate.c
243
@@ -XXX,XX +XXX,XX @@ static bool trans_parallel_compare(DisasContext *ctx, arg_r *a,
244
return true;
245
}
246
247
- c0 = tcg_const_tl(0);
248
- c1 = tcg_const_tl(0xffffffff);
249
+ c0 = tcg_constant_tl(0);
250
+ c1 = tcg_constant_tl(0xffffffff);
251
ax = tcg_temp_new_i64();
252
bx = tcg_temp_new_i64();
253
t0 = tcg_temp_new_i64();
254
diff --git a/target/mips/tcg/micromips_translate.c.inc b/target/mips/tcg/micromips_translate.c.inc
255
index XXXXXXX..XXXXXXX 100644
256
--- a/target/mips/tcg/micromips_translate.c.inc
257
+++ b/target/mips/tcg/micromips_translate.c.inc
258
@@ -XXX,XX +XXX,XX @@ static void gen_ldst_multiple(DisasContext *ctx, uint32_t opc, int reglist,
259
260
gen_base_offset_addr(ctx, t0, base, offset);
261
262
- t1 = tcg_const_tl(reglist);
263
- t2 = tcg_const_i32(ctx->mem_idx);
264
+ t1 = tcg_constant_tl(reglist);
265
+ t2 = tcg_constant_i32(ctx->mem_idx);
266
267
save_cpu_state(ctx, 1);
268
switch (opc) {
269
diff --git a/target/mips/tcg/nanomips_translate.c.inc b/target/mips/tcg/nanomips_translate.c.inc
270
index XXXXXXX..XXXXXXX 100644
271
--- a/target/mips/tcg/nanomips_translate.c.inc
272
+++ b/target/mips/tcg/nanomips_translate.c.inc
273
@@ -XXX,XX +XXX,XX @@ static void gen_pool32a5_nanomips_insn(DisasContext *ctx, int opc,
274
case 0:
275
/* PRECR_SRA_PH_W */
276
{
277
- TCGv_i32 sa_t = tcg_const_i32(rd);
278
+ TCGv_i32 sa_t = tcg_constant_i32(rd);
279
gen_helper_precr_sra_ph_w(v1_t, sa_t, v1_t,
280
cpu_gpr[rt]);
281
gen_store_gpr(v1_t, rt);
282
@@ -XXX,XX +XXX,XX @@ static void gen_pool32a5_nanomips_insn(DisasContext *ctx, int opc,
283
case 1:
284
/* PRECR_SRA_R_PH_W */
285
{
286
- TCGv_i32 sa_t = tcg_const_i32(rd);
287
+ TCGv_i32 sa_t = tcg_constant_i32(rd);
288
gen_helper_precr_sra_r_ph_w(v1_t, sa_t, v1_t,
289
cpu_gpr[rt]);
290
gen_store_gpr(v1_t, rt);
291
@@ -XXX,XX +XXX,XX @@ static int decode_nanomips_32_48_opc(CPUMIPSState *env, DisasContext *ctx)
292
check_nms(ctx);
293
if (rt != 0) {
294
TCGv t0 = tcg_temp_new();
295
- TCGv_i32 shift = tcg_const_i32(extract32(ctx->opcode, 0, 5));
296
- TCGv_i32 shiftx = tcg_const_i32(extract32(ctx->opcode, 7, 4)
297
- << 1);
298
- TCGv_i32 stripe = tcg_const_i32(extract32(ctx->opcode, 6, 1));
299
+ TCGv_i32 shift =
300
+ tcg_constant_i32(extract32(ctx->opcode, 0, 5));
301
+ TCGv_i32 shiftx =
302
+ tcg_constant_i32(extract32(ctx->opcode, 7, 4) << 1);
303
+ TCGv_i32 stripe =
304
+ tcg_constant_i32(extract32(ctx->opcode, 6, 1));
305
306
gen_load_gpr(t0, rs);
307
gen_helper_rotx(cpu_gpr[rt], t0, shift, shiftx, stripe);
308
@@ -XXX,XX +XXX,XX @@ static int decode_isa_nanomips(CPUMIPSState *env, DisasContext *ctx)
309
310
/* make sure instructions are on a halfword boundary */
311
if (ctx->base.pc_next & 0x1) {
312
- TCGv tmp = tcg_const_tl(ctx->base.pc_next);
313
+ TCGv tmp = tcg_constant_tl(ctx->base.pc_next);
314
tcg_gen_st_tl(tmp, cpu_env, offsetof(CPUMIPSState, CP0_BadVAddr));
315
generate_exception_end(ctx, EXCP_AdEL);
316
return 2;
317
--
318
2.34.1
319
320
diff view generated by jsdifflib
1
Propagate alignment just like size. This is required in order to
1
Move the body out of this large macro.
2
get the correct alignment on most cpu subclasses where the size and
2
Use tcg_constant_i64.
3
alignment is only specified for the base cpu type.
4
3
5
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
4
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
6
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
5
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7
---
6
---
8
qom/object.c | 14 ++++++++++++++
7
target/ppc/translate/vmx-impl.c.inc | 95 +++++++++++++++--------------
9
1 file changed, 14 insertions(+)
8
1 file changed, 49 insertions(+), 46 deletions(-)
10
9
11
diff --git a/qom/object.c b/qom/object.c
10
diff --git a/target/ppc/translate/vmx-impl.c.inc b/target/ppc/translate/vmx-impl.c.inc
12
index XXXXXXX..XXXXXXX 100644
11
index XXXXXXX..XXXXXXX 100644
13
--- a/qom/object.c
12
--- a/target/ppc/translate/vmx-impl.c.inc
14
+++ b/qom/object.c
13
+++ b/target/ppc/translate/vmx-impl.c.inc
15
@@ -XXX,XX +XXX,XX @@ static size_t type_object_get_size(TypeImpl *ti)
14
@@ -XXX,XX +XXX,XX @@ static void gen_mtvscr(DisasContext *ctx)
16
return 0;
15
gen_helper_mtvscr(cpu_env, val);
17
}
16
}
18
17
19
+static size_t type_object_get_align(TypeImpl *ti)
18
+static void gen_vx_vmul10(DisasContext *ctx, bool add_cin, bool ret_carry)
20
+{
19
+{
21
+ if (ti->instance_align) {
20
+ TCGv_i64 t0;
22
+ return ti->instance_align;
21
+ TCGv_i64 t1;
22
+ TCGv_i64 t2;
23
+ TCGv_i64 avr;
24
+ TCGv_i64 ten, z;
25
+
26
+ if (unlikely(!ctx->altivec_enabled)) {
27
+ gen_exception(ctx, POWERPC_EXCP_VPU);
28
+ return;
23
+ }
29
+ }
24
+
30
+
25
+ if (type_has_parent(ti)) {
31
+ t0 = tcg_temp_new_i64();
26
+ return type_object_get_align(type_get_parent(ti));
32
+ t1 = tcg_temp_new_i64();
33
+ t2 = tcg_temp_new_i64();
34
+ avr = tcg_temp_new_i64();
35
+ ten = tcg_constant_i64(10);
36
+ z = tcg_constant_i64(0);
37
+
38
+ if (add_cin) {
39
+ get_avr64(avr, rA(ctx->opcode), false);
40
+ tcg_gen_mulu2_i64(t0, t1, avr, ten);
41
+ get_avr64(avr, rB(ctx->opcode), false);
42
+ tcg_gen_andi_i64(t2, avr, 0xF);
43
+ tcg_gen_add2_i64(avr, t2, t0, t1, t2, z);
44
+ set_avr64(rD(ctx->opcode), avr, false);
45
+ } else {
46
+ get_avr64(avr, rA(ctx->opcode), false);
47
+ tcg_gen_mulu2_i64(avr, t2, avr, ten);
48
+ set_avr64(rD(ctx->opcode), avr, false);
27
+ }
49
+ }
28
+
50
+
29
+ return 0;
51
+ if (ret_carry) {
52
+ get_avr64(avr, rA(ctx->opcode), true);
53
+ tcg_gen_mulu2_i64(t0, t1, avr, ten);
54
+ tcg_gen_add2_i64(t0, avr, t0, t1, t2, z);
55
+ set_avr64(rD(ctx->opcode), avr, false);
56
+ set_avr64(rD(ctx->opcode), z, true);
57
+ } else {
58
+ get_avr64(avr, rA(ctx->opcode), true);
59
+ tcg_gen_mul_i64(t0, avr, ten);
60
+ tcg_gen_add_i64(avr, t0, t2);
61
+ set_avr64(rD(ctx->opcode), avr, true);
62
+ }
30
+}
63
+}
31
+
64
+
32
size_t object_type_get_instance_size(const char *typename)
65
#define GEN_VX_VMUL10(name, add_cin, ret_carry) \
33
{
66
-static void glue(gen_, name)(DisasContext *ctx) \
34
TypeImpl *type = type_get_by_name(typename);
67
-{ \
35
@@ -XXX,XX +XXX,XX @@ static void type_initialize(TypeImpl *ti)
68
- TCGv_i64 t0; \
36
69
- TCGv_i64 t1; \
37
ti->class_size = type_class_get_size(ti);
70
- TCGv_i64 t2; \
38
ti->instance_size = type_object_get_size(ti);
71
- TCGv_i64 avr; \
39
+ ti->instance_align = type_object_get_align(ti);
72
- TCGv_i64 ten, z; \
40
/* Any type with zero instance_size is implicitly abstract.
73
- \
41
* This means interface types are all abstract.
74
- if (unlikely(!ctx->altivec_enabled)) { \
42
*/
75
- gen_exception(ctx, POWERPC_EXCP_VPU); \
76
- return; \
77
- } \
78
- \
79
- t0 = tcg_temp_new_i64(); \
80
- t1 = tcg_temp_new_i64(); \
81
- t2 = tcg_temp_new_i64(); \
82
- avr = tcg_temp_new_i64(); \
83
- ten = tcg_const_i64(10); \
84
- z = tcg_const_i64(0); \
85
- \
86
- if (add_cin) { \
87
- get_avr64(avr, rA(ctx->opcode), false); \
88
- tcg_gen_mulu2_i64(t0, t1, avr, ten); \
89
- get_avr64(avr, rB(ctx->opcode), false); \
90
- tcg_gen_andi_i64(t2, avr, 0xF); \
91
- tcg_gen_add2_i64(avr, t2, t0, t1, t2, z); \
92
- set_avr64(rD(ctx->opcode), avr, false); \
93
- } else { \
94
- get_avr64(avr, rA(ctx->opcode), false); \
95
- tcg_gen_mulu2_i64(avr, t2, avr, ten); \
96
- set_avr64(rD(ctx->opcode), avr, false); \
97
- } \
98
- \
99
- if (ret_carry) { \
100
- get_avr64(avr, rA(ctx->opcode), true); \
101
- tcg_gen_mulu2_i64(t0, t1, avr, ten); \
102
- tcg_gen_add2_i64(t0, avr, t0, t1, t2, z); \
103
- set_avr64(rD(ctx->opcode), avr, false); \
104
- set_avr64(rD(ctx->opcode), z, true); \
105
- } else { \
106
- get_avr64(avr, rA(ctx->opcode), true); \
107
- tcg_gen_mul_i64(t0, avr, ten); \
108
- tcg_gen_add_i64(avr, t0, t2); \
109
- set_avr64(rD(ctx->opcode), avr, true); \
110
- } \
111
-} \
112
+ static void glue(gen_, name)(DisasContext *ctx) \
113
+ { gen_vx_vmul10(ctx, add_cin, ret_carry); }
114
115
GEN_VX_VMUL10(vmul10uq, 0, 0);
116
GEN_VX_VMUL10(vmul10euq, 1, 0);
43
--
117
--
44
2.34.1
118
2.34.1
45
119
46
120
diff view generated by jsdifflib
New patch
1
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
2
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
3
---
4
target/ppc/translate/vmx-impl.c.inc | 4 +++-
5
1 file changed, 3 insertions(+), 1 deletion(-)
1
6
7
diff --git a/target/ppc/translate/vmx-impl.c.inc b/target/ppc/translate/vmx-impl.c.inc
8
index XXXXXXX..XXXXXXX 100644
9
--- a/target/ppc/translate/vmx-impl.c.inc
10
+++ b/target/ppc/translate/vmx-impl.c.inc
11
@@ -XXX,XX +XXX,XX @@ static bool do_vector_shift_quad(DisasContext *ctx, arg_VX *a, bool right,
12
hi = tcg_temp_new_i64();
13
lo = tcg_temp_new_i64();
14
t0 = tcg_temp_new_i64();
15
- t1 = tcg_const_i64(0);
16
17
get_avr64(lo, a->vra, false);
18
get_avr64(hi, a->vra, true);
19
@@ -XXX,XX +XXX,XX @@ static bool do_vector_shift_quad(DisasContext *ctx, arg_VX *a, bool right,
20
if (right) {
21
tcg_gen_movcond_i64(TCG_COND_NE, lo, t0, zero, hi, lo);
22
if (alg) {
23
+ t1 = tcg_temp_new_i64();
24
tcg_gen_sari_i64(t1, lo, 63);
25
+ } else {
26
+ t1 = zero;
27
}
28
tcg_gen_movcond_i64(TCG_COND_NE, hi, t0, zero, t1, hi);
29
} else {
30
--
31
2.34.1
32
33
diff view generated by jsdifflib
1
From: Philippe Mathieu-Daudé <philmd@linaro.org>
1
Remove the local definition of rx_abs.
2
2
3
Currently accel_cpu_realize() only performs target-specific
3
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
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>
4
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
11
---
5
---
12
include/qemu/accel.h | 2 ++
6
target/rx/translate.c | 12 +-----------
13
accel/accel-common.c | 21 +++++++++++++++++++--
7
1 file changed, 1 insertion(+), 11 deletions(-)
14
2 files changed, 21 insertions(+), 2 deletions(-)
15
8
16
diff --git a/include/qemu/accel.h b/include/qemu/accel.h
9
diff --git a/target/rx/translate.c b/target/rx/translate.c
17
index XXXXXXX..XXXXXXX 100644
10
index XXXXXXX..XXXXXXX 100644
18
--- a/include/qemu/accel.h
11
--- a/target/rx/translate.c
19
+++ b/include/qemu/accel.h
12
+++ b/target/rx/translate.c
20
@@ -XXX,XX +XXX,XX @@ typedef struct AccelClass {
13
@@ -XXX,XX +XXX,XX @@ static bool trans_SBB_mr(DisasContext *ctx, arg_SBB_mr *a)
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;
14
return true;
54
}
15
}
55
16
56
void accel_cpu_common_unrealize(CPUState *cpu)
17
-static void rx_abs(TCGv ret, TCGv arg1)
18
-{
19
- TCGv neg;
20
- TCGv zero;
21
- neg = tcg_temp_new();
22
- zero = tcg_const_i32(0);
23
- tcg_gen_neg_i32(neg, arg1);
24
- tcg_gen_movcond_i32(TCG_COND_LT, ret, arg1, zero, neg, arg1);
25
-}
26
-
27
/* abs rd */
28
/* abs rs, rd */
29
static bool trans_ABS_rr(DisasContext *ctx, arg_ABS_rr *a)
57
{
30
{
58
+ AccelState *accel = current_accel();
31
- rx_gen_op_rr(rx_abs, a->rd, a->rs);
59
+ AccelClass *acc = ACCEL_GET_CLASS(accel);
32
+ rx_gen_op_rr(tcg_gen_abs_i32, a->rd, a->rs);
60
+
33
return true;
61
+ /* generic unrealization */
62
+ if (acc->cpu_common_unrealize) {
63
+ acc->cpu_common_unrealize(cpu);
64
+ }
65
}
34
}
66
35
67
int accel_supported_gdbstub_sstep_flags(void)
68
--
36
--
69
2.34.1
37
2.34.1
70
38
71
39
diff view generated by jsdifflib
1
We can now access icount_decr directly.
1
Since PSW_Z = PSW_S, we can move that assignment to the end
2
and use PSW_Z as a temporary while computing PSW_O.
3
Use tcg_constant_i32 instead of tcg_const_i32.
2
4
3
Reviewed-by: Anton Johansson <anjo@rev.ng>
5
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
4
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
5
---
7
---
6
include/exec/cpu-all.h | 1 -
8
target/rx/translate.c | 28 +++++++++++++---------------
7
include/hw/core/cpu.h | 2 --
9
1 file changed, 13 insertions(+), 15 deletions(-)
8
hw/core/cpu-common.c | 4 ++--
9
3 files changed, 2 insertions(+), 5 deletions(-)
10
10
11
diff --git a/include/exec/cpu-all.h b/include/exec/cpu-all.h
11
diff --git a/target/rx/translate.c b/target/rx/translate.c
12
index XXXXXXX..XXXXXXX 100644
12
index XXXXXXX..XXXXXXX 100644
13
--- a/include/exec/cpu-all.h
13
--- a/target/rx/translate.c
14
+++ b/include/exec/cpu-all.h
14
+++ b/target/rx/translate.c
15
@@ -XXX,XX +XXX,XX @@ int cpu_exec(CPUState *cpu);
15
@@ -XXX,XX +XXX,XX @@ static bool trans_NEG_rr(DisasContext *ctx, arg_NEG_rr *a)
16
static inline void cpu_set_cpustate_pointers(ArchCPU *cpu)
16
/* ret = arg1 + arg2 + psw_c */
17
static void rx_adc(TCGv ret, TCGv arg1, TCGv arg2)
17
{
18
{
18
cpu->parent_obj.env_ptr = &cpu->env;
19
- TCGv z;
19
- cpu->parent_obj.icount_decr_ptr = &cpu->parent_obj.neg.icount_decr;
20
- z = tcg_const_i32(0);
21
+ TCGv z = tcg_constant_i32(0);
22
tcg_gen_add2_i32(cpu_psw_s, cpu_psw_c, arg1, z, cpu_psw_c, z);
23
tcg_gen_add2_i32(cpu_psw_s, cpu_psw_c, cpu_psw_s, cpu_psw_c, arg2, z);
24
- tcg_gen_mov_i32(cpu_psw_z, cpu_psw_s);
25
tcg_gen_xor_i32(cpu_psw_o, cpu_psw_s, arg1);
26
- tcg_gen_xor_i32(z, arg1, arg2);
27
- tcg_gen_andc_i32(cpu_psw_o, cpu_psw_o, z);
28
+ tcg_gen_xor_i32(cpu_psw_z, arg1, arg2);
29
+ tcg_gen_andc_i32(cpu_psw_o, cpu_psw_o, cpu_psw_z);
30
+ tcg_gen_mov_i32(cpu_psw_z, cpu_psw_s);
31
tcg_gen_mov_i32(ret, cpu_psw_s);
20
}
32
}
21
33
22
/* Validate correct placement of CPUArchState. */
34
@@ -XXX,XX +XXX,XX @@ static bool trans_ADC_mr(DisasContext *ctx, arg_ADC_mr *a)
23
diff --git a/include/hw/core/cpu.h b/include/hw/core/cpu.h
35
/* ret = arg1 + arg2 */
24
index XXXXXXX..XXXXXXX 100644
36
static void rx_add(TCGv ret, TCGv arg1, TCGv arg2)
25
--- a/include/hw/core/cpu.h
37
{
26
+++ b/include/hw/core/cpu.h
38
- TCGv z;
27
@@ -XXX,XX +XXX,XX @@ struct qemu_work_item;
39
- z = tcg_const_i32(0);
28
* @as: Pointer to the first AddressSpace, for the convenience of targets which
40
+ TCGv z = tcg_constant_i32(0);
29
* only have a single AddressSpace
41
tcg_gen_add2_i32(cpu_psw_s, cpu_psw_c, arg1, z, arg2, z);
30
* @env_ptr: Pointer to subclass-specific CPUArchState field.
42
- tcg_gen_mov_i32(cpu_psw_z, cpu_psw_s);
31
- * @icount_decr_ptr: Pointer to IcountDecr field within subclass.
43
tcg_gen_xor_i32(cpu_psw_o, cpu_psw_s, arg1);
32
* @gdb_regs: Additional GDB registers.
44
- tcg_gen_xor_i32(z, arg1, arg2);
33
* @gdb_num_regs: Number of total registers accessible to GDB.
45
- tcg_gen_andc_i32(cpu_psw_o, cpu_psw_o, z);
34
* @gdb_num_g_regs: Number of registers in GDB 'g' packets.
46
+ tcg_gen_xor_i32(cpu_psw_z, arg1, arg2);
35
@@ -XXX,XX +XXX,XX @@ struct CPUState {
47
+ tcg_gen_andc_i32(cpu_psw_o, cpu_psw_o, cpu_psw_z);
36
MemoryRegion *memory;
48
+ tcg_gen_mov_i32(cpu_psw_z, cpu_psw_s);
37
49
tcg_gen_mov_i32(ret, cpu_psw_s);
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
}
50
}
54
51
55
static int cpu_common_gdb_read_register(CPUState *cpu, GByteArray *buf, int reg)
52
@@ -XXX,XX +XXX,XX @@ static bool trans_ADD_rrr(DisasContext *ctx, arg_ADD_rrr *a)
56
@@ -XXX,XX +XXX,XX @@ static void cpu_common_reset_hold(Object *obj)
53
/* ret = arg1 - arg2 */
57
cpu->halted = cpu->start_powered_off;
54
static void rx_sub(TCGv ret, TCGv arg1, TCGv arg2)
58
cpu->mem_io_pc = 0;
55
{
59
cpu->icount_extra = 0;
56
- TCGv temp;
60
- qatomic_set(&cpu->icount_decr_ptr->u32, 0);
57
tcg_gen_sub_i32(cpu_psw_s, arg1, arg2);
61
+ qatomic_set(&cpu->neg.icount_decr.u32, 0);
58
- tcg_gen_mov_i32(cpu_psw_z, cpu_psw_s);
62
cpu->can_do_io = 1;
59
tcg_gen_setcond_i32(TCG_COND_GEU, cpu_psw_c, arg1, arg2);
63
cpu->exception_index = -1;
60
tcg_gen_xor_i32(cpu_psw_o, cpu_psw_s, arg1);
64
cpu->crash_occurred = false;
61
- temp = tcg_temp_new_i32();
62
- tcg_gen_xor_i32(temp, arg1, arg2);
63
- tcg_gen_and_i32(cpu_psw_o, cpu_psw_o, temp);
64
+ tcg_gen_xor_i32(cpu_psw_z, arg1, arg2);
65
+ tcg_gen_and_i32(cpu_psw_o, cpu_psw_o, cpu_psw_z);
66
+ tcg_gen_mov_i32(cpu_psw_z, cpu_psw_s);
67
/* CMP not required return */
68
if (ret) {
69
tcg_gen_mov_i32(ret, cpu_psw_s);
70
}
71
}
72
+
73
static void rx_cmp(TCGv dummy, TCGv arg1, TCGv arg2)
74
{
75
rx_sub(NULL, arg1, arg2);
76
}
77
+
78
/* ret = arg1 - arg2 - !psw_c */
79
/* -> ret = arg1 + ~arg2 + psw_c */
80
static void rx_sbb(TCGv ret, TCGv arg1, TCGv arg2)
65
--
81
--
66
2.34.1
82
2.34.1
83
84
diff view generated by jsdifflib
New patch
1
These three cases use a constant as first input, and
2
then overwrite the temp in the output. Separate them.
1
3
4
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
5
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6
---
7
target/rx/translate.c | 12 ++++++------
8
1 file changed, 6 insertions(+), 6 deletions(-)
9
10
diff --git a/target/rx/translate.c b/target/rx/translate.c
11
index XXXXXXX..XXXXXXX 100644
12
--- a/target/rx/translate.c
13
+++ b/target/rx/translate.c
14
@@ -XXX,XX +XXX,XX @@ static bool trans_SHLL_rr(DisasContext *ctx, arg_SHLL_rr *a)
15
done = gen_new_label();
16
/* if (cpu_regs[a->rs]) { */
17
tcg_gen_brcondi_i32(TCG_COND_EQ, cpu_regs[a->rs], 0, noshift);
18
- count = tcg_const_i32(32);
19
+ count = tcg_temp_new();
20
tmp = tcg_temp_new();
21
tcg_gen_andi_i32(tmp, cpu_regs[a->rs], 31);
22
- tcg_gen_sub_i32(count, count, tmp);
23
+ tcg_gen_sub_i32(count, tcg_constant_i32(32), tmp);
24
tcg_gen_sar_i32(cpu_psw_c, cpu_regs[a->rd], count);
25
tcg_gen_shl_i32(cpu_regs[a->rd], cpu_regs[a->rd], tmp);
26
tcg_gen_setcondi_i32(TCG_COND_EQ, cpu_psw_o, cpu_psw_c, 0);
27
@@ -XXX,XX +XXX,XX @@ static inline void rx_bnotr(TCGv reg, TCGv mask)
28
cat3(arg_, name, _rr) * a) \
29
{ \
30
TCGv mask, b; \
31
- mask = tcg_const_i32(1); \
32
+ mask = tcg_temp_new(); \
33
b = tcg_temp_new(); \
34
tcg_gen_andi_i32(b, cpu_regs[a->rs], 31); \
35
- tcg_gen_shl_i32(mask, mask, b); \
36
+ tcg_gen_shl_i32(mask, tcg_constant_i32(1), b); \
37
cat3(rx_, op, r)(cpu_regs[a->rd], mask); \
38
return true; \
39
} \
40
@@ -XXX,XX +XXX,XX @@ static inline void rx_bnotr(TCGv reg, TCGv mask)
41
cat3(arg_, name, _rm) * a) \
42
{ \
43
TCGv mask, mem, addr, b; \
44
- mask = tcg_const_i32(1); \
45
+ mask = tcg_temp_new(); \
46
b = tcg_temp_new(); \
47
tcg_gen_andi_i32(b, cpu_regs[a->rd], 7); \
48
- tcg_gen_shl_i32(mask, mask, b); \
49
+ tcg_gen_shl_i32(mask, tcg_constant_i32(1), b); \
50
mem = tcg_temp_new(); \
51
addr = rx_index_addr(ctx, mem, a->ld, MO_8, a->rs); \
52
cat3(rx_, op, m)(addr, mask); \
53
--
54
2.34.1
55
56
diff view generated by jsdifflib
New patch
1
All remaining uses are strictly read-only.
1
2
3
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
4
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
5
---
6
target/rx/translate.c | 32 ++++++++++++++++----------------
7
1 file changed, 16 insertions(+), 16 deletions(-)
8
9
diff --git a/target/rx/translate.c b/target/rx/translate.c
10
index XXXXXXX..XXXXXXX 100644
11
--- a/target/rx/translate.c
12
+++ b/target/rx/translate.c
13
@@ -XXX,XX +XXX,XX @@ static bool trans_MOV_ir(DisasContext *ctx, arg_MOV_ir *a)
14
static bool trans_MOV_im(DisasContext *ctx, arg_MOV_im *a)
15
{
16
TCGv imm, mem;
17
- imm = tcg_const_i32(a->imm);
18
+ imm = tcg_constant_i32(a->imm);
19
mem = tcg_temp_new();
20
tcg_gen_addi_i32(mem, cpu_regs[a->rd], a->dsp << a->sz);
21
rx_gen_st(a->sz, imm, mem);
22
@@ -XXX,XX +XXX,XX @@ static inline void stcond(TCGCond cond, int rd, int imm)
23
{
24
TCGv z;
25
TCGv _imm;
26
- z = tcg_const_i32(0);
27
- _imm = tcg_const_i32(imm);
28
+ z = tcg_constant_i32(0);
29
+ _imm = tcg_constant_i32(imm);
30
tcg_gen_movcond_i32(cond, cpu_regs[rd], cpu_psw_z, z,
31
_imm, cpu_regs[rd]);
32
}
33
@@ -XXX,XX +XXX,XX @@ static inline void rx_gen_op_rrr(op3fn opr, int dst, int src, int src2)
34
35
static inline void rx_gen_op_irr(op3fn opr, int dst, int src, uint32_t src2)
36
{
37
- TCGv imm = tcg_const_i32(src2);
38
+ TCGv imm = tcg_constant_i32(src2);
39
opr(cpu_regs[dst], cpu_regs[src], imm);
40
}
41
42
@@ -XXX,XX +XXX,XX @@ static bool trans_MUL_rrr(DisasContext *ctx, arg_MUL_rrr *a)
43
/* emul #imm, rd */
44
static bool trans_EMUL_ir(DisasContext *ctx, arg_EMUL_ir *a)
45
{
46
- TCGv imm = tcg_const_i32(a->imm);
47
+ TCGv imm = tcg_constant_i32(a->imm);
48
if (a->rd > 14) {
49
qemu_log_mask(LOG_GUEST_ERROR, "rd too large %d", a->rd);
50
}
51
@@ -XXX,XX +XXX,XX @@ static bool trans_EMUL_mr(DisasContext *ctx, arg_EMUL_mr *a)
52
/* emulu #imm, rd */
53
static bool trans_EMULU_ir(DisasContext *ctx, arg_EMULU_ir *a)
54
{
55
- TCGv imm = tcg_const_i32(a->imm);
56
+ TCGv imm = tcg_constant_i32(a->imm);
57
if (a->rd > 14) {
58
qemu_log_mask(LOG_GUEST_ERROR, "rd too large %d", a->rd);
59
}
60
@@ -XXX,XX +XXX,XX @@ static bool trans_BRA_l(DisasContext *ctx, arg_BRA_l *a)
61
62
static inline void rx_save_pc(DisasContext *ctx)
63
{
64
- TCGv pc = tcg_const_i32(ctx->base.pc_next);
65
+ TCGv pc = tcg_constant_i32(ctx->base.pc_next);
66
push(pc);
67
}
68
69
@@ -XXX,XX +XXX,XX @@ static bool trans_SMOVB(DisasContext *ctx, arg_SMOVB *a)
70
71
#define STRING(op) \
72
do { \
73
- TCGv size = tcg_const_i32(a->sz); \
74
+ TCGv size = tcg_constant_i32(a->sz); \
75
gen_helper_##op(cpu_env, size); \
76
} while (0)
77
78
@@ -XXX,XX +XXX,XX @@ static bool trans_MVTACLO(DisasContext *ctx, arg_MVTACLO *a)
79
/* racw #imm */
80
static bool trans_RACW(DisasContext *ctx, arg_RACW *a)
81
{
82
- TCGv imm = tcg_const_i32(a->imm + 1);
83
+ TCGv imm = tcg_constant_i32(a->imm + 1);
84
gen_helper_racw(cpu_env, imm);
85
return true;
86
}
87
@@ -XXX,XX +XXX,XX @@ static bool trans_SAT(DisasContext *ctx, arg_SAT *a)
88
{
89
TCGv tmp, z;
90
tmp = tcg_temp_new();
91
- z = tcg_const_i32(0);
92
+ z = tcg_constant_i32(0);
93
/* S == 1 -> 0xffffffff / S == 0 -> 0x00000000 */
94
tcg_gen_sari_i32(tmp, cpu_psw_s, 31);
95
/* S == 1 -> 0x7fffffff / S == 0 -> 0x80000000 */
96
@@ -XXX,XX +XXX,XX @@ static bool trans_SATR(DisasContext *ctx, arg_SATR *a)
97
static bool cat3(trans_, name, _ir)(DisasContext *ctx, \
98
cat3(arg_, name, _ir) * a) \
99
{ \
100
- TCGv imm = tcg_const_i32(li(ctx, 0)); \
101
+ TCGv imm = tcg_constant_i32(li(ctx, 0)); \
102
gen_helper_##op(cpu_regs[a->rd], cpu_env, \
103
cpu_regs[a->rd], imm); \
104
return true; \
105
@@ -XXX,XX +XXX,XX @@ FOP(FDIV, fdiv)
106
/* fcmp #imm, rd */
107
static bool trans_FCMP_ir(DisasContext *ctx, arg_FCMP_ir * a)
108
{
109
- TCGv imm = tcg_const_i32(li(ctx, 0));
110
+ TCGv imm = tcg_constant_i32(li(ctx, 0));
111
gen_helper_fcmp(cpu_env, cpu_regs[a->rd], imm);
112
return true;
113
}
114
@@ -XXX,XX +XXX,XX @@ static inline void rx_bnotr(TCGv reg, TCGv mask)
115
{ \
116
TCGv mask, mem, addr; \
117
mem = tcg_temp_new(); \
118
- mask = tcg_const_i32(1 << a->imm); \
119
+ mask = tcg_constant_i32(1 << a->imm); \
120
addr = rx_index_addr(ctx, mem, a->ld, MO_8, a->rs); \
121
cat3(rx_, op, m)(addr, mask); \
122
return true; \
123
@@ -XXX,XX +XXX,XX @@ static inline void rx_bnotr(TCGv reg, TCGv mask)
124
cat3(arg_, name, _ir) * a) \
125
{ \
126
TCGv mask; \
127
- mask = tcg_const_i32(1 << a->imm); \
128
+ mask = tcg_constant_i32(1 << a->imm); \
129
cat3(rx_, op, r)(cpu_regs[a->rd], mask); \
130
return true; \
131
} \
132
@@ -XXX,XX +XXX,XX @@ static bool trans_MVTC_i(DisasContext *ctx, arg_MVTC_i *a)
133
{
134
TCGv imm;
135
136
- imm = tcg_const_i32(a->imm);
137
+ imm = tcg_constant_i32(a->imm);
138
move_to_cr(ctx, imm, a->cr);
139
return true;
140
}
141
@@ -XXX,XX +XXX,XX @@ static bool trans_INT(DisasContext *ctx, arg_INT *a)
142
TCGv vec;
143
144
tcg_debug_assert(a->imm < 0x100);
145
- vec = tcg_const_i32(a->imm);
146
+ vec = tcg_constant_i32(a->imm);
147
tcg_gen_movi_i32(cpu_pc, ctx->base.pc_next);
148
gen_helper_rxint(cpu_env, vec);
149
ctx->base.is_jmp = DISAS_NORETURN;
150
--
151
2.34.1
152
153
diff view generated by jsdifflib
New patch
1
All uses are strictly read-only.
1
2
3
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
4
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
5
---
6
target/s390x/tcg/translate.c | 20 ++++++++++----------
7
1 file changed, 10 insertions(+), 10 deletions(-)
8
9
diff --git a/target/s390x/tcg/translate.c b/target/s390x/tcg/translate.c
10
index XXXXXXX..XXXXXXX 100644
11
--- a/target/s390x/tcg/translate.c
12
+++ b/target/s390x/tcg/translate.c
13
@@ -XXX,XX +XXX,XX @@ static DisasJumpType op_xi(DisasContext *s, DisasOps *o)
14
15
static DisasJumpType op_zero(DisasContext *s, DisasOps *o)
16
{
17
- o->out = tcg_const_i64(0);
18
+ o->out = tcg_constant_i64(0);
19
return DISAS_NEXT;
20
}
21
22
static DisasJumpType op_zero2(DisasContext *s, DisasOps *o)
23
{
24
- o->out = tcg_const_i64(0);
25
+ o->out = tcg_constant_i64(0);
26
o->out2 = o->out;
27
return DISAS_NEXT;
28
}
29
@@ -XXX,XX +XXX,XX @@ static void in2_sh(DisasContext *s, DisasOps *o)
30
int d2 = get_field(s, d2);
31
32
if (b2 == 0) {
33
- o->in2 = tcg_const_i64(d2 & 0x3f);
34
+ o->in2 = tcg_constant_i64(d2 & 0x3f);
35
} else {
36
o->in2 = get_address(s, 0, b2, d2);
37
tcg_gen_andi_i64(o->in2, o->in2, 0x3f);
38
@@ -XXX,XX +XXX,XX @@ static void in2_mri2_64(DisasContext *s, DisasOps *o)
39
40
static void in2_i2(DisasContext *s, DisasOps *o)
41
{
42
- o->in2 = tcg_const_i64(get_field(s, i2));
43
+ o->in2 = tcg_constant_i64(get_field(s, i2));
44
}
45
#define SPEC_in2_i2 0
46
47
static void in2_i2_8u(DisasContext *s, DisasOps *o)
48
{
49
- o->in2 = tcg_const_i64((uint8_t)get_field(s, i2));
50
+ o->in2 = tcg_constant_i64((uint8_t)get_field(s, i2));
51
}
52
#define SPEC_in2_i2_8u 0
53
54
static void in2_i2_16u(DisasContext *s, DisasOps *o)
55
{
56
- o->in2 = tcg_const_i64((uint16_t)get_field(s, i2));
57
+ o->in2 = tcg_constant_i64((uint16_t)get_field(s, i2));
58
}
59
#define SPEC_in2_i2_16u 0
60
61
static void in2_i2_32u(DisasContext *s, DisasOps *o)
62
{
63
- o->in2 = tcg_const_i64((uint32_t)get_field(s, i2));
64
+ o->in2 = tcg_constant_i64((uint32_t)get_field(s, i2));
65
}
66
#define SPEC_in2_i2_32u 0
67
68
static void in2_i2_16u_shl(DisasContext *s, DisasOps *o)
69
{
70
uint64_t i2 = (uint16_t)get_field(s, i2);
71
- o->in2 = tcg_const_i64(i2 << s->insn->data);
72
+ o->in2 = tcg_constant_i64(i2 << s->insn->data);
73
}
74
#define SPEC_in2_i2_16u_shl 0
75
76
static void in2_i2_32u_shl(DisasContext *s, DisasOps *o)
77
{
78
uint64_t i2 = (uint32_t)get_field(s, i2);
79
- o->in2 = tcg_const_i64(i2 << s->insn->data);
80
+ o->in2 = tcg_constant_i64(i2 << s->insn->data);
81
}
82
#define SPEC_in2_i2_32u_shl 0
83
84
#ifndef CONFIG_USER_ONLY
85
static void in2_insn(DisasContext *s, DisasOps *o)
86
{
87
- o->in2 = tcg_const_i64(s->fields.raw_insn);
88
+ o->in2 = tcg_constant_i64(s->fields.raw_insn);
89
}
90
#define SPEC_in2_insn 0
91
#endif
92
--
93
2.34.1
94
95
diff view generated by jsdifflib
New patch
1
Since we're assigning to cpu_sr_t in the end,
2
use that as the intermediate temp as well.
1
3
4
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
5
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6
---
7
target/sh4/translate.c | 9 +++------
8
1 file changed, 3 insertions(+), 6 deletions(-)
9
10
diff --git a/target/sh4/translate.c b/target/sh4/translate.c
11
index XXXXXXX..XXXXXXX 100644
12
--- a/target/sh4/translate.c
13
+++ b/target/sh4/translate.c
14
@@ -XXX,XX +XXX,XX @@ static void _decode_opc(DisasContext * ctx)
15
    tcg_gen_shri_i32(REG(B11_8), REG(B11_8), 16);
16
    return;
17
case 0x401b:        /* tas.b @Rn */
18
- {
19
- TCGv val = tcg_const_i32(0x80);
20
- tcg_gen_atomic_fetch_or_i32(val, REG(B11_8), val,
21
- ctx->memidx, MO_UB);
22
- tcg_gen_setcondi_i32(TCG_COND_EQ, cpu_sr_t, val, 0);
23
- }
24
+ tcg_gen_atomic_fetch_or_i32(cpu_sr_t, REG(B11_8),
25
+ tcg_constant_i32(0x80), ctx->memidx, MO_UB);
26
+ tcg_gen_setcondi_i32(TCG_COND_EQ, cpu_sr_t, cpu_sr_t, 0);
27
return;
28
case 0xf00d: /* fsts FPUL,FRn - FPSCR: Nothing */
29
    CHECK_FPU_ENABLED
30
--
31
2.34.1
32
33
diff view generated by jsdifflib
New patch
1
All remaining uses are strictly read-only.
1
2
3
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
4
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
5
---
6
target/sh4/translate.c | 26 +++++++++++++-------------
7
1 file changed, 13 insertions(+), 13 deletions(-)
8
9
diff --git a/target/sh4/translate.c b/target/sh4/translate.c
10
index XXXXXXX..XXXXXXX 100644
11
--- a/target/sh4/translate.c
12
+++ b/target/sh4/translate.c
13
@@ -XXX,XX +XXX,XX @@ static void _decode_opc(DisasContext * ctx)
14
    return;
15
case 0x9000:        /* mov.w @(disp,PC),Rn */
16
    {
17
- TCGv addr = tcg_const_i32(ctx->base.pc_next + 4 + B7_0 * 2);
18
+ TCGv addr = tcg_constant_i32(ctx->base.pc_next + 4 + B7_0 * 2);
19
tcg_gen_qemu_ld_i32(REG(B11_8), addr, ctx->memidx, MO_TESW);
20
    }
21
    return;
22
case 0xd000:        /* mov.l @(disp,PC),Rn */
23
    {
24
- TCGv addr = tcg_const_i32((ctx->base.pc_next + 4 + B7_0 * 4) & ~3);
25
+ TCGv addr = tcg_constant_i32((ctx->base.pc_next + 4 + B7_0 * 4) & ~3);
26
tcg_gen_qemu_ld_i32(REG(B11_8), addr, ctx->memidx, MO_TESL);
27
    }
28
    return;
29
@@ -XXX,XX +XXX,XX @@ static void _decode_opc(DisasContext * ctx)
30
case 0x300e:        /* addc Rm,Rn */
31
{
32
TCGv t0, t1;
33
- t0 = tcg_const_tl(0);
34
+ t0 = tcg_constant_tl(0);
35
t1 = tcg_temp_new();
36
tcg_gen_add2_i32(t1, cpu_sr_t, cpu_sr_t, t0, REG(B7_4), t0);
37
tcg_gen_add2_i32(REG(B11_8), cpu_sr_t,
38
@@ -XXX,XX +XXX,XX @@ static void _decode_opc(DisasContext * ctx)
39
TCGv t0 = tcg_temp_new();
40
TCGv t1 = tcg_temp_new();
41
TCGv t2 = tcg_temp_new();
42
- TCGv zero = tcg_const_i32(0);
43
+ TCGv zero = tcg_constant_i32(0);
44
45
/* shift left arg1, saving the bit being pushed out and inserting
46
T on the right */
47
@@ -XXX,XX +XXX,XX @@ static void _decode_opc(DisasContext * ctx)
48
    return;
49
case 0x600a:        /* negc Rm,Rn */
50
{
51
- TCGv t0 = tcg_const_i32(0);
52
+ TCGv t0 = tcg_constant_i32(0);
53
tcg_gen_add2_i32(REG(B11_8), cpu_sr_t,
54
REG(B7_4), t0, cpu_sr_t, t0);
55
tcg_gen_sub2_i32(REG(B11_8), cpu_sr_t,
56
@@ -XXX,XX +XXX,XX @@ static void _decode_opc(DisasContext * ctx)
57
case 0x300a:        /* subc Rm,Rn */
58
{
59
TCGv t0, t1;
60
- t0 = tcg_const_tl(0);
61
+ t0 = tcg_constant_tl(0);
62
t1 = tcg_temp_new();
63
tcg_gen_add2_i32(t1, cpu_sr_t, cpu_sr_t, t0, REG(B7_4), t0);
64
tcg_gen_sub2_i32(REG(B11_8), cpu_sr_t,
65
@@ -XXX,XX +XXX,XX @@ static void _decode_opc(DisasContext * ctx)
66
     TCGv imm;
67
     CHECK_NOT_DELAY_SLOT
68
gen_save_cpu_state(ctx, true);
69
-     imm = tcg_const_i32(B7_0);
70
+     imm = tcg_constant_i32(B7_0);
71
gen_helper_trapa(cpu_env, imm);
72
ctx->base.is_jmp = DISAS_NORETURN;
73
    }
74
@@ -XXX,XX +XXX,XX @@ static void _decode_opc(DisasContext * ctx)
75
CHECK_FPU_ENABLED
76
CHECK_FPSCR_PR_1
77
{
78
- TCGv m = tcg_const_i32((ctx->opcode >> 8) & 3);
79
- TCGv n = tcg_const_i32((ctx->opcode >> 10) & 3);
80
+ TCGv m = tcg_constant_i32((ctx->opcode >> 8) & 3);
81
+ TCGv n = tcg_constant_i32((ctx->opcode >> 10) & 3);
82
gen_helper_fipr(cpu_env, m, n);
83
return;
84
}
85
@@ -XXX,XX +XXX,XX @@ static void _decode_opc(DisasContext * ctx)
86
if ((ctx->opcode & 0x0300) != 0x0100) {
87
goto do_illegal;
88
}
89
- TCGv n = tcg_const_i32((ctx->opcode >> 10) & 3);
90
+ TCGv n = tcg_constant_i32((ctx->opcode >> 10) & 3);
91
gen_helper_ftrv(cpu_env, n);
92
return;
93
}
94
@@ -XXX,XX +XXX,XX @@ static void decode_gusa(DisasContext *ctx, CPUSH4State *env)
95
}
96
op_dst = B11_8;
97
op_opc = INDEX_op_xor_i32;
98
- op_arg = tcg_const_i32(-1);
99
+ op_arg = tcg_constant_i32(-1);
100
break;
101
102
case 0x7000 ... 0x700f: /* add #imm,Rn */
103
@@ -XXX,XX +XXX,XX @@ static void decode_gusa(DisasContext *ctx, CPUSH4State *env)
104
goto fail;
105
}
106
op_opc = INDEX_op_add_i32;
107
- op_arg = tcg_const_i32(B7_0s);
108
+ op_arg = tcg_constant_i32(B7_0s);
109
break;
110
111
case 0x3000: /* cmp/eq Rm,Rn */
112
@@ -XXX,XX +XXX,XX @@ static void decode_gusa(DisasContext *ctx, CPUSH4State *env)
113
goto fail;
114
}
115
op_opc = INDEX_op_setcond_i32;
116
- op_arg = tcg_const_i32(0);
117
+ op_arg = tcg_constant_i32(0);
118
119
NEXT_INSN;
120
if ((ctx->opcode & 0xff00) != 0x8900 /* bt label */
121
--
122
2.34.1
123
124
diff view generated by jsdifflib
1
From: Philippe Mathieu-Daudé <philmd@linaro.org>
1
Push tcg_constant_tl into the shift argument directly.
2
Since t1 no longer exists as a temp, replace with lo1,
3
whose last use was just above.
2
4
3
We use the '-common.c' suffix for target agnostic units.
5
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
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>
6
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
11
---
7
---
12
accel/{accel-common.c => accel-target.c} | 0
8
target/sparc/translate.c | 14 ++++++--------
13
accel/meson.build | 2 +-
9
1 file changed, 6 insertions(+), 8 deletions(-)
14
2 files changed, 1 insertion(+), 1 deletion(-)
15
rename accel/{accel-common.c => accel-target.c} (100%)
16
10
17
diff --git a/accel/accel-common.c b/accel/accel-target.c
11
diff --git a/target/sparc/translate.c b/target/sparc/translate.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
12
index XXXXXXX..XXXXXXX 100644
23
--- a/accel/meson.build
13
--- a/target/sparc/translate.c
24
+++ b/accel/meson.build
14
+++ b/target/sparc/translate.c
25
@@ -XXX,XX +XXX,XX @@
15
@@ -XXX,XX +XXX,XX @@ static inline void gen_load_trap_state_at_tl(TCGv_ptr r_tsptr, TCGv_env cpu_env)
26
-specific_ss.add(files('accel-common.c'))
16
static void gen_edge(DisasContext *dc, TCGv dst, TCGv s1, TCGv s2,
27
+specific_ss.add(files('accel-target.c'))
17
int width, bool cc, bool left)
28
system_ss.add(files('accel-softmmu.c', 'accel-blocker.c'))
18
{
29
user_ss.add(files('accel-user.c'))
19
- TCGv lo1, lo2, t1, t2;
20
+ TCGv lo1, lo2;
21
uint64_t amask, tabl, tabr;
22
int shift, imask, omask;
23
24
@@ -XXX,XX +XXX,XX @@ static void gen_edge(DisasContext *dc, TCGv dst, TCGv s1, TCGv s2,
25
tcg_gen_shli_tl(lo1, lo1, shift);
26
tcg_gen_shli_tl(lo2, lo2, shift);
27
28
- t1 = tcg_const_tl(tabl);
29
- t2 = tcg_const_tl(tabr);
30
- tcg_gen_shr_tl(lo1, t1, lo1);
31
- tcg_gen_shr_tl(lo2, t2, lo2);
32
+ tcg_gen_shr_tl(lo1, tcg_constant_tl(tabl), lo1);
33
+ tcg_gen_shr_tl(lo2, tcg_constant_tl(tabr), lo2);
34
tcg_gen_andi_tl(dst, lo1, omask);
35
tcg_gen_andi_tl(lo2, lo2, omask);
36
37
@@ -XXX,XX +XXX,XX @@ static void gen_edge(DisasContext *dc, TCGv dst, TCGv s1, TCGv s2,
38
lo2 |= -(s1 == s2)
39
dst &= lo2
40
*/
41
- tcg_gen_setcond_tl(TCG_COND_EQ, t1, s1, s2);
42
- tcg_gen_neg_tl(t1, t1);
43
- tcg_gen_or_tl(lo2, lo2, t1);
44
+ tcg_gen_setcond_tl(TCG_COND_EQ, lo1, s1, s2);
45
+ tcg_gen_neg_tl(lo1, lo1);
46
+ tcg_gen_or_tl(lo2, lo2, lo1);
47
tcg_gen_and_tl(dst, dst, lo2);
48
}
30
49
31
--
50
--
32
2.34.1
51
2.34.1
33
52
34
53
diff view generated by jsdifflib
1
This function is now empty, so remove it. In the case of
1
As required, allocate temp separately.
2
m68k and tricore, this empties the class instance initfn,
3
so remove those as well.
4
2
5
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
3
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
6
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
4
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7
---
5
---
8
include/exec/cpu-all.h | 10 ----------
6
target/tricore/translate.c | 268 +++++++++++++++++++------------------
9
target/alpha/cpu.c | 2 --
7
1 file changed, 140 insertions(+), 128 deletions(-)
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
8
32
diff --git a/include/exec/cpu-all.h b/include/exec/cpu-all.h
9
diff --git a/target/tricore/translate.c b/target/tricore/translate.c
33
index XXXXXXX..XXXXXXX 100644
10
index XXXXXXX..XXXXXXX 100644
34
--- a/include/exec/cpu-all.h
11
--- a/target/tricore/translate.c
35
+++ b/include/exec/cpu-all.h
12
+++ b/target/tricore/translate.c
36
@@ -XXX,XX +XXX,XX @@ void dump_exec_info(GString *buf);
13
@@ -XXX,XX +XXX,XX @@ static inline void
37
/* accel/tcg/cpu-exec.c */
14
gen_madd_h(TCGv ret_low, TCGv ret_high, TCGv r1_low, TCGv r1_high, TCGv r2,
38
int cpu_exec(CPUState *cpu);
15
TCGv r3, uint32_t n, uint32_t mode)
39
16
{
40
-/**
17
- TCGv temp = tcg_const_i32(n);
41
- * cpu_set_cpustate_pointers(cpu)
18
+ TCGv t_n = tcg_constant_i32(n);
42
- * @cpu: The cpu object
19
+ TCGv temp = tcg_temp_new();
43
- *
20
TCGv temp2 = tcg_temp_new();
44
- * Set the generic pointers in CPUState into the outer object.
21
TCGv_i64 temp64 = tcg_temp_new_i64();
45
- */
22
switch (mode) {
46
-static inline void cpu_set_cpustate_pointers(ArchCPU *cpu)
23
case MODE_LL:
47
-{
24
- GEN_HELPER_LL(mul_h, temp64, r2, r3, temp);
48
-}
25
+ GEN_HELPER_LL(mul_h, temp64, r2, r3, t_n);
49
-
26
break;
50
/* Validate correct placement of CPUArchState. */
27
case MODE_LU:
51
QEMU_BUILD_BUG_ON(offsetof(ArchCPU, parent_obj) != 0);
28
- GEN_HELPER_LU(mul_h, temp64, r2, r3, temp);
52
QEMU_BUILD_BUG_ON(offsetof(ArchCPU, env) != sizeof(CPUState));
29
+ GEN_HELPER_LU(mul_h, temp64, r2, r3, t_n);
53
diff --git a/target/alpha/cpu.c b/target/alpha/cpu.c
30
break;
54
index XXXXXXX..XXXXXXX 100644
31
case MODE_UL:
55
--- a/target/alpha/cpu.c
32
- GEN_HELPER_UL(mul_h, temp64, r2, r3, temp);
56
+++ b/target/alpha/cpu.c
33
+ GEN_HELPER_UL(mul_h, temp64, r2, r3, t_n);
57
@@ -XXX,XX +XXX,XX @@ static void alpha_cpu_initfn(Object *obj)
34
break;
58
AlphaCPU *cpu = ALPHA_CPU(obj);
35
case MODE_UU:
59
CPUAlphaState *env = &cpu->env;
36
- GEN_HELPER_UU(mul_h, temp64, r2, r3, temp);
60
37
+ GEN_HELPER_UU(mul_h, temp64, r2, r3, t_n);
61
- cpu_set_cpustate_pointers(cpu);
38
break;
62
-
39
}
63
env->lock_addr = -1;
40
tcg_gen_extr_i64_i32(temp, temp2, temp64);
64
#if defined(CONFIG_USER_ONLY)
41
@@ -XXX,XX +XXX,XX @@ static inline void
65
env->flags = ENV_FLAG_PS_USER | ENV_FLAG_FEN;
42
gen_maddsu_h(TCGv ret_low, TCGv ret_high, TCGv r1_low, TCGv r1_high, TCGv r2,
66
diff --git a/target/arm/cpu.c b/target/arm/cpu.c
43
TCGv r3, uint32_t n, uint32_t mode)
67
index XXXXXXX..XXXXXXX 100644
44
{
68
--- a/target/arm/cpu.c
45
- TCGv temp = tcg_const_i32(n);
69
+++ b/target/arm/cpu.c
46
+ TCGv t_n = tcg_constant_i32(n);
70
@@ -XXX,XX +XXX,XX @@ static void arm_cpu_initfn(Object *obj)
47
+ TCGv temp = tcg_temp_new();
71
{
48
TCGv temp2 = tcg_temp_new();
72
ARMCPU *cpu = ARM_CPU(obj);
49
TCGv_i64 temp64 = tcg_temp_new_i64();
73
50
switch (mode) {
74
- cpu_set_cpustate_pointers(cpu);
51
case MODE_LL:
75
cpu->cp_regs = g_hash_table_new_full(g_direct_hash, g_direct_equal,
52
- GEN_HELPER_LL(mul_h, temp64, r2, r3, temp);
76
NULL, g_free);
53
+ GEN_HELPER_LL(mul_h, temp64, r2, r3, t_n);
77
54
break;
78
diff --git a/target/avr/cpu.c b/target/avr/cpu.c
55
case MODE_LU:
79
index XXXXXXX..XXXXXXX 100644
56
- GEN_HELPER_LU(mul_h, temp64, r2, r3, temp);
80
--- a/target/avr/cpu.c
57
+ GEN_HELPER_LU(mul_h, temp64, r2, r3, t_n);
81
+++ b/target/avr/cpu.c
58
break;
82
@@ -XXX,XX +XXX,XX @@ static void avr_cpu_initfn(Object *obj)
59
case MODE_UL:
83
{
60
- GEN_HELPER_UL(mul_h, temp64, r2, r3, temp);
84
AVRCPU *cpu = AVR_CPU(obj);
61
+ GEN_HELPER_UL(mul_h, temp64, r2, r3, t_n);
85
62
break;
86
- cpu_set_cpustate_pointers(cpu);
63
case MODE_UU:
87
-
64
- GEN_HELPER_UU(mul_h, temp64, r2, r3, temp);
88
/* Set the number of interrupts supported by the CPU. */
65
+ GEN_HELPER_UU(mul_h, temp64, r2, r3, t_n);
89
qdev_init_gpio_in(DEVICE(cpu), avr_cpu_set_int,
66
break;
90
sizeof(cpu->env.intsrc) * 8);
67
}
91
diff --git a/target/cris/cpu.c b/target/cris/cpu.c
68
tcg_gen_extr_i64_i32(temp, temp2, temp64);
92
index XXXXXXX..XXXXXXX 100644
69
@@ -XXX,XX +XXX,XX @@ static inline void
93
--- a/target/cris/cpu.c
70
gen_maddsum_h(TCGv ret_low, TCGv ret_high, TCGv r1_low, TCGv r1_high, TCGv r2,
94
+++ b/target/cris/cpu.c
71
TCGv r3, uint32_t n, uint32_t mode)
95
@@ -XXX,XX +XXX,XX @@ static void cris_cpu_initfn(Object *obj)
72
{
96
CRISCPUClass *ccc = CRIS_CPU_GET_CLASS(obj);
73
- TCGv temp = tcg_const_i32(n);
97
CPUCRISState *env = &cpu->env;
74
+ TCGv t_n = tcg_constant_i32(n);
98
75
TCGv_i64 temp64 = tcg_temp_new_i64();
99
- cpu_set_cpustate_pointers(cpu);
76
TCGv_i64 temp64_2 = tcg_temp_new_i64();
100
-
77
TCGv_i64 temp64_3 = tcg_temp_new_i64();
101
env->pregs[PR_VR] = ccc->vr;
78
switch (mode) {
102
79
case MODE_LL:
103
#ifndef CONFIG_USER_ONLY
80
- GEN_HELPER_LL(mul_h, temp64, r2, r3, temp);
104
diff --git a/target/hexagon/cpu.c b/target/hexagon/cpu.c
81
+ GEN_HELPER_LL(mul_h, temp64, r2, r3, t_n);
105
index XXXXXXX..XXXXXXX 100644
82
break;
106
--- a/target/hexagon/cpu.c
83
case MODE_LU:
107
+++ b/target/hexagon/cpu.c
84
- GEN_HELPER_LU(mul_h, temp64, r2, r3, temp);
108
@@ -XXX,XX +XXX,XX @@ static void hexagon_cpu_realize(DeviceState *dev, Error **errp)
85
+ GEN_HELPER_LU(mul_h, temp64, r2, r3, t_n);
109
86
break;
110
static void hexagon_cpu_init(Object *obj)
87
case MODE_UL:
111
{
88
- GEN_HELPER_UL(mul_h, temp64, r2, r3, temp);
112
- HexagonCPU *cpu = HEXAGON_CPU(obj);
89
+ GEN_HELPER_UL(mul_h, temp64, r2, r3, t_n);
113
-
90
break;
114
- cpu_set_cpustate_pointers(cpu);
91
case MODE_UU:
115
qdev_property_add_static(DEVICE(obj), &hexagon_lldb_compat_property);
92
- GEN_HELPER_UU(mul_h, temp64, r2, r3, temp);
116
qdev_property_add_static(DEVICE(obj), &hexagon_lldb_stack_adjust_property);
93
+ GEN_HELPER_UU(mul_h, temp64, r2, r3, t_n);
117
qdev_property_add_static(DEVICE(obj), &hexagon_short_circuit_property);
94
break;
118
diff --git a/target/hppa/cpu.c b/target/hppa/cpu.c
95
}
119
index XXXXXXX..XXXXXXX 100644
96
tcg_gen_concat_i32_i64(temp64_3, r1_low, r1_high);
120
--- a/target/hppa/cpu.c
97
@@ -XXX,XX +XXX,XX @@ static inline void
121
+++ b/target/hppa/cpu.c
98
gen_madds_h(TCGv ret_low, TCGv ret_high, TCGv r1_low, TCGv r1_high, TCGv r2,
122
@@ -XXX,XX +XXX,XX @@ static void hppa_cpu_initfn(Object *obj)
99
TCGv r3, uint32_t n, uint32_t mode)
123
HPPACPU *cpu = HPPA_CPU(obj);
100
{
124
CPUHPPAState *env = &cpu->env;
101
- TCGv temp = tcg_const_i32(n);
125
102
+ TCGv t_n = tcg_constant_i32(n);
126
- cpu_set_cpustate_pointers(cpu);
103
+ TCGv temp = tcg_temp_new();
127
cs->exception_index = -1;
104
TCGv temp2 = tcg_temp_new();
128
cpu_hppa_loaded_fr0(env);
105
TCGv temp3 = tcg_temp_new();
129
cpu_hppa_put_psw(env, PSW_W);
106
TCGv_i64 temp64 = tcg_temp_new_i64();
130
diff --git a/target/i386/cpu.c b/target/i386/cpu.c
107
131
index XXXXXXX..XXXXXXX 100644
108
switch (mode) {
132
--- a/target/i386/cpu.c
109
case MODE_LL:
133
+++ b/target/i386/cpu.c
110
- GEN_HELPER_LL(mul_h, temp64, r2, r3, temp);
134
@@ -XXX,XX +XXX,XX @@ static void x86_cpu_initfn(Object *obj)
111
+ GEN_HELPER_LL(mul_h, temp64, r2, r3, t_n);
135
CPUX86State *env = &cpu->env;
112
break;
136
113
case MODE_LU:
137
env->nr_dies = 1;
114
- GEN_HELPER_LU(mul_h, temp64, r2, r3, temp);
138
- cpu_set_cpustate_pointers(cpu);
115
+ GEN_HELPER_LU(mul_h, temp64, r2, r3, t_n);
139
116
break;
140
object_property_add(obj, "feature-words", "X86CPUFeatureWordInfo",
117
case MODE_UL:
141
x86_cpu_get_feature_words,
118
- GEN_HELPER_UL(mul_h, temp64, r2, r3, temp);
142
diff --git a/target/loongarch/cpu.c b/target/loongarch/cpu.c
119
+ GEN_HELPER_UL(mul_h, temp64, r2, r3, t_n);
143
index XXXXXXX..XXXXXXX 100644
120
break;
144
--- a/target/loongarch/cpu.c
121
case MODE_UU:
145
+++ b/target/loongarch/cpu.c
122
- GEN_HELPER_UU(mul_h, temp64, r2, r3, temp);
146
@@ -XXX,XX +XXX,XX @@ static const MemoryRegionOps loongarch_qemu_ops = {
123
+ GEN_HELPER_UU(mul_h, temp64, r2, r3, t_n);
147
124
break;
148
static void loongarch_cpu_init(Object *obj)
125
}
149
{
126
tcg_gen_extr_i64_i32(temp, temp2, temp64);
150
- LoongArchCPU *cpu = LOONGARCH_CPU(obj);
127
@@ -XXX,XX +XXX,XX @@ static inline void
151
-
128
gen_maddsus_h(TCGv ret_low, TCGv ret_high, TCGv r1_low, TCGv r1_high, TCGv r2,
152
- cpu_set_cpustate_pointers(cpu);
129
TCGv r3, uint32_t n, uint32_t mode)
153
-
130
{
154
#ifndef CONFIG_USER_ONLY
131
- TCGv temp = tcg_const_i32(n);
155
+ LoongArchCPU *cpu = LOONGARCH_CPU(obj);
132
+ TCGv t_n = tcg_constant_i32(n);
156
CPULoongArchState *env = &cpu->env;
133
+ TCGv temp = tcg_temp_new();
157
+
134
TCGv temp2 = tcg_temp_new();
158
qdev_init_gpio_in(DEVICE(cpu), loongarch_cpu_set_irq, N_IRQS);
135
TCGv temp3 = tcg_temp_new();
159
timer_init_ns(&cpu->timer, QEMU_CLOCK_VIRTUAL,
136
TCGv_i64 temp64 = tcg_temp_new_i64();
160
&loongarch_constant_timer_cb, cpu);
137
161
memory_region_init_io(&env->system_iocsr, OBJECT(cpu), NULL,
138
switch (mode) {
162
- env, "iocsr", UINT64_MAX);
139
case MODE_LL:
163
+ env, "iocsr", UINT64_MAX);
140
- GEN_HELPER_LL(mul_h, temp64, r2, r3, temp);
164
address_space_init(&env->address_space_iocsr, &env->system_iocsr, "IOCSR");
141
+ GEN_HELPER_LL(mul_h, temp64, r2, r3, t_n);
165
memory_region_init_io(&env->iocsr_mem, OBJECT(cpu), &loongarch_qemu_ops,
142
break;
166
NULL, "iocsr_misc", 0x428);
143
case MODE_LU:
167
diff --git a/target/m68k/cpu.c b/target/m68k/cpu.c
144
- GEN_HELPER_LU(mul_h, temp64, r2, r3, temp);
168
index XXXXXXX..XXXXXXX 100644
145
+ GEN_HELPER_LU(mul_h, temp64, r2, r3, t_n);
169
--- a/target/m68k/cpu.c
146
break;
170
+++ b/target/m68k/cpu.c
147
case MODE_UL:
171
@@ -XXX,XX +XXX,XX @@ static void m68k_cpu_realizefn(DeviceState *dev, Error **errp)
148
- GEN_HELPER_UL(mul_h, temp64, r2, r3, temp);
172
mcc->parent_realize(dev, errp);
149
+ GEN_HELPER_UL(mul_h, temp64, r2, r3, t_n);
150
break;
151
case MODE_UU:
152
- GEN_HELPER_UU(mul_h, temp64, r2, r3, temp);
153
+ GEN_HELPER_UU(mul_h, temp64, r2, r3, t_n);
154
break;
155
}
156
tcg_gen_extr_i64_i32(temp, temp2, temp64);
157
@@ -XXX,XX +XXX,XX @@ static inline void
158
gen_maddsums_h(TCGv ret_low, TCGv ret_high, TCGv r1_low, TCGv r1_high, TCGv r2,
159
TCGv r3, uint32_t n, uint32_t mode)
160
{
161
- TCGv temp = tcg_const_i32(n);
162
+ TCGv t_n = tcg_constant_i32(n);
163
TCGv_i64 temp64 = tcg_temp_new_i64();
164
TCGv_i64 temp64_2 = tcg_temp_new_i64();
165
166
switch (mode) {
167
case MODE_LL:
168
- GEN_HELPER_LL(mul_h, temp64, r2, r3, temp);
169
+ GEN_HELPER_LL(mul_h, temp64, r2, r3, t_n);
170
break;
171
case MODE_LU:
172
- GEN_HELPER_LU(mul_h, temp64, r2, r3, temp);
173
+ GEN_HELPER_LU(mul_h, temp64, r2, r3, t_n);
174
break;
175
case MODE_UL:
176
- GEN_HELPER_UL(mul_h, temp64, r2, r3, temp);
177
+ GEN_HELPER_UL(mul_h, temp64, r2, r3, t_n);
178
break;
179
case MODE_UU:
180
- GEN_HELPER_UU(mul_h, temp64, r2, r3, temp);
181
+ GEN_HELPER_UU(mul_h, temp64, r2, r3, t_n);
182
break;
183
}
184
tcg_gen_sari_i64(temp64_2, temp64, 32); /* high */
185
@@ -XXX,XX +XXX,XX @@ static inline void
186
gen_maddm_h(TCGv ret_low, TCGv ret_high, TCGv r1_low, TCGv r1_high, TCGv r2,
187
TCGv r3, uint32_t n, uint32_t mode)
188
{
189
- TCGv temp = tcg_const_i32(n);
190
+ TCGv t_n = tcg_constant_i32(n);
191
TCGv_i64 temp64 = tcg_temp_new_i64();
192
TCGv_i64 temp64_2 = tcg_temp_new_i64();
193
TCGv_i64 temp64_3 = tcg_temp_new_i64();
194
switch (mode) {
195
case MODE_LL:
196
- GEN_HELPER_LL(mulm_h, temp64, r2, r3, temp);
197
+ GEN_HELPER_LL(mulm_h, temp64, r2, r3, t_n);
198
break;
199
case MODE_LU:
200
- GEN_HELPER_LU(mulm_h, temp64, r2, r3, temp);
201
+ GEN_HELPER_LU(mulm_h, temp64, r2, r3, t_n);
202
break;
203
case MODE_UL:
204
- GEN_HELPER_UL(mulm_h, temp64, r2, r3, temp);
205
+ GEN_HELPER_UL(mulm_h, temp64, r2, r3, t_n);
206
break;
207
case MODE_UU:
208
- GEN_HELPER_UU(mulm_h, temp64, r2, r3, temp);
209
+ GEN_HELPER_UU(mulm_h, temp64, r2, r3, t_n);
210
break;
211
}
212
tcg_gen_concat_i32_i64(temp64_2, r1_low, r1_high);
213
@@ -XXX,XX +XXX,XX @@ static inline void
214
gen_maddms_h(TCGv ret_low, TCGv ret_high, TCGv r1_low, TCGv r1_high, TCGv r2,
215
TCGv r3, uint32_t n, uint32_t mode)
216
{
217
- TCGv temp = tcg_const_i32(n);
218
+ TCGv t_n = tcg_constant_i32(n);
219
TCGv_i64 temp64 = tcg_temp_new_i64();
220
TCGv_i64 temp64_2 = tcg_temp_new_i64();
221
switch (mode) {
222
case MODE_LL:
223
- GEN_HELPER_LL(mulm_h, temp64, r2, r3, temp);
224
+ GEN_HELPER_LL(mulm_h, temp64, r2, r3, t_n);
225
break;
226
case MODE_LU:
227
- GEN_HELPER_LU(mulm_h, temp64, r2, r3, temp);
228
+ GEN_HELPER_LU(mulm_h, temp64, r2, r3, t_n);
229
break;
230
case MODE_UL:
231
- GEN_HELPER_UL(mulm_h, temp64, r2, r3, temp);
232
+ GEN_HELPER_UL(mulm_h, temp64, r2, r3, t_n);
233
break;
234
case MODE_UU:
235
- GEN_HELPER_UU(mulm_h, temp64, r2, r3, temp);
236
+ GEN_HELPER_UU(mulm_h, temp64, r2, r3, t_n);
237
break;
238
}
239
tcg_gen_concat_i32_i64(temp64_2, r1_low, r1_high);
240
@@ -XXX,XX +XXX,XX @@ static inline void
241
gen_maddr64_h(TCGv ret, TCGv r1_low, TCGv r1_high, TCGv r2, TCGv r3, uint32_t n,
242
uint32_t mode)
243
{
244
- TCGv temp = tcg_const_i32(n);
245
+ TCGv t_n = tcg_constant_i32(n);
246
TCGv_i64 temp64 = tcg_temp_new_i64();
247
switch (mode) {
248
case MODE_LL:
249
- GEN_HELPER_LL(mul_h, temp64, r2, r3, temp);
250
+ GEN_HELPER_LL(mul_h, temp64, r2, r3, t_n);
251
break;
252
case MODE_LU:
253
- GEN_HELPER_LU(mul_h, temp64, r2, r3, temp);
254
+ GEN_HELPER_LU(mul_h, temp64, r2, r3, t_n);
255
break;
256
case MODE_UL:
257
- GEN_HELPER_UL(mul_h, temp64, r2, r3, temp);
258
+ GEN_HELPER_UL(mul_h, temp64, r2, r3, t_n);
259
break;
260
case MODE_UU:
261
- GEN_HELPER_UU(mul_h, temp64, r2, r3, temp);
262
+ GEN_HELPER_UU(mul_h, temp64, r2, r3, t_n);
263
break;
264
}
265
gen_helper_addr_h(ret, cpu_env, temp64, r1_low, r1_high);
266
@@ -XXX,XX +XXX,XX @@ gen_maddr32_h(TCGv ret, TCGv r1, TCGv r2, TCGv r3, uint32_t n, uint32_t mode)
267
static inline void
268
gen_maddsur32_h(TCGv ret, TCGv r1, TCGv r2, TCGv r3, uint32_t n, uint32_t mode)
269
{
270
- TCGv temp = tcg_const_i32(n);
271
+ TCGv t_n = tcg_constant_i32(n);
272
+ TCGv temp = tcg_temp_new();
273
TCGv temp2 = tcg_temp_new();
274
TCGv_i64 temp64 = tcg_temp_new_i64();
275
switch (mode) {
276
case MODE_LL:
277
- GEN_HELPER_LL(mul_h, temp64, r2, r3, temp);
278
+ GEN_HELPER_LL(mul_h, temp64, r2, r3, t_n);
279
break;
280
case MODE_LU:
281
- GEN_HELPER_LU(mul_h, temp64, r2, r3, temp);
282
+ GEN_HELPER_LU(mul_h, temp64, r2, r3, t_n);
283
break;
284
case MODE_UL:
285
- GEN_HELPER_UL(mul_h, temp64, r2, r3, temp);
286
+ GEN_HELPER_UL(mul_h, temp64, r2, r3, t_n);
287
break;
288
case MODE_UU:
289
- GEN_HELPER_UU(mul_h, temp64, r2, r3, temp);
290
+ GEN_HELPER_UU(mul_h, temp64, r2, r3, t_n);
291
break;
292
}
293
tcg_gen_andi_tl(temp2, r1, 0xffff0000);
294
@@ -XXX,XX +XXX,XX @@ static inline void
295
gen_maddr64s_h(TCGv ret, TCGv r1_low, TCGv r1_high, TCGv r2, TCGv r3,
296
uint32_t n, uint32_t mode)
297
{
298
- TCGv temp = tcg_const_i32(n);
299
+ TCGv t_n = tcg_constant_i32(n);
300
TCGv_i64 temp64 = tcg_temp_new_i64();
301
switch (mode) {
302
case MODE_LL:
303
- GEN_HELPER_LL(mul_h, temp64, r2, r3, temp);
304
+ GEN_HELPER_LL(mul_h, temp64, r2, r3, t_n);
305
break;
306
case MODE_LU:
307
- GEN_HELPER_LU(mul_h, temp64, r2, r3, temp);
308
+ GEN_HELPER_LU(mul_h, temp64, r2, r3, t_n);
309
break;
310
case MODE_UL:
311
- GEN_HELPER_UL(mul_h, temp64, r2, r3, temp);
312
+ GEN_HELPER_UL(mul_h, temp64, r2, r3, t_n);
313
break;
314
case MODE_UU:
315
- GEN_HELPER_UU(mul_h, temp64, r2, r3, temp);
316
+ GEN_HELPER_UU(mul_h, temp64, r2, r3, t_n);
317
break;
318
}
319
gen_helper_addr_h_ssov(ret, cpu_env, temp64, r1_low, r1_high);
320
@@ -XXX,XX +XXX,XX @@ gen_maddr32s_h(TCGv ret, TCGv r1, TCGv r2, TCGv r3, uint32_t n, uint32_t mode)
321
static inline void
322
gen_maddsur32s_h(TCGv ret, TCGv r1, TCGv r2, TCGv r3, uint32_t n, uint32_t mode)
323
{
324
- TCGv temp = tcg_const_i32(n);
325
+ TCGv t_n = tcg_constant_i32(n);
326
+ TCGv temp = tcg_temp_new();
327
TCGv temp2 = tcg_temp_new();
328
TCGv_i64 temp64 = tcg_temp_new_i64();
329
switch (mode) {
330
case MODE_LL:
331
- GEN_HELPER_LL(mul_h, temp64, r2, r3, temp);
332
+ GEN_HELPER_LL(mul_h, temp64, r2, r3, t_n);
333
break;
334
case MODE_LU:
335
- GEN_HELPER_LU(mul_h, temp64, r2, r3, temp);
336
+ GEN_HELPER_LU(mul_h, temp64, r2, r3, t_n);
337
break;
338
case MODE_UL:
339
- GEN_HELPER_UL(mul_h, temp64, r2, r3, temp);
340
+ GEN_HELPER_UL(mul_h, temp64, r2, r3, t_n);
341
break;
342
case MODE_UU:
343
- GEN_HELPER_UU(mul_h, temp64, r2, r3, temp);
344
+ GEN_HELPER_UU(mul_h, temp64, r2, r3, t_n);
345
break;
346
}
347
tcg_gen_andi_tl(temp2, r1, 0xffff0000);
348
@@ -XXX,XX +XXX,XX @@ gen_maddsur32s_h(TCGv ret, TCGv r1, TCGv r2, TCGv r3, uint32_t n, uint32_t mode)
349
static inline void
350
gen_maddr_q(TCGv ret, TCGv r1, TCGv r2, TCGv r3, uint32_t n)
351
{
352
- TCGv temp = tcg_const_i32(n);
353
- gen_helper_maddr_q(ret, cpu_env, r1, r2, r3, temp);
354
+ TCGv t_n = tcg_constant_i32(n);
355
+ gen_helper_maddr_q(ret, cpu_env, r1, r2, r3, t_n);
173
}
356
}
174
357
175
-static void m68k_cpu_initfn(Object *obj)
358
static inline void
176
-{
359
gen_maddrs_q(TCGv ret, TCGv r1, TCGv r2, TCGv r3, uint32_t n)
177
- M68kCPU *cpu = M68K_CPU(obj);
360
{
178
-
361
- TCGv temp = tcg_const_i32(n);
179
- cpu_set_cpustate_pointers(cpu);
362
- gen_helper_maddr_q_ssov(ret, cpu_env, r1, r2, r3, temp);
180
-}
363
+ TCGv t_n = tcg_constant_i32(n);
181
-
364
+ gen_helper_maddr_q_ssov(ret, cpu_env, r1, r2, r3, t_n);
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
}
365
}
234
diff --git a/target/openrisc/cpu.c b/target/openrisc/cpu.c
366
235
index XXXXXXX..XXXXXXX 100644
367
static inline void
236
--- a/target/openrisc/cpu.c
368
@@ -XXX,XX +XXX,XX @@ gen_madds64_q(TCGv rl, TCGv rh, TCGv arg1_low, TCGv arg1_high, TCGv arg2,
237
+++ b/target/openrisc/cpu.c
369
TCGv arg3, uint32_t n)
238
@@ -XXX,XX +XXX,XX @@ static void openrisc_cpu_realizefn(DeviceState *dev, Error **errp)
370
{
239
371
TCGv_i64 r1 = tcg_temp_new_i64();
240
static void openrisc_cpu_initfn(Object *obj)
372
- TCGv temp = tcg_const_i32(n);
241
{
373
+ TCGv t_n = tcg_constant_i32(n);
242
- OpenRISCCPU *cpu = OPENRISC_CPU(obj);
374
243
-
375
tcg_gen_concat_i32_i64(r1, arg1_low, arg1_high);
244
- cpu_set_cpustate_pointers(cpu);
376
- gen_helper_madd64_q_ssov(r1, cpu_env, r1, arg2, arg3, temp);
245
-
377
+ gen_helper_madd64_q_ssov(r1, cpu_env, r1, arg2, arg3, t_n);
246
#ifndef CONFIG_USER_ONLY
378
tcg_gen_extr_i64_i32(rl, rh, r1);
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
}
379
}
251
380
252
diff --git a/target/ppc/cpu_init.c b/target/ppc/cpu_init.c
381
@@ -XXX,XX +XXX,XX @@ static inline void
253
index XXXXXXX..XXXXXXX 100644
382
gen_msub_h(TCGv ret_low, TCGv ret_high, TCGv r1_low, TCGv r1_high, TCGv r2,
254
--- a/target/ppc/cpu_init.c
383
TCGv r3, uint32_t n, uint32_t mode)
255
+++ b/target/ppc/cpu_init.c
384
{
256
@@ -XXX,XX +XXX,XX @@ static void ppc_cpu_instance_init(Object *obj)
385
- TCGv temp = tcg_const_i32(n);
257
PowerPCCPUClass *pcc = POWERPC_CPU_GET_CLASS(cpu);
386
+ TCGv t_n = tcg_constant_i32(n);
258
CPUPPCState *env = &cpu->env;
387
+ TCGv temp = tcg_temp_new();
259
388
TCGv temp2 = tcg_temp_new();
260
- cpu_set_cpustate_pointers(cpu);
389
TCGv_i64 temp64 = tcg_temp_new_i64();
261
cpu->vcpu_id = UNASSIGNED_CPU_INDEX;
390
switch (mode) {
262
391
case MODE_LL:
263
env->msr_mask = pcc->msr_mask;
392
- GEN_HELPER_LL(mul_h, temp64, r2, r3, temp);
264
diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c
393
+ GEN_HELPER_LL(mul_h, temp64, r2, r3, t_n);
265
index XXXXXXX..XXXXXXX 100644
394
break;
266
--- a/target/riscv/cpu.c
395
case MODE_LU:
267
+++ b/target/riscv/cpu.c
396
- GEN_HELPER_LU(mul_h, temp64, r2, r3, temp);
268
@@ -XXX,XX +XXX,XX @@ static void riscv_cpu_set_irq(void *opaque, int irq, int level)
397
+ GEN_HELPER_LU(mul_h, temp64, r2, r3, t_n);
269
398
break;
270
static void riscv_cpu_init(Object *obj)
399
case MODE_UL:
271
{
400
- GEN_HELPER_UL(mul_h, temp64, r2, r3, temp);
272
- RISCVCPU *cpu = RISCV_CPU(obj);
401
+ GEN_HELPER_UL(mul_h, temp64, r2, r3, t_n);
273
-
402
break;
274
- cpu_set_cpustate_pointers(cpu);
403
case MODE_UU:
275
-
404
- GEN_HELPER_UU(mul_h, temp64, r2, r3, temp);
276
#ifndef CONFIG_USER_ONLY
405
+ GEN_HELPER_UU(mul_h, temp64, r2, r3, t_n);
277
- qdev_init_gpio_in(DEVICE(cpu), riscv_cpu_set_irq,
406
break;
278
+ qdev_init_gpio_in(DEVICE(obj), riscv_cpu_set_irq,
407
}
279
IRQ_LOCAL_MAX + IRQ_LOCAL_GUEST_MAX);
408
tcg_gen_extr_i64_i32(temp, temp2, temp64);
280
#endif /* CONFIG_USER_ONLY */
409
@@ -XXX,XX +XXX,XX @@ static inline void
410
gen_msubs_h(TCGv ret_low, TCGv ret_high, TCGv r1_low, TCGv r1_high, TCGv r2,
411
TCGv r3, uint32_t n, uint32_t mode)
412
{
413
- TCGv temp = tcg_const_i32(n);
414
+ TCGv t_n = tcg_constant_i32(n);
415
+ TCGv temp = tcg_temp_new();
416
TCGv temp2 = tcg_temp_new();
417
TCGv temp3 = tcg_temp_new();
418
TCGv_i64 temp64 = tcg_temp_new_i64();
419
420
switch (mode) {
421
case MODE_LL:
422
- GEN_HELPER_LL(mul_h, temp64, r2, r3, temp);
423
+ GEN_HELPER_LL(mul_h, temp64, r2, r3, t_n);
424
break;
425
case MODE_LU:
426
- GEN_HELPER_LU(mul_h, temp64, r2, r3, temp);
427
+ GEN_HELPER_LU(mul_h, temp64, r2, r3, t_n);
428
break;
429
case MODE_UL:
430
- GEN_HELPER_UL(mul_h, temp64, r2, r3, temp);
431
+ GEN_HELPER_UL(mul_h, temp64, r2, r3, t_n);
432
break;
433
case MODE_UU:
434
- GEN_HELPER_UU(mul_h, temp64, r2, r3, temp);
435
+ GEN_HELPER_UU(mul_h, temp64, r2, r3, t_n);
436
break;
437
}
438
tcg_gen_extr_i64_i32(temp, temp2, temp64);
439
@@ -XXX,XX +XXX,XX @@ static inline void
440
gen_msubm_h(TCGv ret_low, TCGv ret_high, TCGv r1_low, TCGv r1_high, TCGv r2,
441
TCGv r3, uint32_t n, uint32_t mode)
442
{
443
- TCGv temp = tcg_const_i32(n);
444
+ TCGv t_n = tcg_constant_i32(n);
445
TCGv_i64 temp64 = tcg_temp_new_i64();
446
TCGv_i64 temp64_2 = tcg_temp_new_i64();
447
TCGv_i64 temp64_3 = tcg_temp_new_i64();
448
switch (mode) {
449
case MODE_LL:
450
- GEN_HELPER_LL(mulm_h, temp64, r2, r3, temp);
451
+ GEN_HELPER_LL(mulm_h, temp64, r2, r3, t_n);
452
break;
453
case MODE_LU:
454
- GEN_HELPER_LU(mulm_h, temp64, r2, r3, temp);
455
+ GEN_HELPER_LU(mulm_h, temp64, r2, r3, t_n);
456
break;
457
case MODE_UL:
458
- GEN_HELPER_UL(mulm_h, temp64, r2, r3, temp);
459
+ GEN_HELPER_UL(mulm_h, temp64, r2, r3, t_n);
460
break;
461
case MODE_UU:
462
- GEN_HELPER_UU(mulm_h, temp64, r2, r3, temp);
463
+ GEN_HELPER_UU(mulm_h, temp64, r2, r3, t_n);
464
break;
465
}
466
tcg_gen_concat_i32_i64(temp64_2, r1_low, r1_high);
467
@@ -XXX,XX +XXX,XX @@ static inline void
468
gen_msubms_h(TCGv ret_low, TCGv ret_high, TCGv r1_low, TCGv r1_high, TCGv r2,
469
TCGv r3, uint32_t n, uint32_t mode)
470
{
471
- TCGv temp = tcg_const_i32(n);
472
+ TCGv t_n = tcg_constant_i32(n);
473
TCGv_i64 temp64 = tcg_temp_new_i64();
474
TCGv_i64 temp64_2 = tcg_temp_new_i64();
475
switch (mode) {
476
case MODE_LL:
477
- GEN_HELPER_LL(mulm_h, temp64, r2, r3, temp);
478
+ GEN_HELPER_LL(mulm_h, temp64, r2, r3, t_n);
479
break;
480
case MODE_LU:
481
- GEN_HELPER_LU(mulm_h, temp64, r2, r3, temp);
482
+ GEN_HELPER_LU(mulm_h, temp64, r2, r3, t_n);
483
break;
484
case MODE_UL:
485
- GEN_HELPER_UL(mulm_h, temp64, r2, r3, temp);
486
+ GEN_HELPER_UL(mulm_h, temp64, r2, r3, t_n);
487
break;
488
case MODE_UU:
489
- GEN_HELPER_UU(mulm_h, temp64, r2, r3, temp);
490
+ GEN_HELPER_UU(mulm_h, temp64, r2, r3, t_n);
491
break;
492
}
493
tcg_gen_concat_i32_i64(temp64_2, r1_low, r1_high);
494
@@ -XXX,XX +XXX,XX @@ static inline void
495
gen_msubr64_h(TCGv ret, TCGv r1_low, TCGv r1_high, TCGv r2, TCGv r3, uint32_t n,
496
uint32_t mode)
497
{
498
- TCGv temp = tcg_const_i32(n);
499
+ TCGv t_n = tcg_constant_i32(n);
500
TCGv_i64 temp64 = tcg_temp_new_i64();
501
switch (mode) {
502
case MODE_LL:
503
- GEN_HELPER_LL(mul_h, temp64, r2, r3, temp);
504
+ GEN_HELPER_LL(mul_h, temp64, r2, r3, t_n);
505
break;
506
case MODE_LU:
507
- GEN_HELPER_LU(mul_h, temp64, r2, r3, temp);
508
+ GEN_HELPER_LU(mul_h, temp64, r2, r3, t_n);
509
break;
510
case MODE_UL:
511
- GEN_HELPER_UL(mul_h, temp64, r2, r3, temp);
512
+ GEN_HELPER_UL(mul_h, temp64, r2, r3, t_n);
513
break;
514
case MODE_UU:
515
- GEN_HELPER_UU(mul_h, temp64, r2, r3, temp);
516
+ GEN_HELPER_UU(mul_h, temp64, r2, r3, t_n);
517
break;
518
}
519
gen_helper_subr_h(ret, cpu_env, temp64, r1_low, r1_high);
520
@@ -XXX,XX +XXX,XX @@ static inline void
521
gen_msubr64s_h(TCGv ret, TCGv r1_low, TCGv r1_high, TCGv r2, TCGv r3,
522
uint32_t n, uint32_t mode)
523
{
524
- TCGv temp = tcg_const_i32(n);
525
+ TCGv t_n = tcg_constant_i32(n);
526
TCGv_i64 temp64 = tcg_temp_new_i64();
527
switch (mode) {
528
case MODE_LL:
529
- GEN_HELPER_LL(mul_h, temp64, r2, r3, temp);
530
+ GEN_HELPER_LL(mul_h, temp64, r2, r3, t_n);
531
break;
532
case MODE_LU:
533
- GEN_HELPER_LU(mul_h, temp64, r2, r3, temp);
534
+ GEN_HELPER_LU(mul_h, temp64, r2, r3, t_n);
535
break;
536
case MODE_UL:
537
- GEN_HELPER_UL(mul_h, temp64, r2, r3, temp);
538
+ GEN_HELPER_UL(mul_h, temp64, r2, r3, t_n);
539
break;
540
case MODE_UU:
541
- GEN_HELPER_UU(mul_h, temp64, r2, r3, temp);
542
+ GEN_HELPER_UU(mul_h, temp64, r2, r3, t_n);
543
break;
544
}
545
gen_helper_subr_h_ssov(ret, cpu_env, temp64, r1_low, r1_high);
546
@@ -XXX,XX +XXX,XX @@ gen_msubs64_q(TCGv rl, TCGv rh, TCGv arg1_low, TCGv arg1_high, TCGv arg2,
547
TCGv arg3, uint32_t n)
548
{
549
TCGv_i64 r1 = tcg_temp_new_i64();
550
- TCGv temp = tcg_const_i32(n);
551
+ TCGv t_n = tcg_constant_i32(n);
552
553
tcg_gen_concat_i32_i64(r1, arg1_low, arg1_high);
554
- gen_helper_msub64_q_ssov(r1, cpu_env, r1, arg2, arg3, temp);
555
+ gen_helper_msub64_q_ssov(r1, cpu_env, r1, arg2, arg3, t_n);
556
tcg_gen_extr_i64_i32(rl, rh, r1);
281
}
557
}
282
diff --git a/target/rx/cpu.c b/target/rx/cpu.c
558
283
index XXXXXXX..XXXXXXX 100644
559
@@ -XXX,XX +XXX,XX @@ static inline void
284
--- a/target/rx/cpu.c
560
gen_msubad_h(TCGv ret_low, TCGv ret_high, TCGv r1_low, TCGv r1_high, TCGv r2,
285
+++ b/target/rx/cpu.c
561
TCGv r3, uint32_t n, uint32_t mode)
286
@@ -XXX,XX +XXX,XX @@ static void rx_cpu_init(Object *obj)
562
{
287
{
563
- TCGv temp = tcg_const_i32(n);
288
RXCPU *cpu = RX_CPU(obj);
564
+ TCGv t_n = tcg_constant_i32(n);
289
565
+ TCGv temp = tcg_temp_new();
290
- cpu_set_cpustate_pointers(cpu);
566
TCGv temp2 = tcg_temp_new();
291
qdev_init_gpio_in(DEVICE(cpu), rx_cpu_set_irq, 2);
567
TCGv_i64 temp64 = tcg_temp_new_i64();
292
}
568
switch (mode) {
293
569
case MODE_LL:
294
diff --git a/target/s390x/cpu.c b/target/s390x/cpu.c
570
- GEN_HELPER_LL(mul_h, temp64, r2, r3, temp);
295
index XXXXXXX..XXXXXXX 100644
571
+ GEN_HELPER_LL(mul_h, temp64, r2, r3, t_n);
296
--- a/target/s390x/cpu.c
572
break;
297
+++ b/target/s390x/cpu.c
573
case MODE_LU:
298
@@ -XXX,XX +XXX,XX @@ out:
574
- GEN_HELPER_LU(mul_h, temp64, r2, r3, temp);
299
static void s390_cpu_initfn(Object *obj)
575
+ GEN_HELPER_LU(mul_h, temp64, r2, r3, t_n);
300
{
576
break;
301
CPUState *cs = CPU(obj);
577
case MODE_UL:
302
- S390CPU *cpu = S390_CPU(obj);
578
- GEN_HELPER_UL(mul_h, temp64, r2, r3, temp);
303
579
+ GEN_HELPER_UL(mul_h, temp64, r2, r3, t_n);
304
- cpu_set_cpustate_pointers(cpu);
580
break;
305
cs->exception_index = EXCP_HLT;
581
case MODE_UU:
306
582
- GEN_HELPER_UU(mul_h, temp64, r2, r3, temp);
307
#if !defined(CONFIG_USER_ONLY)
583
+ GEN_HELPER_UU(mul_h, temp64, r2, r3, t_n);
308
diff --git a/target/sh4/cpu.c b/target/sh4/cpu.c
584
break;
309
index XXXXXXX..XXXXXXX 100644
585
}
310
--- a/target/sh4/cpu.c
586
tcg_gen_extr_i64_i32(temp, temp2, temp64);
311
+++ b/target/sh4/cpu.c
587
@@ -XXX,XX +XXX,XX @@ static inline void
312
@@ -XXX,XX +XXX,XX @@ static void superh_cpu_initfn(Object *obj)
588
gen_msubadm_h(TCGv ret_low, TCGv ret_high, TCGv r1_low, TCGv r1_high, TCGv r2,
313
SuperHCPU *cpu = SUPERH_CPU(obj);
589
TCGv r3, uint32_t n, uint32_t mode)
314
CPUSH4State *env = &cpu->env;
590
{
315
591
- TCGv temp = tcg_const_i32(n);
316
- cpu_set_cpustate_pointers(cpu);
592
+ TCGv t_n = tcg_constant_i32(n);
317
-
593
TCGv_i64 temp64 = tcg_temp_new_i64();
318
env->movcal_backup_tail = &(env->movcal_backup);
594
TCGv_i64 temp64_2 = tcg_temp_new_i64();
319
}
595
TCGv_i64 temp64_3 = tcg_temp_new_i64();
320
596
switch (mode) {
321
diff --git a/target/sparc/cpu.c b/target/sparc/cpu.c
597
case MODE_LL:
322
index XXXXXXX..XXXXXXX 100644
598
- GEN_HELPER_LL(mul_h, temp64, r2, r3, temp);
323
--- a/target/sparc/cpu.c
599
+ GEN_HELPER_LL(mul_h, temp64, r2, r3, t_n);
324
+++ b/target/sparc/cpu.c
600
break;
325
@@ -XXX,XX +XXX,XX @@ static void sparc_cpu_initfn(Object *obj)
601
case MODE_LU:
326
SPARCCPUClass *scc = SPARC_CPU_GET_CLASS(obj);
602
- GEN_HELPER_LU(mul_h, temp64, r2, r3, temp);
327
CPUSPARCState *env = &cpu->env;
603
+ GEN_HELPER_LU(mul_h, temp64, r2, r3, t_n);
328
604
break;
329
- cpu_set_cpustate_pointers(cpu);
605
case MODE_UL:
330
-
606
- GEN_HELPER_UL(mul_h, temp64, r2, r3, temp);
331
if (scc->cpu_def) {
607
+ GEN_HELPER_UL(mul_h, temp64, r2, r3, t_n);
332
env->def = *scc->cpu_def;
608
break;
333
}
609
case MODE_UU:
334
diff --git a/target/tricore/cpu.c b/target/tricore/cpu.c
610
- GEN_HELPER_UU(mul_h, temp64, r2, r3, temp);
335
index XXXXXXX..XXXXXXX 100644
611
+ GEN_HELPER_UU(mul_h, temp64, r2, r3, t_n);
336
--- a/target/tricore/cpu.c
612
break;
337
+++ b/target/tricore/cpu.c
613
}
338
@@ -XXX,XX +XXX,XX @@ static void tricore_cpu_realizefn(DeviceState *dev, Error **errp)
614
tcg_gen_concat_i32_i64(temp64_3, r1_low, r1_high);
339
tcc->parent_realize(dev, errp);
615
@@ -XXX,XX +XXX,XX @@ gen_msubadm_h(TCGv ret_low, TCGv ret_high, TCGv r1_low, TCGv r1_high, TCGv r2,
340
}
616
static inline void
341
617
gen_msubadr32_h(TCGv ret, TCGv r1, TCGv r2, TCGv r3, uint32_t n, uint32_t mode)
342
-
618
{
343
-static void tricore_cpu_initfn(Object *obj)
619
- TCGv temp = tcg_const_i32(n);
344
-{
620
+ TCGv t_n = tcg_constant_i32(n);
345
- TriCoreCPU *cpu = TRICORE_CPU(obj);
621
+ TCGv temp = tcg_temp_new();
346
-
622
TCGv temp2 = tcg_temp_new();
347
- cpu_set_cpustate_pointers(cpu);
623
TCGv_i64 temp64 = tcg_temp_new_i64();
348
-}
624
switch (mode) {
349
-
625
case MODE_LL:
350
static ObjectClass *tricore_cpu_class_by_name(const char *cpu_model)
626
- GEN_HELPER_LL(mul_h, temp64, r2, r3, temp);
351
{
627
+ GEN_HELPER_LL(mul_h, temp64, r2, r3, t_n);
352
ObjectClass *oc;
628
break;
353
@@ -XXX,XX +XXX,XX @@ static const TypeInfo tricore_cpu_type_infos[] = {
629
case MODE_LU:
354
.parent = TYPE_CPU,
630
- GEN_HELPER_LU(mul_h, temp64, r2, r3, temp);
355
.instance_size = sizeof(TriCoreCPU),
631
+ GEN_HELPER_LU(mul_h, temp64, r2, r3, t_n);
356
.instance_align = __alignof(TriCoreCPU),
632
break;
357
- .instance_init = tricore_cpu_initfn,
633
case MODE_UL:
358
.abstract = true,
634
- GEN_HELPER_UL(mul_h, temp64, r2, r3, temp);
359
.class_size = sizeof(TriCoreCPUClass),
635
+ GEN_HELPER_UL(mul_h, temp64, r2, r3, t_n);
360
.class_init = tricore_cpu_class_init,
636
break;
361
diff --git a/target/xtensa/cpu.c b/target/xtensa/cpu.c
637
case MODE_UU:
362
index XXXXXXX..XXXXXXX 100644
638
- GEN_HELPER_UU(mul_h, temp64, r2, r3, temp);
363
--- a/target/xtensa/cpu.c
639
+ GEN_HELPER_UU(mul_h, temp64, r2, r3, t_n);
364
+++ b/target/xtensa/cpu.c
640
break;
365
@@ -XXX,XX +XXX,XX @@ static void xtensa_cpu_initfn(Object *obj)
641
}
366
XtensaCPUClass *xcc = XTENSA_CPU_GET_CLASS(obj);
642
tcg_gen_andi_tl(temp2, r1, 0xffff0000);
367
CPUXtensaState *env = &cpu->env;
643
@@ -XXX,XX +XXX,XX @@ static inline void
368
644
gen_msubads_h(TCGv ret_low, TCGv ret_high, TCGv r1_low, TCGv r1_high, TCGv r2,
369
- cpu_set_cpustate_pointers(cpu);
645
TCGv r3, uint32_t n, uint32_t mode)
370
env->config = xcc->config;
646
{
371
647
- TCGv temp = tcg_const_i32(n);
372
#ifndef CONFIG_USER_ONLY
648
+ TCGv t_n = tcg_constant_i32(n);
649
+ TCGv temp = tcg_temp_new();
650
TCGv temp2 = tcg_temp_new();
651
TCGv temp3 = tcg_temp_new();
652
TCGv_i64 temp64 = tcg_temp_new_i64();
653
654
switch (mode) {
655
case MODE_LL:
656
- GEN_HELPER_LL(mul_h, temp64, r2, r3, temp);
657
+ GEN_HELPER_LL(mul_h, temp64, r2, r3, t_n);
658
break;
659
case MODE_LU:
660
- GEN_HELPER_LU(mul_h, temp64, r2, r3, temp);
661
+ GEN_HELPER_LU(mul_h, temp64, r2, r3, t_n);
662
break;
663
case MODE_UL:
664
- GEN_HELPER_UL(mul_h, temp64, r2, r3, temp);
665
+ GEN_HELPER_UL(mul_h, temp64, r2, r3, t_n);
666
break;
667
case MODE_UU:
668
- GEN_HELPER_UU(mul_h, temp64, r2, r3, temp);
669
+ GEN_HELPER_UU(mul_h, temp64, r2, r3, t_n);
670
break;
671
}
672
tcg_gen_extr_i64_i32(temp, temp2, temp64);
673
@@ -XXX,XX +XXX,XX @@ static inline void
674
gen_msubadms_h(TCGv ret_low, TCGv ret_high, TCGv r1_low, TCGv r1_high, TCGv r2,
675
TCGv r3, uint32_t n, uint32_t mode)
676
{
677
- TCGv temp = tcg_const_i32(n);
678
+ TCGv t_n = tcg_constant_i32(n);
679
TCGv_i64 temp64 = tcg_temp_new_i64();
680
TCGv_i64 temp64_2 = tcg_temp_new_i64();
681
682
switch (mode) {
683
case MODE_LL:
684
- GEN_HELPER_LL(mul_h, temp64, r2, r3, temp);
685
+ GEN_HELPER_LL(mul_h, temp64, r2, r3, t_n);
686
break;
687
case MODE_LU:
688
- GEN_HELPER_LU(mul_h, temp64, r2, r3, temp);
689
+ GEN_HELPER_LU(mul_h, temp64, r2, r3, t_n);
690
break;
691
case MODE_UL:
692
- GEN_HELPER_UL(mul_h, temp64, r2, r3, temp);
693
+ GEN_HELPER_UL(mul_h, temp64, r2, r3, t_n);
694
break;
695
case MODE_UU:
696
- GEN_HELPER_UU(mul_h, temp64, r2, r3, temp);
697
+ GEN_HELPER_UU(mul_h, temp64, r2, r3, t_n);
698
break;
699
}
700
tcg_gen_sari_i64(temp64_2, temp64, 32); /* high */
701
@@ -XXX,XX +XXX,XX @@ gen_msubadms_h(TCGv ret_low, TCGv ret_high, TCGv r1_low, TCGv r1_high, TCGv r2,
702
static inline void
703
gen_msubadr32s_h(TCGv ret, TCGv r1, TCGv r2, TCGv r3, uint32_t n, uint32_t mode)
704
{
705
- TCGv temp = tcg_const_i32(n);
706
+ TCGv t_n = tcg_constant_i32(n);
707
+ TCGv temp = tcg_temp_new();
708
TCGv temp2 = tcg_temp_new();
709
TCGv_i64 temp64 = tcg_temp_new_i64();
710
switch (mode) {
711
case MODE_LL:
712
- GEN_HELPER_LL(mul_h, temp64, r2, r3, temp);
713
+ GEN_HELPER_LL(mul_h, temp64, r2, r3, t_n);
714
break;
715
case MODE_LU:
716
- GEN_HELPER_LU(mul_h, temp64, r2, r3, temp);
717
+ GEN_HELPER_LU(mul_h, temp64, r2, r3, t_n);
718
break;
719
case MODE_UL:
720
- GEN_HELPER_UL(mul_h, temp64, r2, r3, temp);
721
+ GEN_HELPER_UL(mul_h, temp64, r2, r3, t_n);
722
break;
723
case MODE_UU:
724
- GEN_HELPER_UU(mul_h, temp64, r2, r3, temp);
725
+ GEN_HELPER_UU(mul_h, temp64, r2, r3, t_n);
726
break;
727
}
728
tcg_gen_andi_tl(temp2, r1, 0xffff0000);
373
--
729
--
374
2.34.1
730
2.34.1
375
731
376
732
diff view generated by jsdifflib
New patch
1
1
While temp3 could simply be initialized with tcg_constant_i32,
2
the renaming makes the purpose clearer.
3
4
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
5
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6
---
7
target/tricore/translate.c | 56 ++++++++++++++++++--------------------
8
1 file changed, 27 insertions(+), 29 deletions(-)
9
10
diff --git a/target/tricore/translate.c b/target/tricore/translate.c
11
index XXXXXXX..XXXXXXX 100644
12
--- a/target/tricore/translate.c
13
+++ b/target/tricore/translate.c
14
@@ -XXX,XX +XXX,XX @@ static void decode_bo_addrmode_bitreverse_circular(DisasContext *ctx)
15
uint32_t op2;
16
uint32_t off10;
17
int32_t r1, r2;
18
- TCGv temp, temp2, temp3;
19
+ TCGv temp, temp2, t_off10;
20
21
r1 = MASK_OP_BO_S1D(ctx->opcode);
22
r2 = MASK_OP_BO_S2(ctx->opcode);
23
@@ -XXX,XX +XXX,XX @@ static void decode_bo_addrmode_bitreverse_circular(DisasContext *ctx)
24
25
temp = tcg_temp_new();
26
temp2 = tcg_temp_new();
27
- temp3 = tcg_const_i32(off10);
28
+ t_off10 = tcg_constant_i32(off10);
29
CHECK_REG_PAIR(r2);
30
tcg_gen_ext16u_tl(temp, cpu_gpr_a[r2+1]);
31
tcg_gen_add_tl(temp2, cpu_gpr_a[r2], temp);
32
@@ -XXX,XX +XXX,XX @@ static void decode_bo_addrmode_bitreverse_circular(DisasContext *ctx)
33
case OPC2_32_BO_CACHEA_WI_CIRC:
34
case OPC2_32_BO_CACHEA_W_CIRC:
35
case OPC2_32_BO_CACHEA_I_CIRC:
36
- gen_helper_circ_update(cpu_gpr_a[r2+1], cpu_gpr_a[r2+1], temp3);
37
+ gen_helper_circ_update(cpu_gpr_a[r2+1], cpu_gpr_a[r2+1], t_off10);
38
break;
39
case OPC2_32_BO_ST_A_BR:
40
tcg_gen_qemu_st_tl(cpu_gpr_a[r1], temp2, ctx->mem_idx, MO_LEUL);
41
@@ -XXX,XX +XXX,XX @@ static void decode_bo_addrmode_bitreverse_circular(DisasContext *ctx)
42
break;
43
case OPC2_32_BO_ST_A_CIRC:
44
tcg_gen_qemu_st_tl(cpu_gpr_a[r1], temp2, ctx->mem_idx, MO_LEUL);
45
- gen_helper_circ_update(cpu_gpr_a[r2+1], cpu_gpr_a[r2+1], temp3);
46
+ gen_helper_circ_update(cpu_gpr_a[r2+1], cpu_gpr_a[r2+1], t_off10);
47
break;
48
case OPC2_32_BO_ST_B_BR:
49
tcg_gen_qemu_st_tl(cpu_gpr_d[r1], temp2, ctx->mem_idx, MO_UB);
50
@@ -XXX,XX +XXX,XX @@ static void decode_bo_addrmode_bitreverse_circular(DisasContext *ctx)
51
break;
52
case OPC2_32_BO_ST_B_CIRC:
53
tcg_gen_qemu_st_tl(cpu_gpr_d[r1], temp2, ctx->mem_idx, MO_UB);
54
- gen_helper_circ_update(cpu_gpr_a[r2+1], cpu_gpr_a[r2+1], temp3);
55
+ gen_helper_circ_update(cpu_gpr_a[r2+1], cpu_gpr_a[r2+1], t_off10);
56
break;
57
case OPC2_32_BO_ST_D_BR:
58
CHECK_REG_PAIR(r1);
59
@@ -XXX,XX +XXX,XX @@ static void decode_bo_addrmode_bitreverse_circular(DisasContext *ctx)
60
tcg_gen_rem_tl(temp, temp, temp2);
61
tcg_gen_add_tl(temp2, cpu_gpr_a[r2], temp);
62
tcg_gen_qemu_st_tl(cpu_gpr_d[r1+1], temp2, ctx->mem_idx, MO_LEUL);
63
- gen_helper_circ_update(cpu_gpr_a[r2+1], cpu_gpr_a[r2+1], temp3);
64
+ gen_helper_circ_update(cpu_gpr_a[r2+1], cpu_gpr_a[r2+1], t_off10);
65
break;
66
case OPC2_32_BO_ST_DA_BR:
67
CHECK_REG_PAIR(r1);
68
@@ -XXX,XX +XXX,XX @@ static void decode_bo_addrmode_bitreverse_circular(DisasContext *ctx)
69
tcg_gen_rem_tl(temp, temp, temp2);
70
tcg_gen_add_tl(temp2, cpu_gpr_a[r2], temp);
71
tcg_gen_qemu_st_tl(cpu_gpr_a[r1+1], temp2, ctx->mem_idx, MO_LEUL);
72
- gen_helper_circ_update(cpu_gpr_a[r2+1], cpu_gpr_a[r2+1], temp3);
73
+ gen_helper_circ_update(cpu_gpr_a[r2+1], cpu_gpr_a[r2+1], t_off10);
74
break;
75
case OPC2_32_BO_ST_H_BR:
76
tcg_gen_qemu_st_tl(cpu_gpr_d[r1], temp2, ctx->mem_idx, MO_LEUW);
77
@@ -XXX,XX +XXX,XX @@ static void decode_bo_addrmode_bitreverse_circular(DisasContext *ctx)
78
break;
79
case OPC2_32_BO_ST_H_CIRC:
80
tcg_gen_qemu_st_tl(cpu_gpr_d[r1], temp2, ctx->mem_idx, MO_LEUW);
81
- gen_helper_circ_update(cpu_gpr_a[r2+1], cpu_gpr_a[r2+1], temp3);
82
+ gen_helper_circ_update(cpu_gpr_a[r2+1], cpu_gpr_a[r2+1], t_off10);
83
break;
84
case OPC2_32_BO_ST_Q_BR:
85
tcg_gen_shri_tl(temp, cpu_gpr_d[r1], 16);
86
@@ -XXX,XX +XXX,XX @@ static void decode_bo_addrmode_bitreverse_circular(DisasContext *ctx)
87
case OPC2_32_BO_ST_Q_CIRC:
88
tcg_gen_shri_tl(temp, cpu_gpr_d[r1], 16);
89
tcg_gen_qemu_st_tl(temp, temp2, ctx->mem_idx, MO_LEUW);
90
- gen_helper_circ_update(cpu_gpr_a[r2+1], cpu_gpr_a[r2+1], temp3);
91
+ gen_helper_circ_update(cpu_gpr_a[r2+1], cpu_gpr_a[r2+1], t_off10);
92
break;
93
case OPC2_32_BO_ST_W_BR:
94
tcg_gen_qemu_st_tl(cpu_gpr_d[r1], temp2, ctx->mem_idx, MO_LEUL);
95
@@ -XXX,XX +XXX,XX @@ static void decode_bo_addrmode_bitreverse_circular(DisasContext *ctx)
96
break;
97
case OPC2_32_BO_ST_W_CIRC:
98
tcg_gen_qemu_st_tl(cpu_gpr_d[r1], temp2, ctx->mem_idx, MO_LEUL);
99
- gen_helper_circ_update(cpu_gpr_a[r2+1], cpu_gpr_a[r2+1], temp3);
100
+ gen_helper_circ_update(cpu_gpr_a[r2+1], cpu_gpr_a[r2+1], t_off10);
101
break;
102
default:
103
generate_trap(ctx, TRAPC_INSN_ERR, TIN2_IOPC);
104
@@ -XXX,XX +XXX,XX @@ static void decode_bo_addrmode_ld_bitreverse_circular(DisasContext *ctx)
105
uint32_t op2;
106
uint32_t off10;
107
int r1, r2;
108
-
109
- TCGv temp, temp2, temp3;
110
+ TCGv temp, temp2, t_off10;
111
112
r1 = MASK_OP_BO_S1D(ctx->opcode);
113
r2 = MASK_OP_BO_S2(ctx->opcode);
114
@@ -XXX,XX +XXX,XX @@ static void decode_bo_addrmode_ld_bitreverse_circular(DisasContext *ctx)
115
116
temp = tcg_temp_new();
117
temp2 = tcg_temp_new();
118
- temp3 = tcg_const_i32(off10);
119
+ t_off10 = tcg_constant_i32(off10);
120
CHECK_REG_PAIR(r2);
121
tcg_gen_ext16u_tl(temp, cpu_gpr_a[r2+1]);
122
tcg_gen_add_tl(temp2, cpu_gpr_a[r2], temp);
123
@@ -XXX,XX +XXX,XX @@ static void decode_bo_addrmode_ld_bitreverse_circular(DisasContext *ctx)
124
break;
125
case OPC2_32_BO_LD_A_CIRC:
126
tcg_gen_qemu_ld_tl(cpu_gpr_a[r1], temp2, ctx->mem_idx, MO_LEUL);
127
- gen_helper_circ_update(cpu_gpr_a[r2+1], cpu_gpr_a[r2+1], temp3);
128
+ gen_helper_circ_update(cpu_gpr_a[r2+1], cpu_gpr_a[r2+1], t_off10);
129
break;
130
case OPC2_32_BO_LD_B_BR:
131
tcg_gen_qemu_ld_tl(cpu_gpr_d[r1], temp2, ctx->mem_idx, MO_SB);
132
@@ -XXX,XX +XXX,XX @@ static void decode_bo_addrmode_ld_bitreverse_circular(DisasContext *ctx)
133
break;
134
case OPC2_32_BO_LD_B_CIRC:
135
tcg_gen_qemu_ld_tl(cpu_gpr_d[r1], temp2, ctx->mem_idx, MO_SB);
136
- gen_helper_circ_update(cpu_gpr_a[r2+1], cpu_gpr_a[r2+1], temp3);
137
+ gen_helper_circ_update(cpu_gpr_a[r2+1], cpu_gpr_a[r2+1], t_off10);
138
break;
139
case OPC2_32_BO_LD_BU_BR:
140
tcg_gen_qemu_ld_tl(cpu_gpr_d[r1], temp2, ctx->mem_idx, MO_UB);
141
@@ -XXX,XX +XXX,XX @@ static void decode_bo_addrmode_ld_bitreverse_circular(DisasContext *ctx)
142
break;
143
case OPC2_32_BO_LD_BU_CIRC:
144
tcg_gen_qemu_ld_tl(cpu_gpr_d[r1], temp2, ctx->mem_idx, MO_UB);
145
- gen_helper_circ_update(cpu_gpr_a[r2+1], cpu_gpr_a[r2+1], temp3);
146
+ gen_helper_circ_update(cpu_gpr_a[r2+1], cpu_gpr_a[r2+1], t_off10);
147
break;
148
case OPC2_32_BO_LD_D_BR:
149
CHECK_REG_PAIR(r1);
150
@@ -XXX,XX +XXX,XX @@ static void decode_bo_addrmode_ld_bitreverse_circular(DisasContext *ctx)
151
tcg_gen_rem_tl(temp, temp, temp2);
152
tcg_gen_add_tl(temp2, cpu_gpr_a[r2], temp);
153
tcg_gen_qemu_ld_tl(cpu_gpr_d[r1+1], temp2, ctx->mem_idx, MO_LEUL);
154
- gen_helper_circ_update(cpu_gpr_a[r2+1], cpu_gpr_a[r2+1], temp3);
155
+ gen_helper_circ_update(cpu_gpr_a[r2+1], cpu_gpr_a[r2+1], t_off10);
156
break;
157
case OPC2_32_BO_LD_DA_BR:
158
CHECK_REG_PAIR(r1);
159
@@ -XXX,XX +XXX,XX @@ static void decode_bo_addrmode_ld_bitreverse_circular(DisasContext *ctx)
160
tcg_gen_rem_tl(temp, temp, temp2);
161
tcg_gen_add_tl(temp2, cpu_gpr_a[r2], temp);
162
tcg_gen_qemu_ld_tl(cpu_gpr_a[r1+1], temp2, ctx->mem_idx, MO_LEUL);
163
- gen_helper_circ_update(cpu_gpr_a[r2+1], cpu_gpr_a[r2+1], temp3);
164
+ gen_helper_circ_update(cpu_gpr_a[r2+1], cpu_gpr_a[r2+1], t_off10);
165
break;
166
case OPC2_32_BO_LD_H_BR:
167
tcg_gen_qemu_ld_tl(cpu_gpr_d[r1], temp2, ctx->mem_idx, MO_LESW);
168
@@ -XXX,XX +XXX,XX @@ static void decode_bo_addrmode_ld_bitreverse_circular(DisasContext *ctx)
169
break;
170
case OPC2_32_BO_LD_H_CIRC:
171
tcg_gen_qemu_ld_tl(cpu_gpr_d[r1], temp2, ctx->mem_idx, MO_LESW);
172
- gen_helper_circ_update(cpu_gpr_a[r2+1], cpu_gpr_a[r2+1], temp3);
173
+ gen_helper_circ_update(cpu_gpr_a[r2+1], cpu_gpr_a[r2+1], t_off10);
174
break;
175
case OPC2_32_BO_LD_HU_BR:
176
tcg_gen_qemu_ld_tl(cpu_gpr_d[r1], temp2, ctx->mem_idx, MO_LEUW);
177
@@ -XXX,XX +XXX,XX @@ static void decode_bo_addrmode_ld_bitreverse_circular(DisasContext *ctx)
178
break;
179
case OPC2_32_BO_LD_HU_CIRC:
180
tcg_gen_qemu_ld_tl(cpu_gpr_d[r1], temp2, ctx->mem_idx, MO_LEUW);
181
- gen_helper_circ_update(cpu_gpr_a[r2+1], cpu_gpr_a[r2+1], temp3);
182
+ gen_helper_circ_update(cpu_gpr_a[r2+1], cpu_gpr_a[r2+1], t_off10);
183
break;
184
case OPC2_32_BO_LD_Q_BR:
185
tcg_gen_qemu_ld_tl(cpu_gpr_d[r1], temp2, ctx->mem_idx, MO_LEUW);
186
@@ -XXX,XX +XXX,XX @@ static void decode_bo_addrmode_ld_bitreverse_circular(DisasContext *ctx)
187
case OPC2_32_BO_LD_Q_CIRC:
188
tcg_gen_qemu_ld_tl(cpu_gpr_d[r1], temp2, ctx->mem_idx, MO_LEUW);
189
tcg_gen_shli_tl(cpu_gpr_d[r1], cpu_gpr_d[r1], 16);
190
- gen_helper_circ_update(cpu_gpr_a[r2+1], cpu_gpr_a[r2+1], temp3);
191
+ gen_helper_circ_update(cpu_gpr_a[r2+1], cpu_gpr_a[r2+1], t_off10);
192
break;
193
case OPC2_32_BO_LD_W_BR:
194
tcg_gen_qemu_ld_tl(cpu_gpr_d[r1], temp2, ctx->mem_idx, MO_LEUL);
195
@@ -XXX,XX +XXX,XX @@ static void decode_bo_addrmode_ld_bitreverse_circular(DisasContext *ctx)
196
break;
197
case OPC2_32_BO_LD_W_CIRC:
198
tcg_gen_qemu_ld_tl(cpu_gpr_d[r1], temp2, ctx->mem_idx, MO_LEUL);
199
- gen_helper_circ_update(cpu_gpr_a[r2+1], cpu_gpr_a[r2+1], temp3);
200
+ gen_helper_circ_update(cpu_gpr_a[r2+1], cpu_gpr_a[r2+1], t_off10);
201
break;
202
default:
203
generate_trap(ctx, TRAPC_INSN_ERR, TIN2_IOPC);
204
@@ -XXX,XX +XXX,XX @@ static void decode_bo_addrmode_ldmst_bitreverse_circular(DisasContext *ctx)
205
uint32_t op2;
206
uint32_t off10;
207
int r1, r2;
208
-
209
- TCGv temp, temp2, temp3;
210
+ TCGv temp, temp2, t_off10;
211
212
r1 = MASK_OP_BO_S1D(ctx->opcode);
213
r2 = MASK_OP_BO_S2(ctx->opcode);
214
@@ -XXX,XX +XXX,XX @@ static void decode_bo_addrmode_ldmst_bitreverse_circular(DisasContext *ctx)
215
216
temp = tcg_temp_new();
217
temp2 = tcg_temp_new();
218
- temp3 = tcg_const_i32(off10);
219
+ t_off10 = tcg_constant_i32(off10);
220
CHECK_REG_PAIR(r2);
221
tcg_gen_ext16u_tl(temp, cpu_gpr_a[r2+1]);
222
tcg_gen_add_tl(temp2, cpu_gpr_a[r2], temp);
223
@@ -XXX,XX +XXX,XX @@ static void decode_bo_addrmode_ldmst_bitreverse_circular(DisasContext *ctx)
224
break;
225
case OPC2_32_BO_LDMST_CIRC:
226
gen_ldmst(ctx, r1, temp2);
227
- gen_helper_circ_update(cpu_gpr_a[r2+1], cpu_gpr_a[r2+1], temp3);
228
+ gen_helper_circ_update(cpu_gpr_a[r2+1], cpu_gpr_a[r2+1], t_off10);
229
break;
230
case OPC2_32_BO_SWAP_W_BR:
231
gen_swap(ctx, r1, temp2);
232
@@ -XXX,XX +XXX,XX @@ static void decode_bo_addrmode_ldmst_bitreverse_circular(DisasContext *ctx)
233
break;
234
case OPC2_32_BO_SWAP_W_CIRC:
235
gen_swap(ctx, r1, temp2);
236
- gen_helper_circ_update(cpu_gpr_a[r2+1], cpu_gpr_a[r2+1], temp3);
237
+ gen_helper_circ_update(cpu_gpr_a[r2+1], cpu_gpr_a[r2+1], t_off10);
238
break;
239
case OPC2_32_BO_CMPSWAP_W_BR:
240
gen_cmpswap(ctx, r1, temp2);
241
@@ -XXX,XX +XXX,XX @@ static void decode_bo_addrmode_ldmst_bitreverse_circular(DisasContext *ctx)
242
break;
243
case OPC2_32_BO_CMPSWAP_W_CIRC:
244
gen_cmpswap(ctx, r1, temp2);
245
- gen_helper_circ_update(cpu_gpr_a[r2+1], cpu_gpr_a[r2+1], temp3);
246
+ gen_helper_circ_update(cpu_gpr_a[r2+1], cpu_gpr_a[r2+1], t_off10);
247
break;
248
case OPC2_32_BO_SWAPMSK_W_BR:
249
gen_swapmsk(ctx, r1, temp2);
250
@@ -XXX,XX +XXX,XX @@ static void decode_bo_addrmode_ldmst_bitreverse_circular(DisasContext *ctx)
251
break;
252
case OPC2_32_BO_SWAPMSK_W_CIRC:
253
gen_swapmsk(ctx, r1, temp2);
254
- gen_helper_circ_update(cpu_gpr_a[r2+1], cpu_gpr_a[r2+1], temp3);
255
+ gen_helper_circ_update(cpu_gpr_a[r2+1], cpu_gpr_a[r2+1], t_off10);
256
break;
257
default:
258
generate_trap(ctx, TRAPC_INSN_ERR, TIN2_IOPC);
259
--
260
2.34.1
261
262
diff view generated by jsdifflib
New patch
1
This removes the only use of temp.
1
2
3
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
4
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
5
---
6
target/tricore/translate.c | 7 ++-----
7
1 file changed, 2 insertions(+), 5 deletions(-)
8
9
diff --git a/target/tricore/translate.c b/target/tricore/translate.c
10
index XXXXXXX..XXXXXXX 100644
11
--- a/target/tricore/translate.c
12
+++ b/target/tricore/translate.c
13
@@ -XXX,XX +XXX,XX @@ static void decode_sr_accu(DisasContext *ctx)
14
{
15
uint32_t op2;
16
uint32_t r1;
17
- TCGv temp;
18
19
r1 = MASK_OP_SR_S1D(ctx->opcode);
20
op2 = MASK_OP_SR_OP2(ctx->opcode);
21
22
switch (op2) {
23
case OPC2_16_SR_RSUB:
24
- /* overflow only if r1 = -0x80000000 */
25
- temp = tcg_const_i32(-0x80000000);
26
- /* calc V bit */
27
- tcg_gen_setcond_tl(TCG_COND_EQ, cpu_PSW_V, cpu_gpr_d[r1], temp);
28
+ /* calc V bit -- overflow only if r1 = -0x80000000 */
29
+ tcg_gen_setcondi_tl(TCG_COND_EQ, cpu_PSW_V, cpu_gpr_d[r1], -0x80000000);
30
tcg_gen_shli_tl(cpu_PSW_V, cpu_PSW_V, 31);
31
/* calc SV bit */
32
tcg_gen_or_tl(cpu_PSW_SV, cpu_PSW_SV, cpu_PSW_V);
33
--
34
2.34.1
35
36
diff view generated by jsdifflib
1
From: gaosong <gaosong@loongson.cn>
1
The temp variables here are always set afterward;
2
the initialization with a constant was discarded.
2
3
3
Fix:
4
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
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>
5
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
15
---
6
---
16
tcg/loongarch64/tcg-target.c.inc | 68 ++++++++++++++++----------------
7
target/tricore/translate.c | 4 ++--
17
1 file changed, 35 insertions(+), 33 deletions(-)
8
1 file changed, 2 insertions(+), 2 deletions(-)
18
9
19
diff --git a/tcg/loongarch64/tcg-target.c.inc b/tcg/loongarch64/tcg-target.c.inc
10
diff --git a/target/tricore/translate.c b/target/tricore/translate.c
20
index XXXXXXX..XXXXXXX 100644
11
index XXXXXXX..XXXXXXX 100644
21
--- a/tcg/loongarch64/tcg-target.c.inc
12
--- a/target/tricore/translate.c
22
+++ b/tcg/loongarch64/tcg-target.c.inc
13
+++ b/target/tricore/translate.c
23
@@ -XXX,XX +XXX,XX @@ static void tcg_out_vec_op(TCGContext *s, TCGOpcode opc,
14
@@ -XXX,XX +XXX,XX @@ static void decode_rrr1_maddq_h(DisasContext *ctx)
24
tcg_out_opc_vnor_v(s, a0, a1, a1);
15
r4 = MASK_OP_RRR1_D(ctx->opcode);
25
break;
16
n = MASK_OP_RRR1_N(ctx->opcode);
26
case INDEX_op_cmp_vec:
17
27
- TCGCond cond = args[3];
18
- temp = tcg_const_i32(n);
28
- if (const_args[2]) {
19
+ temp = tcg_temp_new();
29
- /*
20
temp2 = tcg_temp_new();
30
- * cmp_vec dest, src, value
21
31
- * Try vseqi/vslei/vslti
22
switch (op2) {
32
- */
23
@@ -XXX,XX +XXX,XX @@ static void decode_rrr1_msubq_h(DisasContext *ctx)
33
- int64_t value = sextract64(a2, 0, 8 << vece);
24
r4 = MASK_OP_RRR1_D(ctx->opcode);
34
- if ((cond == TCG_COND_EQ || cond == TCG_COND_LE || \
25
n = MASK_OP_RRR1_N(ctx->opcode);
35
- cond == TCG_COND_LT) && (-0x10 <= value && value <= 0x0f)) {
26
36
- tcg_out32(s, encode_vdvjsk5_insn(cmp_vec_imm_insn[cond][vece], \
27
- temp = tcg_const_i32(n);
37
- a0, a1, value));
28
+ temp = tcg_temp_new();
38
- break;
29
temp2 = tcg_temp_new();
39
- } else if ((cond == TCG_COND_LEU || cond == TCG_COND_LTU) &&
30
40
- (0x00 <= value && value <= 0x1f)) {
31
switch (op2) {
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
--
32
--
103
2.34.1
33
2.34.1
104
34
105
35
diff view generated by jsdifflib
1
Inherit the size and alignment from TYPE_ARM_CPU.
1
All remaining uses are strictly read-only.
2
2
3
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
3
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
4
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
4
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
5
---
5
---
6
target/arm/cpu.c | 3 ---
6
target/tricore/translate.c | 127 +++++++++++++++++++------------------
7
target/arm/cpu64.c | 4 ----
7
1 file changed, 64 insertions(+), 63 deletions(-)
8
2 files changed, 7 deletions(-)
9
8
10
diff --git a/target/arm/cpu.c b/target/arm/cpu.c
9
diff --git a/target/tricore/translate.c b/target/tricore/translate.c
11
index XXXXXXX..XXXXXXX 100644
10
index XXXXXXX..XXXXXXX 100644
12
--- a/target/arm/cpu.c
11
--- a/target/tricore/translate.c
13
+++ b/target/arm/cpu.c
12
+++ b/target/tricore/translate.c
14
@@ -XXX,XX +XXX,XX @@ void arm_cpu_register(const ARMCPUInfo *info)
13
@@ -XXX,XX +XXX,XX @@ void tricore_cpu_dump_state(CPUState *cs, FILE *f, int flags)
15
{
14
/* Makros for generating helpers */
16
TypeInfo type_info = {
15
17
.parent = TYPE_ARM_CPU,
16
#define gen_helper_1arg(name, arg) do { \
18
- .instance_size = sizeof(ARMCPU),
17
- TCGv_i32 helper_tmp = tcg_const_i32(arg); \
19
- .instance_align = __alignof__(ARMCPU),
18
+ TCGv_i32 helper_tmp = tcg_constant_i32(arg); \
20
.instance_init = arm_cpu_instance_init,
19
gen_helper_##name(cpu_env, helper_tmp); \
21
- .class_size = sizeof(ARMCPUClass),
20
} while (0)
22
.class_init = info->class_init ?: cpu_register_class_init,
21
23
.class_data = (void *)info,
22
@@ -XXX,XX +XXX,XX @@ static inline void gen_madd32_d(TCGv ret, TCGv r1, TCGv r2, TCGv r3)
24
};
23
25
diff --git a/target/arm/cpu64.c b/target/arm/cpu64.c
24
static inline void gen_maddi32_d(TCGv ret, TCGv r1, TCGv r2, int32_t con)
26
index XXXXXXX..XXXXXXX 100644
25
{
27
--- a/target/arm/cpu64.c
26
- TCGv temp = tcg_const_i32(con);
28
+++ b/target/arm/cpu64.c
27
+ TCGv temp = tcg_constant_i32(con);
29
@@ -XXX,XX +XXX,XX @@ void aarch64_cpu_register(const ARMCPUInfo *info)
28
gen_madd32_d(ret, r1, r2, temp);
30
{
29
}
31
TypeInfo type_info = {
30
32
.parent = TYPE_AARCH64_CPU,
31
@@ -XXX,XX +XXX,XX @@ static inline void
33
- .instance_size = sizeof(ARMCPU),
32
gen_maddi64_d(TCGv ret_low, TCGv ret_high, TCGv r1, TCGv r2_low, TCGv r2_high,
34
.instance_init = aarch64_cpu_instance_init,
33
int32_t con)
35
- .class_size = sizeof(ARMCPUClass),
34
{
36
.class_init = info->class_init ?: cpu_register_class_init,
35
- TCGv temp = tcg_const_i32(con);
37
.class_data = (void *)info,
36
+ TCGv temp = tcg_constant_i32(con);
38
};
37
gen_madd64_d(ret_low, ret_high, r1, r2_low, r2_high, temp);
39
@@ -XXX,XX +XXX,XX @@ void aarch64_cpu_register(const ARMCPUInfo *info)
38
}
40
static const TypeInfo aarch64_cpu_type_info = {
39
41
.name = TYPE_AARCH64_CPU,
40
@@ -XXX,XX +XXX,XX @@ static inline void
42
.parent = TYPE_ARM_CPU,
41
gen_maddui64_d(TCGv ret_low, TCGv ret_high, TCGv r1, TCGv r2_low, TCGv r2_high,
43
- .instance_size = sizeof(ARMCPU),
42
int32_t con)
44
.instance_finalize = aarch64_cpu_finalizefn,
43
{
45
.abstract = true,
44
- TCGv temp = tcg_const_i32(con);
46
- .class_size = sizeof(AArch64CPUClass),
45
+ TCGv temp = tcg_constant_i32(con);
47
.class_init = aarch64_cpu_class_init,
46
gen_maddu64_d(ret_low, ret_high, r1, r2_low, r2_high, temp);
48
};
47
}
48
49
@@ -XXX,XX +XXX,XX @@ static inline void gen_msub32_d(TCGv ret, TCGv r1, TCGv r2, TCGv r3)
50
51
static inline void gen_msubi32_d(TCGv ret, TCGv r1, TCGv r2, int32_t con)
52
{
53
- TCGv temp = tcg_const_i32(con);
54
+ TCGv temp = tcg_constant_i32(con);
55
gen_msub32_d(ret, r1, r2, temp);
56
}
57
58
@@ -XXX,XX +XXX,XX @@ static inline void
59
gen_msubi64_d(TCGv ret_low, TCGv ret_high, TCGv r1, TCGv r2_low, TCGv r2_high,
60
int32_t con)
61
{
62
- TCGv temp = tcg_const_i32(con);
63
+ TCGv temp = tcg_constant_i32(con);
64
gen_msub64_d(ret_low, ret_high, r1, r2_low, r2_high, temp);
65
}
66
67
@@ -XXX,XX +XXX,XX @@ static inline void
68
gen_msubui64_d(TCGv ret_low, TCGv ret_high, TCGv r1, TCGv r2_low, TCGv r2_high,
69
int32_t con)
70
{
71
- TCGv temp = tcg_const_i32(con);
72
+ TCGv temp = tcg_constant_i32(con);
73
gen_msubu64_d(ret_low, ret_high, r1, r2_low, r2_high, temp);
74
}
75
76
static inline void gen_addi_d(TCGv ret, TCGv r1, target_ulong r2)
77
{
78
- TCGv temp = tcg_const_i32(r2);
79
+ TCGv temp = tcg_constant_i32(r2);
80
gen_add_d(ret, r1, temp);
81
}
82
83
@@ -XXX,XX +XXX,XX @@ static inline void gen_add_CC(TCGv ret, TCGv r1, TCGv r2)
84
85
static inline void gen_addi_CC(TCGv ret, TCGv r1, int32_t con)
86
{
87
- TCGv temp = tcg_const_i32(con);
88
+ TCGv temp = tcg_constant_i32(con);
89
gen_add_CC(ret, r1, temp);
90
}
91
92
@@ -XXX,XX +XXX,XX @@ static inline void gen_addc_CC(TCGv ret, TCGv r1, TCGv r2)
93
94
static inline void gen_addci_CC(TCGv ret, TCGv r1, int32_t con)
95
{
96
- TCGv temp = tcg_const_i32(con);
97
+ TCGv temp = tcg_constant_i32(con);
98
gen_addc_CC(ret, r1, temp);
99
}
100
101
@@ -XXX,XX +XXX,XX @@ static inline void gen_cond_add(TCGCond cond, TCGv r1, TCGv r2, TCGv r3,
102
TCGv temp2 = tcg_temp_new();
103
TCGv result = tcg_temp_new();
104
TCGv mask = tcg_temp_new();
105
- TCGv t0 = tcg_const_i32(0);
106
+ TCGv t0 = tcg_constant_i32(0);
107
108
/* create mask for sticky bits */
109
tcg_gen_setcond_tl(cond, mask, r4, t0);
110
@@ -XXX,XX +XXX,XX @@ static inline void gen_cond_add(TCGCond cond, TCGv r1, TCGv r2, TCGv r3,
111
static inline void gen_condi_add(TCGCond cond, TCGv r1, int32_t r2,
112
TCGv r3, TCGv r4)
113
{
114
- TCGv temp = tcg_const_i32(r2);
115
+ TCGv temp = tcg_constant_i32(r2);
116
gen_cond_add(cond, r1, temp, r3, r4);
117
}
118
119
@@ -XXX,XX +XXX,XX @@ static inline void gen_cond_sub(TCGCond cond, TCGv r1, TCGv r2, TCGv r3,
120
TCGv temp2 = tcg_temp_new();
121
TCGv result = tcg_temp_new();
122
TCGv mask = tcg_temp_new();
123
- TCGv t0 = tcg_const_i32(0);
124
+ TCGv t0 = tcg_constant_i32(0);
125
126
/* create mask for sticky bits */
127
tcg_gen_setcond_tl(cond, mask, r4, t0);
128
@@ -XXX,XX +XXX,XX @@ gen_msubr32s_h(TCGv ret, TCGv r1, TCGv r2, TCGv r3, uint32_t n, uint32_t mode)
129
static inline void
130
gen_msubr_q(TCGv ret, TCGv r1, TCGv r2, TCGv r3, uint32_t n)
131
{
132
- TCGv temp = tcg_const_i32(n);
133
+ TCGv temp = tcg_constant_i32(n);
134
gen_helper_msubr_q(ret, cpu_env, r1, r2, r3, temp);
135
}
136
137
static inline void
138
gen_msubrs_q(TCGv ret, TCGv r1, TCGv r2, TCGv r3, uint32_t n)
139
{
140
- TCGv temp = tcg_const_i32(n);
141
+ TCGv temp = tcg_constant_i32(n);
142
gen_helper_msubr_q_ssov(ret, cpu_env, r1, r2, r3, temp);
143
}
144
145
@@ -XXX,XX +XXX,XX @@ static inline void gen_absdif(TCGv ret, TCGv r1, TCGv r2)
146
147
static inline void gen_absdifi(TCGv ret, TCGv r1, int32_t con)
148
{
149
- TCGv temp = tcg_const_i32(con);
150
+ TCGv temp = tcg_constant_i32(con);
151
gen_absdif(ret, r1, temp);
152
}
153
154
static inline void gen_absdifsi(TCGv ret, TCGv r1, int32_t con)
155
{
156
- TCGv temp = tcg_const_i32(con);
157
+ TCGv temp = tcg_constant_i32(con);
158
gen_helper_absdif_ssov(ret, cpu_env, r1, temp);
159
}
160
161
@@ -XXX,XX +XXX,XX @@ static inline void gen_mul_i32s(TCGv ret, TCGv r1, TCGv r2)
162
163
static inline void gen_muli_i32s(TCGv ret, TCGv r1, int32_t con)
164
{
165
- TCGv temp = tcg_const_i32(con);
166
+ TCGv temp = tcg_constant_i32(con);
167
gen_mul_i32s(ret, r1, temp);
168
}
169
170
@@ -XXX,XX +XXX,XX @@ static inline void gen_mul_i64s(TCGv ret_low, TCGv ret_high, TCGv r1, TCGv r2)
171
static inline void gen_muli_i64s(TCGv ret_low, TCGv ret_high, TCGv r1,
172
int32_t con)
173
{
174
- TCGv temp = tcg_const_i32(con);
175
+ TCGv temp = tcg_constant_i32(con);
176
gen_mul_i64s(ret_low, ret_high, r1, temp);
177
}
178
179
@@ -XXX,XX +XXX,XX @@ static inline void gen_mul_i64u(TCGv ret_low, TCGv ret_high, TCGv r1, TCGv r2)
180
static inline void gen_muli_i64u(TCGv ret_low, TCGv ret_high, TCGv r1,
181
int32_t con)
182
{
183
- TCGv temp = tcg_const_i32(con);
184
+ TCGv temp = tcg_constant_i32(con);
185
gen_mul_i64u(ret_low, ret_high, r1, temp);
186
}
187
188
static inline void gen_mulsi_i32(TCGv ret, TCGv r1, int32_t con)
189
{
190
- TCGv temp = tcg_const_i32(con);
191
+ TCGv temp = tcg_constant_i32(con);
192
gen_helper_mul_ssov(ret, cpu_env, r1, temp);
193
}
194
195
static inline void gen_mulsui_i32(TCGv ret, TCGv r1, int32_t con)
196
{
197
- TCGv temp = tcg_const_i32(con);
198
+ TCGv temp = tcg_constant_i32(con);
199
gen_helper_mul_suov(ret, cpu_env, r1, temp);
200
}
201
+
202
/* gen_maddsi_32(cpu_gpr_d[r4], cpu_gpr_d[r1], cpu_gpr_d[r3], const9); */
203
static inline void gen_maddsi_32(TCGv ret, TCGv r1, TCGv r2, int32_t con)
204
{
205
- TCGv temp = tcg_const_i32(con);
206
+ TCGv temp = tcg_constant_i32(con);
207
gen_helper_madd32_ssov(ret, cpu_env, r1, r2, temp);
208
}
209
210
static inline void gen_maddsui_32(TCGv ret, TCGv r1, TCGv r2, int32_t con)
211
{
212
- TCGv temp = tcg_const_i32(con);
213
+ TCGv temp = tcg_constant_i32(con);
214
gen_helper_madd32_suov(ret, cpu_env, r1, r2, temp);
215
}
216
217
@@ -XXX,XX +XXX,XX @@ static inline void
218
gen_maddsi_64(TCGv ret_low, TCGv ret_high, TCGv r1, TCGv r2_low, TCGv r2_high,
219
int32_t con)
220
{
221
- TCGv temp = tcg_const_i32(con);
222
+ TCGv temp = tcg_constant_i32(con);
223
gen_madds_64(ret_low, ret_high, r1, r2_low, r2_high, temp);
224
}
225
226
@@ -XXX,XX +XXX,XX @@ static inline void
227
gen_maddsui_64(TCGv ret_low, TCGv ret_high, TCGv r1, TCGv r2_low, TCGv r2_high,
228
int32_t con)
229
{
230
- TCGv temp = tcg_const_i32(con);
231
+ TCGv temp = tcg_constant_i32(con);
232
gen_maddsu_64(ret_low, ret_high, r1, r2_low, r2_high, temp);
233
}
234
235
static inline void gen_msubsi_32(TCGv ret, TCGv r1, TCGv r2, int32_t con)
236
{
237
- TCGv temp = tcg_const_i32(con);
238
+ TCGv temp = tcg_constant_i32(con);
239
gen_helper_msub32_ssov(ret, cpu_env, r1, r2, temp);
240
}
241
242
static inline void gen_msubsui_32(TCGv ret, TCGv r1, TCGv r2, int32_t con)
243
{
244
- TCGv temp = tcg_const_i32(con);
245
+ TCGv temp = tcg_constant_i32(con);
246
gen_helper_msub32_suov(ret, cpu_env, r1, r2, temp);
247
}
248
249
@@ -XXX,XX +XXX,XX @@ static inline void
250
gen_msubsi_64(TCGv ret_low, TCGv ret_high, TCGv r1, TCGv r2_low, TCGv r2_high,
251
int32_t con)
252
{
253
- TCGv temp = tcg_const_i32(con);
254
+ TCGv temp = tcg_constant_i32(con);
255
gen_msubs_64(ret_low, ret_high, r1, r2_low, r2_high, temp);
256
}
257
258
@@ -XXX,XX +XXX,XX @@ static inline void
259
gen_msubsui_64(TCGv ret_low, TCGv ret_high, TCGv r1, TCGv r2_low, TCGv r2_high,
260
int32_t con)
261
{
262
- TCGv temp = tcg_const_i32(con);
263
+ TCGv temp = tcg_constant_i32(con);
264
gen_msubsu_64(ret_low, ret_high, r1, r2_low, r2_high, temp);
265
}
266
267
@@ -XXX,XX +XXX,XX @@ static void gen_shaci(TCGv ret, TCGv r1, int32_t shift_count)
268
/* clear PSW.V */
269
tcg_gen_movi_tl(cpu_PSW_V, 0);
270
} else if (shift_count > 0) {
271
- TCGv t_max = tcg_const_i32(0x7FFFFFFF >> shift_count);
272
- TCGv t_min = tcg_const_i32(((int32_t) -0x80000000) >> shift_count);
273
+ TCGv t_max = tcg_constant_i32(0x7FFFFFFF >> shift_count);
274
+ TCGv t_min = tcg_constant_i32(((int32_t) -0x80000000) >> shift_count);
275
276
/* calc carry */
277
msk_start = 32 - shift_count;
278
@@ -XXX,XX +XXX,XX @@ static void gen_shas(TCGv ret, TCGv r1, TCGv r2)
279
280
static void gen_shasi(TCGv ret, TCGv r1, int32_t con)
281
{
282
- TCGv temp = tcg_const_i32(con);
283
+ TCGv temp = tcg_constant_i32(con);
284
gen_shas(ret, r1, temp);
285
}
286
287
@@ -XXX,XX +XXX,XX @@ static void gen_sh_cond(int cond, TCGv ret, TCGv r1, TCGv r2)
288
289
static void gen_sh_condi(int cond, TCGv ret, TCGv r1, int32_t con)
290
{
291
- TCGv temp = tcg_const_i32(con);
292
+ TCGv temp = tcg_constant_i32(con);
293
gen_sh_cond(cond, ret, r1, temp);
294
}
295
296
@@ -XXX,XX +XXX,XX @@ static inline void gen_adds(TCGv ret, TCGv r1, TCGv r2)
297
298
static inline void gen_addsi(TCGv ret, TCGv r1, int32_t con)
299
{
300
- TCGv temp = tcg_const_i32(con);
301
+ TCGv temp = tcg_constant_i32(con);
302
gen_helper_add_ssov(ret, cpu_env, r1, temp);
303
}
304
305
static inline void gen_addsui(TCGv ret, TCGv r1, int32_t con)
306
{
307
- TCGv temp = tcg_const_i32(con);
308
+ TCGv temp = tcg_constant_i32(con);
309
gen_helper_add_suov(ret, cpu_env, r1, temp);
310
}
311
312
@@ -XXX,XX +XXX,XX @@ static inline void
313
gen_accumulating_condi(int cond, TCGv ret, TCGv r1, int32_t con,
314
void(*op)(TCGv, TCGv, TCGv))
315
{
316
- TCGv temp = tcg_const_i32(con);
317
+ TCGv temp = tcg_constant_i32(con);
318
gen_accumulating_cond(cond, ret, r1, temp, op);
319
}
320
321
@@ -XXX,XX +XXX,XX @@ static void gen_goto_tb(DisasContext *ctx, int n, target_ulong dest)
322
323
static void generate_trap(DisasContext *ctx, int class, int tin)
324
{
325
- TCGv_i32 classtemp = tcg_const_i32(class);
326
- TCGv_i32 tintemp = tcg_const_i32(tin);
327
+ TCGv_i32 classtemp = tcg_constant_i32(class);
328
+ TCGv_i32 tintemp = tcg_constant_i32(tin);
329
330
gen_save_pc(ctx->base.pc_next);
331
gen_helper_raise_exception_sync(cpu_env, classtemp, tintemp);
332
@@ -XXX,XX +XXX,XX @@ static inline void gen_branch_cond(DisasContext *ctx, TCGCond cond, TCGv r1,
333
static inline void gen_branch_condi(DisasContext *ctx, TCGCond cond, TCGv r1,
334
int r2, int16_t address)
335
{
336
- TCGv temp = tcg_const_i32(r2);
337
+ TCGv temp = tcg_constant_i32(r2);
338
gen_branch_cond(ctx, cond, r1, temp, address);
339
}
340
341
@@ -XXX,XX +XXX,XX @@ static void decode_src_opc(DisasContext *ctx, int op1)
342
cpu_gpr_d[15]);
343
break;
344
case OPC1_16_SRC_CMOV:
345
- temp = tcg_const_tl(0);
346
- temp2 = tcg_const_tl(const4);
347
+ temp = tcg_constant_tl(0);
348
+ temp2 = tcg_constant_tl(const4);
349
tcg_gen_movcond_tl(TCG_COND_NE, cpu_gpr_d[r1], cpu_gpr_d[15], temp,
350
temp2, cpu_gpr_d[r1]);
351
break;
352
case OPC1_16_SRC_CMOVN:
353
- temp = tcg_const_tl(0);
354
- temp2 = tcg_const_tl(const4);
355
+ temp = tcg_constant_tl(0);
356
+ temp2 = tcg_constant_tl(const4);
357
tcg_gen_movcond_tl(TCG_COND_EQ, cpu_gpr_d[r1], cpu_gpr_d[15], temp,
358
temp2, cpu_gpr_d[r1]);
359
break;
360
@@ -XXX,XX +XXX,XX @@ static void decode_srr_opc(DisasContext *ctx, int op1)
361
tcg_gen_and_tl(cpu_gpr_d[r1], cpu_gpr_d[r1], cpu_gpr_d[r2]);
362
break;
363
case OPC1_16_SRR_CMOV:
364
- temp = tcg_const_tl(0);
365
+ temp = tcg_constant_tl(0);
366
tcg_gen_movcond_tl(TCG_COND_NE, cpu_gpr_d[r1], cpu_gpr_d[15], temp,
367
cpu_gpr_d[r2], cpu_gpr_d[r1]);
368
break;
369
case OPC1_16_SRR_CMOVN:
370
- temp = tcg_const_tl(0);
371
+ temp = tcg_constant_tl(0);
372
tcg_gen_movcond_tl(TCG_COND_EQ, cpu_gpr_d[r1], cpu_gpr_d[15], temp,
373
cpu_gpr_d[r2], cpu_gpr_d[r1]);
374
break;
375
@@ -XXX,XX +XXX,XX @@ static void decode_abs_ldw(DisasContext *ctx)
376
address = MASK_OP_ABS_OFF18(ctx->opcode);
377
op2 = MASK_OP_ABS_OP2(ctx->opcode);
378
379
- temp = tcg_const_i32(EA_ABS_FORMAT(address));
380
+ temp = tcg_constant_i32(EA_ABS_FORMAT(address));
381
382
switch (op2) {
383
case OPC2_32_ABS_LD_A:
384
@@ -XXX,XX +XXX,XX @@ static void decode_abs_ldb(DisasContext *ctx)
385
address = MASK_OP_ABS_OFF18(ctx->opcode);
386
op2 = MASK_OP_ABS_OP2(ctx->opcode);
387
388
- temp = tcg_const_i32(EA_ABS_FORMAT(address));
389
+ temp = tcg_constant_i32(EA_ABS_FORMAT(address));
390
391
switch (op2) {
392
case OPC2_32_ABS_LD_B:
393
@@ -XXX,XX +XXX,XX @@ static void decode_abs_ldst_swap(DisasContext *ctx)
394
address = MASK_OP_ABS_OFF18(ctx->opcode);
395
op2 = MASK_OP_ABS_OP2(ctx->opcode);
396
397
- temp = tcg_const_i32(EA_ABS_FORMAT(address));
398
+ temp = tcg_constant_i32(EA_ABS_FORMAT(address));
399
400
switch (op2) {
401
case OPC2_32_ABS_LDMST:
402
@@ -XXX,XX +XXX,XX @@ static void decode_abs_store(DisasContext *ctx)
403
address = MASK_OP_ABS_OFF18(ctx->opcode);
404
op2 = MASK_OP_ABS_OP2(ctx->opcode);
405
406
- temp = tcg_const_i32(EA_ABS_FORMAT(address));
407
+ temp = tcg_constant_i32(EA_ABS_FORMAT(address));
408
409
switch (op2) {
410
case OPC2_32_ABS_ST_A:
411
@@ -XXX,XX +XXX,XX @@ static void decode_abs_storeb_h(DisasContext *ctx)
412
address = MASK_OP_ABS_OFF18(ctx->opcode);
413
op2 = MASK_OP_ABS_OP2(ctx->opcode);
414
415
- temp = tcg_const_i32(EA_ABS_FORMAT(address));
416
+ temp = tcg_constant_i32(EA_ABS_FORMAT(address));
417
418
switch (op2) {
419
case OPC2_32_ABS_ST_B:
420
@@ -XXX,XX +XXX,XX @@ static void decode_rcpw_insert(DisasContext *ctx)
421
case OPC2_32_RCPW_INSERT:
422
/* if pos + width > 32 undefined result */
423
if (pos + width <= 32) {
424
- temp = tcg_const_i32(const4);
425
+ temp = tcg_constant_i32(const4);
426
tcg_gen_deposit_tl(cpu_gpr_d[r2], cpu_gpr_d[r1], temp, pos, width);
427
}
428
break;
429
@@ -XXX,XX +XXX,XX @@ static void decode_rcr_cond_select(DisasContext *ctx)
430
cpu_gpr_d[r3]);
431
break;
432
case OPC2_32_RCR_SEL:
433
- temp = tcg_const_i32(0);
434
- temp2 = tcg_const_i32(const9);
435
+ temp = tcg_constant_i32(0);
436
+ temp2 = tcg_constant_i32(const9);
437
tcg_gen_movcond_tl(TCG_COND_NE, cpu_gpr_d[r4], cpu_gpr_d[r3], temp,
438
cpu_gpr_d[r1], temp2);
439
break;
440
case OPC2_32_RCR_SELN:
441
- temp = tcg_const_i32(0);
442
- temp2 = tcg_const_i32(const9);
443
+ temp = tcg_constant_i32(0);
444
+ temp2 = tcg_constant_i32(const9);
445
tcg_gen_movcond_tl(TCG_COND_EQ, cpu_gpr_d[r4], cpu_gpr_d[r3], temp,
446
cpu_gpr_d[r1], temp2);
447
break;
448
@@ -XXX,XX +XXX,XX @@ static void decode_rr1_mul(DisasContext *ctx)
449
r1 = MASK_OP_RR1_S1(ctx->opcode);
450
r2 = MASK_OP_RR1_S2(ctx->opcode);
451
r3 = MASK_OP_RR1_D(ctx->opcode);
452
- n = tcg_const_i32(MASK_OP_RR1_N(ctx->opcode));
453
+ n = tcg_constant_i32(MASK_OP_RR1_N(ctx->opcode));
454
op2 = MASK_OP_RR1_OP2(ctx->opcode);
455
456
switch (op2) {
457
@@ -XXX,XX +XXX,XX @@ static void decode_rrr_cond_select(DisasContext *ctx)
458
cpu_gpr_d[r3]);
459
break;
460
case OPC2_32_RRR_SEL:
461
- temp = tcg_const_i32(0);
462
+ temp = tcg_constant_i32(0);
463
tcg_gen_movcond_tl(TCG_COND_NE, cpu_gpr_d[r4], cpu_gpr_d[r3], temp,
464
cpu_gpr_d[r1], cpu_gpr_d[r2]);
465
break;
466
case OPC2_32_RRR_SELN:
467
- temp = tcg_const_i32(0);
468
+ temp = tcg_constant_i32(0);
469
tcg_gen_movcond_tl(TCG_COND_EQ, cpu_gpr_d[r4], cpu_gpr_d[r3], temp,
470
cpu_gpr_d[r1], cpu_gpr_d[r2]);
471
break;
472
@@ -XXX,XX +XXX,XX @@ static void decode_32Bit_opc(DisasContext *ctx)
473
case OPC1_32_ABS_STOREQ:
474
address = MASK_OP_ABS_OFF18(ctx->opcode);
475
r1 = MASK_OP_ABS_S1D(ctx->opcode);
476
- temp = tcg_const_i32(EA_ABS_FORMAT(address));
477
+ temp = tcg_constant_i32(EA_ABS_FORMAT(address));
478
temp2 = tcg_temp_new();
479
480
tcg_gen_shri_tl(temp2, cpu_gpr_d[r1], 16);
481
@@ -XXX,XX +XXX,XX @@ static void decode_32Bit_opc(DisasContext *ctx)
482
case OPC1_32_ABS_LD_Q:
483
address = MASK_OP_ABS_OFF18(ctx->opcode);
484
r1 = MASK_OP_ABS_S1D(ctx->opcode);
485
- temp = tcg_const_i32(EA_ABS_FORMAT(address));
486
+ temp = tcg_constant_i32(EA_ABS_FORMAT(address));
487
488
tcg_gen_qemu_ld_tl(cpu_gpr_d[r1], temp, ctx->mem_idx, MO_LEUW);
489
tcg_gen_shli_tl(cpu_gpr_d[r1], cpu_gpr_d[r1], 16);
490
@@ -XXX,XX +XXX,XX @@ static void decode_32Bit_opc(DisasContext *ctx)
491
b = MASK_OP_ABSB_B(ctx->opcode);
492
bpos = MASK_OP_ABSB_BPOS(ctx->opcode);
493
494
- temp = tcg_const_i32(EA_ABS_FORMAT(address));
495
+ temp = tcg_constant_i32(EA_ABS_FORMAT(address));
496
temp2 = tcg_temp_new();
497
498
tcg_gen_qemu_ld_tl(temp2, temp, ctx->mem_idx, MO_UB);
499
@@ -XXX,XX +XXX,XX @@ static void decode_32Bit_opc(DisasContext *ctx)
500
r2 = MASK_OP_RCRR_S3(ctx->opcode);
501
r3 = MASK_OP_RCRR_D(ctx->opcode);
502
const16 = MASK_OP_RCRR_CONST4(ctx->opcode);
503
- temp = tcg_const_i32(const16);
504
+ temp = tcg_constant_i32(const16);
505
temp2 = tcg_temp_new(); /* width*/
506
temp3 = tcg_temp_new(); /* pos */
49
507
50
--
508
--
51
2.34.1
509
2.34.1
52
510
53
511
diff view generated by jsdifflib
1
From: Anton Johansson <anjo@rev.ng>
1
These three instances got missed in previous conversion.
2
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>
3
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>
4
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
13
---
5
---
14
accel/tcg/cputlb.c | 348 ++++++++++++++++++++++-----------------------
6
tcg/tcg-op.c | 12 +++---------
15
1 file changed, 171 insertions(+), 177 deletions(-)
7
1 file changed, 3 insertions(+), 9 deletions(-)
16
8
17
diff --git a/accel/tcg/cputlb.c b/accel/tcg/cputlb.c
9
diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c
18
index XXXXXXX..XXXXXXX 100644
10
index XXXXXXX..XXXXXXX 100644
19
--- a/accel/tcg/cputlb.c
11
--- a/tcg/tcg-op.c
20
+++ b/accel/tcg/cputlb.c
12
+++ b/tcg/tcg-op.c
21
@@ -XXX,XX +XXX,XX @@ static inline void cpu_unaligned_access(CPUState *cpu, vaddr addr,
13
@@ -XXX,XX +XXX,XX @@ void tcg_gen_muli_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2)
22
}
14
} else if (is_power_of_2(arg2)) {
23
15
tcg_gen_shli_i64(ret, arg1, ctz64(arg2));
24
static MemoryRegionSection *
16
} else {
25
-io_prepare(hwaddr *out_offset, CPUArchState *env, hwaddr xlat,
17
- TCGv_i64 t0 = tcg_const_i64(arg2);
26
+io_prepare(hwaddr *out_offset, CPUState *cpu, hwaddr xlat,
18
- tcg_gen_mul_i64(ret, arg1, t0);
27
MemTxAttrs attrs, vaddr addr, uintptr_t retaddr)
19
- tcg_temp_free_i64(t0);
28
{
20
+ tcg_gen_mul_i64(ret, arg1, tcg_constant_i64(arg2));
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
}
21
}
61
}
22
}
62
23
63
@@ -XXX,XX +XXX,XX @@ typedef struct MMULookupLocals {
24
@@ -XXX,XX +XXX,XX @@ void tcg_gen_clzi_i64(TCGv_i64 ret, TCGv_i64 arg1, uint64_t arg2)
64
25
tcg_gen_movi_i32(TCGV_HIGH(ret), 0);
65
/**
26
tcg_temp_free_i32(t);
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 {
27
} else {
378
return *(uint8_t *)p->haddr;
28
- TCGv_i64 t0 = tcg_const_i64(arg2);
29
- tcg_gen_clz_i64(ret, arg1, t0);
30
- tcg_temp_free_i64(t0);
31
+ tcg_gen_clz_i64(ret, arg1, tcg_constant_i64(arg2));
379
}
32
}
380
}
33
}
381
34
382
-static uint16_t do_ld_2(CPUArchState *env, MMULookupPageData *p, int mmu_idx,
35
@@ -XXX,XX +XXX,XX @@ void tcg_gen_ctzi_i64(TCGv_i64 ret, TCGv_i64 arg1, uint64_t arg2)
383
+static uint16_t do_ld_2(CPUState *cpu, MMULookupPageData *p, int mmu_idx,
36
tcg_gen_ctpop_i64(ret, t);
384
MMUAccessType type, MemOp memop, uintptr_t ra)
37
tcg_temp_free_i64(t);
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 {
38
} else {
395
/* Perform the load host endian, then swap if necessary. */
39
- TCGv_i64 t0 = tcg_const_i64(arg2);
396
- ret = load_atom_2(env, ra, p->haddr, memop);
40
- tcg_gen_ctz_i64(ret, arg1, t0);
397
+ ret = load_atom_2(cpu_env(cpu), ra, p->haddr, memop);
41
- tcg_temp_free_i64(t0);
398
if (memop & MO_BSWAP) {
42
+ tcg_gen_ctz_i64(ret, arg1, tcg_constant_i64(arg2));
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
}
43
}
815
}
44
}
816
45
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
--
46
--
1172
2.34.1
47
2.34.1
1173
48
1174
49
diff view generated by jsdifflib
1
Now that CPUNegativeOffsetState is part of CPUState,
1
Initialize rmode to -1 instead of keeping two variables.
2
we can reference it directly.
2
This is already used elsewhere in translate-a64.c.
3
3
4
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
4
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
5
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
5
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6
---
6
---
7
include/exec/cpu-all.h | 11 -----------
7
target/arm/tcg/translate-a64.c | 34 ++++++----------------------------
8
include/exec/exec-all.h | 2 +-
8
1 file changed, 6 insertions(+), 28 deletions(-)
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
9
16
diff --git a/include/exec/cpu-all.h b/include/exec/cpu-all.h
10
diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c
17
index XXXXXXX..XXXXXXX 100644
11
index XXXXXXX..XXXXXXX 100644
18
--- a/include/exec/cpu-all.h
12
--- a/target/arm/tcg/translate-a64.c
19
+++ b/include/exec/cpu-all.h
13
+++ b/target/arm/tcg/translate-a64.c
20
@@ -XXX,XX +XXX,XX @@ static inline CPUNegativeOffsetState *env_neg(CPUArchState *env)
14
@@ -XXX,XX +XXX,XX @@ static void disas_simd_two_reg_misc(DisasContext *s, uint32_t insn)
21
return &env_cpu(env)->neg;
15
int rn = extract32(insn, 5, 5);
22
}
16
int rd = extract32(insn, 0, 5);
23
17
bool need_fpstatus = false;
24
-/**
18
- bool need_rmode = false;
25
- * cpu_neg(cpu)
19
int rmode = -1;
26
- * @cpu: The generic CPUState
20
TCGv_i32 tcg_rmode;
27
- *
21
TCGv_ptr tcg_fpstatus;
28
- * Return the CPUNegativeOffsetState associated with the cpu.
22
@@ -XXX,XX +XXX,XX @@ static void disas_simd_two_reg_misc(DisasContext *s, uint32_t insn)
29
- */
23
case 0x7a: /* FCVTPU */
30
-static inline CPUNegativeOffsetState *cpu_neg(CPUState *cpu)
24
case 0x7b: /* FCVTZU */
31
-{
25
need_fpstatus = true;
32
- return &cpu->neg;
26
- need_rmode = true;
33
-}
27
rmode = extract32(opcode, 5, 1) | (extract32(opcode, 0, 1) << 1);
34
-
28
if (size == 3 && !is_q) {
35
/**
29
unallocated_encoding(s);
36
* env_tlb(env)
30
@@ -XXX,XX +XXX,XX @@ static void disas_simd_two_reg_misc(DisasContext *s, uint32_t insn)
37
* @env: The architecture environment
31
case 0x5c: /* FCVTAU */
38
diff --git a/include/exec/exec-all.h b/include/exec/exec-all.h
32
case 0x1c: /* FCVTAS */
39
index XXXXXXX..XXXXXXX 100644
33
need_fpstatus = true;
40
--- a/include/exec/exec-all.h
34
- need_rmode = true;
41
+++ b/include/exec/exec-all.h
35
rmode = FPROUNDING_TIEAWAY;
42
@@ -XXX,XX +XXX,XX @@ G_NORETURN void cpu_loop_exit_atomic(CPUState *cpu, uintptr_t pc);
36
if (size == 3 && !is_q) {
43
*/
37
unallocated_encoding(s);
44
static inline bool cpu_loop_exit_requested(CPUState *cpu)
38
@@ -XXX,XX +XXX,XX @@ static void disas_simd_two_reg_misc(DisasContext *s, uint32_t insn)
45
{
39
case 0x19: /* FRINTM */
46
- return (int32_t)qatomic_read(&cpu_neg(cpu)->icount_decr.u32) < 0;
40
case 0x38: /* FRINTP */
47
+ return (int32_t)qatomic_read(&cpu->neg.icount_decr.u32) < 0;
41
case 0x39: /* FRINTZ */
48
}
42
- need_rmode = true;
49
43
rmode = extract32(opcode, 5, 1) | (extract32(opcode, 0, 1) << 1);
50
#if !defined(CONFIG_USER_ONLY) && defined(CONFIG_TCG)
44
/* fall through */
51
diff --git a/accel/tcg/cpu-exec.c b/accel/tcg/cpu-exec.c
45
case 0x59: /* FRINTX */
52
index XXXXXXX..XXXXXXX 100644
46
@@ -XXX,XX +XXX,XX @@ static void disas_simd_two_reg_misc(DisasContext *s, uint32_t insn)
53
--- a/accel/tcg/cpu-exec.c
47
}
54
+++ b/accel/tcg/cpu-exec.c
48
break;
55
@@ -XXX,XX +XXX,XX @@ static void align_clocks(SyncClocks *sc, CPUState *cpu)
49
case 0x58: /* FRINTA */
50
- need_rmode = true;
51
rmode = FPROUNDING_TIEAWAY;
52
need_fpstatus = true;
53
if (size == 3 && !is_q) {
54
@@ -XXX,XX +XXX,XX @@ static void disas_simd_two_reg_misc(DisasContext *s, uint32_t insn)
55
break;
56
case 0x1e: /* FRINT32Z */
57
case 0x1f: /* FRINT64Z */
58
- need_rmode = true;
59
rmode = FPROUNDING_ZERO;
60
/* fall through */
61
case 0x5e: /* FRINT32X */
62
@@ -XXX,XX +XXX,XX @@ static void disas_simd_two_reg_misc(DisasContext *s, uint32_t insn)
56
return;
63
return;
57
}
64
}
58
65
59
- cpu_icount = cpu->icount_extra + cpu_neg(cpu)->icount_decr.u16.low;
66
- if (need_fpstatus || need_rmode) {
60
+ cpu_icount = cpu->icount_extra + cpu->neg.icount_decr.u16.low;
67
+ if (need_fpstatus || rmode >= 0) {
61
sc->diff_clk += icount_to_ns(sc->last_cpu_icount - cpu_icount);
68
tcg_fpstatus = fpstatus_ptr(FPST_FPCR);
62
sc->last_cpu_icount = cpu_icount;
69
} else {
63
70
tcg_fpstatus = NULL;
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
}
71
}
73
@@ -XXX,XX +XXX,XX @@ static inline bool cpu_handle_exception(CPUState *cpu, int *ret)
72
- if (need_rmode) {
74
if (cpu->exception_index < 0) {
73
+ if (rmode >= 0) {
75
#ifndef CONFIG_USER_ONLY
74
tcg_rmode = tcg_const_i32(arm_rmode_to_sf(rmode));
76
if (replay_has_exception()
75
gen_helper_set_rmode(tcg_rmode, tcg_rmode, tcg_fpstatus);
77
- && cpu_neg(cpu)->icount_decr.u16.low + cpu->icount_extra == 0) {
76
} else {
78
+ && cpu->neg.icount_decr.u16.low + cpu->icount_extra == 0) {
77
@@ -XXX,XX +XXX,XX @@ static void disas_simd_two_reg_misc(DisasContext *s, uint32_t insn)
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
}
78
}
102
79
clear_vec_high(s, is_q, rd);
103
*last_tb = NULL;
80
104
- insns_left = qatomic_read(&cpu_neg(cpu)->icount_decr.u32);
81
- if (need_rmode) {
105
+ insns_left = qatomic_read(&cpu->neg.icount_decr.u32);
82
+ if (tcg_rmode) {
106
if (insns_left < 0) {
83
gen_helper_set_rmode(tcg_rmode, tcg_rmode, tcg_fpstatus);
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
}
84
}
159
}
85
}
160
86
@@ -XXX,XX +XXX,XX @@ static void disas_simd_two_reg_misc_fp16(DisasContext *s, uint32_t insn)
161
diff --git a/accel/tcg/translate-all.c b/accel/tcg/translate-all.c
87
int pass;
162
index XXXXXXX..XXXXXXX 100644
88
TCGv_i32 tcg_rmode = NULL;
163
--- a/accel/tcg/translate-all.c
89
TCGv_ptr tcg_fpstatus = NULL;
164
+++ b/accel/tcg/translate-all.c
90
- bool need_rmode = false;
165
@@ -XXX,XX +XXX,XX @@ void cpu_restore_state_from_tb(CPUState *cpu, TranslationBlock *tb,
91
bool need_fpst = true;
166
* Reset the cycle counter to the start of the block and
92
- int rmode;
167
* shift if to the number of actually executed instructions.
93
+ int rmode = -1;
168
*/
94
169
- cpu_neg(cpu)->icount_decr.u16.low += insns_left;
95
if (!dc_isar_feature(aa64_fp16, s)) {
170
+ cpu->neg.icount_decr.u16.low += insns_left;
96
unallocated_encoding(s);
97
@@ -XXX,XX +XXX,XX @@ static void disas_simd_two_reg_misc_fp16(DisasContext *s, uint32_t insn)
98
case 0x3f: /* FRECPX */
99
break;
100
case 0x18: /* FRINTN */
101
- need_rmode = true;
102
only_in_vector = true;
103
rmode = FPROUNDING_TIEEVEN;
104
break;
105
case 0x19: /* FRINTM */
106
- need_rmode = true;
107
only_in_vector = true;
108
rmode = FPROUNDING_NEGINF;
109
break;
110
case 0x38: /* FRINTP */
111
- need_rmode = true;
112
only_in_vector = true;
113
rmode = FPROUNDING_POSINF;
114
break;
115
case 0x39: /* FRINTZ */
116
- need_rmode = true;
117
only_in_vector = true;
118
rmode = FPROUNDING_ZERO;
119
break;
120
case 0x58: /* FRINTA */
121
- need_rmode = true;
122
only_in_vector = true;
123
rmode = FPROUNDING_TIEAWAY;
124
break;
125
@@ -XXX,XX +XXX,XX @@ static void disas_simd_two_reg_misc_fp16(DisasContext *s, uint32_t insn)
126
/* current rounding mode */
127
break;
128
case 0x1a: /* FCVTNS */
129
- need_rmode = true;
130
rmode = FPROUNDING_TIEEVEN;
131
break;
132
case 0x1b: /* FCVTMS */
133
- need_rmode = true;
134
rmode = FPROUNDING_NEGINF;
135
break;
136
case 0x1c: /* FCVTAS */
137
- need_rmode = true;
138
rmode = FPROUNDING_TIEAWAY;
139
break;
140
case 0x3a: /* FCVTPS */
141
- need_rmode = true;
142
rmode = FPROUNDING_POSINF;
143
break;
144
case 0x3b: /* FCVTZS */
145
- need_rmode = true;
146
rmode = FPROUNDING_ZERO;
147
break;
148
case 0x5a: /* FCVTNU */
149
- need_rmode = true;
150
rmode = FPROUNDING_TIEEVEN;
151
break;
152
case 0x5b: /* FCVTMU */
153
- need_rmode = true;
154
rmode = FPROUNDING_NEGINF;
155
break;
156
case 0x5c: /* FCVTAU */
157
- need_rmode = true;
158
rmode = FPROUNDING_TIEAWAY;
159
break;
160
case 0x7a: /* FCVTPU */
161
- need_rmode = true;
162
rmode = FPROUNDING_POSINF;
163
break;
164
case 0x7b: /* FCVTZU */
165
- need_rmode = true;
166
rmode = FPROUNDING_ZERO;
167
break;
168
case 0x2f: /* FABS */
169
@@ -XXX,XX +XXX,XX @@ static void disas_simd_two_reg_misc_fp16(DisasContext *s, uint32_t insn)
170
return;
171
}
171
}
172
172
173
cpu->cc->tcg_ops->restore_state_to_opc(cpu, tb, data);
173
- if (need_rmode || need_fpst) {
174
@@ -XXX,XX +XXX,XX @@ void cpu_io_recompile(CPUState *cpu, uintptr_t retaddr)
174
+ if (rmode >= 0 || need_fpst) {
175
cc = CPU_GET_CLASS(cpu);
175
tcg_fpstatus = fpstatus_ptr(FPST_FPCR_F16);
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
}
176
}
182
177
183
@@ -XXX,XX +XXX,XX @@ void cpu_interrupt(CPUState *cpu, int mask)
178
- if (need_rmode) {
184
{
179
+ if (rmode >= 0) {
185
g_assert(qemu_mutex_iothread_locked());
180
tcg_rmode = tcg_const_i32(arm_rmode_to_sf(rmode));
186
cpu->interrupt_request |= mask;
181
gen_helper_set_rmode(tcg_rmode, tcg_rmode, tcg_fpstatus);
187
- qatomic_set(&cpu_neg(cpu)->icount_decr.u16.high, -1);
182
}
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
--
183
--
206
2.34.1
184
2.34.1
207
185
208
186
diff view generated by jsdifflib
1
From: Philippe Mathieu-Daudé <philmd@linaro.org>
1
While this enumerator has been present since the first commit,
2
it isn't ever used. The first actual use of round-to-odd came
3
with SVE, which currently uses float_round_to_odd instead of
4
the arm-specific enumerator.
2
5
3
Commit 18a536f1f8 ("accel/tcg: Always require can_do_io") fixed
6
Amusingly, the comment about unhandled TIEAWAY has been
4
the GitLab issue #1884: we can now re-enable those tests.
7
out of date since the initial commit of translate-a64.c.
5
8
6
This reverts commit f959c3d87ccfa585b105de6964a6261e368cc1da.
9
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
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>
10
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
12
---
11
---
13
tests/avocado/boot_linux_console.py | 7 -------
12
target/arm/vfp_helper.c | 6 ++----
14
tests/avocado/machine_mips_malta.py | 6 ------
13
1 file changed, 2 insertions(+), 4 deletions(-)
15
tests/avocado/replay_kernel.py | 7 -------
16
tests/avocado/tuxrun_baselines.py | 4 ----
17
4 files changed, 24 deletions(-)
18
14
19
diff --git a/tests/avocado/boot_linux_console.py b/tests/avocado/boot_linux_console.py
15
diff --git a/target/arm/vfp_helper.c b/target/arm/vfp_helper.c
20
index XXXXXXX..XXXXXXX 100644
16
index XXXXXXX..XXXXXXX 100644
21
--- a/tests/avocado/boot_linux_console.py
17
--- a/target/arm/vfp_helper.c
22
+++ b/tests/avocado/boot_linux_console.py
18
+++ b/target/arm/vfp_helper.c
23
@@ -XXX,XX +XXX,XX @@ def test_x86_64_pc(self):
19
@@ -XXX,XX +XXX,XX @@ int arm_rmode_to_sf(int rmode)
24
console_pattern = 'Kernel command line: %s' % kernel_command_line
20
rmode = float_round_ties_away;
25
self.wait_for_console_pattern(console_pattern)
21
break;
26
22
case FPROUNDING_ODD:
27
- @skip('https://gitlab.com/qemu-project/qemu/-/issues/1884')
23
- /* FIXME: add support for TIEAWAY and ODD */
28
def test_mips_malta(self):
24
- qemu_log_mask(LOG_UNIMP, "arm: unimplemented rounding mode: %d\n",
29
"""
25
- rmode);
30
:avocado: tags=arch:mips
26
- /* fall through for now */
31
@@ -XXX,XX +XXX,XX @@ def test_mips_malta(self):
27
+ rmode = float_round_to_odd;
32
console_pattern = 'Kernel command line: %s' % kernel_command_line
28
+ break;
33
self.wait_for_console_pattern(console_pattern)
29
case FPROUNDING_TIEEVEN:
34
30
default:
35
- @skip('https://gitlab.com/qemu-project/qemu/-/issues/1884')
31
rmode = float_round_nearest_even;
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
--
32
--
228
2.34.1
33
2.34.1
229
34
230
35
diff view generated by jsdifflib
1
From: Philippe Mathieu-Daudé <philmd@linaro.org>
1
Use proper enumeration types for input and output.
2
Use a const array to perform the mapping, with an
3
assert that the input is valid.
2
4
3
Remove the unused "exec/exec-all.h" header. There is
5
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
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>
6
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
13
---
7
---
14
MAINTAINERS | 1 -
8
target/arm/internals.h | 12 +++++++++---
15
softmmu/icount.c => accel/tcg/icount-common.c | 3 +--
9
target/arm/tcg/translate-mve.c | 2 +-
16
accel/tcg/meson.build | 1 +
10
target/arm/vfp_helper.c | 33 ++++++++-------------------------
17
softmmu/meson.build | 4 ----
11
3 files changed, 18 insertions(+), 29 deletions(-)
18
4 files changed, 2 insertions(+), 7 deletions(-)
19
rename softmmu/icount.c => accel/tcg/icount-common.c (99%)
20
12
21
diff --git a/MAINTAINERS b/MAINTAINERS
13
diff --git a/target/arm/internals.h b/target/arm/internals.h
22
index XXXXXXX..XXXXXXX 100644
14
index XXXXXXX..XXXXXXX 100644
23
--- a/MAINTAINERS
15
--- a/target/arm/internals.h
24
+++ b/MAINTAINERS
16
+++ b/target/arm/internals.h
25
@@ -XXX,XX +XXX,XX @@ F: softmmu/main.c
17
@@ -XXX,XX +XXX,XX @@ void arm_restore_state_to_opc(CPUState *cs,
26
F: softmmu/cpus.c
18
void arm_cpu_synchronize_from_tb(CPUState *cs, const TranslationBlock *tb);
27
F: softmmu/cpu-throttle.c
19
#endif /* CONFIG_TCG */
28
F: softmmu/cpu-timers.c
20
29
-F: softmmu/icount.c
21
-enum arm_fprounding {
30
F: softmmu/runstate*
22
+typedef enum ARMFPRounding {
31
F: qapi/run-state.json
23
FPROUNDING_TIEEVEN,
32
24
FPROUNDING_POSINF,
33
diff --git a/softmmu/icount.c b/accel/tcg/icount-common.c
25
FPROUNDING_NEGINF,
34
similarity index 99%
26
FPROUNDING_ZERO,
35
rename from softmmu/icount.c
27
FPROUNDING_TIEAWAY,
36
rename to accel/tcg/icount-common.c
28
FPROUNDING_ODD
29
-};
30
+} ARMFPRounding;
31
32
-int arm_rmode_to_sf(int rmode);
33
+extern const FloatRoundMode arm_rmode_to_sf_map[6];
34
+
35
+static inline FloatRoundMode arm_rmode_to_sf(ARMFPRounding rmode)
36
+{
37
+ assert((unsigned)rmode < ARRAY_SIZE(arm_rmode_to_sf_map));
38
+ return arm_rmode_to_sf_map[rmode];
39
+}
40
41
static inline void aarch64_save_sp(CPUARMState *env, int el)
42
{
43
diff --git a/target/arm/tcg/translate-mve.c b/target/arm/tcg/translate-mve.c
37
index XXXXXXX..XXXXXXX 100644
44
index XXXXXXX..XXXXXXX 100644
38
--- a/softmmu/icount.c
45
--- a/target/arm/tcg/translate-mve.c
39
+++ b/accel/tcg/icount-common.c
46
+++ b/target/arm/tcg/translate-mve.c
40
@@ -XXX,XX +XXX,XX @@
47
@@ -XXX,XX +XXX,XX @@ DO_VCVT(VCVT_FS, vcvt_hs, vcvt_fs)
41
#include "migration/vmstate.h"
48
DO_VCVT(VCVT_FU, vcvt_hu, vcvt_fu)
42
#include "qapi/error.h"
49
43
#include "qemu/error-report.h"
50
static bool do_vcvt_rmode(DisasContext *s, arg_1op *a,
44
-#include "exec/exec-all.h"
51
- enum arm_fprounding rmode, bool u)
45
#include "sysemu/cpus.h"
52
+ ARMFPRounding rmode, bool u)
46
#include "sysemu/qtest.h"
53
{
47
#include "qemu/main-loop.h"
54
/*
48
@@ -XXX,XX +XXX,XX @@
55
* Handle VCVT fp to int with specified rounding mode.
49
#include "hw/core/cpu.h"
56
diff --git a/target/arm/vfp_helper.c b/target/arm/vfp_helper.c
50
#include "sysemu/cpu-timers.h"
57
index XXXXXXX..XXXXXXX 100644
51
#include "sysemu/cpu-throttle.h"
58
--- a/target/arm/vfp_helper.c
52
-#include "timers-state.h"
59
+++ b/target/arm/vfp_helper.c
53
+#include "softmmu/timers-state.h"
60
@@ -XXX,XX +XXX,XX @@ float64 HELPER(rintd)(float64 x, void *fp_status)
61
}
62
63
/* Convert ARM rounding mode to softfloat */
64
-int arm_rmode_to_sf(int rmode)
65
-{
66
- switch (rmode) {
67
- case FPROUNDING_TIEAWAY:
68
- rmode = float_round_ties_away;
69
- break;
70
- case FPROUNDING_ODD:
71
- rmode = float_round_to_odd;
72
- break;
73
- case FPROUNDING_TIEEVEN:
74
- default:
75
- rmode = float_round_nearest_even;
76
- break;
77
- case FPROUNDING_POSINF:
78
- rmode = float_round_up;
79
- break;
80
- case FPROUNDING_NEGINF:
81
- rmode = float_round_down;
82
- break;
83
- case FPROUNDING_ZERO:
84
- rmode = float_round_to_zero;
85
- break;
86
- }
87
- return rmode;
88
-}
89
+const FloatRoundMode arm_rmode_to_sf_map[] = {
90
+ [FPROUNDING_TIEEVEN] = float_round_nearest_even,
91
+ [FPROUNDING_POSINF] = float_round_up,
92
+ [FPROUNDING_NEGINF] = float_round_down,
93
+ [FPROUNDING_ZERO] = float_round_to_zero,
94
+ [FPROUNDING_TIEAWAY] = float_round_ties_away,
95
+ [FPROUNDING_ODD] = float_round_to_odd,
96
+};
54
97
55
/*
98
/*
56
* ICOUNT: Instruction Counter
99
* Implement float64 to int32_t conversion without saturation;
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
--
100
--
85
2.34.1
101
2.34.1
86
102
87
103
diff view generated by jsdifflib
1
From: Philippe Mathieu-Daudé <philmd@linaro.org>
1
In preparation for extracting new helpers, ensure that
2
the rounding mode is represented as ARMFPRounding and
3
not FloatRoundMode.
2
4
3
cpu_in_serial_context() is not target specific,
5
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
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>
14
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
15
---
7
---
16
accel/tcg/internal-common.h | 11 +++++++++++
8
target/arm/tcg/translate-a64.c | 16 ++++++++--------
17
accel/tcg/internal-target.h | 9 ---------
9
target/arm/tcg/translate-sve.c | 18 +++++++++---------
18
accel/tcg/cpu-exec-common.c | 3 +--
10
target/arm/tcg/translate-vfp.c | 6 +++---
19
accel/tcg/cputlb.c | 1 +
11
3 files changed, 20 insertions(+), 20 deletions(-)
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(-)
24
12
25
diff --git a/accel/tcg/internal-common.h b/accel/tcg/internal-common.h
13
diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c
26
index XXXXXXX..XXXXXXX 100644
14
index XXXXXXX..XXXXXXX 100644
27
--- a/accel/tcg/internal-common.h
15
--- a/target/arm/tcg/translate-a64.c
28
+++ b/accel/tcg/internal-common.h
16
+++ b/target/arm/tcg/translate-a64.c
29
@@ -XXX,XX +XXX,XX @@
17
@@ -XXX,XX +XXX,XX @@ static void handle_fp_1src_single(DisasContext *s, int opcode, int rd, int rn)
30
#ifndef ACCEL_TCG_INTERNAL_COMMON_H
18
case 0xa: /* FRINTM */
31
#define ACCEL_TCG_INTERNAL_COMMON_H
19
case 0xb: /* FRINTZ */
32
20
case 0xc: /* FRINTA */
33
+#include "exec/translation-block.h"
21
- rmode = arm_rmode_to_sf(opcode & 7);
34
+
22
+ rmode = opcode & 7;
35
extern int64_t max_delay;
23
gen_fpst = gen_helper_rints;
36
extern int64_t max_advance;
24
break;
37
25
case 0xe: /* FRINTX */
38
void dump_exec_info(GString *buf);
26
@@ -XXX,XX +XXX,XX @@ static void handle_fp_1src_single(DisasContext *s, int opcode, int rd, int rn)
39
27
gen_fpst = gen_helper_rints;
40
+/*
28
break;
41
+ * Return true if CS is not running in parallel with other cpus, either
29
case 0x10: /* FRINT32Z */
42
+ * because there are no other cpus or we are within an exclusive context.
30
- rmode = float_round_to_zero;
43
+ */
31
+ rmode = FPROUNDING_ZERO;
44
+static inline bool cpu_in_serial_context(CPUState *cs)
32
gen_fpst = gen_helper_frint32_s;
45
+{
33
break;
46
+ return !(cs->tcg_cflags & CF_PARALLEL) || cpu_in_exclusive_context(cs);
34
case 0x11: /* FRINT32X */
47
+}
35
gen_fpst = gen_helper_frint32_s;
48
+
36
break;
49
#endif
37
case 0x12: /* FRINT64Z */
50
diff --git a/accel/tcg/internal-target.h b/accel/tcg/internal-target.h
38
- rmode = float_round_to_zero;
39
+ rmode = FPROUNDING_ZERO;
40
gen_fpst = gen_helper_frint64_s;
41
break;
42
case 0x13: /* FRINT64X */
43
@@ -XXX,XX +XXX,XX @@ static void handle_fp_1src_single(DisasContext *s, int opcode, int rd, int rn)
44
45
fpst = fpstatus_ptr(FPST_FPCR);
46
if (rmode >= 0) {
47
- TCGv_i32 tcg_rmode = tcg_const_i32(rmode);
48
+ TCGv_i32 tcg_rmode = tcg_const_i32(arm_rmode_to_sf(rmode));
49
gen_helper_set_rmode(tcg_rmode, tcg_rmode, fpst);
50
gen_fpst(tcg_res, tcg_op, fpst);
51
gen_helper_set_rmode(tcg_rmode, tcg_rmode, fpst);
52
@@ -XXX,XX +XXX,XX @@ static void handle_fp_1src_double(DisasContext *s, int opcode, int rd, int rn)
53
case 0xa: /* FRINTM */
54
case 0xb: /* FRINTZ */
55
case 0xc: /* FRINTA */
56
- rmode = arm_rmode_to_sf(opcode & 7);
57
+ rmode = opcode & 7;
58
gen_fpst = gen_helper_rintd;
59
break;
60
case 0xe: /* FRINTX */
61
@@ -XXX,XX +XXX,XX @@ static void handle_fp_1src_double(DisasContext *s, int opcode, int rd, int rn)
62
gen_fpst = gen_helper_rintd;
63
break;
64
case 0x10: /* FRINT32Z */
65
- rmode = float_round_to_zero;
66
+ rmode = FPROUNDING_ZERO;
67
gen_fpst = gen_helper_frint32_d;
68
break;
69
case 0x11: /* FRINT32X */
70
gen_fpst = gen_helper_frint32_d;
71
break;
72
case 0x12: /* FRINT64Z */
73
- rmode = float_round_to_zero;
74
+ rmode = FPROUNDING_ZERO;
75
gen_fpst = gen_helper_frint64_d;
76
break;
77
case 0x13: /* FRINT64X */
78
@@ -XXX,XX +XXX,XX @@ static void handle_fp_1src_double(DisasContext *s, int opcode, int rd, int rn)
79
80
fpst = fpstatus_ptr(FPST_FPCR);
81
if (rmode >= 0) {
82
- TCGv_i32 tcg_rmode = tcg_const_i32(rmode);
83
+ TCGv_i32 tcg_rmode = tcg_const_i32(arm_rmode_to_sf(rmode));
84
gen_helper_set_rmode(tcg_rmode, tcg_rmode, fpst);
85
gen_fpst(tcg_res, tcg_op, fpst);
86
gen_helper_set_rmode(tcg_rmode, tcg_rmode, fpst);
87
diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c
51
index XXXXXXX..XXXXXXX 100644
88
index XXXXXXX..XXXXXXX 100644
52
--- a/accel/tcg/internal-target.h
89
--- a/target/arm/tcg/translate-sve.c
53
+++ b/accel/tcg/internal-target.h
90
+++ b/target/arm/tcg/translate-sve.c
54
@@ -XXX,XX +XXX,XX @@ static inline vaddr log_pc(CPUState *cpu, const TranslationBlock *tb)
91
@@ -XXX,XX +XXX,XX @@ TRANS_FEAT(FRINTX, aa64_sve, gen_gvec_fpst_arg_zpz, frintx_fns[a->esz],
92
a, 0, a->esz == MO_16 ? FPST_FPCR_F16 : FPST_FPCR);
93
94
static bool do_frint_mode(DisasContext *s, arg_rpr_esz *a,
95
- int mode, gen_helper_gvec_3_ptr *fn)
96
+ ARMFPRounding mode, gen_helper_gvec_3_ptr *fn)
97
{
98
unsigned vsz;
99
TCGv_i32 tmode;
100
@@ -XXX,XX +XXX,XX @@ static bool do_frint_mode(DisasContext *s, arg_rpr_esz *a,
55
}
101
}
102
103
vsz = vec_full_reg_size(s);
104
- tmode = tcg_const_i32(mode);
105
+ tmode = tcg_const_i32(arm_rmode_to_sf(mode));
106
status = fpstatus_ptr(a->esz == MO_16 ? FPST_FPCR_F16 : FPST_FPCR);
107
108
gen_helper_set_rmode(tmode, tmode, status);
109
@@ -XXX,XX +XXX,XX @@ static bool do_frint_mode(DisasContext *s, arg_rpr_esz *a,
56
}
110
}
57
111
58
-/*
112
TRANS_FEAT(FRINTN, aa64_sve, do_frint_mode, a,
59
- * Return true if CS is not running in parallel with other cpus, either
113
- float_round_nearest_even, frint_fns[a->esz])
60
- * because there are no other cpus or we are within an exclusive context.
114
+ FPROUNDING_TIEEVEN, frint_fns[a->esz])
61
- */
115
TRANS_FEAT(FRINTP, aa64_sve, do_frint_mode, a,
62
-static inline bool cpu_in_serial_context(CPUState *cs)
116
- float_round_up, frint_fns[a->esz])
63
-{
117
+ FPROUNDING_POSINF, frint_fns[a->esz])
64
- return !(cs->tcg_cflags & CF_PARALLEL) || cpu_in_exclusive_context(cs);
118
TRANS_FEAT(FRINTM, aa64_sve, do_frint_mode, a,
65
-}
119
- float_round_down, frint_fns[a->esz])
66
-
120
+ FPROUNDING_NEGINF, frint_fns[a->esz])
67
extern bool one_insn_per_tb;
121
TRANS_FEAT(FRINTZ, aa64_sve, do_frint_mode, a,
68
122
- float_round_to_zero, frint_fns[a->esz])
69
/**
123
+ FPROUNDING_ZERO, frint_fns[a->esz])
70
diff --git a/accel/tcg/cpu-exec-common.c b/accel/tcg/cpu-exec-common.c
124
TRANS_FEAT(FRINTA, aa64_sve, do_frint_mode, a,
125
- float_round_ties_away, frint_fns[a->esz])
126
+ FPROUNDING_TIEAWAY, frint_fns[a->esz])
127
128
static gen_helper_gvec_3_ptr * const frecpx_fns[] = {
129
NULL, gen_helper_sve_frecpx_h,
130
@@ -XXX,XX +XXX,XX @@ TRANS_FEAT(FCVTLT_sd, aa64_sve2, gen_gvec_fpst_arg_zpz,
131
gen_helper_sve2_fcvtlt_sd, a, 0, FPST_FPCR)
132
133
TRANS_FEAT(FCVTX_ds, aa64_sve2, do_frint_mode, a,
134
- float_round_to_odd, gen_helper_sve_fcvt_ds)
135
+ FPROUNDING_ODD, gen_helper_sve_fcvt_ds)
136
TRANS_FEAT(FCVTXNT_ds, aa64_sve2, do_frint_mode, a,
137
- float_round_to_odd, gen_helper_sve2_fcvtnt_ds)
138
+ FPROUNDING_ODD, gen_helper_sve2_fcvtnt_ds)
139
140
static gen_helper_gvec_3_ptr * const flogb_fns[] = {
141
NULL, gen_helper_flogb_h,
142
diff --git a/target/arm/tcg/translate-vfp.c b/target/arm/tcg/translate-vfp.c
71
index XXXXXXX..XXXXXXX 100644
143
index XXXXXXX..XXXXXXX 100644
72
--- a/accel/tcg/cpu-exec-common.c
144
--- a/target/arm/tcg/translate-vfp.c
73
+++ b/accel/tcg/cpu-exec-common.c
145
+++ b/target/arm/tcg/translate-vfp.c
74
@@ -XXX,XX +XXX,XX @@
146
@@ -XXX,XX +XXX,XX @@ static bool trans_VRINTZ_hp(DisasContext *s, arg_VRINTZ_sp *a)
75
#include "qemu/osdep.h"
147
tmp = tcg_temp_new_i32();
76
#include "sysemu/cpus.h"
148
vfp_load_reg32(tmp, a->vm);
77
#include "sysemu/tcg.h"
149
fpst = fpstatus_ptr(FPST_FPCR_F16);
78
-#include "exec/exec-all.h"
150
- tcg_rmode = tcg_const_i32(float_round_to_zero);
79
#include "qemu/plugin.h"
151
+ tcg_rmode = tcg_const_i32(arm_rmode_to_sf(FPROUNDING_ZERO));
80
-#include "internal-target.h"
152
gen_helper_set_rmode(tcg_rmode, tcg_rmode, fpst);
81
+#include "internal-common.h"
153
gen_helper_rinth(tmp, tmp, fpst);
82
154
gen_helper_set_rmode(tcg_rmode, tcg_rmode, fpst);
83
bool tcg_allowed;
155
@@ -XXX,XX +XXX,XX @@ static bool trans_VRINTZ_sp(DisasContext *s, arg_VRINTZ_sp *a)
84
156
tmp = tcg_temp_new_i32();
85
diff --git a/accel/tcg/cputlb.c b/accel/tcg/cputlb.c
157
vfp_load_reg32(tmp, a->vm);
86
index XXXXXXX..XXXXXXX 100644
158
fpst = fpstatus_ptr(FPST_FPCR);
87
--- a/accel/tcg/cputlb.c
159
- tcg_rmode = tcg_const_i32(float_round_to_zero);
88
+++ b/accel/tcg/cputlb.c
160
+ tcg_rmode = tcg_const_i32(arm_rmode_to_sf(FPROUNDING_ZERO));
89
@@ -XXX,XX +XXX,XX @@
161
gen_helper_set_rmode(tcg_rmode, tcg_rmode, fpst);
90
#include "exec/translate-all.h"
162
gen_helper_rints(tmp, tmp, fpst);
91
#include "trace.h"
163
gen_helper_set_rmode(tcg_rmode, tcg_rmode, fpst);
92
#include "tb-hash.h"
164
@@ -XXX,XX +XXX,XX @@ static bool trans_VRINTZ_dp(DisasContext *s, arg_VRINTZ_dp *a)
93
+#include "internal-common.h"
165
tmp = tcg_temp_new_i64();
94
#include "internal-target.h"
166
vfp_load_reg64(tmp, a->vm);
95
#ifdef CONFIG_PLUGIN
167
fpst = fpstatus_ptr(FPST_FPCR);
96
#include "qemu/plugin-memory.h"
168
- tcg_rmode = tcg_const_i32(float_round_to_zero);
97
diff --git a/accel/tcg/tb-maint.c b/accel/tcg/tb-maint.c
169
+ tcg_rmode = tcg_const_i32(arm_rmode_to_sf(FPROUNDING_ZERO));
98
index XXXXXXX..XXXXXXX 100644
170
gen_helper_set_rmode(tcg_rmode, tcg_rmode, fpst);
99
--- a/accel/tcg/tb-maint.c
171
gen_helper_rintd(tmp, tmp, fpst);
100
+++ b/accel/tcg/tb-maint.c
172
gen_helper_set_rmode(tcg_rmode, tcg_rmode, fpst);
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',
136
--
173
--
137
2.34.1
174
2.34.1
138
175
139
176
diff view generated by jsdifflib
1
From: Philippe Mathieu-Daudé <philmd@linaro.org>
1
Split out common subroutines for handing rounding mode
2
changes during translation. Use tcg_constant_i32 and
3
tcg_temp_new_i32 instead of tcg_const_i32.
2
4
3
This matches the target agnostic 'page-vary-common.c' counterpart.
5
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
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>
6
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
9
---
7
---
10
MAINTAINERS | 2 +-
8
target/arm/tcg/translate.h | 17 ++++++++++++
11
meson.build | 2 +-
9
target/arm/tcg/translate-a64.c | 47 ++++++++++++++--------------------
12
page-vary.c => page-vary-target.c | 0
10
target/arm/tcg/translate-sve.c | 6 ++---
13
3 files changed, 2 insertions(+), 2 deletions(-)
11
target/arm/tcg/translate-vfp.c | 26 ++++++++-----------
14
rename page-vary.c => page-vary-target.c (100%)
12
4 files changed, 48 insertions(+), 48 deletions(-)
15
13
16
diff --git a/MAINTAINERS b/MAINTAINERS
14
diff --git a/target/arm/tcg/translate.h b/target/arm/tcg/translate.h
17
index XXXXXXX..XXXXXXX 100644
15
index XXXXXXX..XXXXXXX 100644
18
--- a/MAINTAINERS
16
--- a/target/arm/tcg/translate.h
19
+++ b/MAINTAINERS
17
+++ b/target/arm/tcg/translate.h
20
@@ -XXX,XX +XXX,XX @@ F: softmmu/cpus.c
18
@@ -XXX,XX +XXX,XX @@ static inline TCGv_ptr gen_lookup_cp_reg(uint32_t key)
21
F: softmmu/watchpoint.c
19
return ret;
22
F: cpu-common.c
20
}
23
F: cpu-target.c
21
24
-F: page-vary.c
22
+/*
25
+F: page-vary-target.c
23
+ * Set and reset rounding mode around another operation.
26
F: page-vary-common.c
24
+ */
27
F: accel/tcg/
25
+static inline TCGv_i32 gen_set_rmode(ARMFPRounding rmode, TCGv_ptr fpst)
28
F: accel/stubs/tcg-stub.c
26
+{
29
diff --git a/meson.build b/meson.build
27
+ TCGv_i32 new = tcg_constant_i32(arm_rmode_to_sf(rmode));
28
+ TCGv_i32 old = tcg_temp_new_i32();
29
+
30
+ gen_helper_set_rmode(old, new, fpst);
31
+ return old;
32
+}
33
+
34
+static inline void gen_restore_rmode(TCGv_i32 old, TCGv_ptr fpst)
35
+{
36
+ gen_helper_set_rmode(old, old, fpst);
37
+}
38
+
39
/*
40
* Helpers for implementing sets of trans_* functions.
41
* Defer the implementation of NAME to FUNC, with optional extra arguments.
42
diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c
30
index XXXXXXX..XXXXXXX 100644
43
index XXXXXXX..XXXXXXX 100644
31
--- a/meson.build
44
--- a/target/arm/tcg/translate-a64.c
32
+++ b/meson.build
45
+++ b/target/arm/tcg/translate-a64.c
33
@@ -XXX,XX +XXX,XX @@ if get_option('b_lto')
46
@@ -XXX,XX +XXX,XX @@ static void handle_fp_1src_half(DisasContext *s, int opcode, int rd, int rn)
34
pagevary = declare_dependency(link_with: pagevary)
47
case 0xb: /* FRINTZ */
35
endif
48
case 0xc: /* FRINTA */
36
common_ss.add(pagevary)
49
{
37
-specific_ss.add(files('page-vary.c'))
50
- TCGv_i32 tcg_rmode = tcg_const_i32(arm_rmode_to_sf(opcode & 7));
38
+specific_ss.add(files('page-vary-target.c'))
51
+ TCGv_i32 tcg_rmode;
39
52
+
40
subdir('backends')
53
fpst = fpstatus_ptr(FPST_FPCR_F16);
41
subdir('disas')
54
-
42
diff --git a/page-vary.c b/page-vary-target.c
55
- gen_helper_set_rmode(tcg_rmode, tcg_rmode, fpst);
43
similarity index 100%
56
+ tcg_rmode = gen_set_rmode(opcode & 7, fpst);
44
rename from page-vary.c
57
gen_helper_advsimd_rinth(tcg_res, tcg_op, fpst);
45
rename to page-vary-target.c
58
-
59
- gen_helper_set_rmode(tcg_rmode, tcg_rmode, fpst);
60
+ gen_restore_rmode(tcg_rmode, fpst);
61
break;
62
}
63
case 0xe: /* FRINTX */
64
@@ -XXX,XX +XXX,XX @@ static void handle_fp_1src_single(DisasContext *s, int opcode, int rd, int rn)
65
66
fpst = fpstatus_ptr(FPST_FPCR);
67
if (rmode >= 0) {
68
- TCGv_i32 tcg_rmode = tcg_const_i32(arm_rmode_to_sf(rmode));
69
- gen_helper_set_rmode(tcg_rmode, tcg_rmode, fpst);
70
+ TCGv_i32 tcg_rmode = gen_set_rmode(rmode, fpst);
71
gen_fpst(tcg_res, tcg_op, fpst);
72
- gen_helper_set_rmode(tcg_rmode, tcg_rmode, fpst);
73
+ gen_restore_rmode(tcg_rmode, fpst);
74
} else {
75
gen_fpst(tcg_res, tcg_op, fpst);
76
}
77
@@ -XXX,XX +XXX,XX @@ static void handle_fp_1src_double(DisasContext *s, int opcode, int rd, int rn)
78
79
fpst = fpstatus_ptr(FPST_FPCR);
80
if (rmode >= 0) {
81
- TCGv_i32 tcg_rmode = tcg_const_i32(arm_rmode_to_sf(rmode));
82
- gen_helper_set_rmode(tcg_rmode, tcg_rmode, fpst);
83
+ TCGv_i32 tcg_rmode = gen_set_rmode(rmode, fpst);
84
gen_fpst(tcg_res, tcg_op, fpst);
85
- gen_helper_set_rmode(tcg_rmode, tcg_rmode, fpst);
86
+ gen_restore_rmode(tcg_rmode, fpst);
87
} else {
88
gen_fpst(tcg_res, tcg_op, fpst);
89
}
90
@@ -XXX,XX +XXX,XX @@ static void handle_fpfpcvt(DisasContext *s, int rd, int rn, int opcode,
91
rmode = FPROUNDING_TIEAWAY;
92
}
93
94
- tcg_rmode = tcg_const_i32(arm_rmode_to_sf(rmode));
95
-
96
- gen_helper_set_rmode(tcg_rmode, tcg_rmode, tcg_fpstatus);
97
+ tcg_rmode = gen_set_rmode(rmode, tcg_fpstatus);
98
99
switch (type) {
100
case 1: /* float64 */
101
@@ -XXX,XX +XXX,XX @@ static void handle_fpfpcvt(DisasContext *s, int rd, int rn, int opcode,
102
g_assert_not_reached();
103
}
104
105
- gen_helper_set_rmode(tcg_rmode, tcg_rmode, tcg_fpstatus);
106
+ gen_restore_rmode(tcg_rmode, tcg_fpstatus);
107
}
108
}
109
110
@@ -XXX,XX +XXX,XX @@ static void handle_simd_shift_fpint_conv(DisasContext *s, bool is_scalar,
111
112
assert(!(is_scalar && is_q));
113
114
- tcg_rmode = tcg_const_i32(arm_rmode_to_sf(FPROUNDING_ZERO));
115
tcg_fpstatus = fpstatus_ptr(size == MO_16 ? FPST_FPCR_F16 : FPST_FPCR);
116
- gen_helper_set_rmode(tcg_rmode, tcg_rmode, tcg_fpstatus);
117
+ tcg_rmode = gen_set_rmode(FPROUNDING_ZERO, tcg_fpstatus);
118
fracbits = (16 << size) - immhb;
119
tcg_shift = tcg_constant_i32(fracbits);
120
121
@@ -XXX,XX +XXX,XX @@ static void handle_simd_shift_fpint_conv(DisasContext *s, bool is_scalar,
122
}
123
}
124
125
- gen_helper_set_rmode(tcg_rmode, tcg_rmode, tcg_fpstatus);
126
+ gen_restore_rmode(tcg_rmode, tcg_fpstatus);
127
}
128
129
/* AdvSIMD scalar shift by immediate
130
@@ -XXX,XX +XXX,XX @@ static void disas_simd_scalar_two_reg_misc(DisasContext *s, uint32_t insn)
131
}
132
133
if (is_fcvt) {
134
- tcg_rmode = tcg_const_i32(arm_rmode_to_sf(rmode));
135
tcg_fpstatus = fpstatus_ptr(FPST_FPCR);
136
- gen_helper_set_rmode(tcg_rmode, tcg_rmode, tcg_fpstatus);
137
+ tcg_rmode = gen_set_rmode(rmode, tcg_fpstatus);
138
} else {
139
- tcg_rmode = NULL;
140
tcg_fpstatus = NULL;
141
+ tcg_rmode = NULL;
142
}
143
144
if (size == 3) {
145
@@ -XXX,XX +XXX,XX @@ static void disas_simd_scalar_two_reg_misc(DisasContext *s, uint32_t insn)
146
}
147
148
if (is_fcvt) {
149
- gen_helper_set_rmode(tcg_rmode, tcg_rmode, tcg_fpstatus);
150
+ gen_restore_rmode(tcg_rmode, tcg_fpstatus);
151
}
152
}
153
154
@@ -XXX,XX +XXX,XX @@ static void disas_simd_two_reg_misc(DisasContext *s, uint32_t insn)
155
tcg_fpstatus = NULL;
156
}
157
if (rmode >= 0) {
158
- tcg_rmode = tcg_const_i32(arm_rmode_to_sf(rmode));
159
- gen_helper_set_rmode(tcg_rmode, tcg_rmode, tcg_fpstatus);
160
+ tcg_rmode = gen_set_rmode(rmode, tcg_fpstatus);
161
} else {
162
tcg_rmode = NULL;
163
}
164
@@ -XXX,XX +XXX,XX @@ static void disas_simd_two_reg_misc(DisasContext *s, uint32_t insn)
165
clear_vec_high(s, is_q, rd);
166
167
if (tcg_rmode) {
168
- gen_helper_set_rmode(tcg_rmode, tcg_rmode, tcg_fpstatus);
169
+ gen_restore_rmode(tcg_rmode, tcg_fpstatus);
170
}
171
}
172
173
@@ -XXX,XX +XXX,XX @@ static void disas_simd_two_reg_misc_fp16(DisasContext *s, uint32_t insn)
174
}
175
176
if (rmode >= 0) {
177
- tcg_rmode = tcg_const_i32(arm_rmode_to_sf(rmode));
178
- gen_helper_set_rmode(tcg_rmode, tcg_rmode, tcg_fpstatus);
179
+ tcg_rmode = gen_set_rmode(rmode, tcg_fpstatus);
180
}
181
182
if (is_scalar) {
183
@@ -XXX,XX +XXX,XX @@ static void disas_simd_two_reg_misc_fp16(DisasContext *s, uint32_t insn)
184
}
185
186
if (tcg_rmode) {
187
- gen_helper_set_rmode(tcg_rmode, tcg_rmode, tcg_fpstatus);
188
+ gen_restore_rmode(tcg_rmode, tcg_fpstatus);
189
}
190
}
191
192
diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c
193
index XXXXXXX..XXXXXXX 100644
194
--- a/target/arm/tcg/translate-sve.c
195
+++ b/target/arm/tcg/translate-sve.c
196
@@ -XXX,XX +XXX,XX @@ static bool do_frint_mode(DisasContext *s, arg_rpr_esz *a,
197
}
198
199
vsz = vec_full_reg_size(s);
200
- tmode = tcg_const_i32(arm_rmode_to_sf(mode));
201
status = fpstatus_ptr(a->esz == MO_16 ? FPST_FPCR_F16 : FPST_FPCR);
202
-
203
- gen_helper_set_rmode(tmode, tmode, status);
204
+ tmode = gen_set_rmode(mode, status);
205
206
tcg_gen_gvec_3_ptr(vec_full_reg_offset(s, a->rd),
207
vec_full_reg_offset(s, a->rn),
208
pred_full_reg_offset(s, a->pg),
209
status, vsz, vsz, 0, fn);
210
211
- gen_helper_set_rmode(tmode, tmode, status);
212
+ gen_restore_rmode(tmode, status);
213
return true;
214
}
215
216
diff --git a/target/arm/tcg/translate-vfp.c b/target/arm/tcg/translate-vfp.c
217
index XXXXXXX..XXXXXXX 100644
218
--- a/target/arm/tcg/translate-vfp.c
219
+++ b/target/arm/tcg/translate-vfp.c
220
@@ -XXX,XX +XXX,XX @@ static bool trans_VRINT(DisasContext *s, arg_VRINT *a)
221
fpst = fpstatus_ptr(FPST_FPCR);
222
}
223
224
- tcg_rmode = tcg_const_i32(arm_rmode_to_sf(rounding));
225
- gen_helper_set_rmode(tcg_rmode, tcg_rmode, fpst);
226
+ tcg_rmode = gen_set_rmode(rounding, fpst);
227
228
if (sz == 3) {
229
TCGv_i64 tcg_op;
230
@@ -XXX,XX +XXX,XX @@ static bool trans_VRINT(DisasContext *s, arg_VRINT *a)
231
vfp_store_reg32(tcg_res, rd);
232
}
233
234
- gen_helper_set_rmode(tcg_rmode, tcg_rmode, fpst);
235
+ gen_restore_rmode(tcg_rmode, fpst);
236
return true;
237
}
238
239
@@ -XXX,XX +XXX,XX @@ static bool trans_VCVT(DisasContext *s, arg_VCVT *a)
240
}
241
242
tcg_shift = tcg_constant_i32(0);
243
-
244
- tcg_rmode = tcg_const_i32(arm_rmode_to_sf(rounding));
245
- gen_helper_set_rmode(tcg_rmode, tcg_rmode, fpst);
246
+ tcg_rmode = gen_set_rmode(rounding, fpst);
247
248
if (sz == 3) {
249
TCGv_i64 tcg_double, tcg_res;
250
@@ -XXX,XX +XXX,XX @@ static bool trans_VCVT(DisasContext *s, arg_VCVT *a)
251
vfp_store_reg32(tcg_res, rd);
252
}
253
254
- gen_helper_set_rmode(tcg_rmode, tcg_rmode, fpst);
255
+ gen_restore_rmode(tcg_rmode, fpst);
256
return true;
257
}
258
259
@@ -XXX,XX +XXX,XX @@ static bool trans_VRINTZ_hp(DisasContext *s, arg_VRINTZ_sp *a)
260
tmp = tcg_temp_new_i32();
261
vfp_load_reg32(tmp, a->vm);
262
fpst = fpstatus_ptr(FPST_FPCR_F16);
263
- tcg_rmode = tcg_const_i32(arm_rmode_to_sf(FPROUNDING_ZERO));
264
- gen_helper_set_rmode(tcg_rmode, tcg_rmode, fpst);
265
+ tcg_rmode = gen_set_rmode(FPROUNDING_ZERO, fpst);
266
gen_helper_rinth(tmp, tmp, fpst);
267
- gen_helper_set_rmode(tcg_rmode, tcg_rmode, fpst);
268
+ gen_restore_rmode(tcg_rmode, fpst);
269
vfp_store_reg32(tmp, a->vd);
270
return true;
271
}
272
@@ -XXX,XX +XXX,XX @@ static bool trans_VRINTZ_sp(DisasContext *s, arg_VRINTZ_sp *a)
273
tmp = tcg_temp_new_i32();
274
vfp_load_reg32(tmp, a->vm);
275
fpst = fpstatus_ptr(FPST_FPCR);
276
- tcg_rmode = tcg_const_i32(arm_rmode_to_sf(FPROUNDING_ZERO));
277
- gen_helper_set_rmode(tcg_rmode, tcg_rmode, fpst);
278
+ tcg_rmode = gen_set_rmode(FPROUNDING_ZERO, fpst);
279
gen_helper_rints(tmp, tmp, fpst);
280
- gen_helper_set_rmode(tcg_rmode, tcg_rmode, fpst);
281
+ gen_restore_rmode(tcg_rmode, fpst);
282
vfp_store_reg32(tmp, a->vd);
283
return true;
284
}
285
@@ -XXX,XX +XXX,XX @@ static bool trans_VRINTZ_dp(DisasContext *s, arg_VRINTZ_dp *a)
286
tmp = tcg_temp_new_i64();
287
vfp_load_reg64(tmp, a->vm);
288
fpst = fpstatus_ptr(FPST_FPCR);
289
- tcg_rmode = tcg_const_i32(arm_rmode_to_sf(FPROUNDING_ZERO));
290
- gen_helper_set_rmode(tcg_rmode, tcg_rmode, fpst);
291
+ tcg_rmode = gen_set_rmode(FPROUNDING_ZERO, fpst);
292
gen_helper_rintd(tmp, tmp, fpst);
293
- gen_helper_set_rmode(tcg_rmode, tcg_rmode, fpst);
294
+ gen_restore_rmode(tcg_rmode, fpst);
295
vfp_store_reg64(tmp, a->vd);
296
return true;
297
}
46
--
298
--
47
2.34.1
299
2.34.1
48
300
49
301
diff view generated by jsdifflib
1
From: Philippe Mathieu-Daudé <philmd@linaro.org>
1
Reorg temporary usage so that we can use tcg_constant_i32.
2
tcg_gen_deposit_i32 already has a width == 32 special case,
3
so remove the check here.
2
4
3
Prepare the stub for parity with accel_cpu_common_realize().
5
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
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>
6
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
8
---
7
---
9
include/qemu/accel.h | 6 ++++++
8
target/arm/tcg/translate.c | 13 +++++--------
10
accel/accel-common.c | 4 ++++
9
1 file changed, 5 insertions(+), 8 deletions(-)
11
cpu.c | 4 +++-
12
3 files changed, 13 insertions(+), 1 deletion(-)
13
10
14
diff --git a/include/qemu/accel.h b/include/qemu/accel.h
11
diff --git a/target/arm/tcg/translate.c b/target/arm/tcg/translate.c
15
index XXXXXXX..XXXXXXX 100644
12
index XXXXXXX..XXXXXXX 100644
16
--- a/include/qemu/accel.h
13
--- a/target/arm/tcg/translate.c
17
+++ b/include/qemu/accel.h
14
+++ b/target/arm/tcg/translate.c
18
@@ -XXX,XX +XXX,XX @@ void accel_cpu_instance_init(CPUState *cpu);
15
@@ -XXX,XX +XXX,XX @@ static bool trans_UBFX(DisasContext *s, arg_UBFX *a)
19
*/
16
20
bool accel_cpu_common_realize(CPUState *cpu, Error **errp);
17
static bool trans_BFCI(DisasContext *s, arg_BFCI *a)
21
18
{
22
+/**
19
- TCGv_i32 tmp;
23
+ * accel_cpu_common_unrealize:
20
int msb = a->msb, lsb = a->lsb;
24
+ * @cpu: The CPU that needs to call accel-specific cpu unrealization.
21
+ TCGv_i32 t_in, t_rd;
25
+ */
22
int width;
26
+void accel_cpu_common_unrealize(CPUState *cpu);
23
27
+
24
if (!ENABLE_ARCH_6T2) {
28
/**
25
@@ -XXX,XX +XXX,XX @@ static bool trans_BFCI(DisasContext *s, arg_BFCI *a)
29
* accel_supported_gdbstub_sstep_flags:
26
width = msb + 1 - lsb;
30
*
27
if (a->rn == 15) {
31
diff --git a/accel/accel-common.c b/accel/accel-common.c
28
/* BFC */
32
index XXXXXXX..XXXXXXX 100644
29
- tmp = tcg_const_i32(0);
33
--- a/accel/accel-common.c
30
+ t_in = tcg_constant_i32(0);
34
+++ b/accel/accel-common.c
31
} else {
35
@@ -XXX,XX +XXX,XX @@ bool accel_cpu_common_realize(CPUState *cpu, Error **errp)
32
/* BFI */
33
- tmp = load_reg(s, a->rn);
34
+ t_in = load_reg(s, a->rn);
35
}
36
- if (width != 32) {
37
- TCGv_i32 tmp2 = load_reg(s, a->rd);
38
- tcg_gen_deposit_i32(tmp, tmp2, tmp, lsb, width);
39
- }
40
- store_reg(s, a->rd, tmp);
41
+ t_rd = load_reg(s, a->rd);
42
+ tcg_gen_deposit_i32(t_rd, t_rd, t_in, lsb, width);
36
return true;
43
return true;
37
}
44
}
38
45
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
--
46
--
63
2.34.1
47
2.34.1
64
48
65
49
diff view generated by jsdifflib
1
From: Philippe Mathieu-Daudé <philmd@linaro.org>
1
This hides the implicit initialization of a variable.
2
2
3
We have exec/cpu code split in 2 files for target agnostic
3
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
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>
4
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
13
---
5
---
14
MAINTAINERS | 4 ++--
6
target/arm/tcg/translate-sve.c | 6 ++++--
15
meson.build | 4 ++--
7
1 file changed, 4 insertions(+), 2 deletions(-)
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
8
22
diff --git a/MAINTAINERS b/MAINTAINERS
9
diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c
23
index XXXXXXX..XXXXXXX 100644
10
index XXXXXXX..XXXXXXX 100644
24
--- a/MAINTAINERS
11
--- a/target/arm/tcg/translate-sve.c
25
+++ b/MAINTAINERS
12
+++ b/target/arm/tcg/translate-sve.c
26
@@ -XXX,XX +XXX,XX @@ R: Paolo Bonzini <pbonzini@redhat.com>
13
@@ -XXX,XX +XXX,XX @@ void gen_sve_ldr(DisasContext *s, TCGv_ptr base, int vofs,
27
S: Maintained
14
}
28
F: softmmu/cpus.c
15
} else {
29
F: softmmu/watchpoint.c
16
TCGLabel *loop = gen_new_label();
30
-F: cpus-common.c
17
- TCGv_ptr tp, i = tcg_const_ptr(0);
31
+F: cpu-common.c
18
+ TCGv_ptr tp, i = tcg_temp_new_ptr();
32
+F: cpu-target.c
19
33
F: page-vary.c
20
+ tcg_gen_movi_ptr(i, 0);
34
F: page-vary-common.c
21
gen_set_label(loop);
35
F: accel/tcg/
22
36
@@ -XXX,XX +XXX,XX @@ M: Marcel Apfelbaum <marcel.apfelbaum@gmail.com>
23
t0 = tcg_temp_new_i64();
37
R: Philippe Mathieu-Daudé <philmd@linaro.org>
24
@@ -XXX,XX +XXX,XX @@ void gen_sve_str(DisasContext *s, TCGv_ptr base, int vofs,
38
R: Yanan Wang <wangyanan55@huawei.com>
25
}
39
S: Supported
26
} else {
40
-F: cpu.c
27
TCGLabel *loop = gen_new_label();
41
F: hw/core/cpu.c
28
- TCGv_ptr tp, i = tcg_const_ptr(0);
42
F: hw/core/machine-qmp-cmds.c
29
+ TCGv_ptr tp, i = tcg_temp_new_ptr();
43
F: hw/core/machine.c
30
44
diff --git a/meson.build b/meson.build
31
+ tcg_gen_movi_ptr(i, 0);
45
index XXXXXXX..XXXXXXX 100644
32
gen_set_label(loop);
46
--- a/meson.build
33
47
+++ b/meson.build
34
t0 = tcg_temp_new_i64();
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
--
35
--
68
2.34.1
36
2.34.1
69
37
70
38
diff view generated by jsdifflib
1
Minimize the displacement to can_do_io, since it may
1
All uses are in the context of an accumulator conditionally
2
be touched at the start of each TranslationBlock.
2
having a zero input. Split the rda variable to rda_{i,o},
3
It fits into other padding within the substructure.
3
and set rda_i to tcg_constant_foo(0) when required.
4
4
5
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
5
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
6
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7
---
7
---
8
include/hw/core/cpu.h | 6 ++----
8
target/arm/tcg/translate-mve.c | 54 ++++++++++++++++++----------------
9
accel/dummy-cpus.c | 2 +-
9
1 file changed, 29 insertions(+), 25 deletions(-)
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
10
24
diff --git a/include/hw/core/cpu.h b/include/hw/core/cpu.h
11
diff --git a/target/arm/tcg/translate-mve.c b/target/arm/tcg/translate-mve.c
25
index XXXXXXX..XXXXXXX 100644
12
index XXXXXXX..XXXXXXX 100644
26
--- a/include/hw/core/cpu.h
13
--- a/target/arm/tcg/translate-mve.c
27
+++ b/include/hw/core/cpu.h
14
+++ b/target/arm/tcg/translate-mve.c
28
@@ -XXX,XX +XXX,XX @@ typedef union IcountDecr {
15
@@ -XXX,XX +XXX,XX @@ static bool do_long_dual_acc(DisasContext *s, arg_vmlaldav *a,
29
typedef struct CPUNegativeOffsetState {
16
MVEGenLongDualAccOpFn *fn)
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
{
17
{
101
/* Undo the setting in cpu_tb_exec. */
18
TCGv_ptr qn, qm;
102
- cpu->can_do_io = 1;
19
- TCGv_i64 rda;
103
+ cpu->neg.can_do_io = true;
20
+ TCGv_i64 rda_i, rda_o;
104
/* Undo any setting in generated code. */
21
TCGv_i32 rdalo, rdahi;
105
qemu_plugin_disable_mem_helpers(cpu);
22
106
siglongjmp(cpu->jmp_env, 1);
23
if (!dc_isar_feature(aa32_mve, s) ||
107
diff --git a/accel/tcg/cpu-exec.c b/accel/tcg/cpu-exec.c
24
@@ -XXX,XX +XXX,XX @@ static bool do_long_dual_acc(DisasContext *s, arg_vmlaldav *a,
108
index XXXXXXX..XXXXXXX 100644
25
* of an A=0 (no-accumulate) insn which does not execute the first
109
--- a/accel/tcg/cpu-exec.c
26
* beat must start with the current rda value, not 0.
110
+++ b/accel/tcg/cpu-exec.c
27
*/
111
@@ -XXX,XX +XXX,XX @@ cpu_tb_exec(CPUState *cpu, TranslationBlock *itb, int *tb_exit)
28
+ rda_o = tcg_temp_new_i64();
112
29
if (a->a || mve_skip_first_beat(s)) {
113
qemu_thread_jit_execute();
30
- rda = tcg_temp_new_i64();
114
ret = tcg_qemu_tb_exec(env, tb_ptr);
31
+ rda_i = rda_o;
115
- cpu->can_do_io = 1;
32
rdalo = load_reg(s, a->rdalo);
116
+ cpu->neg.can_do_io = true;
33
rdahi = load_reg(s, a->rdahi);
117
qemu_plugin_disable_mem_helpers(cpu);
34
- tcg_gen_concat_i32_i64(rda, rdalo, rdahi);
118
/*
35
+ tcg_gen_concat_i32_i64(rda_i, rdalo, rdahi);
119
* TODO: Delay swapping back to the read-write region of the TB
36
} else {
120
diff --git a/accel/tcg/cputlb.c b/accel/tcg/cputlb.c
37
- rda = tcg_const_i64(0);
121
index XXXXXXX..XXXXXXX 100644
38
+ rda_i = tcg_constant_i64(0);
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
}
39
}
132
40
133
diff --git a/accel/tcg/tcg-accel-ops-icount.c b/accel/tcg/tcg-accel-ops-icount.c
41
- fn(rda, cpu_env, qn, qm, rda);
134
index XXXXXXX..XXXXXXX 100644
42
+ fn(rda_o, cpu_env, qn, qm, rda_i);
135
--- a/accel/tcg/tcg-accel-ops-icount.c
43
136
+++ b/accel/tcg/tcg-accel-ops-icount.c
44
rdalo = tcg_temp_new_i32();
137
@@ -XXX,XX +XXX,XX @@ void icount_handle_interrupt(CPUState *cpu, int mask)
45
rdahi = tcg_temp_new_i32();
138
46
- tcg_gen_extrl_i64_i32(rdalo, rda);
139
tcg_handle_interrupt(cpu, mask);
47
- tcg_gen_extrh_i64_i32(rdahi, rda);
140
if (qemu_cpu_is_self(cpu) &&
48
+ tcg_gen_extrl_i64_i32(rdalo, rda_o);
141
- !cpu->can_do_io
49
+ tcg_gen_extrh_i64_i32(rdahi, rda_o);
142
+ !cpu->neg.can_do_io
50
store_reg(s, a->rdalo, rdalo);
143
&& (mask & ~old_mask) != 0) {
51
store_reg(s, a->rdahi, rdahi);
144
cpu_abort(cpu, "Raised interrupt while not in I/O function");
52
mve_update_eci(s);
53
@@ -XXX,XX +XXX,XX @@ static bool trans_VRMLSLDAVH(DisasContext *s, arg_vmlaldav *a)
54
static bool do_dual_acc(DisasContext *s, arg_vmladav *a, MVEGenDualAccOpFn *fn)
55
{
56
TCGv_ptr qn, qm;
57
- TCGv_i32 rda;
58
+ TCGv_i32 rda_i, rda_o;
59
60
if (!dc_isar_feature(aa32_mve, s) ||
61
!mve_check_qreg_bank(s, a->qn) ||
62
@@ -XXX,XX +XXX,XX @@ static bool do_dual_acc(DisasContext *s, arg_vmladav *a, MVEGenDualAccOpFn *fn)
63
* beat must start with the current rda value, not 0.
64
*/
65
if (a->a || mve_skip_first_beat(s)) {
66
- rda = load_reg(s, a->rda);
67
+ rda_o = rda_i = load_reg(s, a->rda);
68
} else {
69
- rda = tcg_const_i32(0);
70
+ rda_i = tcg_constant_i32(0);
71
+ rda_o = tcg_temp_new_i32();
145
}
72
}
146
diff --git a/accel/tcg/tcg-accel-ops-mttcg.c b/accel/tcg/tcg-accel-ops-mttcg.c
73
147
index XXXXXXX..XXXXXXX 100644
74
- fn(rda, cpu_env, qn, qm, rda);
148
--- a/accel/tcg/tcg-accel-ops-mttcg.c
75
- store_reg(s, a->rda, rda);
149
+++ b/accel/tcg/tcg-accel-ops-mttcg.c
76
+ fn(rda_o, cpu_env, qn, qm, rda_i);
150
@@ -XXX,XX +XXX,XX @@ static void *mttcg_cpu_thread_fn(void *arg)
77
+ store_reg(s, a->rda, rda_o);
151
qemu_thread_get_self(cpu->thread);
78
152
79
mve_update_eci(s);
153
cpu->thread_id = qemu_get_thread_id();
80
return true;
154
- cpu->can_do_io = 1;
81
@@ -XXX,XX +XXX,XX @@ static bool trans_VADDV(DisasContext *s, arg_VADDV *a)
155
+ cpu->neg.can_do_io = true;
82
{ NULL, NULL }
156
current_cpu = cpu;
83
};
157
cpu_thread_signal_created(cpu);
84
TCGv_ptr qm;
158
qemu_guest_random_seed_thread_part2(cpu->random_seed);
85
- TCGv_i32 rda;
159
diff --git a/accel/tcg/tcg-accel-ops-rr.c b/accel/tcg/tcg-accel-ops-rr.c
86
+ TCGv_i32 rda_i, rda_o;
160
index XXXXXXX..XXXXXXX 100644
87
161
--- a/accel/tcg/tcg-accel-ops-rr.c
88
if (!dc_isar_feature(aa32_mve, s) ||
162
+++ b/accel/tcg/tcg-accel-ops-rr.c
89
a->size == 3) {
163
@@ -XXX,XX +XXX,XX @@ static void *rr_cpu_thread_fn(void *arg)
90
@@ -XXX,XX +XXX,XX @@ static bool trans_VADDV(DisasContext *s, arg_VADDV *a)
164
qemu_thread_get_self(cpu->thread);
91
*/
165
92
if (a->a || mve_skip_first_beat(s)) {
166
cpu->thread_id = qemu_get_thread_id();
93
/* Accumulate input from Rda */
167
- cpu->can_do_io = 1;
94
- rda = load_reg(s, a->rda);
168
+ cpu->neg.can_do_io = true;
95
+ rda_o = rda_i = load_reg(s, a->rda);
169
cpu_thread_signal_created(cpu);
96
} else {
170
qemu_guest_random_seed_thread_part2(cpu->random_seed);
97
/* Accumulate starting at zero */
171
98
- rda = tcg_const_i32(0);
172
@@ -XXX,XX +XXX,XX @@ void rr_start_vcpu_thread(CPUState *cpu)
99
+ rda_i = tcg_constant_i32(0);
173
cpu->thread = single_tcg_cpu_thread;
100
+ rda_o = tcg_temp_new_i32();
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
}
101
}
180
}
102
181
diff --git a/accel/tcg/translator.c b/accel/tcg/translator.c
103
qm = mve_qreg_ptr(a->qm);
182
index XXXXXXX..XXXXXXX 100644
104
- fns[a->size][a->u](rda, cpu_env, qm, rda);
183
--- a/accel/tcg/translator.c
105
- store_reg(s, a->rda, rda);
184
+++ b/accel/tcg/translator.c
106
+ fns[a->size][a->u](rda_o, cpu_env, qm, rda_i);
185
@@ -XXX,XX +XXX,XX @@ static void set_can_do_io(DisasContextBase *db, bool val)
107
+ store_reg(s, a->rda, rda_o);
186
{
108
187
if (db->saved_can_do_io != val) {
109
mve_update_eci(s);
188
db->saved_can_do_io = val;
110
return true;
189
- tcg_gen_st_i32(tcg_constant_i32(val), cpu_env,
111
@@ -XXX,XX +XXX,XX @@ static bool trans_VADDLV(DisasContext *s, arg_VADDLV *a)
190
- offsetof(ArchCPU, parent_obj.can_do_io) -
112
* No need to check Qm's bank: it is only 3 bits in decode.
191
- offsetof(ArchCPU, env));
113
*/
192
+
114
TCGv_ptr qm;
193
+ QEMU_BUILD_BUG_ON(sizeof_field(CPUState, neg.can_do_io) != 1);
115
- TCGv_i64 rda;
194
+ tcg_gen_st8_i32(tcg_constant_i32(val), cpu_env,
116
+ TCGv_i64 rda_i, rda_o;
195
+ offsetof(ArchCPU, parent_obj.neg.can_do_io) -
117
TCGv_i32 rdalo, rdahi;
196
+ offsetof(ArchCPU, env));
118
119
if (!dc_isar_feature(aa32_mve, s)) {
120
@@ -XXX,XX +XXX,XX @@ static bool trans_VADDLV(DisasContext *s, arg_VADDLV *a)
121
* of an A=0 (no-accumulate) insn which does not execute the first
122
* beat must start with the current value of RdaHi:RdaLo, not zero.
123
*/
124
+ rda_o = tcg_temp_new_i64();
125
if (a->a || mve_skip_first_beat(s)) {
126
/* Accumulate input from RdaHi:RdaLo */
127
- rda = tcg_temp_new_i64();
128
+ rda_i = rda_o;
129
rdalo = load_reg(s, a->rdalo);
130
rdahi = load_reg(s, a->rdahi);
131
- tcg_gen_concat_i32_i64(rda, rdalo, rdahi);
132
+ tcg_gen_concat_i32_i64(rda_i, rdalo, rdahi);
133
} else {
134
/* Accumulate starting at zero */
135
- rda = tcg_const_i64(0);
136
+ rda_i = tcg_constant_i64(0);
197
}
137
}
198
}
138
199
139
qm = mve_qreg_ptr(a->qm);
200
@@ -XXX,XX +XXX,XX @@ static TCGOp *gen_tb_start(DisasContextBase *db, uint32_t cflags)
140
if (a->u) {
141
- gen_helper_mve_vaddlv_u(rda, cpu_env, qm, rda);
142
+ gen_helper_mve_vaddlv_u(rda_o, cpu_env, qm, rda_i);
143
} else {
144
- gen_helper_mve_vaddlv_s(rda, cpu_env, qm, rda);
145
+ gen_helper_mve_vaddlv_s(rda_o, cpu_env, qm, rda_i);
201
}
146
}
202
147
203
/*
148
rdalo = tcg_temp_new_i32();
204
- * cpu->can_do_io is set automatically here at the beginning of
149
rdahi = tcg_temp_new_i32();
205
+ * cpu->neg.can_do_io is set automatically here at the beginning of
150
- tcg_gen_extrl_i64_i32(rdalo, rda);
206
* each translation block. The cost is minimal, plus it would be
151
- tcg_gen_extrh_i64_i32(rdahi, rda);
207
* very easy to forget doing it in the translator.
152
+ tcg_gen_extrl_i64_i32(rdalo, rda_o);
208
*/
153
+ tcg_gen_extrh_i64_i32(rdahi, rda_o);
209
diff --git a/hw/core/cpu-common.c b/hw/core/cpu-common.c
154
store_reg(s, a->rdalo, rdalo);
210
index XXXXXXX..XXXXXXX 100644
155
store_reg(s, a->rdahi, rdahi);
211
--- a/hw/core/cpu-common.c
156
mve_update_eci(s);
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
--
157
--
249
2.34.1
158
2.34.1
250
159
251
160
diff view generated by jsdifflib
1
From: Anton Johansson <anjo@rev.ng>
1
It is easy enough to use mov instead of or-with-zero and relying
2
on the optimizer to fold away the or. Use an array for the output,
3
rather than separate tcg_res{l,h} variables.
2
4
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>
5
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>
6
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
13
---
7
---
14
accel/tcg/atomic_template.h | 20 ++++++++++++--------
8
target/arm/tcg/translate-a64.c | 41 +++++++++++++++++-----------------
15
accel/tcg/cputlb.c | 26 +++++++++++++-------------
9
1 file changed, 21 insertions(+), 20 deletions(-)
16
accel/tcg/user-exec.c | 8 ++++----
17
3 files changed, 29 insertions(+), 25 deletions(-)
18
10
19
diff --git a/accel/tcg/atomic_template.h b/accel/tcg/atomic_template.h
11
diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c
20
index XXXXXXX..XXXXXXX 100644
12
index XXXXXXX..XXXXXXX 100644
21
--- a/accel/tcg/atomic_template.h
13
--- a/target/arm/tcg/translate-a64.c
22
+++ b/accel/tcg/atomic_template.h
14
+++ b/target/arm/tcg/translate-a64.c
23
@@ -XXX,XX +XXX,XX @@ ABI_TYPE ATOMIC_NAME(cmpxchg)(CPUArchState *env, abi_ptr addr,
15
@@ -XXX,XX +XXX,XX @@ static void disas_simd_zip_trn(DisasContext *s, uint32_t insn)
24
ABI_TYPE cmpv, ABI_TYPE newv,
16
bool part = extract32(insn, 14, 1);
25
MemOpIdx oi, uintptr_t retaddr)
17
bool is_q = extract32(insn, 30, 1);
26
{
18
int esize = 8 << size;
27
- DATA_TYPE *haddr = atomic_mmu_lookup(env, addr, oi, DATA_SIZE, retaddr);
19
- int i, ofs;
28
+ DATA_TYPE *haddr = atomic_mmu_lookup(env_cpu(env), addr, oi,
20
+ int i;
29
+ DATA_SIZE, retaddr);
21
int datasize = is_q ? 128 : 64;
30
DATA_TYPE ret;
22
int elements = datasize / esize;
31
23
- TCGv_i64 tcg_res, tcg_resl, tcg_resh;
32
#if DATA_SIZE == 16
24
+ TCGv_i64 tcg_res[2], tcg_ele;
33
@@ -XXX,XX +XXX,XX @@ ABI_TYPE ATOMIC_NAME(cmpxchg)(CPUArchState *env, abi_ptr addr,
25
34
ABI_TYPE ATOMIC_NAME(xchg)(CPUArchState *env, abi_ptr addr, ABI_TYPE val,
26
if (opcode == 0 || (size == 3 && !is_q)) {
35
MemOpIdx oi, uintptr_t retaddr)
27
unallocated_encoding(s);
36
{
28
@@ -XXX,XX +XXX,XX @@ static void disas_simd_zip_trn(DisasContext *s, uint32_t insn)
37
- DATA_TYPE *haddr = atomic_mmu_lookup(env, addr, oi, DATA_SIZE, retaddr);
29
return;
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
}
30
}
120
31
121
@@ -XXX,XX +XXX,XX @@ static void *atomic_mmu_lookup(CPUArchState *env, vaddr addr, MemOpIdx oi,
32
- tcg_resl = tcg_const_i64(0);
122
goto stop_the_world;
33
- tcg_resh = is_q ? tcg_const_i64(0) : NULL;
123
}
34
- tcg_res = tcg_temp_new_i64();
124
35
+ tcg_res[0] = tcg_temp_new_i64();
125
- index = tlb_index(env_cpu(env), mmu_idx, addr);
36
+ tcg_res[1] = is_q ? tcg_temp_new_i64() : NULL;
126
- tlbe = tlb_entry(env_cpu(env), mmu_idx, addr);
37
+ tcg_ele = tcg_temp_new_i64();
127
+ index = tlb_index(cpu, mmu_idx, addr);
38
128
+ tlbe = tlb_entry(cpu, mmu_idx, addr);
39
for (i = 0; i < elements; i++) {
129
40
+ int o, w;
130
/* Check TLB entry and enforce page permissions. */
41
+
131
tlb_addr = tlb_addr_write(tlbe);
42
switch (opcode) {
132
if (!tlb_hit(tlb_addr, addr)) {
43
case 1: /* UZP1/2 */
133
- if (!victim_tlb_hit(env_cpu(env), mmu_idx, index, MMU_DATA_STORE,
44
{
134
+ if (!victim_tlb_hit(cpu, mmu_idx, index, MMU_DATA_STORE,
45
int midpoint = elements / 2;
135
addr & TARGET_PAGE_MASK)) {
46
if (i < midpoint) {
136
- tlb_fill(env_cpu(env), addr, size,
47
- read_vec_element(s, tcg_res, rn, 2 * i + part, size);
137
+ tlb_fill(cpu, addr, size,
48
+ read_vec_element(s, tcg_ele, rn, 2 * i + part, size);
138
MMU_DATA_STORE, mmu_idx, retaddr);
49
} else {
139
- index = tlb_index(env_cpu(env), mmu_idx, addr);
50
- read_vec_element(s, tcg_res, rm,
140
- tlbe = tlb_entry(env_cpu(env), mmu_idx, addr);
51
+ read_vec_element(s, tcg_ele, rm,
141
+ index = tlb_index(cpu, mmu_idx, addr);
52
2 * (i - midpoint) + part, size);
142
+ tlbe = tlb_entry(cpu, mmu_idx, addr);
53
}
54
break;
143
}
55
}
144
tlb_addr = tlb_addr_write(tlbe) & ~TLB_INVALID_MASK;
56
case 2: /* TRN1/2 */
145
}
57
if (i & 1) {
146
@@ -XXX,XX +XXX,XX @@ static void *atomic_mmu_lookup(CPUArchState *env, vaddr addr, MemOpIdx oi,
58
- read_vec_element(s, tcg_res, rm, (i & ~1) + part, size);
147
* but addr_read will only be -1 if PAGE_READ was unset.
59
+ read_vec_element(s, tcg_ele, rm, (i & ~1) + part, size);
148
*/
60
} else {
149
if (unlikely(tlbe->addr_read == -1)) {
61
- read_vec_element(s, tcg_res, rn, (i & ~1) + part, size);
150
- tlb_fill(env_cpu(env), addr, size, MMU_DATA_LOAD, mmu_idx, retaddr);
62
+ read_vec_element(s, tcg_ele, rn, (i & ~1) + part, size);
151
+ tlb_fill(cpu, addr, size, MMU_DATA_LOAD, mmu_idx, retaddr);
63
}
152
/*
64
break;
153
* Since we don't support reads and writes to different
65
case 3: /* ZIP1/2 */
154
* addresses, and we do have the proper page loaded for
66
{
155
@@ -XXX,XX +XXX,XX @@ static void *atomic_mmu_lookup(CPUArchState *env, vaddr addr, MemOpIdx oi,
67
int base = part * elements / 2;
156
}
68
if (i & 1) {
157
69
- read_vec_element(s, tcg_res, rm, base + (i >> 1), size);
158
hostaddr = (void *)((uintptr_t)addr + tlbe->addend);
70
+ read_vec_element(s, tcg_ele, rm, base + (i >> 1), size);
159
- full = &env_tlb(env)->d[mmu_idx].fulltlb[index];
71
} else {
160
+ full = &cpu->neg.tlb.d[mmu_idx].fulltlb[index];
72
- read_vec_element(s, tcg_res, rn, base + (i >> 1), size);
161
73
+ read_vec_element(s, tcg_ele, rn, base + (i >> 1), size);
162
if (unlikely(tlb_addr & TLB_NOTDIRTY)) {
74
}
163
- notdirty_write(env_cpu(env), addr, size, full, retaddr);
75
break;
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
}
76
}
171
if (wp_flags) {
77
@@ -XXX,XX +XXX,XX @@ static void disas_simd_zip_trn(DisasContext *s, uint32_t insn)
172
- cpu_check_watchpoint(env_cpu(env), addr, size,
78
g_assert_not_reached();
173
+ cpu_check_watchpoint(cpu, addr, size,
79
}
174
full->attrs, wp_flags, retaddr);
80
81
- ofs = i * esize;
82
- if (ofs < 64) {
83
- tcg_gen_shli_i64(tcg_res, tcg_res, ofs);
84
- tcg_gen_or_i64(tcg_resl, tcg_resl, tcg_res);
85
+ w = (i * esize) / 64;
86
+ o = (i * esize) % 64;
87
+ if (o == 0) {
88
+ tcg_gen_mov_i64(tcg_res[w], tcg_ele);
89
} else {
90
- tcg_gen_shli_i64(tcg_res, tcg_res, ofs - 64);
91
- tcg_gen_or_i64(tcg_resh, tcg_resh, tcg_res);
92
+ tcg_gen_shli_i64(tcg_ele, tcg_ele, o);
93
+ tcg_gen_or_i64(tcg_res[w], tcg_res[w], tcg_ele);
175
}
94
}
176
}
95
}
177
@@ -XXX,XX +XXX,XX @@ static void *atomic_mmu_lookup(CPUArchState *env, vaddr addr, MemOpIdx oi,
96
178
return hostaddr;
97
- write_vec_element(s, tcg_resl, rd, 0, MO_64);
179
98
- if (is_q) {
180
stop_the_world:
99
- write_vec_element(s, tcg_resh, rd, 1, MO_64);
181
- cpu_loop_exit_atomic(env_cpu(env), retaddr);
100
+ for (i = 0; i <= is_q; ++i) {
182
+ cpu_loop_exit_atomic(cpu, retaddr);
101
+ write_vec_element(s, tcg_res[i], rd, i, MO_64);
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
}
102
}
206
103
clear_vec_high(s, is_q, rd);
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
}
104
}
218
--
105
--
219
2.34.1
106
2.34.1
220
107
221
108
diff view generated by jsdifflib
1
The omission of alignment has technically been wrong since
1
It is easy enough to use mov instead of or-with-zero
2
269bd5d8f61, where QEMU_ALIGNED was added to CPUTLBDescFast.
2
and relying on the optimizer to fold away the or.
3
3
4
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
4
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
5
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
5
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6
---
6
---
7
target/alpha/cpu.c | 1 +
7
target/arm/tcg/translate-a64.c | 8 ++++++--
8
target/avr/cpu.c | 1 +
8
1 file changed, 6 insertions(+), 2 deletions(-)
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
9
27
diff --git a/target/alpha/cpu.c b/target/alpha/cpu.c
10
diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c
28
index XXXXXXX..XXXXXXX 100644
11
index XXXXXXX..XXXXXXX 100644
29
--- a/target/alpha/cpu.c
12
--- a/target/arm/tcg/translate-a64.c
30
+++ b/target/alpha/cpu.c
13
+++ b/target/arm/tcg/translate-a64.c
31
@@ -XXX,XX +XXX,XX @@ static const TypeInfo alpha_cpu_type_infos[] = {
14
@@ -XXX,XX +XXX,XX @@ static void handle_vec_simd_sqshrn(DisasContext *s, bool is_scalar, bool is_q,
32
.name = TYPE_ALPHA_CPU,
15
tcg_rn = tcg_temp_new_i64();
33
.parent = TYPE_CPU,
16
tcg_rd = tcg_temp_new_i64();
34
.instance_size = sizeof(AlphaCPU),
17
tcg_rd_narrowed = tcg_temp_new_i32();
35
+ .instance_align = __alignof(AlphaCPU),
18
- tcg_final = tcg_const_i64(0);
36
.instance_init = alpha_cpu_initfn,
19
+ tcg_final = tcg_temp_new_i64();
37
.abstract = true,
20
38
.class_size = sizeof(AlphaCPUClass),
21
if (round) {
39
diff --git a/target/avr/cpu.c b/target/avr/cpu.c
22
tcg_round = tcg_constant_i64(1ULL << (shift - 1));
40
index XXXXXXX..XXXXXXX 100644
23
@@ -XXX,XX +XXX,XX @@ static void handle_vec_simd_sqshrn(DisasContext *s, bool is_scalar, bool is_q,
41
--- a/target/avr/cpu.c
24
false, is_u_shift, size+1, shift);
42
+++ b/target/avr/cpu.c
25
narrowfn(tcg_rd_narrowed, cpu_env, tcg_rd);
43
@@ -XXX,XX +XXX,XX @@ static const TypeInfo avr_cpu_type_info[] = {
26
tcg_gen_extu_i32_i64(tcg_rd, tcg_rd_narrowed);
44
.name = TYPE_AVR_CPU,
27
- tcg_gen_deposit_i64(tcg_final, tcg_final, tcg_rd, esize * i, esize);
45
.parent = TYPE_CPU,
28
+ if (i == 0) {
46
.instance_size = sizeof(AVRCPU),
29
+ tcg_gen_mov_i64(tcg_final, tcg_rd);
47
+ .instance_align = __alignof(AVRCPU),
30
+ } else {
48
.instance_init = avr_cpu_initfn,
31
+ tcg_gen_deposit_i64(tcg_final, tcg_final, tcg_rd, esize * i, esize);
49
.class_size = sizeof(AVRCPUClass),
32
+ }
50
.class_init = avr_cpu_class_init,
33
}
51
diff --git a/target/cris/cpu.c b/target/cris/cpu.c
34
52
index XXXXXXX..XXXXXXX 100644
35
if (!is_q) {
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
--
36
--
245
2.34.1
37
2.34.1
246
38
247
39
diff view generated by jsdifflib
1
From: Philippe Mathieu-Daudé <philmd@linaro.org>
1
Here it is not trivial to notice first initialization, so explicitly
2
zero the temps. Use an array for the output, rather than separate
3
tcg_rd/tcg_rd_hi variables.
2
4
3
accel_cpu_realize() is a generic function working with CPUs
5
Fixes a bug by adding a missing clear_vec_high.
4
from any target. Rename it using '_common_' to emphasis it is
5
not target specific.
6
6
7
Suggested-by: Claudio Fontana <cfontana@suse.de>
7
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
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>
8
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
12
---
9
---
13
include/qemu/accel.h | 4 ++--
10
target/arm/tcg/translate-a64.c | 26 +++++++++++++++-----------
14
accel/accel-common.c | 2 +-
11
1 file changed, 15 insertions(+), 11 deletions(-)
15
cpu.c | 2 +-
16
target/i386/kvm/kvm-cpu.c | 2 +-
17
4 files changed, 5 insertions(+), 5 deletions(-)
18
12
19
diff --git a/include/qemu/accel.h b/include/qemu/accel.h
13
diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c
20
index XXXXXXX..XXXXXXX 100644
14
index XXXXXXX..XXXXXXX 100644
21
--- a/include/qemu/accel.h
15
--- a/target/arm/tcg/translate-a64.c
22
+++ b/include/qemu/accel.h
16
+++ b/target/arm/tcg/translate-a64.c
23
@@ -XXX,XX +XXX,XX @@ void accel_setup_post(MachineState *ms);
17
@@ -XXX,XX +XXX,XX @@ static void handle_rev(DisasContext *s, int opcode, bool u,
24
void accel_cpu_instance_init(CPUState *cpu);
18
int esize = 8 << size;
25
19
int elements = dsize / esize;
26
/**
20
TCGv_i64 tcg_rn = tcg_temp_new_i64();
27
- * accel_cpu_realize:
21
- TCGv_i64 tcg_rd = tcg_const_i64(0);
28
+ * accel_cpu_common_realize:
22
- TCGv_i64 tcg_rd_hi = tcg_const_i64(0);
29
* @cpu: The CPU that needs to call accel-specific cpu realization.
23
+ TCGv_i64 tcg_rd[2];
30
* @errp: currently unused.
24
+
31
*/
25
+ for (i = 0; i < 2; i++) {
32
-bool accel_cpu_realize(CPUState *cpu, Error **errp);
26
+ tcg_rd[i] = tcg_temp_new_i64();
33
+bool accel_cpu_common_realize(CPUState *cpu, Error **errp);
27
+ tcg_gen_movi_i64(tcg_rd[i], 0);
34
28
+ }
35
/**
29
36
* accel_supported_gdbstub_sstep_flags:
30
for (i = 0; i < elements; i++) {
37
diff --git a/accel/accel-common.c b/accel/accel-common.c
31
int e_rev = (i & 0xf) ^ revmask;
38
index XXXXXXX..XXXXXXX 100644
32
- int off = e_rev * esize;
39
--- a/accel/accel-common.c
33
+ int w = (e_rev * esize) / 64;
40
+++ b/accel/accel-common.c
34
+ int o = (e_rev * esize) % 64;
41
@@ -XXX,XX +XXX,XX @@ void accel_cpu_instance_init(CPUState *cpu)
35
+
36
read_vec_element(s, tcg_rn, rn, i, size);
37
- if (off >= 64) {
38
- tcg_gen_deposit_i64(tcg_rd_hi, tcg_rd_hi,
39
- tcg_rn, off - 64, esize);
40
- } else {
41
- tcg_gen_deposit_i64(tcg_rd, tcg_rd, tcg_rn, off, esize);
42
- }
43
+ tcg_gen_deposit_i64(tcg_rd[w], tcg_rd[w], tcg_rn, o, esize);
44
}
45
- write_vec_element(s, tcg_rd, rd, 0, MO_64);
46
- write_vec_element(s, tcg_rd_hi, rd, 1, MO_64);
47
+
48
+ for (i = 0; i < 2; i++) {
49
+ write_vec_element(s, tcg_rd[i], rd, i, MO_64);
50
+ }
51
+ clear_vec_high(s, true, rd);
42
}
52
}
43
}
53
}
44
54
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
--
55
--
77
2.34.1
56
2.34.1
78
57
79
58
diff view generated by jsdifflib
1
Use abi_ullong not uint64_t so that the alignment of the field
1
Return a constant for an immediate input.
2
and therefore the layout of the struct is correct.
3
2
4
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
3
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
5
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
4
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6
---
5
---
7
linux-user/hppa/signal.c | 2 +-
6
target/m68k/translate.c | 2 +-
8
1 file changed, 1 insertion(+), 1 deletion(-)
7
1 file changed, 1 insertion(+), 1 deletion(-)
9
8
10
diff --git a/linux-user/hppa/signal.c b/linux-user/hppa/signal.c
9
diff --git a/target/m68k/translate.c b/target/m68k/translate.c
11
index XXXXXXX..XXXXXXX 100644
10
index XXXXXXX..XXXXXXX 100644
12
--- a/linux-user/hppa/signal.c
11
--- a/target/m68k/translate.c
13
+++ b/linux-user/hppa/signal.c
12
+++ b/target/m68k/translate.c
14
@@ -XXX,XX +XXX,XX @@
13
@@ -XXX,XX +XXX,XX @@ static TCGv gen_ea_mode(CPUM68KState *env, DisasContext *s, int mode, int reg0,
15
struct target_sigcontext {
14
default:
16
abi_ulong sc_flags;
15
g_assert_not_reached();
17
abi_ulong sc_gr[32];
16
}
18
- uint64_t sc_fr[32];
17
- return tcg_const_i32(offset);
19
+ abi_ullong sc_fr[32];
18
+ return tcg_constant_i32(offset);
20
abi_ulong sc_iasq[2];
19
default:
21
abi_ulong sc_iaoq[2];
20
return NULL_QREG;
22
abi_ulong sc_sar;
21
}
23
--
22
--
24
2.34.1
23
2.34.1
25
24
26
25
diff view generated by jsdifflib
1
From: Philippe Mathieu-Daudé <philmd@linaro.org>
1
Compute both partial results separately and accumulate
2
at the end, instead of accumulating in the middle.
2
3
3
We don't need to expose these TCG-specific methods to the
4
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
4
whole code base. Register them as AccelClass handlers, they
5
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
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>
6
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
11
---
7
---
12
accel/tcg/internal.h | 3 +++
8
target/ppc/translate/vmx-impl.c.inc | 21 +++++++++++----------
13
include/exec/cpu-all.h | 2 --
9
1 file changed, 11 insertions(+), 10 deletions(-)
14
accel/tcg/tcg-all.c | 2 ++
15
cpu.c | 9 ---------
16
4 files changed, 5 insertions(+), 11 deletions(-)
17
10
18
diff --git a/accel/tcg/internal.h b/accel/tcg/internal.h
11
diff --git a/target/ppc/translate/vmx-impl.c.inc b/target/ppc/translate/vmx-impl.c.inc
19
index XXXXXXX..XXXXXXX 100644
12
index XXXXXXX..XXXXXXX 100644
20
--- a/accel/tcg/internal.h
13
--- a/target/ppc/translate/vmx-impl.c.inc
21
+++ b/accel/tcg/internal.h
14
+++ b/target/ppc/translate/vmx-impl.c.inc
22
@@ -XXX,XX +XXX,XX @@ bool tb_invalidate_phys_page_unwind(tb_page_addr_t addr, uintptr_t pc);
15
@@ -XXX,XX +XXX,XX @@ static bool trans_MTVSRBMI(DisasContext *ctx, arg_DX_b *a)
23
void cpu_restore_state_from_tb(CPUState *cpu, TranslationBlock *tb,
16
24
uintptr_t host_pc);
17
static bool do_vcntmb(DisasContext *ctx, arg_VX_mp *a, int vece)
25
18
{
26
+bool tcg_exec_realizefn(CPUState *cpu, Error **errp);
19
- TCGv_i64 rt, vrb, mask;
27
+void tcg_exec_unrealizefn(CPUState *cpu);
20
- rt = tcg_const_i64(0);
21
- vrb = tcg_temp_new_i64();
22
+ TCGv_i64 r[2], mask;
28
+
23
+
29
/* Return the current PC from CPU, which may be cached in TB. */
24
+ r[0] = tcg_temp_new_i64();
30
static inline vaddr log_pc(CPUState *cpu, const TranslationBlock *tb)
25
+ r[1] = tcg_temp_new_i64();
31
{
26
mask = tcg_constant_i64(dup_const(vece, 1ULL << ((8 << vece) - 1)));
32
diff --git a/include/exec/cpu-all.h b/include/exec/cpu-all.h
27
33
index XXXXXXX..XXXXXXX 100644
28
for (int i = 0; i < 2; i++) {
34
--- a/include/exec/cpu-all.h
29
- get_avr64(vrb, a->vrb, i);
35
+++ b/include/exec/cpu-all.h
30
+ get_avr64(r[i], a->vrb, i);
36
@@ -XXX,XX +XXX,XX @@ void dump_exec_info(GString *buf);
31
if (a->mp) {
37
32
- tcg_gen_and_i64(vrb, mask, vrb);
38
/* accel/tcg/cpu-exec.c */
33
+ tcg_gen_and_i64(r[i], mask, r[i]);
39
int cpu_exec(CPUState *cpu);
34
} else {
40
-bool tcg_exec_realizefn(CPUState *cpu, Error **errp);
35
- tcg_gen_andc_i64(vrb, mask, vrb);
41
-void tcg_exec_unrealizefn(CPUState *cpu);
36
+ tcg_gen_andc_i64(r[i], mask, r[i]);
42
37
}
43
/**
38
- tcg_gen_ctpop_i64(vrb, vrb);
44
* cpu_set_cpustate_pointers(cpu)
39
- tcg_gen_add_i64(rt, rt, vrb);
45
diff --git a/accel/tcg/tcg-all.c b/accel/tcg/tcg-all.c
40
+ tcg_gen_ctpop_i64(r[i], r[i]);
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
}
41
}
65
42
66
- /* NB: errp parameter is unused currently */
43
- tcg_gen_shli_i64(rt, rt, TARGET_LONG_BITS - 8 + vece);
67
- if (tcg_enabled()) {
44
- tcg_gen_trunc_i64_tl(cpu_gpr[a->rt], rt);
68
- tcg_exec_realizefn(cpu, errp);
45
+ tcg_gen_add_i64(r[0], r[0], r[1]);
69
- }
46
+ tcg_gen_shli_i64(r[0], r[0], TARGET_LONG_BITS - 8 + vece);
70
-
47
+ tcg_gen_trunc_i64_tl(cpu_gpr[a->rt], r[0]);
71
/* Wait until cpu initialization complete before exposing cpu. */
48
return true;
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
}
49
}
86
50
87
/*
88
--
51
--
89
2.34.1
52
2.34.1
90
53
91
54
diff view generated by jsdifflib
1
From: Philippe Mathieu-Daudé <philmd@linaro.org>
1
All remaining uses are strictly read-only.
2
2
3
Move target-agnostic declarations from "internal-target.h"
3
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
4
to a new "internal-common.h" header.
4
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
5
monitor.c now don't include target specific headers and can
6
be compiled once in system_ss[].
7
8
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
9
Reviewed-by: Anton Johansson <anjo@rev.ng>
10
Message-Id: <20230914185718.76241-10-philmd@linaro.org>
11
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
5
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
12
---
6
---
13
accel/tcg/internal-common.h | 17 +++++++++++++++++
7
target/ppc/translate/vmx-impl.c.inc | 10 +++++-----
14
accel/tcg/internal-target.h | 5 -----
8
1 file changed, 5 insertions(+), 5 deletions(-)
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
21
9
22
diff --git a/accel/tcg/internal-common.h b/accel/tcg/internal-common.h
10
diff --git a/target/ppc/translate/vmx-impl.c.inc b/target/ppc/translate/vmx-impl.c.inc
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
11
index XXXXXXX..XXXXXXX 100644
47
--- a/accel/tcg/internal-target.h
12
--- a/target/ppc/translate/vmx-impl.c.inc
48
+++ b/accel/tcg/internal-target.h
13
+++ b/target/ppc/translate/vmx-impl.c.inc
49
@@ -XXX,XX +XXX,XX @@ static inline bool cpu_in_serial_context(CPUState *cs)
14
@@ -XXX,XX +XXX,XX @@ static void glue(gen_, name)(DisasContext *ctx) \
50
return !(cs->tcg_cflags & CF_PARALLEL) || cpu_in_exclusive_context(cs);
15
gen_exception(ctx, POWERPC_EXCP_VPU); \
16
return; \
17
} \
18
- uimm = tcg_const_i32(UIMM5(ctx->opcode)); \
19
+ uimm = tcg_constant_i32(UIMM5(ctx->opcode)); \
20
rb = gen_avr_ptr(rB(ctx->opcode)); \
21
rd = gen_avr_ptr(rD(ctx->opcode)); \
22
gen_helper_##name(cpu_env, rd, rb, uimm); \
23
@@ -XXX,XX +XXX,XX @@ static void gen_vsldoi(DisasContext *ctx)
24
ra = gen_avr_ptr(rA(ctx->opcode));
25
rb = gen_avr_ptr(rB(ctx->opcode));
26
rd = gen_avr_ptr(rD(ctx->opcode));
27
- sh = tcg_const_i32(VSH(ctx->opcode));
28
+ sh = tcg_constant_i32(VSH(ctx->opcode));
29
gen_helper_vsldoi(rd, ra, rb, sh);
51
}
30
}
52
31
53
-extern int64_t max_delay;
32
@@ -XXX,XX +XXX,XX @@ static void gen_##op(DisasContext *ctx) \
54
-extern int64_t max_advance;
33
rb = gen_avr_ptr(rB(ctx->opcode)); \
55
-
34
rd = gen_avr_ptr(rD(ctx->opcode)); \
56
-void dump_exec_info(GString *buf);
35
\
57
-
36
- ps = tcg_const_i32((ctx->opcode & 0x200) != 0); \
58
extern bool one_insn_per_tb;
37
+ ps = tcg_constant_i32((ctx->opcode & 0x200) != 0); \
59
38
\
60
/**
39
gen_helper_##op(cpu_crf[6], rd, ra, rb, ps); \
61
diff --git a/accel/tcg/cpu-exec.c b/accel/tcg/cpu-exec.c
40
}
62
index XXXXXXX..XXXXXXX 100644
41
@@ -XXX,XX +XXX,XX @@ static void gen_##op(DisasContext *ctx) \
63
--- a/accel/tcg/cpu-exec.c
42
rb = gen_avr_ptr(rB(ctx->opcode)); \
64
+++ b/accel/tcg/cpu-exec.c
43
rd = gen_avr_ptr(rD(ctx->opcode)); \
65
@@ -XXX,XX +XXX,XX @@
44
\
66
#include "tb-jmp-cache.h"
45
- ps = tcg_const_i32((ctx->opcode & 0x200) != 0); \
67
#include "tb-hash.h"
46
+ ps = tcg_constant_i32((ctx->opcode & 0x200) != 0); \
68
#include "tb-context.h"
47
\
69
+#include "internal-common.h"
48
gen_helper_##op(cpu_crf[6], rd, rb, ps); \
70
#include "internal-target.h"
49
}
71
50
@@ -XXX,XX +XXX,XX @@ static void gen_##op(DisasContext *ctx) \
72
/* -icount align implementation. */
51
} \
73
diff --git a/accel/tcg/monitor.c b/accel/tcg/monitor.c
52
ra = gen_avr_ptr(rA(ctx->opcode)); \
74
index XXXXXXX..XXXXXXX 100644
53
rd = gen_avr_ptr(rD(ctx->opcode)); \
75
--- a/accel/tcg/monitor.c
54
- st_six = tcg_const_i32(rB(ctx->opcode)); \
76
+++ b/accel/tcg/monitor.c
55
+ st_six = tcg_constant_i32(rB(ctx->opcode)); \
77
@@ -XXX,XX +XXX,XX @@
56
gen_helper_##op(rd, ra, st_six); \
78
#include "sysemu/cpu-timers.h"
57
}
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
+))
107
+
108
+system_ss.add(when: ['CONFIG_TCG'], if_true: files(
109
'monitor.c',
110
))
111
58
112
--
59
--
113
2.34.1
60
2.34.1
114
61
115
62
diff view generated by jsdifflib
1
From: Philippe Mathieu-Daudé <philmd@linaro.org>
1
Initialize a new temp instead of tcg_const_*.
2
Fix a pasto in a comment.
2
3
3
While these functions are not TCG specific, they are not target
4
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
4
specific. Move them to "exec/cpu-common.h" so their callers don't
5
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
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>
6
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
11
---
7
---
12
include/exec/cpu-common.h | 32 ++++++++++++++++++++++++++++++++
8
target/ppc/translate/vsx-impl.c.inc | 8 +++++---
13
include/exec/exec-all.h | 30 ------------------------------
9
1 file changed, 5 insertions(+), 3 deletions(-)
14
2 files changed, 32 insertions(+), 30 deletions(-)
15
10
16
diff --git a/include/exec/cpu-common.h b/include/exec/cpu-common.h
11
diff --git a/target/ppc/translate/vsx-impl.c.inc b/target/ppc/translate/vsx-impl.c.inc
17
index XXXXXXX..XXXXXXX 100644
12
index XXXXXXX..XXXXXXX 100644
18
--- a/include/exec/cpu-common.h
13
--- a/target/ppc/translate/vsx-impl.c.inc
19
+++ b/include/exec/cpu-common.h
14
+++ b/target/ppc/translate/vsx-impl.c.inc
20
@@ -XXX,XX +XXX,XX @@ int cpu_memory_rw_debug(CPUState *cpu, vaddr addr,
15
@@ -XXX,XX +XXX,XX @@ static void gen_xxeval_i64(TCGv_i64 t, TCGv_i64 a, TCGv_i64 b, TCGv_i64 c,
21
/* vl.c */
16
TCGv_i64 conj, disj;
22
void list_cpus(void);
17
23
18
conj = tcg_temp_new_i64();
24
+#ifdef CONFIG_TCG
19
- disj = tcg_const_i64(0);
25
+/**
20
+ disj = tcg_temp_new_i64();
26
+ * cpu_unwind_state_data:
21
+ tcg_gen_movi_i64(disj, 0);
27
+ * @cpu: the cpu context
22
28
+ * @host_pc: the host pc within the translation
23
/* Iterate over set bits from the least to the most significant bit */
29
+ * @data: output data
24
while (imm) {
30
+ *
25
@@ -XXX,XX +XXX,XX @@ static void gen_xxeval_vec(unsigned vece, TCGv_vec t, TCGv_vec a, TCGv_vec b,
31
+ * Attempt to load the the unwind state for a host pc occurring in
26
int bit;
32
+ * translated code. If @host_pc is not in translated code, the
27
TCGv_vec disj, conj;
33
+ * function returns false; otherwise @data is loaded.
28
34
+ * This is the same unwind info as given to restore_state_to_opc.
29
- disj = tcg_const_zeros_vec_matching(t);
35
+ */
30
conj = tcg_temp_new_vec_matching(t);
36
+bool cpu_unwind_state_data(CPUState *cpu, uintptr_t host_pc, uint64_t *data);
31
+ disj = tcg_temp_new_vec_matching(t);
37
+
32
+ tcg_gen_dupi_vec(vece, disj, 0);
38
+/**
33
39
+ * cpu_restore_state:
34
/* Iterate over set bits from the least to the most significant bit */
40
+ * @cpu: the cpu context
35
while (imm) {
41
+ * @host_pc: the host pc within the translation
36
@@ -XXX,XX +XXX,XX @@ static bool trans_XXEVAL(DisasContext *ctx, arg_8RR_XX4_imm *a)
42
+ * @return: true if state was restored, false otherwise
37
43
+ *
38
/* Equivalent functions that can be implemented with a single gen_gvec */
44
+ * Attempt to restore the state for a fault occurring in translated
39
switch (a->imm) {
45
+ * code. If @host_pc is not in translated code no state is
40
- case 0b00000000: /* true */
46
+ * restored and the function returns false.
41
+ case 0b00000000: /* false */
47
+ */
42
set_cpu_vsr(a->xt, tcg_constant_i64(0), true);
48
+bool cpu_restore_state(CPUState *cpu, uintptr_t host_pc);
43
set_cpu_vsr(a->xt, tcg_constant_i64(0), false);
49
+
44
break;
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
--
45
--
99
2.34.1
46
2.34.1
100
47
101
48
diff view generated by jsdifflib
1
From: Philippe Mathieu-Daudé <philmd@linaro.org>
1
All remaining uses are strictly read-only.
2
2
3
In commit 00c9a5c2c3 ("accel/tcg: Restrict 'qapi-commands-machine.h'
3
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
4
to system emulation") we moved the definition to accel/tcg/ which is
4
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
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>
5
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
11
---
6
---
12
accel/tcg/internal.h | 2 ++
7
target/ppc/translate/vsx-impl.c.inc | 28 ++++++++++++++--------------
13
include/exec/cpu-all.h | 5 -----
8
1 file changed, 14 insertions(+), 14 deletions(-)
14
2 files changed, 2 insertions(+), 5 deletions(-)
15
9
16
diff --git a/accel/tcg/internal.h b/accel/tcg/internal.h
10
diff --git a/target/ppc/translate/vsx-impl.c.inc b/target/ppc/translate/vsx-impl.c.inc
17
index XXXXXXX..XXXXXXX 100644
11
index XXXXXXX..XXXXXXX 100644
18
--- a/accel/tcg/internal.h
12
--- a/target/ppc/translate/vsx-impl.c.inc
19
+++ b/accel/tcg/internal.h
13
+++ b/target/ppc/translate/vsx-impl.c.inc
20
@@ -XXX,XX +XXX,XX @@ static inline bool cpu_in_serial_context(CPUState *cs)
14
@@ -XXX,XX +XXX,XX @@ static void gen_lxvdsx(DisasContext *ctx)
21
extern int64_t max_delay;
15
static void gen_bswap16x8(TCGv_i64 outh, TCGv_i64 outl,
22
extern int64_t max_advance;
16
TCGv_i64 inh, TCGv_i64 inl)
23
17
{
24
+void dump_exec_info(GString *buf);
18
- TCGv_i64 mask = tcg_const_i64(0x00FF00FF00FF00FF);
25
+
19
+ TCGv_i64 mask = tcg_constant_i64(0x00FF00FF00FF00FF);
26
extern bool one_insn_per_tb;
20
TCGv_i64 t0 = tcg_temp_new_i64();
27
21
TCGv_i64 t1 = tcg_temp_new_i64();
28
/**
22
29
diff --git a/include/exec/cpu-all.h b/include/exec/cpu-all.h
23
@@ -XXX,XX +XXX,XX @@ static bool trans_XSCVQPDP(DisasContext *ctx, arg_X_tb_rc *a)
30
index XXXXXXX..XXXXXXX 100644
24
REQUIRE_INSNS_FLAGS2(ctx, ISA300);
31
--- a/include/exec/cpu-all.h
25
REQUIRE_VSX(ctx);
32
+++ b/include/exec/cpu-all.h
26
33
@@ -XXX,XX +XXX,XX @@ static inline bool tlb_hit(uint64_t tlb_addr, vaddr addr)
27
- ro = tcg_const_i32(a->rc);
34
return tlb_hit_page(tlb_addr, addr & TARGET_PAGE_MASK);
28
+ ro = tcg_constant_i32(a->rc);
29
30
xt = gen_avr_ptr(a->rt);
31
xb = gen_avr_ptr(a->rb);
32
@@ -XXX,XX +XXX,XX @@ static void gen_##name(DisasContext *ctx) \
33
gen_exception(ctx, POWERPC_EXCP_VSXU); \
34
return; \
35
} \
36
- opc = tcg_const_i32(ctx->opcode); \
37
+ opc = tcg_constant_i32(ctx->opcode); \
38
gen_helper_##name(cpu_env, opc); \
35
}
39
}
36
40
37
-#ifdef CONFIG_TCG
41
@@ -XXX,XX +XXX,XX @@ static void gen_##name(DisasContext *ctx) \
38
-/* accel/tcg/translate-all.c */
42
gen_exception(ctx, POWERPC_EXCP_VSXU); \
39
-void dump_exec_info(GString *buf);
43
return; \
40
-#endif /* CONFIG_TCG */
44
} \
41
-
45
- opc = tcg_const_i32(ctx->opcode); \
42
#endif /* !CONFIG_USER_ONLY */
46
+ opc = tcg_constant_i32(ctx->opcode); \
43
47
xa = gen_vsr_ptr(xA(ctx->opcode)); \
44
/* accel/tcg/cpu-exec.c */
48
xb = gen_vsr_ptr(xB(ctx->opcode)); \
49
gen_helper_##name(cpu_env, opc, xa, xb); \
50
@@ -XXX,XX +XXX,XX @@ static void gen_##name(DisasContext *ctx) \
51
gen_exception(ctx, POWERPC_EXCP_VSXU); \
52
return; \
53
} \
54
- opc = tcg_const_i32(ctx->opcode); \
55
+ opc = tcg_constant_i32(ctx->opcode); \
56
xb = gen_vsr_ptr(xB(ctx->opcode)); \
57
gen_helper_##name(cpu_env, opc, xb); \
58
}
59
@@ -XXX,XX +XXX,XX @@ static void gen_##name(DisasContext *ctx) \
60
gen_exception(ctx, POWERPC_EXCP_VSXU); \
61
return; \
62
} \
63
- opc = tcg_const_i32(ctx->opcode); \
64
+ opc = tcg_constant_i32(ctx->opcode); \
65
xt = gen_vsr_ptr(rD(ctx->opcode) + 32); \
66
xa = gen_vsr_ptr(rA(ctx->opcode) + 32); \
67
xb = gen_vsr_ptr(rB(ctx->opcode) + 32); \
68
@@ -XXX,XX +XXX,XX @@ static void gen_##name(DisasContext *ctx) \
69
gen_exception(ctx, POWERPC_EXCP_VSXU); \
70
return; \
71
} \
72
- opc = tcg_const_i32(ctx->opcode); \
73
+ opc = tcg_constant_i32(ctx->opcode); \
74
xt = gen_vsr_ptr(rD(ctx->opcode) + 32); \
75
xb = gen_vsr_ptr(rB(ctx->opcode) + 32); \
76
gen_helper_##name(cpu_env, opc, xt, xb); \
77
@@ -XXX,XX +XXX,XX @@ static void gen_##name(DisasContext *ctx) \
78
gen_exception(ctx, POWERPC_EXCP_VSXU); \
79
return; \
80
} \
81
- opc = tcg_const_i32(ctx->opcode); \
82
+ opc = tcg_constant_i32(ctx->opcode); \
83
xa = gen_vsr_ptr(rA(ctx->opcode) + 32); \
84
xb = gen_vsr_ptr(rB(ctx->opcode) + 32); \
85
gen_helper_##name(cpu_env, opc, xa, xb); \
86
@@ -XXX,XX +XXX,XX @@ static void gen_xsxsigdp(DisasContext *ctx)
87
exp = tcg_temp_new_i64();
88
t0 = tcg_temp_new_i64();
89
t1 = tcg_temp_new_i64();
90
- zr = tcg_const_i64(0);
91
- nan = tcg_const_i64(2047);
92
+ zr = tcg_constant_i64(0);
93
+ nan = tcg_constant_i64(2047);
94
95
get_cpu_vsr(t1, xB(ctx->opcode), true);
96
tcg_gen_extract_i64(exp, t1, 52, 11);
97
@@ -XXX,XX +XXX,XX @@ static void gen_xsxsigqp(DisasContext *ctx)
98
get_cpu_vsr(xbl, rB(ctx->opcode) + 32, false);
99
exp = tcg_temp_new_i64();
100
t0 = tcg_temp_new_i64();
101
- zr = tcg_const_i64(0);
102
- nan = tcg_const_i64(32767);
103
+ zr = tcg_constant_i64(0);
104
+ nan = tcg_constant_i64(32767);
105
106
tcg_gen_extract_i64(exp, xbh, 48, 15);
107
tcg_gen_movi_i64(t0, 0x0001000000000000);
108
@@ -XXX,XX +XXX,XX @@ static void gen_xvxsigdp(DisasContext *ctx)
109
get_cpu_vsr(xbl, xB(ctx->opcode), false);
110
exp = tcg_temp_new_i64();
111
t0 = tcg_temp_new_i64();
112
- zr = tcg_const_i64(0);
113
- nan = tcg_const_i64(2047);
114
+ zr = tcg_constant_i64(0);
115
+ nan = tcg_constant_i64(2047);
116
117
tcg_gen_extract_i64(exp, xbh, 52, 11);
118
tcg_gen_movi_i64(t0, 0x0010000000000000);
45
--
119
--
46
2.34.1
120
2.34.1
47
121
48
122
diff view generated by jsdifflib
1
Verify that the distance between CPUNegativeOffsetState and
1
All uses are strictly read-only.
2
CPUArchState is no greater than any alignment requirements.
3
2
4
Reviewed-by: Anton Johansson <anjo@rev.ng>
3
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
4
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
5
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
5
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6
---
6
---
7
include/exec/cpu-all.h | 6 ++++++
7
target/ppc/translate/fp-impl.c.inc | 26 ++++++++++++--------------
8
1 file changed, 6 insertions(+)
8
1 file changed, 12 insertions(+), 14 deletions(-)
9
9
10
diff --git a/include/exec/cpu-all.h b/include/exec/cpu-all.h
10
diff --git a/target/ppc/translate/fp-impl.c.inc b/target/ppc/translate/fp-impl.c.inc
11
index XXXXXXX..XXXXXXX 100644
11
index XXXXXXX..XXXXXXX 100644
12
--- a/include/exec/cpu-all.h
12
--- a/target/ppc/translate/fp-impl.c.inc
13
+++ b/include/exec/cpu-all.h
13
+++ b/target/ppc/translate/fp-impl.c.inc
14
@@ -XXX,XX +XXX,XX @@ static inline CPUState *env_cpu(CPUArchState *env)
14
@@ -XXX,XX +XXX,XX @@ static void gen_fcmpo(DisasContext *ctx)
15
return &env_archcpu(env)->parent_obj;
15
t0 = tcg_temp_new_i64();
16
t1 = tcg_temp_new_i64();
17
gen_reset_fpstatus();
18
- crf = tcg_const_i32(crfD(ctx->opcode));
19
+ crf = tcg_constant_i32(crfD(ctx->opcode));
20
get_fpr(t0, rA(ctx->opcode));
21
get_fpr(t1, rB(ctx->opcode));
22
gen_helper_fcmpo(cpu_env, t0, t1, crf);
23
@@ -XXX,XX +XXX,XX @@ static void gen_fcmpu(DisasContext *ctx)
24
t0 = tcg_temp_new_i64();
25
t1 = tcg_temp_new_i64();
26
gen_reset_fpstatus();
27
- crf = tcg_const_i32(crfD(ctx->opcode));
28
+ crf = tcg_constant_i32(crfD(ctx->opcode));
29
get_fpr(t0, rA(ctx->opcode));
30
get_fpr(t1, rB(ctx->opcode));
31
gen_helper_fcmpu(cpu_env, t0, t1, crf);
32
@@ -XXX,XX +XXX,XX @@ static void gen_mcrfs(DisasContext *ctx)
33
tcg_gen_andi_i64(tnew_fpscr, tnew_fpscr,
34
~((0xF << shift) & FP_EX_CLEAR_BITS));
35
/* FEX and VX need to be updated, so don't set fpscr directly */
36
- tmask = tcg_const_i32(1 << nibble);
37
+ tmask = tcg_constant_i32(1 << nibble);
38
gen_helper_store_fpscr(cpu_env, tnew_fpscr, tmask);
16
}
39
}
17
40
18
+/*
41
@@ -XXX,XX +XXX,XX @@ static void gen_mtfsb0(DisasContext *ctx)
19
+ * Validate placement of CPUNegativeOffsetState.
42
crb = 31 - crbD(ctx->opcode);
20
+ */
43
gen_reset_fpstatus();
21
+QEMU_BUILD_BUG_ON(offsetof(ArchCPU, env) - offsetof(ArchCPU, neg) >=
44
if (likely(crb != FPSCR_FEX && crb != FPSCR_VX)) {
22
+ sizeof(CPUNegativeOffsetState) + __alignof(CPUArchState));
45
- TCGv_i32 t0;
23
+
46
- t0 = tcg_const_i32(crb);
24
/**
47
- gen_helper_fpscr_clrbit(cpu_env, t0);
25
* env_neg(env)
48
+ gen_helper_fpscr_clrbit(cpu_env, tcg_constant_i32(crb));
26
* @env: The architecture environment
49
}
50
if (unlikely(Rc(ctx->opcode) != 0)) {
51
tcg_gen_trunc_tl_i32(cpu_crf[1], cpu_fpscr);
52
@@ -XXX,XX +XXX,XX @@ static void gen_mtfsb1(DisasContext *ctx)
53
crb = 31 - crbD(ctx->opcode);
54
/* XXX: we pretend we can only do IEEE floating-point computations */
55
if (likely(crb != FPSCR_FEX && crb != FPSCR_VX && crb != FPSCR_NI)) {
56
- TCGv_i32 t0;
57
- t0 = tcg_const_i32(crb);
58
- gen_helper_fpscr_setbit(cpu_env, t0);
59
+ gen_helper_fpscr_setbit(cpu_env, tcg_constant_i32(crb));
60
}
61
if (unlikely(Rc(ctx->opcode) != 0)) {
62
tcg_gen_trunc_tl_i32(cpu_crf[1], cpu_fpscr);
63
@@ -XXX,XX +XXX,XX @@ static void gen_mtfsf(DisasContext *ctx)
64
gen_inval_exception(ctx, POWERPC_EXCP_INVAL_INVAL);
65
return;
66
}
67
- if (l) {
68
- t0 = tcg_const_i32((ctx->insns_flags2 & PPC2_ISA205) ? 0xffff : 0xff);
69
+ if (!l) {
70
+ t0 = tcg_constant_i32(flm << (w * 8));
71
+ } else if (ctx->insns_flags2 & PPC2_ISA205) {
72
+ t0 = tcg_constant_i32(0xffff);
73
} else {
74
- t0 = tcg_const_i32(flm << (w * 8));
75
+ t0 = tcg_constant_i32(0xff);
76
}
77
t1 = tcg_temp_new_i64();
78
get_fpr(t1, rB(ctx->opcode));
79
@@ -XXX,XX +XXX,XX @@ static void gen_mtfsfi(DisasContext *ctx)
80
return;
81
}
82
sh = (8 * w) + 7 - bf;
83
- t0 = tcg_const_i64(((uint64_t)FPIMM(ctx->opcode)) << (4 * sh));
84
- t1 = tcg_const_i32(1 << sh);
85
+ t0 = tcg_constant_i64(((uint64_t)FPIMM(ctx->opcode)) << (4 * sh));
86
+ t1 = tcg_constant_i32(1 << sh);
87
gen_helper_store_fpscr(cpu_env, t0, t1);
88
if (unlikely(Rc(ctx->opcode) != 0)) {
89
tcg_gen_trunc_tl_i32(cpu_crf[1], cpu_fpscr);
27
--
90
--
28
2.34.1
91
2.34.1
92
93
diff view generated by jsdifflib
1
From: Philippe Mathieu-Daudé <philmd@linaro.org>
1
All uses are strictly read-only.
2
2
3
accel-blocker.c is not target specific, move it to system_ss[].
3
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
4
4
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
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>
5
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
9
---
6
---
10
accel/meson.build | 4 ++--
7
target/ppc/power8-pmu-regs.c.inc | 4 ++--
11
1 file changed, 2 insertions(+), 2 deletions(-)
8
1 file changed, 2 insertions(+), 2 deletions(-)
12
9
13
diff --git a/accel/meson.build b/accel/meson.build
10
diff --git a/target/ppc/power8-pmu-regs.c.inc b/target/ppc/power8-pmu-regs.c.inc
14
index XXXXXXX..XXXXXXX 100644
11
index XXXXXXX..XXXXXXX 100644
15
--- a/accel/meson.build
12
--- a/target/ppc/power8-pmu-regs.c.inc
16
+++ b/accel/meson.build
13
+++ b/target/ppc/power8-pmu-regs.c.inc
17
@@ -XXX,XX +XXX,XX @@
14
@@ -XXX,XX +XXX,XX @@ void spr_write_MMCR2_ureg(DisasContext *ctx, int sprn, int gprn)
18
-specific_ss.add(files('accel-common.c', 'accel-blocker.c'))
15
19
-system_ss.add(files('accel-softmmu.c'))
16
void spr_read_PMC(DisasContext *ctx, int gprn, int sprn)
20
+specific_ss.add(files('accel-common.c'))
17
{
21
+system_ss.add(files('accel-softmmu.c', 'accel-blocker.c'))
18
- TCGv_i32 t_sprn = tcg_const_i32(sprn);
22
user_ss.add(files('accel-user.c'))
19
+ TCGv_i32 t_sprn = tcg_constant_i32(sprn);
23
20
24
subdir('tcg')
21
gen_icount_io_start(ctx);
22
gen_helper_read_pmc(cpu_gpr[gprn], cpu_env, t_sprn);
23
@@ -XXX,XX +XXX,XX @@ void spr_read_PMC56_ureg(DisasContext *ctx, int gprn, int sprn)
24
25
void spr_write_PMC(DisasContext *ctx, int sprn, int gprn)
26
{
27
- TCGv_i32 t_sprn = tcg_const_i32(sprn);
28
+ TCGv_i32 t_sprn = tcg_constant_i32(sprn);
29
30
gen_icount_io_start(ctx);
31
gen_helper_store_pmc(cpu_env, t_sprn, cpu_gpr[gprn]);
25
--
32
--
26
2.34.1
33
2.34.1
27
34
28
35
diff view generated by jsdifflib
1
Now that there is no padding between CPUNegativeOffsetState
1
Compute all carry bits in parallel instead of a loop.
2
and CPUArchState, this value is constant across all targets.
3
2
4
Reviewed-by: Anton Johansson <anjo@rev.ng>
3
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
5
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
4
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6
---
5
---
7
include/tcg/tcg.h | 1 -
6
target/ppc/translate/fixedpoint-impl.c.inc | 44 +++++++++++-----------
8
accel/tcg/translate-all.c | 2 --
7
1 file changed, 23 insertions(+), 21 deletions(-)
9
tcg/tcg.c | 15 +++++++++------
10
3 files changed, 9 insertions(+), 9 deletions(-)
11
8
12
diff --git a/include/tcg/tcg.h b/include/tcg/tcg.h
9
diff --git a/target/ppc/translate/fixedpoint-impl.c.inc b/target/ppc/translate/fixedpoint-impl.c.inc
13
index XXXXXXX..XXXXXXX 100644
10
index XXXXXXX..XXXXXXX 100644
14
--- a/include/tcg/tcg.h
11
--- a/target/ppc/translate/fixedpoint-impl.c.inc
15
+++ b/include/tcg/tcg.h
12
+++ b/target/ppc/translate/fixedpoint-impl.c.inc
16
@@ -XXX,XX +XXX,XX @@ struct TCGContext {
13
@@ -XXX,XX +XXX,XX @@ static bool trans_PEXTD(DisasContext *ctx, arg_X *a)
17
TCGType addr_type; /* TCG_TYPE_I32 or TCG_TYPE_I64 */
14
18
15
static bool trans_ADDG6S(DisasContext *ctx, arg_X *a)
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
{
16
{
45
- return s->tlb_fast_offset + which * sizeof(CPUTLBDescFast);
17
- const uint64_t carry_bits = 0x1111111111111111ULL;
46
+ return (offsetof(CPUNegativeOffsetState, tlb.f[which]) -
18
- TCGv t0, t1, carry, zero = tcg_constant_tl(0);
47
+ sizeof(CPUNegativeOffsetState));
19
+ const target_ulong carry_bits = (target_ulong)-1 / 0xf;
20
+ TCGv in1, in2, carryl, carryh, tmp;
21
+ TCGv zero = tcg_constant_tl(0);
22
23
REQUIRE_INSNS_FLAGS2(ctx, BCDA_ISA206);
24
25
- t0 = tcg_temp_new();
26
- t1 = tcg_const_tl(0);
27
- carry = tcg_const_tl(0);
28
+ in1 = cpu_gpr[a->ra];
29
+ in2 = cpu_gpr[a->rb];
30
+ tmp = tcg_temp_new();
31
+ carryl = tcg_temp_new();
32
+ carryh = tcg_temp_new();
33
34
- for (int i = 0; i < 16; i++) {
35
- tcg_gen_shri_tl(t0, cpu_gpr[a->ra], i * 4);
36
- tcg_gen_andi_tl(t0, t0, 0xf);
37
- tcg_gen_add_tl(t1, t1, t0);
38
+ /* Addition with carry. */
39
+ tcg_gen_add2_tl(carryl, carryh, in1, zero, in2, zero);
40
+ /* Addition without carry. */
41
+ tcg_gen_xor_tl(tmp, in1, in2);
42
+ /* Difference between the two is carry in to each bit. */
43
+ tcg_gen_xor_tl(carryl, carryl, tmp);
44
45
- tcg_gen_shri_tl(t0, cpu_gpr[a->rb], i * 4);
46
- tcg_gen_andi_tl(t0, t0, 0xf);
47
- tcg_gen_add_tl(t1, t1, t0);
48
+ /*
49
+ * The carry-out that we're looking for is the carry-in to
50
+ * the next nibble. Shift the double-word down one nibble,
51
+ * which puts all of the bits back into one word.
52
+ */
53
+ tcg_gen_extract2_tl(carryl, carryl, carryh, 4);
54
55
- tcg_gen_andi_tl(t1, t1, 0x10);
56
- tcg_gen_setcond_tl(TCG_COND_NE, t1, t1, zero);
57
-
58
- tcg_gen_shli_tl(t0, t1, i * 4);
59
- tcg_gen_or_tl(carry, carry, t0);
60
- }
61
-
62
- tcg_gen_xori_tl(carry, carry, (target_long)carry_bits);
63
- tcg_gen_muli_tl(cpu_gpr[a->rt], carry, 6);
64
+ /* Invert, isolate the carry bits, and produce 6's. */
65
+ tcg_gen_andc_tl(carryl, tcg_constant_tl(carry_bits), carryl);
66
+ tcg_gen_muli_tl(cpu_gpr[a->rt], carryl, 6);
67
return true;
48
}
68
}
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
69
77
--
70
--
78
2.34.1
71
2.34.1
diff view generated by jsdifflib
1
Reviewed-by: Anton Johansson <anjo@rev.ng>
1
Fix incorrect read from rD.
2
Avoid adding 0 when rA == 0.
3
4
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
2
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
5
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
3
---
6
---
4
include/exec/cpu-all.h | 1 -
7
target/ppc/translate.c | 6 ++----
5
include/hw/core/cpu.h | 9 ++++++---
8
1 file changed, 2 insertions(+), 4 deletions(-)
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(-)
63
9
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
10
diff --git a/target/ppc/translate.c b/target/ppc/translate.c
1446
index XXXXXXX..XXXXXXX 100644
11
index XXXXXXX..XXXXXXX 100644
1447
--- a/target/ppc/translate.c
12
--- a/target/ppc/translate.c
1448
+++ b/target/ppc/translate.c
13
+++ b/target/ppc/translate.c
1449
@@ -XXX,XX +XXX,XX @@ static bool decode_legacy(PowerPCCPU *cpu, DisasContext *ctx, uint32_t insn)
14
@@ -XXX,XX +XXX,XX @@ static void gen_tlbsx_booke206(DisasContext *ctx)
1450
static void ppc_tr_init_disas_context(DisasContextBase *dcbase, CPUState *cs)
15
CHK_SV(ctx);
1451
{
16
if (rA(ctx->opcode)) {
1452
DisasContext *ctx = container_of(dcbase, DisasContext, base);
17
t0 = tcg_temp_new();
1453
- CPUPPCState *env = cs->env_ptr;
18
- tcg_gen_mov_tl(t0, cpu_gpr[rD(ctx->opcode)]);
1454
+ CPUPPCState *env = cpu_env(cs);
19
+ tcg_gen_add_tl(t0, cpu_gpr[rA(ctx->opcode)], cpu_gpr[rB(ctx->opcode)]);
1455
uint32_t hflags = ctx->base.tb->flags;
20
} else {
1456
21
- t0 = tcg_const_tl(0);
1457
ctx->spr_cb = env->spr_cb;
22
+ t0 = cpu_gpr[rB(ctx->opcode)];
1458
@@ -XXX,XX +XXX,XX @@ static void ppc_tr_translate_insn(DisasContextBase *dcbase, CPUState *cs)
23
}
1459
{
24
-
1460
DisasContext *ctx = container_of(dcbase, DisasContext, base);
25
- tcg_gen_add_tl(t0, t0, cpu_gpr[rB(ctx->opcode)]);
1461
PowerPCCPU *cpu = POWERPC_CPU(cs);
26
gen_helper_booke206_tlbsx(cpu_env, t0);
1462
- CPUPPCState *env = cs->env_ptr;
27
#endif /* defined(CONFIG_USER_ONLY) */
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
}
28
}
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
--
29
--
1656
2.34.1
30
2.34.1
diff view generated by jsdifflib
1
From: Philippe Mathieu-Daudé <philmd@linaro.org>
1
All remaining uses are strictly read-only.
2
2
3
We use the '*fn' suffix for handlers, this is a public method.
3
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
4
Drop the suffix.
4
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
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>
5
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
10
---
6
---
11
include/qemu/accel.h | 4 ++--
7
target/ppc/translate.c | 142 +++++++++++++++++++++--------------------
12
accel/accel-common.c | 2 +-
8
1 file changed, 72 insertions(+), 70 deletions(-)
13
cpu.c | 2 +-
14
target/i386/kvm/kvm-cpu.c | 2 +-
15
4 files changed, 5 insertions(+), 5 deletions(-)
16
9
17
diff --git a/include/qemu/accel.h b/include/qemu/accel.h
10
diff --git a/target/ppc/translate.c b/target/ppc/translate.c
18
index XXXXXXX..XXXXXXX 100644
11
index XXXXXXX..XXXXXXX 100644
19
--- a/include/qemu/accel.h
12
--- a/target/ppc/translate.c
20
+++ b/include/qemu/accel.h
13
+++ b/target/ppc/translate.c
21
@@ -XXX,XX +XXX,XX @@ void accel_setup_post(MachineState *ms);
14
@@ -XXX,XX +XXX,XX @@ static void gen_exception_err(DisasContext *ctx, uint32_t excp, uint32_t error)
22
void accel_cpu_instance_init(CPUState *cpu);
15
* faulting instruction
23
16
*/
24
/**
17
gen_update_nip(ctx, ctx->cia);
25
- * accel_cpu_realizefn:
18
- t0 = tcg_const_i32(excp);
26
+ * accel_cpu_realize:
19
- t1 = tcg_const_i32(error);
27
* @cpu: The CPU that needs to call accel-specific cpu realization.
20
+ t0 = tcg_constant_i32(excp);
28
* @errp: currently unused.
21
+ t1 = tcg_constant_i32(error);
29
*/
22
gen_helper_raise_exception_err(cpu_env, t0, t1);
30
-bool accel_cpu_realizefn(CPUState *cpu, Error **errp);
23
ctx->base.is_jmp = DISAS_NORETURN;
31
+bool accel_cpu_realize(CPUState *cpu, Error **errp);
24
}
32
25
@@ -XXX,XX +XXX,XX @@ static void gen_exception(DisasContext *ctx, uint32_t excp)
33
/**
26
* faulting instruction
34
* accel_supported_gdbstub_sstep_flags:
27
*/
35
diff --git a/accel/accel-common.c b/accel/accel-common.c
28
gen_update_nip(ctx, ctx->cia);
36
index XXXXXXX..XXXXXXX 100644
29
- t0 = tcg_const_i32(excp);
37
--- a/accel/accel-common.c
30
+ t0 = tcg_constant_i32(excp);
38
+++ b/accel/accel-common.c
31
gen_helper_raise_exception(cpu_env, t0);
39
@@ -XXX,XX +XXX,XX @@ void accel_cpu_instance_init(CPUState *cpu)
32
ctx->base.is_jmp = DISAS_NORETURN;
40
}
33
}
41
}
34
@@ -XXX,XX +XXX,XX @@ static void gen_exception_nip(DisasContext *ctx, uint32_t excp,
42
35
TCGv_i32 t0;
43
-bool accel_cpu_realizefn(CPUState *cpu, Error **errp)
36
44
+bool accel_cpu_realize(CPUState *cpu, Error **errp)
37
gen_update_nip(ctx, nip);
45
{
38
- t0 = tcg_const_i32(excp);
46
CPUClass *cc = CPU_GET_CLASS(cpu);
39
+ t0 = tcg_constant_i32(excp);
47
40
gen_helper_raise_exception(cpu_env, t0);
48
diff --git a/cpu.c b/cpu.c
41
ctx->base.is_jmp = DISAS_NORETURN;
49
index XXXXXXX..XXXXXXX 100644
42
}
50
--- a/cpu.c
43
@@ -XXX,XX +XXX,XX @@ void spr_noaccess(DisasContext *ctx, int gprn, int sprn)
51
+++ b/cpu.c
44
static void spr_load_dump_spr(int sprn)
52
@@ -XXX,XX +XXX,XX @@ void cpu_exec_realizefn(CPUState *cpu, Error **errp)
45
{
53
/* cache the cpu class for the hotpath */
46
#ifdef PPC_DUMP_SPR_ACCESSES
54
cpu->cc = CPU_GET_CLASS(cpu);
47
- TCGv_i32 t0 = tcg_const_i32(sprn);
55
48
+ TCGv_i32 t0 = tcg_constant_i32(sprn);
56
- if (!accel_cpu_realizefn(cpu, errp)) {
49
gen_helper_load_dump_spr(cpu_env, t0);
57
+ if (!accel_cpu_realize(cpu, errp)) {
50
#endif
51
}
52
@@ -XXX,XX +XXX,XX @@ void spr_read_generic(DisasContext *ctx, int gprn, int sprn)
53
static void spr_store_dump_spr(int sprn)
54
{
55
#ifdef PPC_DUMP_SPR_ACCESSES
56
- TCGv_i32 t0 = tcg_const_i32(sprn);
57
+ TCGv_i32 t0 = tcg_constant_i32(sprn);
58
gen_helper_store_dump_spr(cpu_env, t0);
59
#endif
60
}
61
@@ -XXX,XX +XXX,XX @@ void spr_read_ibat_h(DisasContext *ctx, int gprn, int sprn)
62
63
void spr_write_ibatu(DisasContext *ctx, int sprn, int gprn)
64
{
65
- TCGv_i32 t0 = tcg_const_i32((sprn - SPR_IBAT0U) / 2);
66
+ TCGv_i32 t0 = tcg_constant_i32((sprn - SPR_IBAT0U) / 2);
67
gen_helper_store_ibatu(cpu_env, t0, cpu_gpr[gprn]);
68
}
69
70
void spr_write_ibatu_h(DisasContext *ctx, int sprn, int gprn)
71
{
72
- TCGv_i32 t0 = tcg_const_i32(((sprn - SPR_IBAT4U) / 2) + 4);
73
+ TCGv_i32 t0 = tcg_constant_i32(((sprn - SPR_IBAT4U) / 2) + 4);
74
gen_helper_store_ibatu(cpu_env, t0, cpu_gpr[gprn]);
75
}
76
77
void spr_write_ibatl(DisasContext *ctx, int sprn, int gprn)
78
{
79
- TCGv_i32 t0 = tcg_const_i32((sprn - SPR_IBAT0L) / 2);
80
+ TCGv_i32 t0 = tcg_constant_i32((sprn - SPR_IBAT0L) / 2);
81
gen_helper_store_ibatl(cpu_env, t0, cpu_gpr[gprn]);
82
}
83
84
void spr_write_ibatl_h(DisasContext *ctx, int sprn, int gprn)
85
{
86
- TCGv_i32 t0 = tcg_const_i32(((sprn - SPR_IBAT4L) / 2) + 4);
87
+ TCGv_i32 t0 = tcg_constant_i32(((sprn - SPR_IBAT4L) / 2) + 4);
88
gen_helper_store_ibatl(cpu_env, t0, cpu_gpr[gprn]);
89
}
90
91
@@ -XXX,XX +XXX,XX @@ void spr_read_dbat_h(DisasContext *ctx, int gprn, int sprn)
92
93
void spr_write_dbatu(DisasContext *ctx, int sprn, int gprn)
94
{
95
- TCGv_i32 t0 = tcg_const_i32((sprn - SPR_DBAT0U) / 2);
96
+ TCGv_i32 t0 = tcg_constant_i32((sprn - SPR_DBAT0U) / 2);
97
gen_helper_store_dbatu(cpu_env, t0, cpu_gpr[gprn]);
98
}
99
100
void spr_write_dbatu_h(DisasContext *ctx, int sprn, int gprn)
101
{
102
- TCGv_i32 t0 = tcg_const_i32(((sprn - SPR_DBAT4U) / 2) + 4);
103
+ TCGv_i32 t0 = tcg_constant_i32(((sprn - SPR_DBAT4U) / 2) + 4);
104
gen_helper_store_dbatu(cpu_env, t0, cpu_gpr[gprn]);
105
}
106
107
void spr_write_dbatl(DisasContext *ctx, int sprn, int gprn)
108
{
109
- TCGv_i32 t0 = tcg_const_i32((sprn - SPR_DBAT0L) / 2);
110
+ TCGv_i32 t0 = tcg_constant_i32((sprn - SPR_DBAT0L) / 2);
111
gen_helper_store_dbatl(cpu_env, t0, cpu_gpr[gprn]);
112
}
113
114
void spr_write_dbatl_h(DisasContext *ctx, int sprn, int gprn)
115
{
116
- TCGv_i32 t0 = tcg_const_i32(((sprn - SPR_DBAT4L) / 2) + 4);
117
+ TCGv_i32 t0 = tcg_constant_i32(((sprn - SPR_DBAT4L) / 2) + 4);
118
gen_helper_store_dbatl(cpu_env, t0, cpu_gpr[gprn]);
119
}
120
121
@@ -XXX,XX +XXX,XX @@ void spr_write_booke206_mmucsr0(DisasContext *ctx, int sprn, int gprn)
122
123
void spr_write_booke_pid(DisasContext *ctx, int sprn, int gprn)
124
{
125
- TCGv_i32 t0 = tcg_const_i32(sprn);
126
+ TCGv_i32 t0 = tcg_constant_i32(sprn);
127
gen_helper_booke_setpid(cpu_env, t0, cpu_gpr[gprn]);
128
}
129
+
130
void spr_write_eplc(DisasContext *ctx, int sprn, int gprn)
131
{
132
gen_helper_booke_set_eplc(cpu_env, cpu_gpr[gprn]);
133
}
134
+
135
void spr_write_epsc(DisasContext *ctx, int sprn, int gprn)
136
{
137
gen_helper_booke_set_epsc(cpu_env, cpu_gpr[gprn]);
138
@@ -XXX,XX +XXX,XX @@ void spr_read_mas73(DisasContext *ctx, int gprn, int sprn)
139
static void gen_fscr_facility_check(DisasContext *ctx, int facility_sprn,
140
int bit, int sprn, int cause)
141
{
142
- TCGv_i32 t1 = tcg_const_i32(bit);
143
- TCGv_i32 t2 = tcg_const_i32(sprn);
144
- TCGv_i32 t3 = tcg_const_i32(cause);
145
+ TCGv_i32 t1 = tcg_constant_i32(bit);
146
+ TCGv_i32 t2 = tcg_constant_i32(sprn);
147
+ TCGv_i32 t3 = tcg_constant_i32(cause);
148
149
gen_helper_fscr_facility_check(cpu_env, t1, t2, t3);
150
}
151
@@ -XXX,XX +XXX,XX @@ static void gen_fscr_facility_check(DisasContext *ctx, int facility_sprn,
152
static void gen_msr_facility_check(DisasContext *ctx, int facility_sprn,
153
int bit, int sprn, int cause)
154
{
155
- TCGv_i32 t1 = tcg_const_i32(bit);
156
- TCGv_i32 t2 = tcg_const_i32(sprn);
157
- TCGv_i32 t3 = tcg_const_i32(cause);
158
+ TCGv_i32 t1 = tcg_constant_i32(bit);
159
+ TCGv_i32 t2 = tcg_constant_i32(sprn);
160
+ TCGv_i32 t3 = tcg_constant_i32(cause);
161
162
gen_helper_msr_facility_check(cpu_env, t1, t2, t3);
163
}
164
@@ -XXX,XX +XXX,XX @@ static inline void gen_op_cmp(TCGv arg0, TCGv arg1, int s, int crf)
165
166
static inline void gen_op_cmpi(TCGv arg0, target_ulong arg1, int s, int crf)
167
{
168
- TCGv t0 = tcg_const_tl(arg1);
169
+ TCGv t0 = tcg_constant_tl(arg1);
170
gen_op_cmp(arg0, t0, s, crf);
171
}
172
173
@@ -XXX,XX +XXX,XX @@ static inline void gen_op_cmp32(TCGv arg0, TCGv arg1, int s, int crf)
174
175
static inline void gen_op_cmpi32(TCGv arg0, target_ulong arg1, int s, int crf)
176
{
177
- TCGv t0 = tcg_const_tl(arg1);
178
+ TCGv t0 = tcg_constant_tl(arg1);
179
gen_op_cmp32(arg0, t0, s, crf);
180
}
181
182
@@ -XXX,XX +XXX,XX @@ static void gen_isel(DisasContext *ctx)
183
tcg_gen_extu_i32_tl(t0, cpu_crf[bi >> 2]);
184
tcg_gen_andi_tl(t0, t0, mask);
185
186
- zr = tcg_const_tl(0);
187
+ zr = tcg_constant_tl(0);
188
tcg_gen_movcond_tl(TCG_COND_NE, cpu_gpr[rD(ctx->opcode)], t0, zr,
189
rA(ctx->opcode) ? cpu_gpr[rA(ctx->opcode)] : zr,
190
cpu_gpr[rB(ctx->opcode)]);
191
@@ -XXX,XX +XXX,XX @@ static inline void gen_op_arith_add(DisasContext *ctx, TCGv ret, TCGv arg1,
192
tcg_gen_mov_tl(ca32, ca);
193
}
194
} else {
195
- TCGv zero = tcg_const_tl(0);
196
+ TCGv zero = tcg_constant_tl(0);
197
if (add_ca) {
198
tcg_gen_add2_tl(t0, ca, arg1, zero, ca, zero);
199
tcg_gen_add2_tl(t0, ca, t0, ca, arg2, zero);
200
@@ -XXX,XX +XXX,XX @@ static void glue(gen_, name)(DisasContext *ctx) \
201
add_ca, compute_ca, compute_ov) \
202
static void glue(gen_, name)(DisasContext *ctx) \
203
{ \
204
- TCGv t0 = tcg_const_tl(const_val); \
205
+ TCGv t0 = tcg_constant_tl(const_val); \
206
gen_op_arith_add(ctx, cpu_gpr[rD(ctx->opcode)], \
207
cpu_gpr[rA(ctx->opcode)], t0, \
208
ca, glue(ca, 32), \
209
@@ -XXX,XX +XXX,XX @@ GEN_INT_ARITH_ADD_CONST(addzeo, 0x16, 0, cpu_ca, 1, 1, 1)
210
/* addic addic.*/
211
static inline void gen_op_addic(DisasContext *ctx, bool compute_rc0)
212
{
213
- TCGv c = tcg_const_tl(SIMM(ctx->opcode));
214
+ TCGv c = tcg_constant_tl(SIMM(ctx->opcode));
215
gen_op_arith_add(ctx, cpu_gpr[rD(ctx->opcode)], cpu_gpr[rA(ctx->opcode)],
216
c, cpu_ca, cpu_ca32, 0, 1, 0, compute_rc0);
217
}
218
@@ -XXX,XX +XXX,XX @@ GEN_INT_ARITH_DIVW(divwo, 0x1F, 1, 1);
219
#define GEN_DIVE(name, hlpr, compute_ov) \
220
static void gen_##name(DisasContext *ctx) \
221
{ \
222
- TCGv_i32 t0 = tcg_const_i32(compute_ov); \
223
+ TCGv_i32 t0 = tcg_constant_i32(compute_ov); \
224
gen_helper_##hlpr(cpu_gpr[rD(ctx->opcode)], cpu_env, \
225
cpu_gpr[rA(ctx->opcode)], cpu_gpr[rB(ctx->opcode)], t0); \
226
if (unlikely(Rc(ctx->opcode) != 0)) { \
227
@@ -XXX,XX +XXX,XX @@ static inline void gen_op_arith_modw(DisasContext *ctx, TCGv ret, TCGv arg1,
228
tcg_gen_rem_i32(t3, t0, t1);
229
tcg_gen_ext_i32_tl(ret, t3);
230
} else {
231
- TCGv_i32 t2 = tcg_const_i32(1);
232
- TCGv_i32 t3 = tcg_const_i32(0);
233
+ TCGv_i32 t2 = tcg_constant_i32(1);
234
+ TCGv_i32 t3 = tcg_constant_i32(0);
235
tcg_gen_movcond_i32(TCG_COND_EQ, t1, t1, t3, t2, t1);
236
tcg_gen_remu_i32(t3, t0, t1);
237
tcg_gen_extu_i32_tl(ret, t3);
238
@@ -XXX,XX +XXX,XX @@ static inline void gen_op_arith_modd(DisasContext *ctx, TCGv ret, TCGv arg1,
239
tcg_gen_movcond_i64(TCG_COND_NE, t1, t2, t3, t2, t1);
240
tcg_gen_rem_i64(ret, t0, t1);
241
} else {
242
- TCGv_i64 t2 = tcg_const_i64(1);
243
- TCGv_i64 t3 = tcg_const_i64(0);
244
+ TCGv_i64 t2 = tcg_constant_i64(1);
245
+ TCGv_i64 t3 = tcg_constant_i64(0);
246
tcg_gen_movcond_i64(TCG_COND_EQ, t1, t1, t3, t2, t1);
247
tcg_gen_remu_i64(ret, t0, t1);
248
}
249
@@ -XXX,XX +XXX,XX @@ static inline void gen_op_arith_subf(DisasContext *ctx, TCGv ret, TCGv arg1,
250
} else if (add_ca) {
251
TCGv zero, inv1 = tcg_temp_new();
252
tcg_gen_not_tl(inv1, arg1);
253
- zero = tcg_const_tl(0);
254
+ zero = tcg_constant_tl(0);
255
tcg_gen_add2_tl(t0, cpu_ca, arg2, zero, cpu_ca, zero);
256
tcg_gen_add2_tl(t0, cpu_ca, t0, cpu_ca, inv1, zero);
257
gen_op_arith_compute_ca32(ctx, t0, inv1, arg2, cpu_ca32, 0);
258
@@ -XXX,XX +XXX,XX @@ static void glue(gen_, name)(DisasContext *ctx) \
259
add_ca, compute_ca, compute_ov) \
260
static void glue(gen_, name)(DisasContext *ctx) \
261
{ \
262
- TCGv t0 = tcg_const_tl(const_val); \
263
+ TCGv t0 = tcg_constant_tl(const_val); \
264
gen_op_arith_subf(ctx, cpu_gpr[rD(ctx->opcode)], \
265
cpu_gpr[rA(ctx->opcode)], t0, \
266
add_ca, compute_ca, compute_ov, Rc(ctx->opcode)); \
267
@@ -XXX,XX +XXX,XX @@ GEN_INT_ARITH_SUBF_CONST(subfzeo, 0x16, 0, 1, 1, 1)
268
/* subfic */
269
static void gen_subfic(DisasContext *ctx)
270
{
271
- TCGv c = tcg_const_tl(SIMM(ctx->opcode));
272
+ TCGv c = tcg_constant_tl(SIMM(ctx->opcode));
273
gen_op_arith_subf(ctx, cpu_gpr[rD(ctx->opcode)], cpu_gpr[rA(ctx->opcode)],
274
c, 0, 1, 0, 0);
275
}
276
@@ -XXX,XX +XXX,XX @@ static void gen_subfic(DisasContext *ctx)
277
/* neg neg. nego nego. */
278
static inline void gen_op_arith_neg(DisasContext *ctx, bool compute_ov)
279
{
280
- TCGv zero = tcg_const_tl(0);
281
+ TCGv zero = tcg_constant_tl(0);
282
gen_op_arith_subf(ctx, cpu_gpr[rD(ctx->opcode)], cpu_gpr[rA(ctx->opcode)],
283
zero, 0, 0, compute_ov, Rc(ctx->opcode));
284
}
285
@@ -XXX,XX +XXX,XX @@ GEN_LOGICAL2(nor, tcg_gen_nor_tl, 0x03, PPC_INTEGER);
286
#if defined(TARGET_PPC64) && !defined(CONFIG_USER_ONLY)
287
static void gen_pause(DisasContext *ctx)
288
{
289
- TCGv_i32 t0 = tcg_const_i32(0);
290
+ TCGv_i32 t0 = tcg_constant_i32(0);
291
tcg_gen_st_i32(t0, cpu_env,
292
-offsetof(PowerPCCPU, env) + offsetof(CPUState, halted));
293
294
@@ -XXX,XX +XXX,XX @@ static void gen_lmw(DisasContext *ctx)
295
}
296
gen_set_access_type(ctx, ACCESS_INT);
297
t0 = tcg_temp_new();
298
- t1 = tcg_const_i32(rD(ctx->opcode));
299
+ t1 = tcg_constant_i32(rD(ctx->opcode));
300
gen_addr_imm_index(ctx, t0, 0);
301
gen_helper_lmw(cpu_env, t0, t1);
302
}
303
@@ -XXX,XX +XXX,XX @@ static void gen_stmw(DisasContext *ctx)
304
}
305
gen_set_access_type(ctx, ACCESS_INT);
306
t0 = tcg_temp_new();
307
- t1 = tcg_const_i32(rS(ctx->opcode));
308
+ t1 = tcg_constant_i32(rS(ctx->opcode));
309
gen_addr_imm_index(ctx, t0, 0);
310
gen_helper_stmw(cpu_env, t0, t1);
311
}
312
@@ -XXX,XX +XXX,XX @@ static void gen_lswi(DisasContext *ctx)
313
gen_set_access_type(ctx, ACCESS_INT);
314
t0 = tcg_temp_new();
315
gen_addr_register(ctx, t0);
316
- t1 = tcg_const_i32(nb);
317
- t2 = tcg_const_i32(start);
318
+ t1 = tcg_constant_i32(nb);
319
+ t2 = tcg_constant_i32(start);
320
gen_helper_lsw(cpu_env, t0, t1, t2);
321
}
322
323
@@ -XXX,XX +XXX,XX @@ static void gen_lswx(DisasContext *ctx)
324
gen_set_access_type(ctx, ACCESS_INT);
325
t0 = tcg_temp_new();
326
gen_addr_reg_index(ctx, t0);
327
- t1 = tcg_const_i32(rD(ctx->opcode));
328
- t2 = tcg_const_i32(rA(ctx->opcode));
329
- t3 = tcg_const_i32(rB(ctx->opcode));
330
+ t1 = tcg_constant_i32(rD(ctx->opcode));
331
+ t2 = tcg_constant_i32(rA(ctx->opcode));
332
+ t3 = tcg_constant_i32(rB(ctx->opcode));
333
gen_helper_lswx(cpu_env, t0, t1, t2, t3);
334
}
335
336
@@ -XXX,XX +XXX,XX @@ static void gen_stswi(DisasContext *ctx)
337
if (nb == 0) {
338
nb = 32;
339
}
340
- t1 = tcg_const_i32(nb);
341
- t2 = tcg_const_i32(rS(ctx->opcode));
342
+ t1 = tcg_constant_i32(nb);
343
+ t2 = tcg_constant_i32(rS(ctx->opcode));
344
gen_helper_stsw(cpu_env, t0, t1, t2);
345
}
346
347
@@ -XXX,XX +XXX,XX @@ static void gen_stswx(DisasContext *ctx)
348
t1 = tcg_temp_new_i32();
349
tcg_gen_trunc_tl_i32(t1, cpu_xer);
350
tcg_gen_andi_i32(t1, t1, 0x7F);
351
- t2 = tcg_const_i32(rS(ctx->opcode));
352
+ t2 = tcg_constant_i32(rS(ctx->opcode));
353
gen_helper_stsw(cpu_env, t0, t1, t2);
354
}
355
356
@@ -XXX,XX +XXX,XX @@ static void gen_wait(DisasContext *ctx)
357
* to occur.
358
*/
359
if (wc == 0) {
360
- TCGv_i32 t0 = tcg_const_i32(1);
361
+ TCGv_i32 t0 = tcg_constant_i32(1);
362
tcg_gen_st_i32(t0, cpu_env,
363
-offsetof(PowerPCCPU, env) + offsetof(CPUState, halted));
364
/* Stop translation, as the CPU is supposed to sleep from now */
365
@@ -XXX,XX +XXX,XX @@ static void gen_doze(DisasContext *ctx)
366
TCGv_i32 t;
367
368
CHK_HV(ctx);
369
- t = tcg_const_i32(PPC_PM_DOZE);
370
+ t = tcg_constant_i32(PPC_PM_DOZE);
371
gen_helper_pminsn(cpu_env, t);
372
/* Stop translation, as the CPU is supposed to sleep from now */
373
gen_exception_nip(ctx, EXCP_HLT, ctx->base.pc_next);
374
@@ -XXX,XX +XXX,XX @@ static void gen_nap(DisasContext *ctx)
375
TCGv_i32 t;
376
377
CHK_HV(ctx);
378
- t = tcg_const_i32(PPC_PM_NAP);
379
+ t = tcg_constant_i32(PPC_PM_NAP);
380
gen_helper_pminsn(cpu_env, t);
381
/* Stop translation, as the CPU is supposed to sleep from now */
382
gen_exception_nip(ctx, EXCP_HLT, ctx->base.pc_next);
383
@@ -XXX,XX +XXX,XX @@ static void gen_stop(DisasContext *ctx)
384
TCGv_i32 t;
385
386
CHK_HV(ctx);
387
- t = tcg_const_i32(PPC_PM_STOP);
388
+ t = tcg_constant_i32(PPC_PM_STOP);
389
gen_helper_pminsn(cpu_env, t);
390
/* Stop translation, as the CPU is supposed to sleep from now */
391
gen_exception_nip(ctx, EXCP_HLT, ctx->base.pc_next);
392
@@ -XXX,XX +XXX,XX @@ static void gen_sleep(DisasContext *ctx)
393
TCGv_i32 t;
394
395
CHK_HV(ctx);
396
- t = tcg_const_i32(PPC_PM_SLEEP);
397
+ t = tcg_constant_i32(PPC_PM_SLEEP);
398
gen_helper_pminsn(cpu_env, t);
399
/* Stop translation, as the CPU is supposed to sleep from now */
400
gen_exception_nip(ctx, EXCP_HLT, ctx->base.pc_next);
401
@@ -XXX,XX +XXX,XX @@ static void gen_rvwinkle(DisasContext *ctx)
402
TCGv_i32 t;
403
404
CHK_HV(ctx);
405
- t = tcg_const_i32(PPC_PM_RVWINKLE);
406
+ t = tcg_constant_i32(PPC_PM_RVWINKLE);
407
gen_helper_pminsn(cpu_env, t);
408
/* Stop translation, as the CPU is supposed to sleep from now */
409
gen_exception_nip(ctx, EXCP_HLT, ctx->base.pc_next);
410
@@ -XXX,XX +XXX,XX @@ static void gen_tw(DisasContext *ctx)
411
if (check_unconditional_trap(ctx)) {
58
return;
412
return;
59
}
413
}
60
414
- t0 = tcg_const_i32(TO(ctx->opcode));
61
diff --git a/target/i386/kvm/kvm-cpu.c b/target/i386/kvm/kvm-cpu.c
415
+ t0 = tcg_constant_i32(TO(ctx->opcode));
62
index XXXXXXX..XXXXXXX 100644
416
gen_helper_tw(cpu_env, cpu_gpr[rA(ctx->opcode)], cpu_gpr[rB(ctx->opcode)],
63
--- a/target/i386/kvm/kvm-cpu.c
417
t0);
64
+++ b/target/i386/kvm/kvm-cpu.c
418
}
65
@@ -XXX,XX +XXX,XX @@ static bool kvm_cpu_realizefn(CPUState *cs, Error **errp)
419
@@ -XXX,XX +XXX,XX @@ static void gen_twi(DisasContext *ctx)
66
* x86_cpu_realize():
420
if (check_unconditional_trap(ctx)) {
67
* -> x86_cpu_expand_features()
421
return;
68
* -> cpu_exec_realizefn():
422
}
69
- * -> accel_cpu_realizefn()
423
- t0 = tcg_const_tl(SIMM(ctx->opcode));
70
+ * -> accel_cpu_realize()
424
- t1 = tcg_const_i32(TO(ctx->opcode));
71
* kvm_cpu_realizefn() -> host_cpu_realizefn()
425
+ t0 = tcg_constant_tl(SIMM(ctx->opcode));
72
* -> check/update ucode_rev, phys_bits, mwait
426
+ t1 = tcg_constant_i32(TO(ctx->opcode));
73
*/
427
gen_helper_tw(cpu_env, cpu_gpr[rA(ctx->opcode)], t0, t1);
428
}
429
430
@@ -XXX,XX +XXX,XX @@ static void gen_td(DisasContext *ctx)
431
if (check_unconditional_trap(ctx)) {
432
return;
433
}
434
- t0 = tcg_const_i32(TO(ctx->opcode));
435
+ t0 = tcg_constant_i32(TO(ctx->opcode));
436
gen_helper_td(cpu_env, cpu_gpr[rA(ctx->opcode)], cpu_gpr[rB(ctx->opcode)],
437
t0);
438
}
439
@@ -XXX,XX +XXX,XX @@ static void gen_tdi(DisasContext *ctx)
440
if (check_unconditional_trap(ctx)) {
441
return;
442
}
443
- t0 = tcg_const_tl(SIMM(ctx->opcode));
444
- t1 = tcg_const_i32(TO(ctx->opcode));
445
+ t0 = tcg_constant_tl(SIMM(ctx->opcode));
446
+ t1 = tcg_constant_i32(TO(ctx->opcode));
447
gen_helper_td(cpu_env, cpu_gpr[rA(ctx->opcode)], t0, t1);
448
}
449
#endif
450
@@ -XXX,XX +XXX,XX @@ static void gen_dcbz(DisasContext *ctx)
451
452
gen_set_access_type(ctx, ACCESS_CACHE);
453
tcgv_addr = tcg_temp_new();
454
- tcgv_op = tcg_const_i32(ctx->opcode & 0x03FF000);
455
+ tcgv_op = tcg_constant_i32(ctx->opcode & 0x03FF000);
456
gen_addr_reg_index(ctx, tcgv_addr);
457
gen_helper_dcbz(cpu_env, tcgv_addr, tcgv_op);
458
}
459
@@ -XXX,XX +XXX,XX @@ static void gen_dcbzep(DisasContext *ctx)
460
461
gen_set_access_type(ctx, ACCESS_CACHE);
462
tcgv_addr = tcg_temp_new();
463
- tcgv_op = tcg_const_i32(ctx->opcode & 0x03FF000);
464
+ tcgv_op = tcg_constant_i32(ctx->opcode & 0x03FF000);
465
gen_addr_reg_index(ctx, tcgv_addr);
466
gen_helper_dcbzep(cpu_env, tcgv_addr, tcgv_op);
467
}
468
@@ -XXX,XX +XXX,XX @@ static void gen_mfsr(DisasContext *ctx)
469
TCGv t0;
470
471
CHK_SV(ctx);
472
- t0 = tcg_const_tl(SR(ctx->opcode));
473
+ t0 = tcg_constant_tl(SR(ctx->opcode));
474
gen_helper_load_sr(cpu_gpr[rD(ctx->opcode)], cpu_env, t0);
475
#endif /* defined(CONFIG_USER_ONLY) */
476
}
477
@@ -XXX,XX +XXX,XX @@ static void gen_mtsr(DisasContext *ctx)
478
TCGv t0;
479
480
CHK_SV(ctx);
481
- t0 = tcg_const_tl(SR(ctx->opcode));
482
+ t0 = tcg_constant_tl(SR(ctx->opcode));
483
gen_helper_store_sr(cpu_env, t0, cpu_gpr[rS(ctx->opcode)]);
484
#endif /* defined(CONFIG_USER_ONLY) */
485
}
486
@@ -XXX,XX +XXX,XX @@ static void gen_mfsr_64b(DisasContext *ctx)
487
TCGv t0;
488
489
CHK_SV(ctx);
490
- t0 = tcg_const_tl(SR(ctx->opcode));
491
+ t0 = tcg_constant_tl(SR(ctx->opcode));
492
gen_helper_load_sr(cpu_gpr[rD(ctx->opcode)], cpu_env, t0);
493
#endif /* defined(CONFIG_USER_ONLY) */
494
}
495
@@ -XXX,XX +XXX,XX @@ static void gen_mtsr_64b(DisasContext *ctx)
496
TCGv t0;
497
498
CHK_SV(ctx);
499
- t0 = tcg_const_tl(SR(ctx->opcode));
500
+ t0 = tcg_constant_tl(SR(ctx->opcode));
501
gen_helper_store_sr(cpu_env, t0, cpu_gpr[rS(ctx->opcode)]);
502
#endif /* defined(CONFIG_USER_ONLY) */
503
}
504
@@ -XXX,XX +XXX,XX @@ static void gen_mfdcr(DisasContext *ctx)
505
TCGv dcrn;
506
507
CHK_SV(ctx);
508
- dcrn = tcg_const_tl(SPR(ctx->opcode));
509
+ dcrn = tcg_constant_tl(SPR(ctx->opcode));
510
gen_helper_load_dcr(cpu_gpr[rD(ctx->opcode)], cpu_env, dcrn);
511
#endif /* defined(CONFIG_USER_ONLY) */
512
}
513
@@ -XXX,XX +XXX,XX @@ static void gen_mtdcr(DisasContext *ctx)
514
TCGv dcrn;
515
516
CHK_SV(ctx);
517
- dcrn = tcg_const_tl(SPR(ctx->opcode));
518
+ dcrn = tcg_constant_tl(SPR(ctx->opcode));
519
gen_helper_store_dcr(cpu_env, dcrn, cpu_gpr[rS(ctx->opcode)]);
520
#endif /* defined(CONFIG_USER_ONLY) */
521
}
522
@@ -XXX,XX +XXX,XX @@ static void gen_tlbre_440(DisasContext *ctx)
523
case 1:
524
case 2:
525
{
526
- TCGv_i32 t0 = tcg_const_i32(rB(ctx->opcode));
527
+ TCGv_i32 t0 = tcg_constant_i32(rB(ctx->opcode));
528
gen_helper_440_tlbre(cpu_gpr[rD(ctx->opcode)], cpu_env,
529
t0, cpu_gpr[rA(ctx->opcode)]);
530
}
531
@@ -XXX,XX +XXX,XX @@ static void gen_tlbwe_440(DisasContext *ctx)
532
case 1:
533
case 2:
534
{
535
- TCGv_i32 t0 = tcg_const_i32(rB(ctx->opcode));
536
+ TCGv_i32 t0 = tcg_constant_i32(rB(ctx->opcode));
537
gen_helper_440_tlbwe(cpu_env, t0, cpu_gpr[rA(ctx->opcode)],
538
cpu_gpr[rS(ctx->opcode)]);
539
}
540
@@ -XXX,XX +XXX,XX @@ static void gen_wrteei(DisasContext *ctx)
541
/* dlmzb */
542
static void gen_dlmzb(DisasContext *ctx)
543
{
544
- TCGv_i32 t0 = tcg_const_i32(Rc(ctx->opcode));
545
+ TCGv_i32 t0 = tcg_constant_i32(Rc(ctx->opcode));
546
gen_helper_dlmzb(cpu_gpr[rA(ctx->opcode)], cpu_env,
547
cpu_gpr[rS(ctx->opcode)], cpu_gpr[rB(ctx->opcode)], t0);
548
}
74
--
549
--
75
2.34.1
550
2.34.1
76
551
77
552
diff view generated by jsdifflib
1
From: Philippe Mathieu-Daudé <philmd@linaro.org>
1
Use tcg_constant_i32 for the bounds.
2
2
3
Following the example documented since commit e3fe3988d7 ("error:
3
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
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>
4
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
11
---
5
---
12
include/exec/cpu-all.h | 2 +-
6
target/tricore/translate.c | 14 +++-----------
13
accel/tcg/cpu-exec.c | 4 +++-
7
1 file changed, 3 insertions(+), 11 deletions(-)
14
2 files changed, 4 insertions(+), 2 deletions(-)
15
8
16
diff --git a/include/exec/cpu-all.h b/include/exec/cpu-all.h
9
diff --git a/target/tricore/translate.c b/target/tricore/translate.c
17
index XXXXXXX..XXXXXXX 100644
10
index XXXXXXX..XXXXXXX 100644
18
--- a/include/exec/cpu-all.h
11
--- a/target/tricore/translate.c
19
+++ b/include/exec/cpu-all.h
12
+++ b/target/tricore/translate.c
20
@@ -XXX,XX +XXX,XX @@ void dump_exec_info(GString *buf);
13
@@ -XXX,XX +XXX,XX @@ gen_msubsui_64(TCGv ret_low, TCGv ret_high, TCGv r1, TCGv r2_low, TCGv r2_high,
21
14
22
/* accel/tcg/cpu-exec.c */
15
static void gen_saturate(TCGv ret, TCGv arg, int32_t up, int32_t low)
23
int cpu_exec(CPUState *cpu);
16
{
24
-void tcg_exec_realizefn(CPUState *cpu, Error **errp);
17
- TCGv sat_neg = tcg_const_i32(low);
25
+bool tcg_exec_realizefn(CPUState *cpu, Error **errp);
18
- TCGv temp = tcg_const_i32(up);
26
void tcg_exec_unrealizefn(CPUState *cpu);
19
-
27
20
- /* sat_neg = (arg < low ) ? low : arg; */
28
/**
21
- tcg_gen_movcond_tl(TCG_COND_LT, sat_neg, arg, sat_neg, sat_neg, arg);
29
diff --git a/accel/tcg/cpu-exec.c b/accel/tcg/cpu-exec.c
22
-
30
index XXXXXXX..XXXXXXX 100644
23
- /* ret = (sat_neg > up ) ? up : sat_neg; */
31
--- a/accel/tcg/cpu-exec.c
24
- tcg_gen_movcond_tl(TCG_COND_GT, ret, sat_neg, temp, temp, sat_neg);
32
+++ b/accel/tcg/cpu-exec.c
25
+ tcg_gen_smax_tl(ret, arg, tcg_constant_i32(low));
33
@@ -XXX,XX +XXX,XX @@ int cpu_exec(CPUState *cpu)
26
+ tcg_gen_smin_tl(ret, ret, tcg_constant_i32(up));
34
return ret;
35
}
27
}
36
28
37
-void tcg_exec_realizefn(CPUState *cpu, Error **errp)
29
static void gen_saturate_u(TCGv ret, TCGv arg, int32_t up)
38
+bool tcg_exec_realizefn(CPUState *cpu, Error **errp)
39
{
30
{
40
static bool tcg_target_initialized;
31
- TCGv temp = tcg_const_i32(up);
41
CPUClass *cc = CPU_GET_CLASS(cpu);
32
- /* sat_neg = (arg > up ) ? up : arg; */
42
@@ -XXX,XX +XXX,XX @@ void tcg_exec_realizefn(CPUState *cpu, Error **errp)
33
- tcg_gen_movcond_tl(TCG_COND_GTU, ret, arg, temp, temp, arg);
43
tcg_iommu_init_notifier_list(cpu);
34
+ tcg_gen_umin_tl(ret, arg, tcg_constant_i32(up));
44
#endif /* !CONFIG_USER_ONLY */
45
/* qemu_plugin_vcpu_init_hook delayed until cpu_index assigned. */
46
+
47
+ return true;
48
}
35
}
49
36
50
/* undo the initializations in reverse order */
37
static void gen_shi(TCGv ret, TCGv r1, int32_t shift_count)
51
--
38
--
52
2.34.1
39
2.34.1
53
40
54
41
diff view generated by jsdifflib
1
From: Anton Johansson <anjo@rev.ng>
1
Replace with tcg_constant_vec*.
2
2
3
A large chunk of ld/st functions are moved from cputlb.c and user-exec.c
3
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
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>
4
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
16
---
5
---
17
accel/tcg/cputlb.c | 214 ----------------------------------
6
include/tcg/tcg.h | 4 ----
18
accel/tcg/user-exec.c | 193 -------------------------------
7
tcg/tcg-op-vec.c | 34 ++--------------------------------
19
accel/tcg/ldst_common.c.inc | 225 ++++++++++++++++++++++++++++++++++++
8
tcg/i386/tcg-target.c.inc | 9 ++++-----
20
3 files changed, 225 insertions(+), 407 deletions(-)
9
3 files changed, 6 insertions(+), 41 deletions(-)
21
10
22
diff --git a/accel/tcg/cputlb.c b/accel/tcg/cputlb.c
11
diff --git a/include/tcg/tcg.h b/include/tcg/tcg.h
23
index XXXXXXX..XXXXXXX 100644
12
index XXXXXXX..XXXXXXX 100644
24
--- a/accel/tcg/cputlb.c
13
--- a/include/tcg/tcg.h
25
+++ b/accel/tcg/cputlb.c
14
+++ b/include/tcg/tcg.h
26
@@ -XXX,XX +XXX,XX @@ static uint8_t do_ld1_mmu(CPUState *cpu, vaddr addr, MemOpIdx oi,
15
@@ -XXX,XX +XXX,XX @@ void tcg_optimize(TCGContext *s);
27
return do_ld_1(cpu, &l.page[0], l.mmu_idx, access_type, ra);
16
/* Allocate a new temporary and initialize it with a constant. */
17
TCGv_i32 tcg_const_i32(int32_t val);
18
TCGv_i64 tcg_const_i64(int64_t val);
19
-TCGv_vec tcg_const_zeros_vec(TCGType);
20
-TCGv_vec tcg_const_ones_vec(TCGType);
21
-TCGv_vec tcg_const_zeros_vec_matching(TCGv_vec);
22
-TCGv_vec tcg_const_ones_vec_matching(TCGv_vec);
23
24
/*
25
* Locate or create a read-only temporary that is a constant.
26
diff --git a/tcg/tcg-op-vec.c b/tcg/tcg-op-vec.c
27
index XXXXXXX..XXXXXXX 100644
28
--- a/tcg/tcg-op-vec.c
29
+++ b/tcg/tcg-op-vec.c
30
@@ -XXX,XX +XXX,XX @@ void tcg_gen_mov_vec(TCGv_vec r, TCGv_vec a)
31
}
28
}
32
}
29
33
30
-tcg_target_ulong helper_ldub_mmu(CPUArchState *env, uint64_t addr,
34
-TCGv_vec tcg_const_zeros_vec(TCGType type)
31
- MemOpIdx oi, uintptr_t retaddr)
32
-{
35
-{
33
- tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_8);
36
- TCGv_vec ret = tcg_temp_new_vec(type);
34
- return do_ld1_mmu(env_cpu(env), addr, oi, retaddr, MMU_DATA_LOAD);
37
- tcg_gen_dupi_vec(MO_64, ret, 0);
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;
38
- return ret;
138
-}
39
-}
139
-
40
-
140
-uint16_t cpu_ldw_mmu(CPUArchState *env, abi_ptr addr,
41
-TCGv_vec tcg_const_ones_vec(TCGType type)
141
- MemOpIdx oi, uintptr_t ra)
142
-{
42
-{
143
- uint16_t ret;
43
- TCGv_vec ret = tcg_temp_new_vec(type);
144
-
44
- tcg_gen_dupi_vec(MO_64, ret, -1);
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;
45
- return ret;
149
-}
46
-}
150
-
47
-
151
-uint32_t cpu_ldl_mmu(CPUArchState *env, abi_ptr addr,
48
-TCGv_vec tcg_const_zeros_vec_matching(TCGv_vec m)
152
- MemOpIdx oi, uintptr_t ra)
153
-{
49
-{
154
- uint32_t ret;
50
- TCGTemp *t = tcgv_vec_temp(m);
155
-
51
- return tcg_const_zeros_vec(t->base_type);
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
-}
52
-}
161
-
53
-
162
-uint64_t cpu_ldq_mmu(CPUArchState *env, abi_ptr addr,
54
-TCGv_vec tcg_const_ones_vec_matching(TCGv_vec m)
163
- MemOpIdx oi, uintptr_t ra)
164
-{
55
-{
165
- uint64_t ret;
56
- TCGTemp *t = tcgv_vec_temp(m);
166
-
57
- return tcg_const_ones_vec(t->base_type);
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
-}
58
-}
172
-
59
-
173
-Int128 cpu_ld16_mmu(CPUArchState *env, abi_ptr addr,
60
void tcg_gen_dupi_vec(unsigned vece, TCGv_vec r, uint64_t a)
174
- MemOpIdx oi, uintptr_t ra)
61
{
175
-{
62
TCGTemp *rt = tcgv_vec_temp(r);
176
- Int128 ret;
63
@@ -XXX,XX +XXX,XX @@ void tcg_gen_not_vec(unsigned vece, TCGv_vec r, TCGv_vec a)
177
-
64
const TCGOpcode *hold_list = tcg_swap_vecop_list(NULL);
178
- tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_128);
65
179
- ret = do_ld16_mmu(env_cpu(env), addr, oi, ra);
66
if (!TCG_TARGET_HAS_not_vec || !do_op2(vece, r, a, INDEX_op_not_vec)) {
180
- plugin_load_cb(env, addr, oi);
67
- TCGv_vec t = tcg_const_ones_vec_matching(r);
181
- return ret;
68
- tcg_gen_xor_vec(0, r, a, t);
182
-}
69
- tcg_temp_free_vec(t);
183
-
70
+ tcg_gen_xor_vec(0, r, a, tcg_constant_vec_matching(r, 0, -1));
184
/*
71
}
185
* Store Helpers
72
tcg_swap_vecop_list(hold_list);
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
}
73
}
190
74
@@ -XXX,XX +XXX,XX @@ void tcg_gen_neg_vec(unsigned vece, TCGv_vec r, TCGv_vec a)
191
-void helper_stb_mmu(CPUArchState *env, uint64_t addr, uint32_t val,
75
hold_list = tcg_swap_vecop_list(NULL);
192
- MemOpIdx oi, uintptr_t ra)
76
193
-{
77
if (!TCG_TARGET_HAS_neg_vec || !do_op2(vece, r, a, INDEX_op_neg_vec)) {
194
- tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_8);
78
- TCGv_vec t = tcg_const_zeros_vec_matching(r);
195
- do_st1_mmu(env_cpu(env), addr, val, oi, ra);
79
- tcg_gen_sub_vec(vece, r, t, a);
196
-}
80
- tcg_temp_free_vec(t);
197
-
81
+ tcg_gen_sub_vec(vece, r, tcg_constant_vec_matching(r, vece, 0), a);
198
static void do_st2_mmu(CPUState *cpu, vaddr addr, uint16_t val,
82
}
199
MemOpIdx oi, uintptr_t ra)
83
tcg_swap_vecop_list(hold_list);
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
}
84
}
204
85
diff --git a/tcg/i386/tcg-target.c.inc b/tcg/i386/tcg-target.c.inc
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
86
index XXXXXXX..XXXXXXX 100644
312
--- a/accel/tcg/user-exec.c
87
--- a/tcg/i386/tcg-target.c.inc
313
+++ b/accel/tcg/user-exec.c
88
+++ b/tcg/i386/tcg-target.c.inc
314
@@ -XXX,XX +XXX,XX @@ static uint8_t do_ld1_mmu(CPUState *cpu, vaddr addr, MemOpIdx oi,
89
@@ -XXX,XX +XXX,XX @@ static void expand_vec_sari(TCGType type, unsigned vece,
315
return ret;
90
break;
316
}
91
317
92
case MO_64:
318
-tcg_target_ulong helper_ldub_mmu(CPUArchState *env, uint64_t addr,
93
+ t1 = tcg_temp_new_vec(type);
319
- MemOpIdx oi, uintptr_t ra)
94
if (imm <= 32) {
320
-{
95
/*
321
- tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_8);
96
* We can emulate a small sign extend by performing an arithmetic
322
- return do_ld1_mmu(env_cpu(env), addr, oi, ra, MMU_DATA_LOAD);
97
@@ -XXX,XX +XXX,XX @@ static void expand_vec_sari(TCGType type, unsigned vece,
323
-}
98
* does not, so we have to bound the smaller shift -- we get the
324
-
99
* same result in the high half either way.
325
-tcg_target_ulong helper_ldsb_mmu(CPUArchState *env, uint64_t addr,
100
*/
326
- MemOpIdx oi, uintptr_t ra)
101
- t1 = tcg_temp_new_vec(type);
327
-{
102
tcg_gen_sari_vec(MO_32, t1, v1, MIN(imm, 31));
328
- tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_8);
103
tcg_gen_shri_vec(MO_64, v0, v1, imm);
329
- return (int8_t)do_ld1_mmu(env_cpu(env), addr, oi, ra, MMU_DATA_LOAD);
104
vec_gen_4(INDEX_op_x86_blend_vec, type, MO_32,
330
-}
105
tcgv_vec_arg(v0), tcgv_vec_arg(v0),
331
-
106
tcgv_vec_arg(t1), 0xaa);
332
-uint8_t cpu_ldb_mmu(CPUArchState *env, abi_ptr addr,
107
- tcg_temp_free_vec(t1);
333
- MemOpIdx oi, uintptr_t ra)
108
} else {
334
-{
109
/* Otherwise we will need to use a compare vs 0 to produce
335
- uint8_t ret;
110
* the sign-extend, shift and merge.
336
-
111
*/
337
- tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_8);
112
- t1 = tcg_const_zeros_vec(type);
338
- ret = do_ld1_mmu(env_cpu(env), addr, oi, ra, MMU_DATA_LOAD);
113
- tcg_gen_cmp_vec(TCG_COND_GT, MO_64, t1, t1, v1);
339
- qemu_plugin_vcpu_mem_cb(env_cpu(env), addr, oi, QEMU_PLUGIN_MEM_R);
114
+ tcg_gen_cmp_vec(TCG_COND_GT, MO_64, t1,
340
- return ret;
115
+ tcg_constant_vec(type, MO_64, 0), v1);
341
-}
116
tcg_gen_shri_vec(MO_64, v0, v1, imm);
342
-
117
tcg_gen_shli_vec(MO_64, t1, t1, 64 - imm);
343
static uint16_t do_ld2_mmu(CPUState *cpu, vaddr addr, MemOpIdx oi,
118
tcg_gen_or_vec(MO_64, v0, v0, t1);
344
uintptr_t ra, MMUAccessType access_type)
119
- tcg_temp_free_vec(t1);
345
{
120
}
346
@@ -XXX,XX +XXX,XX @@ static uint16_t do_ld2_mmu(CPUState *cpu, vaddr addr, MemOpIdx oi,
121
+ tcg_temp_free_vec(t1);
347
return ret;
122
break;
348
}
123
349
124
default:
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
--
125
--
814
2.34.1
126
2.34.1
127
128
diff view generated by jsdifflib
1
We can load tcg_ctx just as easily within the callee.
1
These functions are no longer used.
2
2
3
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
3
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
4
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
4
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
5
---
5
---
6
include/tcg/tcg.h | 2 +-
6
include/tcg/tcg-op.h | 4 ----
7
accel/tcg/tcg-all.c | 2 +-
7
include/tcg/tcg.h | 6 ------
8
bsd-user/main.c | 2 +-
8
tcg/tcg.c | 16 ----------------
9
linux-user/main.c | 2 +-
9
3 files changed, 26 deletions(-)
10
tcg/tcg.c | 3 ++-
11
5 files changed, 6 insertions(+), 5 deletions(-)
12
10
11
diff --git a/include/tcg/tcg-op.h b/include/tcg/tcg-op.h
12
index XXXXXXX..XXXXXXX 100644
13
--- a/include/tcg/tcg-op.h
14
+++ b/include/tcg/tcg-op.h
15
@@ -XXX,XX +XXX,XX @@ void tcg_gen_stl_vec(TCGv_vec r, TCGv_ptr base, TCGArg offset, TCGType t);
16
#define tcg_gen_extract_tl tcg_gen_extract_i64
17
#define tcg_gen_sextract_tl tcg_gen_sextract_i64
18
#define tcg_gen_extract2_tl tcg_gen_extract2_i64
19
-#define tcg_const_tl tcg_const_i64
20
#define tcg_constant_tl tcg_constant_i64
21
-#define tcg_const_local_tl tcg_const_local_i64
22
#define tcg_gen_movcond_tl tcg_gen_movcond_i64
23
#define tcg_gen_add2_tl tcg_gen_add2_i64
24
#define tcg_gen_sub2_tl tcg_gen_sub2_i64
25
@@ -XXX,XX +XXX,XX @@ void tcg_gen_stl_vec(TCGv_vec r, TCGv_ptr base, TCGArg offset, TCGType t);
26
#define tcg_gen_extract_tl tcg_gen_extract_i32
27
#define tcg_gen_sextract_tl tcg_gen_sextract_i32
28
#define tcg_gen_extract2_tl tcg_gen_extract2_i32
29
-#define tcg_const_tl tcg_const_i32
30
#define tcg_constant_tl tcg_constant_i32
31
-#define tcg_const_local_tl tcg_const_local_i32
32
#define tcg_gen_movcond_tl tcg_gen_movcond_i32
33
#define tcg_gen_add2_tl tcg_gen_add2_i32
34
#define tcg_gen_sub2_tl tcg_gen_sub2_i32
13
diff --git a/include/tcg/tcg.h b/include/tcg/tcg.h
35
diff --git a/include/tcg/tcg.h b/include/tcg/tcg.h
14
index XXXXXXX..XXXXXXX 100644
36
index XXXXXXX..XXXXXXX 100644
15
--- a/include/tcg/tcg.h
37
--- a/include/tcg/tcg.h
16
+++ b/include/tcg/tcg.h
38
+++ b/include/tcg/tcg.h
17
@@ -XXX,XX +XXX,XX @@ static inline void *tcg_malloc(int size)
39
@@ -XXX,XX +XXX,XX @@ void tcg_remove_ops_after(TCGOp *op);
18
40
19
void tcg_init(size_t tb_size, int splitwx, unsigned max_cpus);
41
void tcg_optimize(TCGContext *s);
20
void tcg_register_thread(void);
42
21
-void tcg_prologue_init(TCGContext *s);
43
-/* Allocate a new temporary and initialize it with a constant. */
22
+void tcg_prologue_init(void);
44
-TCGv_i32 tcg_const_i32(int32_t val);
23
void tcg_func_start(TCGContext *s);
45
-TCGv_i64 tcg_const_i64(int64_t val);
24
46
-
25
int tcg_gen_code(TCGContext *s, TranslationBlock *tb, uint64_t pc_start);
47
/*
26
diff --git a/accel/tcg/tcg-all.c b/accel/tcg/tcg-all.c
48
* Locate or create a read-only temporary that is a constant.
27
index XXXXXXX..XXXXXXX 100644
49
* This kind of temporary need not be freed, but for convenience
28
--- a/accel/tcg/tcg-all.c
50
@@ -XXX,XX +XXX,XX @@ TCGv_vec tcg_constant_vec(TCGType type, unsigned vece, int64_t val);
29
+++ b/accel/tcg/tcg-all.c
51
TCGv_vec tcg_constant_vec_matching(TCGv_vec match, unsigned vece, int64_t val);
30
@@ -XXX,XX +XXX,XX @@ static int tcg_init_machine(MachineState *ms)
52
31
* There's no guest base to take into account, so go ahead and
53
#if UINTPTR_MAX == UINT32_MAX
32
* initialize the prologue now.
54
-# define tcg_const_ptr(x) ((TCGv_ptr)tcg_const_i32((intptr_t)(x)))
33
*/
55
# define tcg_constant_ptr(x) ((TCGv_ptr)tcg_constant_i32((intptr_t)(x)))
34
- tcg_prologue_init(tcg_ctx);
56
#else
35
+ tcg_prologue_init();
57
-# define tcg_const_ptr(x) ((TCGv_ptr)tcg_const_i64((intptr_t)(x)))
58
# define tcg_constant_ptr(x) ((TCGv_ptr)tcg_constant_i64((intptr_t)(x)))
36
#endif
59
#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
60
65
diff --git a/tcg/tcg.c b/tcg/tcg.c
61
diff --git a/tcg/tcg.c b/tcg/tcg.c
66
index XXXXXXX..XXXXXXX 100644
62
index XXXXXXX..XXXXXXX 100644
67
--- a/tcg/tcg.c
63
--- a/tcg/tcg.c
68
+++ b/tcg/tcg.c
64
+++ b/tcg/tcg.c
69
@@ -XXX,XX +XXX,XX @@ TranslationBlock *tcg_tb_alloc(TCGContext *s)
65
@@ -XXX,XX +XXX,XX @@ TCGv_vec tcg_constant_vec_matching(TCGv_vec match, unsigned vece, int64_t val)
70
return tb;
66
return tcg_constant_vec(t->base_type, vece, val);
71
}
67
}
72
68
73
-void tcg_prologue_init(TCGContext *s)
69
-TCGv_i32 tcg_const_i32(int32_t val)
74
+void tcg_prologue_init(void)
70
-{
75
{
71
- TCGv_i32 t0;
76
+ TCGContext *s = tcg_ctx;
72
- t0 = tcg_temp_new_i32();
77
size_t prologue_size;
73
- tcg_gen_movi_i32(t0, val);
78
74
- return t0;
79
s->code_ptr = s->code_gen_ptr;
75
-}
76
-
77
-TCGv_i64 tcg_const_i64(int64_t val)
78
-{
79
- TCGv_i64 t0;
80
- t0 = tcg_temp_new_i64();
81
- tcg_gen_movi_i64(t0, val);
82
- return t0;
83
-}
84
-
85
/* Return true if OP may appear in the opcode stream.
86
Test the runtime variable that controls each opcode. */
87
bool tcg_op_supported(TCGOpcode op)
80
--
88
--
81
2.34.1
89
2.34.1
82
90
83
91
diff view generated by jsdifflib