[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v2 02/14] target/i386/hvf: remove HVF specific calls from x86_dec
From: |
Wei Liu |
Subject: |
[PATCH v2 02/14] target/i386/hvf: remove HVF specific calls from x86_decode.c |
Date: |
Fri, 7 Mar 2025 11:55:13 -0800 |
Use the newly defined emul_ops. This allows the module to be reused
by other accelerator in the future.
No functional change intended.
Signed-off-by: Wei Liu <liuwe@linux.microsoft.com>
---
target/i386/hvf/x86_decode.c | 19 ++++++-------------
1 file changed, 6 insertions(+), 13 deletions(-)
diff --git a/target/i386/hvf/x86_decode.c b/target/i386/hvf/x86_decode.c
index 5fea2dd3cc03..728e15963817 100644
--- a/target/i386/hvf/x86_decode.c
+++ b/target/i386/hvf/x86_decode.c
@@ -21,6 +21,7 @@
#include "panic.h"
#include "x86_decode.h"
#include "vmx.h"
+#include "x86_emu.h"
#include "x86_mmu.h"
#include "x86_descr.h"
@@ -74,7 +75,7 @@ static inline uint64_t decode_bytes(CPUX86State *env, struct
x86_decode *decode,
break;
}
target_ulong va = linear_rip(env_cpu(env), env->eip) + decode->len;
- vmx_read_mem(env_cpu(env), &val, va, size);
+ emul_ops->read_mem(env_cpu(env), &val, va, size);
decode->len += size;
return val;
@@ -1893,16 +1894,6 @@ static void decode_prefix(CPUX86State *env, struct
x86_decode *decode)
}
}
-static struct x86_segment_descriptor get_cs_descriptor(CPUState *s)
-{
- struct vmx_segment vmx_cs;
- x86_segment_descriptor cs;
- vmx_read_segment_descriptor(s, &vmx_cs, R_CS);
- vmx_segment_to_x86_descriptor(s, &vmx_cs, &cs);
-
- return cs;
-}
-
void set_addressing_size(CPUX86State *env, struct x86_decode *decode)
{
decode->addressing_size = -1;
@@ -1914,7 +1905,8 @@ void set_addressing_size(CPUX86State *env, struct
x86_decode *decode)
}
} else if (!x86_is_long_mode(env_cpu(env))) {
/* protected */
- x86_segment_descriptor cs = get_cs_descriptor(env_cpu(env));
+ x86_segment_descriptor cs;
+ emul_ops->read_segment_descriptor(env_cpu(env), &cs, R_CS);
/* check db */
if (cs.db) {
if (decode->addr_size_override) {
@@ -1950,7 +1942,8 @@ void set_operand_size(CPUX86State *env, struct x86_decode
*decode)
}
} else if (!x86_is_long_mode(env_cpu(env))) {
/* protected */
- x86_segment_descriptor cs = get_cs_descriptor(env_cpu(env));
+ x86_segment_descriptor cs;
+ emul_ops->read_segment_descriptor(env_cpu(env), &cs, R_CS);
/* check db */
if (cs.db) {
if (decode->op_size_override) {
--
2.47.2
- [PATCH v2 00/14] Factor out HVF's instruction emulator, Wei Liu, 2025/03/07
- [PATCH v2 03/14] target/i386/hvf: provide and use handle_io in emul_ops, Wei Liu, 2025/03/07
- [PATCH v2 04/14] target/i386: rename hvf_mmio_buf to emu_mmio_buf, Wei Liu, 2025/03/07
- [PATCH v2 01/14] target/i386/hvf: introduce x86_emul_ops, Wei Liu, 2025/03/07
- [PATCH v2 02/14] target/i386/hvf: remove HVF specific calls from x86_decode.c,
Wei Liu <=
- [PATCH v2 07/14] target/i386/hvf: provide and use simulate_{wrmsr, rdmsr} in emul_ops, Wei Liu, 2025/03/07
- [PATCH v2 05/14] target/i386/hvf: use emul_ops->read_mem in x86_emu.c, Wei Liu, 2025/03/07
- [PATCH v2 11/14] target/i386: add a directory for x86 instruction emulator, Wei Liu, 2025/03/07
- [PATCH v2 10/14] target/i386/hvf: rename some include guards, Wei Liu, 2025/03/07
- [PATCH v2 06/14] taret/i386/hvf: provide and use write_mem in emul_ops, Wei Liu, 2025/03/07
- [PATCH v2 13/14] target/i386: move x86 instruction emulator out of hvf, Wei Liu, 2025/03/07
- [PATCH v2 14/14] MAINTAINERS: add an entry for the x86 instruction emulator, Wei Liu, 2025/03/07
- [PATCH v2 09/14] target/i386/hvf: drop unused headers, Wei Liu, 2025/03/07
- [PATCH v2 08/14] target/i386: rename lazy flags field and its type, Wei Liu, 2025/03/07
- [PATCH v2 12/14] target/i386/emulate: add a panic.h, Wei Liu, 2025/03/07