Gareth Webb
637f1ee377
target/i386: add TCG support for UMIP
...
Signed-off-by: Gareth Webb <gareth.webb@umbralsoftware.co.uk >
Message-Id: <164425598317.21902.4257759159329756142-1@git.sr.ht >
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com >
2022-02-16 15:01:33 +01:00
Frédéric Pétrot
fc313c6434
exec/memop: Adding signedness to quad definitions
...
Renaming defines for quad in their various forms so that their signedness is
now explicit.
Done using git grep as suggested by Philippe, with a bit of hand edition to
keep assignments aligned.
Signed-off-by: Frédéric Pétrot <frederic.petrot@univ-grenoble-alpes.fr >
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Alistair Francis <alistair.francis@wdc.com >
Message-id: 20220106210108.138226-2-frederic.petrot@univ-grenoble-alpes.fr
Signed-off-by: Alistair Francis <alistair.francis@wdc.com >
2022-01-08 15:46:10 +10:00
Peter Maydell
e0e875a68a
target/i386: Use assert() to sanity-check b1 in SSE decode
...
In the SSE decode function gen_sse(), we combine a byte
'b' and a value 'b1' which can be [0..3], and switch on them:
b |= (b1 << 8);
switch (b) {
...
default:
unknown_op:
gen_unknown_opcode(env, s);
return;
}
In three cases inside this switch, we were then also checking for
"if (b1 >= 2) { goto unknown_op; }".
However, this can never happen, because the 'case' values in each place
are 0x0nn or 0x1nn and the switch will have directed the b1 == (2, 3)
cases to the default already.
This check was added in commit c045af25a5 in 2010; the added code
was unnecessary then as well, and was apparently intended only to
ensure that we never accidentally ended up indexing off the end
of an sse_op_table with only 2 entries as a result of future bugs
in the decode logic.
Change the checks to assert() instead, and make sure they're always
immediately before the array access they are protecting.
Fixes: Coverity CID 1460207
Signed-off-by: Peter Maydell <peter.maydell@linaro.org >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
2021-12-15 10:35:26 +00:00
Richard Henderson
4bc4c3135b
target/i386: Drop check for singlestep_enabled
...
GDB single-stepping is now handled generically.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2021-10-15 16:39:14 -07:00
Richard Henderson
9ef6c6ec08
target/i386: Check CF_NO_GOTO_TB for dc->jmp_opt
...
We were using singlestep_enabled as a proxy for whether
translator_use_goto_tb would always return false.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2021-10-15 16:39:14 -07:00
Ilya Leoshkevich
4e116893c6
accel/tcg: Add DisasContextBase argument to translator_ld*
...
Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com >
[rth: Split out of a larger patch.]
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2021-09-14 12:00:20 -07:00
Richard Henderson
b5cf742841
accel/tcg: Remove TranslatorOps.breakpoint_check
...
The hook is now unused, with breakpoints checked outside translation.
Tested-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org >
Reviewed-by: Peter Maydell <peter.maydell@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2021-07-21 07:47:05 -10:00
Ziqiao Kong
84abdd7d27
target/i386: Correct implementation for FCS, FIP, FDS and FDP
...
Update FCS:FIP and FDS:FDP according to the Intel Manual Vol.1 8.1.8.
Note that CPUID.(EAX=07H,ECX=0H):EBX[bit 13] is not implemented by
design in this patch and will be added along with TCG features flag
in a separate patch later.
Signed-off-by: Ziqiao Kong <ziqiaokong@gmail.com >
Message-Id: <20210530150112.74411-2-ziqiaokong@gmail.com >
[rth: Push FDS/FDP handling down into mod != 3 case; free last_addr.]
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2021-07-13 08:13:19 -07:00
Ziqiao Kong
505910a6e2
target/i386: Trivial code motion and code style fix
...
A new pair of braces has to be added to declare variables in the case block.
The code style is also fixed according to the transalte.c itself during the
code motion.
Signed-off-by: Ziqiao Kong <ziqiaokong@gmail.com >
Message-Id: <20210530150112.74411-1-ziqiaokong@gmail.com >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2021-07-13 08:13:19 -07:00
Peter Maydell
bd38ae26ce
Merge remote-tracking branch 'remotes/rth-gitlab/tags/pull-tcg-20210710' into staging
...
Add translator_use_goto_tb.
Cleanups in prep of breakpoint fixes.
Misc fixes.
# gpg: Signature made Sat 10 Jul 2021 16:29:14 BST
# gpg: using RSA key 7A481E78868B4DB6A85A05C064DF38E8AF7E215F
# gpg: issuer "richard.henderson@linaro.org "
# gpg: Good signature from "Richard Henderson <richard.henderson@linaro.org >" [full]
# Primary key fingerprint: 7A48 1E78 868B 4DB6 A85A 05C0 64DF 38E8 AF7E 215F
* remotes/rth-gitlab/tags/pull-tcg-20210710: (41 commits)
cpu: Add breakpoint tracepoints
tcg: Remove TCG_TARGET_HAS_goto_ptr
accel/tcg: Log tb->cflags with -d exec
accel/tcg: Split out log_cpu_exec
accel/tcg: Move tb_lookup to cpu-exec.c
accel/tcg: Move helper_lookup_tb_ptr to cpu-exec.c
target/i386: Use cpu_breakpoint_test in breakpoint_handler
tcg: Fix prologue disassembly
target/xtensa: Use translator_use_goto_tb
target/tricore: Use tcg_gen_lookup_and_goto_ptr
target/tricore: Use translator_use_goto_tb
target/sparc: Use translator_use_goto_tb
target/sh4: Use translator_use_goto_tb
target/s390x: Remove use_exit_tb
target/s390x: Use translator_use_goto_tb
target/rx: Use translator_use_goto_tb
target/riscv: Use translator_use_goto_tb
target/ppc: Use translator_use_goto_tb
target/openrisc: Use translator_use_goto_tb
target/nios2: Use translator_use_goto_tb
...
Signed-off-by: Peter Maydell <peter.maydell@linaro.org >
2021-07-12 11:02:39 +01:00
Richard Henderson
b473534d5d
target/i386: Use translator_use_goto_tb
...
Just use translator_use_goto_tb directly at the one call site,
rather than maintaining a local wrapper.
Reviewed-by: Peter Maydell <peter.maydell@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2021-07-09 09:42:28 -07:00
Philippe Mathieu-Daudé
1797b08d24
tcg: Avoid including 'trace-tcg.h' in target translate.c
...
The root trace-events only declares a single TCG event:
$ git grep -w tcg trace-events
trace-events:115:# tcg/tcg-op.c
trace-events:137:vcpu tcg guest_mem_before(TCGv vaddr, uint16_t info) "info=%d", "vaddr=0x%016"PRIx64" info=%d"
and only a tcg/tcg-op.c uses it:
$ git grep -l trace_guest_mem_before_tcg
tcg/tcg-op.c
therefore it is pointless to include "trace-tcg.h" in each target
(because it is not used). Remove it.
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org >
Message-Id: <20210629050935.2570721-1-f4bug@amsat.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2021-07-09 09:38:33 -07:00
Paolo Bonzini
533883fd7e
target/i386: fix exceptions for MOV to DR
...
Use raise_exception_ra (without error code) when raising the illegal
opcode operation; raise #GP when setting bits 63:32 of DR6 or DR7.
Move helper_get_dr to sysemu/ since it is a privileged instruction
that is not needed on user-mode emulators.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com >
2021-07-09 18:21:34 +02:00
Richard Henderson
94fdf98721
target/i386: Improve bswap translation
...
Use a break instead of an ifdefed else.
There's no need to move the values through s->T0.
Remove TCG_BSWAP_IZ and the preceding zero-extension.
Reviewed-by: Peter Maydell <peter.maydell@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2021-06-29 10:04:57 -07:00
Richard Henderson
2b836c2ac1
tcg: Add flags argument to tcg_gen_bswap16_*, tcg_gen_bswap32_i64
...
Implement the new semantics in the fallback expansion.
Change all callers to supply the flags that keep the
semantics unchanged locally.
Reviewed-by: Peter Maydell <peter.maydell@linaro.org >
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2021-06-29 10:04:57 -07:00
Richard Henderson
e18a6ec8c4
target/i386: Fix decode of cr8
...
A recent cleanup did not recognize that there are two ways
to encode cr8: one via the LOCK and the other via REX.
Fixes: 7eff2e7c
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/380
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20210602035511.96834-1-richard.henderson@linaro.org >
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com >
2021-06-04 13:47:08 +02:00
Peter Maydell
972e848b53
Merge remote-tracking branch 'remotes/cohuck-gitlab/tags/s390x-20210520-v2' into staging
...
s390x fixes and cleanups; also related fixes in xtensa,
arm, and x86 code
# gpg: Signature made Thu 20 May 2021 13:23:15 BST
# gpg: using RSA key C3D0D66DC3624FF6A8C018CEDECF6B93C6F02FAF
# gpg: issuer "cohuck@redhat.com "
# gpg: Good signature from "Cornelia Huck <conny@cornelia-huck.de >" [unknown]
# gpg: aka "Cornelia Huck <huckc@linux.vnet.ibm.com >" [full]
# gpg: aka "Cornelia Huck <cornelia.huck@de.ibm.com >" [full]
# gpg: aka "Cornelia Huck <cohuck@kernel.org >" [unknown]
# gpg: aka "Cornelia Huck <cohuck@redhat.com >" [unknown]
# Primary key fingerprint: C3D0 D66D C362 4FF6 A8C0 18CE DECF 6B93 C6F0 2FAF
* remotes/cohuck-gitlab/tags/s390x-20210520-v2:
tests/tcg/x86_64: add vsyscall smoke test
target/i386: Make sure that vsyscall's tb->size != 0
vfio-ccw: Attempt to clean up all IRQs on error
hw/s390x/ccw: Register qbus type in abstract TYPE_CCW_DEVICE parent
vfio-ccw: Permit missing IRQs
accel/tcg: Assert that tb->size != 0 after translation
target/xtensa: Make sure that tb->size != 0
target/arm: Make sure that commpage's tb->size != 0
target/s390x: Fix translation exception on illegal instruction
Signed-off-by: Peter Maydell <peter.maydell@linaro.org >
2021-05-20 18:42:00 +01:00
Ilya Leoshkevich
9b21049edd
target/i386: Make sure that vsyscall's tb->size != 0
...
tb_gen_code() assumes that tb->size must never be zero, otherwise it
may produce spurious exceptions. For x86_64 this may happen when
creating a translation block for the vsyscall page.
Fix by pretending that vsyscall translation blocks have at least one
instruction.
Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20210519045738.1335210-2-iii@linux.ibm.com >
Signed-off-by: Cornelia Huck <cohuck@redhat.com >
2021-05-20 14:19:30 +02:00
Richard Henderson
7fb7c42394
target/i386: Remove user-only i/o stubs
...
With the previous patch for check_io, we now have enough for
the compiler to dead-code eliminate all of the i/o helpers.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org >
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com >
Message-Id: <20210514151342.384376-51-richard.henderson@linaro.org >
2021-05-19 12:17:23 -05:00
Richard Henderson
d76b9c6f07
target/i386: Move helper_check_io to sysemu
...
The we never allow i/o from user-only, and the tss check
that helper_check_io does will always fail. Use an ifdef
within gen_check_io and return false, indicating that an
exception is known to be raised.
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org >
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com >
Message-Id: <20210514151342.384376-50-richard.henderson@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2021-05-19 12:17:11 -05:00
Richard Henderson
e497803556
target/i386: Create helper_check_io
...
Drop helper_check_io[bwl] and expose their common
subroutine to tcg directly.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org >
Message-Id: <20210514151342.384376-49-richard.henderson@linaro.org >
2021-05-19 12:17:11 -05:00
Richard Henderson
1bca40fe42
target/i386: Pass in port to gen_check_io
...
Pass in a pre-truncated TCGv_i32 value. We were doing the
truncation of EDX in multiple places, now only once per insn.
While all callers use s->tmp2_i32, for cleanliness of the
subroutine, use a parameter anyway.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com >
Message-Id: <20210514151342.384376-48-richard.henderson@linaro.org >
2021-05-19 12:17:11 -05:00
Richard Henderson
bc2e436d7c
target/i386: Tidy gen_check_io
...
Get cur_eip from DisasContext. Do not require the caller
to use svm_is_rep; get prefix from DisasContext. Use the
proper symbolic constants for SVM_IOIO_*.
While we're touching all call sites, return bool in
preparation for gen_check_io raising #GP.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com >
Message-Id: <20210514151342.384376-47-richard.henderson@linaro.org >
2021-05-19 12:17:11 -05:00
Richard Henderson
244843b757
target/i386: Exit tb after wrmsr
...
At minimum, wrmsr can change efer, which affects HF_LMA.
Cc: qemu-stable@nongnu.org
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com >
Message-Id: <20210514151342.384376-46-richard.henderson@linaro.org >
2021-05-19 12:17:11 -05:00
Richard Henderson
f7803b7759
target/i386: Eliminate user stubs for read/write_crN, rd/wrmsr
...
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com >
Message-Id: <20210514151342.384376-45-richard.henderson@linaro.org >
2021-05-19 12:17:11 -05:00
Richard Henderson
35e5a5d5cb
target/i386: Unify invlpg, invlpga
...
Use a single helper, flush_page, to do the work.
Use gen_svm_check_intercept.
Perform the zero-extension for invlpga inline.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com >
Message-Id: <20210514151342.384376-43-richard.henderson@linaro.org >
2021-05-19 12:17:11 -05:00
Richard Henderson
4ea2449b58
target/i386: Move invlpg, hlt, monitor, mwait to sysemu
...
These instructions are all privileged.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com >
Message-Id: <20210514151342.384376-42-richard.henderson@linaro.org >
2021-05-19 12:17:11 -05:00
Richard Henderson
7eff2e7c65
target/i386: Cleanup read_crN, write_crN, lmsw
...
Pull the svm intercept check into the translator.
Pull the entire implementation of lmsw into the translator.
Push the check for CR8LEG into the regno validation switch.
Unify the gen_io_start check between read/write.
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20210514151342.384376-40-richard.henderson@linaro.org >
2021-05-19 12:17:11 -05:00
Richard Henderson
b53605dbd2
target/i386: Remove pc_start argument to gen_svm_check_intercept
...
When exiting helper_svm_check_intercept via exception, cpu_vmexit
calls cpu_restore_state, which will recover eip and cc_op via unwind.
Therefore we do not need to store eip or cc_op before the call.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com >
Message-Id: <20210514151342.384376-38-richard.henderson@linaro.org >
2021-05-19 12:17:11 -05:00
Richard Henderson
d051ea04d0
target/i386: Tidy svm_check_intercept from tcg
...
The param argument to helper_svm_check_intercept_param is always 0;
eliminate it and rename to helper_svm_check_intercept. Fold
gen_svm_check_intercept_param into gen_svm_check_intercept.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com >
Message-Id: <20210514151342.384376-37-richard.henderson@linaro.org >
2021-05-19 12:17:11 -05:00
Richard Henderson
ed3c4739e9
target/i386: Simplify gen_debug usage
...
Both invocations pass the start of the current instruction,
which is available as s->base.pc_next. The function sets
is_jmp, so we can eliminate a second setting.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com >
Message-Id: <20210514151342.384376-36-richard.henderson@linaro.org >
2021-05-19 12:17:11 -05:00
Richard Henderson
b82055aece
target/i386: Mark some helpers as noreturn
...
Any helper that always raises an exception or interrupt,
or simply exits to the main loop, can be so marked.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com >
Message-Id: <20210514151342.384376-35-richard.henderson@linaro.org >
2021-05-19 12:17:11 -05:00
Richard Henderson
8d6806c7dd
target/i386: Eliminate SVM helpers for user-only
...
Use STUB_HELPER to ensure that such calls are always eliminated.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com >
Message-Id: <20210514151342.384376-34-richard.henderson@linaro.org >
2021-05-19 12:17:11 -05:00
Richard Henderson
e6aeb948bb
target/i386: Implement skinit in translate.c
...
Our sysemu implementation is a stub. We can already intercept
instructions for vmexit, and raising #UD is trivial.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com >
Message-Id: <20210514151342.384376-33-richard.henderson@linaro.org >
2021-05-19 12:17:11 -05:00
Richard Henderson
b322b3afc1
target/i386: Assert !GUEST for user-only
...
For user-only, we do not need to check for VMM intercept.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com >
Message-Id: <20210514151342.384376-32-richard.henderson@linaro.org >
2021-05-19 12:17:11 -05:00
Richard Henderson
5d2238896a
target/i386: Assert !SVME for user-only
...
Most of the VMM instructions are already disabled for user-only,
by being usable only from ring 0.
The spec is intentionally loose for VMMCALL, allowing the VMM to
define syscalls for user-only. However, we're not emulating any
VMM, so VMMCALL can just raise #UD unconditionally.
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20210514151342.384376-31-richard.henderson@linaro.org >
2021-05-19 12:16:48 -05:00
Richard Henderson
9f55e5a947
target/i386: Add stub generator for helper_set_dr
...
This removes an ifdef from the middle of disas_insn,
and ensures that the branch is not reachable.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com >
Message-Id: <20210514151342.384376-30-richard.henderson@linaro.org >
2021-05-19 12:15:47 -05:00
Richard Henderson
a6f62100a8
target/i386: Reorder DisasContext members
...
Sort all of the single-byte members to the same area
of the structure, eliminating 8 bytes of padding.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com >
Message-Id: <20210514151342.384376-29-richard.henderson@linaro.org >
2021-05-19 12:15:47 -05:00
Richard Henderson
3236c2ade2
target/i386: Fix the comment for repz_opt
...
After fixing a typo in the comment, fixup for CODING_STYLE.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20210514151342.384376-28-richard.henderson@linaro.org >
2021-05-19 12:15:47 -05:00
Richard Henderson
305d08e512
target/i386: Reduce DisasContext jmp_opt, repz_opt to bool
...
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com >
Message-Id: <20210514151342.384376-27-richard.henderson@linaro.org >
2021-05-19 12:15:47 -05:00
Richard Henderson
c1de1a1ace
target/i386: Leave TF in DisasContext.flags
...
It's just as easy to clear the flag with AND than assignment.
In two cases the test for the bit can be folded together with
the test for HF_INHIBIT_IRQ_MASK.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com >
Message-Id: <20210514151342.384376-26-richard.henderson@linaro.org >
2021-05-19 12:15:47 -05:00
Richard Henderson
5862579473
target/i386: Reduce DisasContext popl_esp_hack and rip_offset to uint8_t
...
Both of these fields store the size of a single memory access,
so the range of values is 0-8.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com >
Message-Id: <20210514151342.384376-25-richard.henderson@linaro.org >
2021-05-19 12:15:47 -05:00
Richard Henderson
a77ca425d7
target/i386: Reduce DisasContext.vex_[lv] to uint8_t
...
Currently, vex_l is either {0,1}; if in the future we implement
AVX-512, the max value will be 2. In vex_v we store a register
number. This is 0-15 for SSE, and 0-31 for AVX-512.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org >
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com >
Message-Id: <20210514151342.384376-24-richard.henderson@linaro.org >
2021-05-19 12:15:47 -05:00
Richard Henderson
a8b9b657a0
target/i386: Reduce DisasContext.prefix to uint8_t
...
The highest bit in this set is 0x40 (PREFIX_REX).
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com >
Message-Id: <20210514151342.384376-23-richard.henderson@linaro.org >
2021-05-19 12:15:47 -05:00
Richard Henderson
c651f3a3cb
target/i386: Reduce DisasContext.override to int8_t
...
The range of values is -1 (none) to 5 (R_GS).
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com >
Message-Id: <20210514151342.384376-22-richard.henderson@linaro.org >
2021-05-19 12:15:47 -05:00
Richard Henderson
c6ad6f44ed
target/i386: Reduce DisasContext.flags to uint32_t
...
The value comes from tb->flags, which is uint32_t.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com >
Message-Id: <20210514151342.384376-21-richard.henderson@linaro.org >
2021-05-19 12:15:46 -05:00
Richard Henderson
0046060e5d
target/i386: Remove DisasContext.f_st as unused
...
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com >
Message-Id: <20210514151342.384376-20-richard.henderson@linaro.org >
2021-05-19 12:15:46 -05:00
Richard Henderson
8ab1e4860b
target/i386: Move rex_w into DisasContext
...
Treat this flag exactly like we treat the other rex bits.
The -1 initialization is unused; the two tests are > 0 and == 1,
so the value can be reduced to a bool.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com >
Message-Id: <20210514151342.384376-19-richard.henderson@linaro.org >
2021-05-19 12:15:46 -05:00
Richard Henderson
bbdb4237c5
target/i386: Move rex_r into DisasContext
...
Treat this flag exactly like we treat rex_b and rex_x.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com >
Message-Id: <20210514151342.384376-18-richard.henderson@linaro.org >
2021-05-19 12:15:46 -05:00
Richard Henderson
915ffe89a5
target/i386: Tidy REX_B, REX_X definition
...
Change the storage from int to uint8_t since the value is in {0,8}.
For x86_64 add 0 in the macros to (1) promote the type back to int,
and (2) make the macro an rvalue.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com >
Message-Id: <20210514151342.384376-17-richard.henderson@linaro.org >
2021-05-19 12:15:46 -05:00