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 |