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>
This commit is contained in:
parent
b322b3afc1
commit
e6aeb948bb
@ -117,7 +117,6 @@ DEF_HELPER_2(vmload, void, env, int)
|
||||
DEF_HELPER_2(vmsave, void, env, int)
|
||||
DEF_HELPER_1(stgi, void, env)
|
||||
DEF_HELPER_1(clgi, void, env)
|
||||
DEF_HELPER_1(skinit, void, env)
|
||||
DEF_HELPER_2(invlpga, void, env, int)
|
||||
|
||||
/* x86 FPU */
|
||||
|
@ -412,13 +412,6 @@ void helper_clgi(CPUX86State *env)
|
||||
env->hflags2 &= ~HF2_GIF_MASK;
|
||||
}
|
||||
|
||||
void helper_skinit(CPUX86State *env)
|
||||
{
|
||||
cpu_svm_check_intercept_param(env, SVM_EXIT_SKINIT, 0, GETPC());
|
||||
/* XXX: not implemented */
|
||||
raise_exception(env, EXCP06_ILLOP);
|
||||
}
|
||||
|
||||
void helper_invlpga(CPUX86State *env, int aflag)
|
||||
{
|
||||
X86CPU *cpu = env_archcpu(env);
|
||||
|
@ -7578,10 +7578,9 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu)
|
||||
|| !PE(s)) {
|
||||
goto illegal_op;
|
||||
}
|
||||
gen_update_cc_op(s);
|
||||
gen_jmp_im(s, pc_start - s->cs_base);
|
||||
gen_helper_skinit(cpu_env);
|
||||
break;
|
||||
gen_svm_check_intercept(s, pc_start, SVM_EXIT_SKINIT);
|
||||
/* If not intercepted, not implemented -- raise #UD. */
|
||||
goto illegal_op;
|
||||
|
||||
case 0xdf: /* INVLPGA */
|
||||
if (!SVME(s) || !PE(s)) {
|
||||
|
@ -46,10 +46,6 @@ void helper_clgi(CPUX86State *env)
|
||||
{
|
||||
}
|
||||
|
||||
void helper_skinit(CPUX86State *env)
|
||||
{
|
||||
}
|
||||
|
||||
void helper_invlpga(CPUX86State *env, int aflag)
|
||||
{
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user