target/i386: Use X86Seg enum for segment registers

Use the dedicated X86Seg enum type for segment registers.

Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Message-Id: <20210109233427.749748-1-f4bug@amsat.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
Philippe Mathieu-Daudé 2021-01-10 00:34:27 +01:00 committed by Paolo Bonzini
parent 835af8990c
commit c117e5b11a
4 changed files with 10 additions and 10 deletions

View File

@ -1807,7 +1807,7 @@ void cpu_sync_bndcs_hflags(CPUX86State *env);
/* this function must always be used to load data in the segment /* this function must always be used to load data in the segment
cache: it synchronizes the hflags with the segment cache values */ cache: it synchronizes the hflags with the segment cache values */
static inline void cpu_x86_load_seg_cache(CPUX86State *env, static inline void cpu_x86_load_seg_cache(CPUX86State *env,
int seg_reg, unsigned int selector, X86Seg seg_reg, unsigned int selector,
target_ulong base, target_ulong base,
unsigned int limit, unsigned int limit,
unsigned int flags) unsigned int flags)
@ -1896,7 +1896,7 @@ int cpu_x86_get_descr_debug(CPUX86State *env, unsigned int selector,
/* cpu-exec.c */ /* cpu-exec.c */
/* the following helpers are only usable in user mode simulation as /* the following helpers are only usable in user mode simulation as
they can trigger unexpected exceptions */ they can trigger unexpected exceptions */
void cpu_x86_load_seg(CPUX86State *s, int seg_reg, int selector); void cpu_x86_load_seg(CPUX86State *s, X86Seg seg_reg, int selector);
void cpu_x86_fsave(CPUX86State *s, target_ulong ptr, int data32); void cpu_x86_fsave(CPUX86State *s, target_ulong ptr, int data32);
void cpu_x86_frstor(CPUX86State *s, target_ulong ptr, int data32); void cpu_x86_frstor(CPUX86State *s, target_ulong ptr, int data32);
void cpu_x86_fxsave(CPUX86State *s, target_ulong ptr); void cpu_x86_fxsave(CPUX86State *s, target_ulong ptr);

View File

@ -232,7 +232,7 @@ int x86_cpu_gdb_read_register(CPUState *cs, GByteArray *mem_buf, int n)
return 0; return 0;
} }
static int x86_cpu_gdb_load_seg(X86CPU *cpu, int sreg, uint8_t *mem_buf) static int x86_cpu_gdb_load_seg(X86CPU *cpu, X86Seg sreg, uint8_t *mem_buf)
{ {
CPUX86State *env = &cpu->env; CPUX86State *env = &cpu->env;
uint16_t selector = ldl_p(mem_buf); uint16_t selector = ldl_p(mem_buf);

View File

@ -176,8 +176,8 @@ static inline void get_ss_esp_from_tss(CPUX86State *env, uint32_t *ss_ptr,
} }
} }
static void tss_load_seg(CPUX86State *env, int seg_reg, int selector, int cpl, static void tss_load_seg(CPUX86State *env, X86Seg seg_reg, int selector,
uintptr_t retaddr) int cpl, uintptr_t retaddr)
{ {
uint32_t e1, e2; uint32_t e1, e2;
int rpl, dpl; int rpl, dpl;
@ -2098,7 +2098,7 @@ void helper_iret_real(CPUX86State *env, int shift)
env->hflags2 &= ~HF2_NMI_MASK; env->hflags2 &= ~HF2_NMI_MASK;
} }
static inline void validate_seg(CPUX86State *env, int seg_reg, int cpl) static inline void validate_seg(CPUX86State *env, X86Seg seg_reg, int cpl)
{ {
int dpl; int dpl;
uint32_t e2; uint32_t e2;
@ -2623,7 +2623,7 @@ void helper_verw(CPUX86State *env, target_ulong selector1)
} }
#if defined(CONFIG_USER_ONLY) #if defined(CONFIG_USER_ONLY)
void cpu_x86_load_seg(CPUX86State *env, int seg_reg, int selector) void cpu_x86_load_seg(CPUX86State *env, X86Seg seg_reg, int selector)
{ {
if (!(env->cr[0] & CR0_PE_MASK) || (env->eflags & VM_MASK)) { if (!(env->cr[0] & CR0_PE_MASK) || (env->eflags & VM_MASK)) {
int dpl = (env->eflags & VM_MASK) ? 3 : 0; int dpl = (env->eflags & VM_MASK) ? 3 : 0;

View File

@ -2287,13 +2287,13 @@ static void gen_cmovcc1(CPUX86State *env, DisasContext *s, MemOp ot, int b,
} }
} }
static inline void gen_op_movl_T0_seg(DisasContext *s, int seg_reg) static inline void gen_op_movl_T0_seg(DisasContext *s, X86Seg seg_reg)
{ {
tcg_gen_ld32u_tl(s->T0, cpu_env, tcg_gen_ld32u_tl(s->T0, cpu_env,
offsetof(CPUX86State,segs[seg_reg].selector)); offsetof(CPUX86State,segs[seg_reg].selector));
} }
static inline void gen_op_movl_seg_T0_vm(DisasContext *s, int seg_reg) static inline void gen_op_movl_seg_T0_vm(DisasContext *s, X86Seg seg_reg)
{ {
tcg_gen_ext16u_tl(s->T0, s->T0); tcg_gen_ext16u_tl(s->T0, s->T0);
tcg_gen_st32_tl(s->T0, cpu_env, tcg_gen_st32_tl(s->T0, cpu_env,
@ -2303,7 +2303,7 @@ static inline void gen_op_movl_seg_T0_vm(DisasContext *s, int seg_reg)
/* move T0 to seg_reg and compute if the CPU state may change. Never /* move T0 to seg_reg and compute if the CPU state may change. Never
call this function with seg_reg == R_CS */ call this function with seg_reg == R_CS */
static void gen_movl_seg_T0(DisasContext *s, int seg_reg) static void gen_movl_seg_T0(DisasContext *s, X86Seg seg_reg)
{ {
if (s->pe && !s->vm86) { if (s->pe && !s->vm86) {
tcg_gen_trunc_tl_i32(s->tmp2_i32, s->T0); tcg_gen_trunc_tl_i32(s->tmp2_i32, s->T0);