i386: hvf: Drop regs in HVFX86EmulatorState

HVFX86EmulatorState carries it's own copy of x86 registers. It can be
dropped in favor of regs in generic CPUX86State.

Signed-off-by: Roman Bolshakov <r.bolshakov@yadro.com>
Message-Id: <20200528193758.51454-11-r.bolshakov@yadro.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
Roman Bolshakov 2020-05-28 22:37:55 +03:00 committed by Paolo Bonzini
parent ea48ae9121
commit 167c6aef67
2 changed files with 16 additions and 15 deletions

View file

@ -235,13 +235,14 @@ typedef struct lazy_flags {
/* Definition of hvf_x86_state is here */ /* Definition of hvf_x86_state is here */
struct HVFX86EmulatorState { struct HVFX86EmulatorState {
struct x86_register regs[16];
struct lazy_flags lflags; struct lazy_flags lflags;
uint8_t mmio_buf[4096]; uint8_t mmio_buf[4096];
}; };
/* useful register access macros */ /* useful register access macros */
#define RRX(cpu, reg) (cpu->hvf_emul->regs[reg].rrx) #define x86_reg(cpu, reg) ((x86_register *) &cpu->regs[reg])
#define RRX(cpu, reg) (x86_reg(cpu, reg)->rrx)
#define RAX(cpu) RRX(cpu, R_EAX) #define RAX(cpu) RRX(cpu, R_EAX)
#define RCX(cpu) RRX(cpu, R_ECX) #define RCX(cpu) RRX(cpu, R_ECX)
#define RDX(cpu) RRX(cpu, R_EDX) #define RDX(cpu) RRX(cpu, R_EDX)
@ -259,7 +260,7 @@ struct HVFX86EmulatorState {
#define R14(cpu) RRX(cpu, R_R14) #define R14(cpu) RRX(cpu, R_R14)
#define R15(cpu) RRX(cpu, R_R15) #define R15(cpu) RRX(cpu, R_R15)
#define ERX(cpu, reg) (cpu->hvf_emul->regs[reg].erx) #define ERX(cpu, reg) (x86_reg(cpu, reg)->erx)
#define EAX(cpu) ERX(cpu, R_EAX) #define EAX(cpu) ERX(cpu, R_EAX)
#define ECX(cpu) ERX(cpu, R_ECX) #define ECX(cpu) ERX(cpu, R_ECX)
#define EDX(cpu) ERX(cpu, R_EDX) #define EDX(cpu) ERX(cpu, R_EDX)
@ -269,7 +270,7 @@ struct HVFX86EmulatorState {
#define ESI(cpu) ERX(cpu, R_ESI) #define ESI(cpu) ERX(cpu, R_ESI)
#define EDI(cpu) ERX(cpu, R_EDI) #define EDI(cpu) ERX(cpu, R_EDI)
#define RX(cpu, reg) (cpu->hvf_emul->regs[reg].rx) #define RX(cpu, reg) (x86_reg(cpu, reg)->rx)
#define AX(cpu) RX(cpu, R_EAX) #define AX(cpu) RX(cpu, R_EAX)
#define CX(cpu) RX(cpu, R_ECX) #define CX(cpu) RX(cpu, R_ECX)
#define DX(cpu) RX(cpu, R_EDX) #define DX(cpu) RX(cpu, R_EDX)
@ -279,13 +280,13 @@ struct HVFX86EmulatorState {
#define SI(cpu) RX(cpu, R_ESI) #define SI(cpu) RX(cpu, R_ESI)
#define DI(cpu) RX(cpu, R_EDI) #define DI(cpu) RX(cpu, R_EDI)
#define RL(cpu, reg) (cpu->hvf_emul->regs[reg].lx) #define RL(cpu, reg) (x86_reg(cpu, reg)->lx)
#define AL(cpu) RL(cpu, R_EAX) #define AL(cpu) RL(cpu, R_EAX)
#define CL(cpu) RL(cpu, R_ECX) #define CL(cpu) RL(cpu, R_ECX)
#define DL(cpu) RL(cpu, R_EDX) #define DL(cpu) RL(cpu, R_EDX)
#define BL(cpu) RL(cpu, R_EBX) #define BL(cpu) RL(cpu, R_EBX)
#define RH(cpu, reg) (cpu->hvf_emul->regs[reg].hx) #define RH(cpu, reg) (x86_reg(cpu, reg)->hx)
#define AH(cpu) RH(cpu, R_EAX) #define AH(cpu) RH(cpu, R_EAX)
#define CH(cpu) RH(cpu, R_ECX) #define CH(cpu) RH(cpu, R_ECX)
#define DH(cpu) RH(cpu, R_EDX) #define DH(cpu) RH(cpu, R_EDX)

View file

@ -95,13 +95,13 @@ target_ulong read_reg(CPUX86State *env, int reg, int size)
{ {
switch (size) { switch (size) {
case 1: case 1:
return env->hvf_emul->regs[reg].lx; return x86_reg(env, reg)->lx;
case 2: case 2:
return env->hvf_emul->regs[reg].rx; return x86_reg(env, reg)->rx;
case 4: case 4:
return env->hvf_emul->regs[reg].erx; return x86_reg(env, reg)->erx;
case 8: case 8:
return env->hvf_emul->regs[reg].rrx; return x86_reg(env, reg)->rrx;
default: default:
abort(); abort();
} }
@ -112,16 +112,16 @@ void write_reg(CPUX86State *env, int reg, target_ulong val, int size)
{ {
switch (size) { switch (size) {
case 1: case 1:
env->hvf_emul->regs[reg].lx = val; x86_reg(env, reg)->lx = val;
break; break;
case 2: case 2:
env->hvf_emul->regs[reg].rx = val; x86_reg(env, reg)->rx = val;
break; break;
case 4: case 4:
env->hvf_emul->regs[reg].rrx = (uint32_t)val; x86_reg(env, reg)->rrx = (uint32_t)val;
break; break;
case 8: case 8:
env->hvf_emul->regs[reg].rrx = val; x86_reg(env, reg)->rrx = val;
break; break;
default: default:
abort(); abort();
@ -173,7 +173,7 @@ void write_val_to_reg(target_ulong reg_ptr, target_ulong val, int size)
static bool is_host_reg(struct CPUX86State *env, target_ulong ptr) static bool is_host_reg(struct CPUX86State *env, target_ulong ptr)
{ {
return (ptr - (target_ulong)&env->hvf_emul->regs[0]) < sizeof(env->hvf_emul->regs); return (ptr - (target_ulong)&env->regs[0]) < sizeof(env->regs);
} }
void write_val_ext(struct CPUX86State *env, target_ulong ptr, target_ulong val, int size) void write_val_ext(struct CPUX86State *env, target_ulong ptr, target_ulong val, int size)