Use the framework for the VMware mouse emulation, by Herve Poussineau.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3150 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
parent
591a6d6279
commit
9334280790
1
hw/pc.c
1
hw/pc.c
@ -692,6 +692,7 @@ static void pc_init1(int ram_size, int vga_ram_size, int boot_device,
|
|||||||
if (pci_enabled) {
|
if (pci_enabled) {
|
||||||
apic_init(env);
|
apic_init(env);
|
||||||
}
|
}
|
||||||
|
vmport_init(env);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* allocate RAM */
|
/* allocate RAM */
|
||||||
|
18
hw/vmmouse.c
18
hw/vmmouse.c
@ -39,7 +39,6 @@
|
|||||||
|
|
||||||
#define VMMOUSE_QUEUE_SIZE 1024
|
#define VMMOUSE_QUEUE_SIZE 1024
|
||||||
|
|
||||||
#define VMMOUSE_MAGIC 0x564D5868
|
|
||||||
#define VMMOUSE_VERSION 0x3442554a
|
#define VMMOUSE_VERSION 0x3442554a
|
||||||
|
|
||||||
#ifdef DEBUG_VMMOUSE
|
#ifdef DEBUG_VMMOUSE
|
||||||
@ -58,13 +57,6 @@ typedef struct _VMMouseState
|
|||||||
void *ps2_mouse;
|
void *ps2_mouse;
|
||||||
} VMMouseState;
|
} VMMouseState;
|
||||||
|
|
||||||
static uint32_t vmmouse_get_version(VMMouseState *s, uint32_t *magic)
|
|
||||||
{
|
|
||||||
DPRINTF("vmmouse_get_version(%x)\n", *magic);
|
|
||||||
*magic = VMMOUSE_MAGIC;
|
|
||||||
return VMMOUSE_VERSION;
|
|
||||||
}
|
|
||||||
|
|
||||||
static uint32_t vmmouse_get_status(VMMouseState *s)
|
static uint32_t vmmouse_get_status(VMMouseState *s)
|
||||||
{
|
{
|
||||||
DPRINTF("vmmouse_get_status()\n");
|
DPRINTF("vmmouse_get_status()\n");
|
||||||
@ -201,15 +193,10 @@ static uint32_t vmmouse_ioport_read(void *opaque, uint32_t addr)
|
|||||||
uint16_t command;
|
uint16_t command;
|
||||||
|
|
||||||
vmmouse_get_data(data);
|
vmmouse_get_data(data);
|
||||||
if (data[0] != VMMOUSE_MAGIC)
|
|
||||||
goto error;
|
|
||||||
|
|
||||||
command = data[2] & 0xFFFF;
|
command = data[2] & 0xFFFF;
|
||||||
|
|
||||||
switch (command) {
|
switch (command) {
|
||||||
case VMMOUSE_GETVERSION:
|
|
||||||
data[0] = vmmouse_get_version(s, &data[1]);
|
|
||||||
break;
|
|
||||||
case VMMOUSE_STATUS:
|
case VMMOUSE_STATUS:
|
||||||
data[0] = vmmouse_get_status(s);
|
data[0] = vmmouse_get_status(s);
|
||||||
break;
|
break;
|
||||||
@ -240,7 +227,6 @@ static uint32_t vmmouse_ioport_read(void *opaque, uint32_t addr)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
error:
|
|
||||||
vmmouse_set_data(data);
|
vmmouse_set_data(data);
|
||||||
return data[0];
|
return data[0];
|
||||||
}
|
}
|
||||||
@ -292,7 +278,9 @@ void *vmmouse_init(void *m)
|
|||||||
s->status = 0xffff;
|
s->status = 0xffff;
|
||||||
s->ps2_mouse = m;
|
s->ps2_mouse = m;
|
||||||
|
|
||||||
register_ioport_read(0x5658, 1, 4, vmmouse_ioport_read, s);
|
vmport_register(VMMOUSE_STATUS, vmmouse_ioport_read, s);
|
||||||
|
vmport_register(VMMOUSE_COMMAND, vmmouse_ioport_read, s);
|
||||||
|
vmport_register(VMMOUSE_DATA, vmmouse_ioport_read, s);
|
||||||
register_savevm("vmmouse", 0, 0, vmmouse_save, vmmouse_load, s);
|
register_savevm("vmmouse", 0, 0, vmmouse_save, vmmouse_load, s);
|
||||||
|
|
||||||
return s;
|
return s;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user