mirror of https://github.com/xemu-project/xemu.git
hw/i386/vmport: Define enum for all commands
No functional change. Defining an enum for all VMPort commands have the following advantages: * It gets rid of the error-prone requirement to update VMPORT_ENTRIES when new VMPort commands are added to QEMU. * It makes it clear to know by looking at one place at the source, what are all the VMPort commands supported by QEMU. Reviewed-by: Nikita Leshenko <nikita.leshchenko@oracle.com> Signed-off-by: Liran Alon <liran.alon@oracle.com> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> Message-Id: <20200312165431.82118-9-liran.alon@oracle.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
d8f23d619c
commit
dcd938f032
|
@ -34,12 +34,6 @@
|
||||||
/* debug only vmmouse */
|
/* debug only vmmouse */
|
||||||
//#define DEBUG_VMMOUSE
|
//#define DEBUG_VMMOUSE
|
||||||
|
|
||||||
/* VMMouse Commands */
|
|
||||||
#define VMMOUSE_GETVERSION 10
|
|
||||||
#define VMMOUSE_DATA 39
|
|
||||||
#define VMMOUSE_STATUS 40
|
|
||||||
#define VMMOUSE_COMMAND 41
|
|
||||||
|
|
||||||
#define VMMOUSE_READ_ID 0x45414552
|
#define VMMOUSE_READ_ID 0x45414552
|
||||||
#define VMMOUSE_DISABLE 0x000000f5
|
#define VMMOUSE_DISABLE 0x000000f5
|
||||||
#define VMMOUSE_REQUEST_RELATIVE 0x4c455252
|
#define VMMOUSE_REQUEST_RELATIVE 0x4c455252
|
||||||
|
@ -217,10 +211,10 @@ static uint32_t vmmouse_ioport_read(void *opaque, uint32_t addr)
|
||||||
command = data[2] & 0xFFFF;
|
command = data[2] & 0xFFFF;
|
||||||
|
|
||||||
switch (command) {
|
switch (command) {
|
||||||
case VMMOUSE_STATUS:
|
case VMPORT_CMD_VMMOUSE_STATUS:
|
||||||
data[0] = vmmouse_get_status(s);
|
data[0] = vmmouse_get_status(s);
|
||||||
break;
|
break;
|
||||||
case VMMOUSE_COMMAND:
|
case VMPORT_CMD_VMMOUSE_COMMAND:
|
||||||
switch (data[1]) {
|
switch (data[1]) {
|
||||||
case VMMOUSE_DISABLE:
|
case VMMOUSE_DISABLE:
|
||||||
vmmouse_disable(s);
|
vmmouse_disable(s);
|
||||||
|
@ -239,7 +233,7 @@ static uint32_t vmmouse_ioport_read(void *opaque, uint32_t addr)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case VMMOUSE_DATA:
|
case VMPORT_CMD_VMMOUSE_DATA:
|
||||||
vmmouse_data(s, data, data[1]);
|
vmmouse_data(s, data, data[1]);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -296,9 +290,9 @@ static void vmmouse_realizefn(DeviceState *dev, Error **errp)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
vmport_register(VMMOUSE_STATUS, vmmouse_ioport_read, s);
|
vmport_register(VMPORT_CMD_VMMOUSE_STATUS, vmmouse_ioport_read, s);
|
||||||
vmport_register(VMMOUSE_COMMAND, vmmouse_ioport_read, s);
|
vmport_register(VMPORT_CMD_VMMOUSE_COMMAND, vmmouse_ioport_read, s);
|
||||||
vmport_register(VMMOUSE_DATA, vmmouse_ioport_read, s);
|
vmport_register(VMPORT_CMD_VMMOUSE_DATA, vmmouse_ioport_read, s);
|
||||||
}
|
}
|
||||||
|
|
||||||
static Property vmmouse_properties[] = {
|
static Property vmmouse_properties[] = {
|
||||||
|
|
|
@ -37,10 +37,6 @@
|
||||||
#include "cpu.h"
|
#include "cpu.h"
|
||||||
#include "trace.h"
|
#include "trace.h"
|
||||||
|
|
||||||
#define VMPORT_CMD_GETVERSION 0x0a
|
|
||||||
#define VMPORT_CMD_GETRAMSIZE 0x14
|
|
||||||
|
|
||||||
#define VMPORT_ENTRIES 0x2c
|
|
||||||
#define VMPORT_MAGIC 0x564D5868
|
#define VMPORT_MAGIC 0x564D5868
|
||||||
|
|
||||||
/* Compatibility flags for migration */
|
/* Compatibility flags for migration */
|
||||||
|
@ -71,12 +67,9 @@ typedef struct VMPortState {
|
||||||
|
|
||||||
static VMPortState *port_state;
|
static VMPortState *port_state;
|
||||||
|
|
||||||
void vmport_register(unsigned char command, VMPortReadFunc *func, void *opaque)
|
void vmport_register(VMPortCommand command, VMPortReadFunc *func, void *opaque)
|
||||||
{
|
{
|
||||||
if (command >= VMPORT_ENTRIES) {
|
assert(command < VMPORT_ENTRIES);
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
trace_vmport_register(command, func, opaque);
|
trace_vmport_register(command, func, opaque);
|
||||||
port_state->func[command] = func;
|
port_state->func[command] = func;
|
||||||
port_state->opaque[command] = opaque;
|
port_state->opaque[command] = opaque;
|
||||||
|
|
|
@ -6,11 +6,20 @@
|
||||||
#define TYPE_VMPORT "vmport"
|
#define TYPE_VMPORT "vmport"
|
||||||
typedef uint32_t (VMPortReadFunc)(void *opaque, uint32_t address);
|
typedef uint32_t (VMPortReadFunc)(void *opaque, uint32_t address);
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
VMPORT_CMD_GETVERSION = 10,
|
||||||
|
VMPORT_CMD_GETRAMSIZE = 20,
|
||||||
|
VMPORT_CMD_VMMOUSE_DATA = 39,
|
||||||
|
VMPORT_CMD_VMMOUSE_STATUS = 40,
|
||||||
|
VMPORT_CMD_VMMOUSE_COMMAND = 41,
|
||||||
|
VMPORT_ENTRIES
|
||||||
|
} VMPortCommand;
|
||||||
|
|
||||||
static inline void vmport_init(ISABus *bus)
|
static inline void vmport_init(ISABus *bus)
|
||||||
{
|
{
|
||||||
isa_create_simple(bus, TYPE_VMPORT);
|
isa_create_simple(bus, TYPE_VMPORT);
|
||||||
}
|
}
|
||||||
|
|
||||||
void vmport_register(unsigned char command, VMPortReadFunc *func, void *opaque);
|
void vmport_register(VMPortCommand command, VMPortReadFunc *func, void *opaque);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue