Message ID | 20200504083342.24273-5-f4bug@amsat.org |
---|---|
State | New |
Headers | show |
Series | hw/i386: Restrict vmport/vmmouse devices to x86 targets | expand |
On 5/4/20 1:33 AM, Philippe Mathieu-Daudé wrote: > +++ b/hw/i386/vmport.c > @@ -23,10 +23,10 @@ > */ > #include "qemu/osdep.h" > #include "hw/isa/isa.h" > -#include "hw/i386/pc.h" > #include "sysemu/hw_accel.h" > #include "qemu/log.h" > #include "vmport.h" > +#include "cpu.h" > #include "trace.h" > > #define VMPORT_CMD_GETVERSION 0x0a > @@ -109,27 +109,6 @@ static uint32_t vmport_cmd_ram_size(void *opaque, uint32_t addr) > return ram_size; > } > > -/* vmmouse helpers */ > -void vmmouse_get_data(uint32_t *data) > -{ > - X86CPU *cpu = X86_CPU(current_cpu); > - CPUX86State *env = &cpu->env; > - > - data[0] = env->regs[R_EAX]; data[1] = env->regs[R_EBX]; > - data[2] = env->regs[R_ECX]; data[3] = env->regs[R_EDX]; > - data[4] = env->regs[R_ESI]; data[5] = env->regs[R_EDI]; > -} Why are you adding "cpu.h" when removing code? Does that mean you don't need to add "cpu.h" to vmmouse.c? r~
On 5/4/20 7:29 PM, Richard Henderson wrote: > On 5/4/20 1:33 AM, Philippe Mathieu-Daudé wrote: >> +++ b/hw/i386/vmport.c >> @@ -23,10 +23,10 @@ >> */ >> #include "qemu/osdep.h" >> #include "hw/isa/isa.h" >> -#include "hw/i386/pc.h" >> #include "sysemu/hw_accel.h" >> #include "qemu/log.h" >> #include "vmport.h" >> +#include "cpu.h" >> #include "trace.h" >> >> #define VMPORT_CMD_GETVERSION 0x0a >> @@ -109,27 +109,6 @@ static uint32_t vmport_cmd_ram_size(void *opaque, uint32_t addr) >> return ram_size; >> } >> >> -/* vmmouse helpers */ >> -void vmmouse_get_data(uint32_t *data) >> -{ >> - X86CPU *cpu = X86_CPU(current_cpu); >> - CPUX86State *env = &cpu->env; >> - >> - data[0] = env->regs[R_EAX]; data[1] = env->regs[R_EBX]; >> - data[2] = env->regs[R_ECX]; data[3] = env->regs[R_EDX]; >> - data[4] = env->regs[R_ESI]; data[5] = env->regs[R_EDI]; >> -} > > Why are you adding "cpu.h" when removing code? Because this file still use the X86 register definitions: static uint32_t vmport_cmd_get_version(void *opaque, uint32_t addr) { X86CPU *cpu = X86_CPU(current_cpu); cpu->env.regs[R_EBX] = VMPORT_MAGIC; return 6; } > Does that mean you don't need to add "cpu.h" to vmmouse.c? Now both files vmmouse/vmport uses the X86 register definitions, but they don't use anything declared in "hw/i386/pc.h". > > > r~ >
diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h index de49a57506..05e19455bb 100644 --- a/include/hw/i386/pc.h +++ b/include/hw/i386/pc.h @@ -129,10 +129,6 @@ typedef struct PCMachineClass { GSIState *pc_gsi_create(qemu_irq **irqs, bool pci_enabled); -/* vmport.c */ -void vmmouse_get_data(uint32_t *data); -void vmmouse_set_data(const uint32_t *data); - /* pc.c */ extern int fd_bootchk; diff --git a/hw/i386/vmmouse.c b/hw/i386/vmmouse.c index 78b36f6f5d..b3aef41327 100644 --- a/hw/i386/vmmouse.c +++ b/hw/i386/vmmouse.c @@ -25,11 +25,11 @@ #include "qemu/osdep.h" #include "qapi/error.h" #include "ui/console.h" -#include "hw/i386/pc.h" #include "hw/input/i8042.h" #include "hw/qdev-properties.h" #include "migration/vmstate.h" #include "vmport.h" +#include "cpu.h" /* debug only vmmouse */ //#define DEBUG_VMMOUSE @@ -71,6 +71,26 @@ typedef struct VMMouseState ISAKBDState *i8042; } VMMouseState; +static void vmmouse_get_data(uint32_t *data) +{ + X86CPU *cpu = X86_CPU(current_cpu); + CPUX86State *env = &cpu->env; + + data[0] = env->regs[R_EAX]; data[1] = env->regs[R_EBX]; + data[2] = env->regs[R_ECX]; data[3] = env->regs[R_EDX]; + data[4] = env->regs[R_ESI]; data[5] = env->regs[R_EDI]; +} + +static void vmmouse_set_data(const uint32_t *data) +{ + X86CPU *cpu = X86_CPU(current_cpu); + CPUX86State *env = &cpu->env; + + env->regs[R_EAX] = data[0]; env->regs[R_EBX] = data[1]; + env->regs[R_ECX] = data[2]; env->regs[R_EDX] = data[3]; + env->regs[R_ESI] = data[4]; env->regs[R_EDI] = data[5]; +} + static uint32_t vmmouse_get_status(VMMouseState *s) { DPRINTF("vmmouse_get_status()\n"); diff --git a/hw/i386/vmport.c b/hw/i386/vmport.c index 00d47e0c4c..1aaaab691a 100644 --- a/hw/i386/vmport.c +++ b/hw/i386/vmport.c @@ -23,10 +23,10 @@ */ #include "qemu/osdep.h" #include "hw/isa/isa.h" -#include "hw/i386/pc.h" #include "sysemu/hw_accel.h" #include "qemu/log.h" #include "vmport.h" +#include "cpu.h" #include "trace.h" #define VMPORT_CMD_GETVERSION 0x0a @@ -109,27 +109,6 @@ static uint32_t vmport_cmd_ram_size(void *opaque, uint32_t addr) return ram_size; } -/* vmmouse helpers */ -void vmmouse_get_data(uint32_t *data) -{ - X86CPU *cpu = X86_CPU(current_cpu); - CPUX86State *env = &cpu->env; - - data[0] = env->regs[R_EAX]; data[1] = env->regs[R_EBX]; - data[2] = env->regs[R_ECX]; data[3] = env->regs[R_EDX]; - data[4] = env->regs[R_ESI]; data[5] = env->regs[R_EDI]; -} - -void vmmouse_set_data(const uint32_t *data) -{ - X86CPU *cpu = X86_CPU(current_cpu); - CPUX86State *env = &cpu->env; - - env->regs[R_EAX] = data[0]; env->regs[R_EBX] = data[1]; - env->regs[R_ECX] = data[2]; env->regs[R_EDX] = data[3]; - env->regs[R_ESI] = data[4]; env->regs[R_EDI] = data[5]; -} - static const MemoryRegionOps vmport_ops = { .read = vmport_ioport_read, .write = vmport_ioport_write,
The vmmouse helpers are only used in hw/i386/vmmouse.c, make them static. Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org> --- include/hw/i386/pc.h | 4 ---- hw/i386/vmmouse.c | 22 +++++++++++++++++++++- hw/i386/vmport.c | 23 +---------------------- 3 files changed, 22 insertions(+), 27 deletions(-)