Revision 86d86414

b/Makefile.objs
258 258
hw-obj-$(CONFIG_VGA_ISA) += vga-isa.o
259 259
hw-obj-$(CONFIG_VGA_ISA_MM) += vga-isa-mm.o
260 260
hw-obj-$(CONFIG_VMWARE_VGA) += vmware_vga.o
261
hw-obj-$(CONFIG_VMMOUSE) += vmmouse.o
261 262

  
262 263
hw-obj-$(CONFIG_RC4030) += rc4030.o
263 264
hw-obj-$(CONFIG_DP8393X) += dp8393x.o
b/Makefile.target
215 215
obj-i386-y += vga.o
216 216
obj-i386-y += mc146818rtc.o i8259.o pc.o
217 217
obj-i386-y += cirrus_vga.o apic.o ioapic.o piix_pci.o
218
obj-i386-y += vmmouse.o vmport.o hpet.o applesmc.o
218
obj-i386-y += vmport.o hpet.o applesmc.o
219 219
obj-i386-y += device-hotplug.o pci-hotplug.o smbios.o wdt_ib700.o
220 220
obj-i386-y += debugcon.o multiboot.o
221 221
obj-i386-y += pc_piix.o
b/default-configs/i386-softmmu.mak
4 4
CONFIG_VGA_PCI=y
5 5
CONFIG_VGA_ISA=y
6 6
CONFIG_VMWARE_VGA=y
7
CONFIG_VMMOUSE=y
7 8
CONFIG_SERIAL=y
8 9
CONFIG_PARALLEL=y
9 10
CONFIG_I8254=y
b/default-configs/x86_64-softmmu.mak
4 4
CONFIG_VGA_PCI=y
5 5
CONFIG_VGA_ISA=y
6 6
CONFIG_VMWARE_VGA=y
7
CONFIG_VMMMOUSE=y
7 8
CONFIG_SERIAL=y
8 9
CONFIG_PARALLEL=y
9 10
CONFIG_I8254=y
b/hw/pc.c
1134 1134
    i8042 = isa_create_simple("i8042");
1135 1135
    i8042_setup_a20_line(i8042, &a20_line[0]);
1136 1136
    vmport_init();
1137
    vmmouse = isa_create("vmmouse");
1138
    qdev_prop_set_ptr(&vmmouse->qdev, "ps2_mouse", i8042);
1137
    vmmouse = isa_try_create("vmmouse");
1138
    if (vmmouse) {
1139
        qdev_prop_set_ptr(&vmmouse->qdev, "ps2_mouse", i8042);
1140
    }
1139 1141
    port92 = isa_create_simple("port92");
1140 1142
    port92_init(port92, &a20_line[1]);
1141 1143

  
b/hw/pc.h
70 70
    isa_create_simple("vmport");
71 71
}
72 72
void vmport_register(unsigned char command, IOPortReadFunc *func, void *opaque);
73
void vmmouse_get_data(uint32_t *data);
74
void vmmouse_set_data(const uint32_t *data);
73 75

  
74 76
/* pckbd.c */
75 77

  
b/hw/vmmouse.c
178 178
        memmove(s->queue, &s->queue[size], sizeof(s->queue[0]) * s->nb_queue);
179 179
}
180 180

  
181
static void vmmouse_get_data(uint32_t *data)
182
{
183
    CPUState *env = cpu_single_env;
184

  
185
    data[0] = env->regs[R_EAX]; data[1] = env->regs[R_EBX];
186
    data[2] = env->regs[R_ECX]; data[3] = env->regs[R_EDX];
187
    data[4] = env->regs[R_ESI]; data[5] = env->regs[R_EDI];
188

  
189
    DPRINTF("get_data = {%x, %x, %x, %x, %x, %x}\n",
190
            data[0], data[1], data[2], data[3], data[4], data[5]);
191
}
192

  
193
static void vmmouse_set_data(const uint32_t *data)
194
{
195
    CPUState *env = cpu_single_env;
196

  
197
    DPRINTF("set_data = {%x, %x, %x, %x, %x, %x}\n",
198
            data[0], data[1], data[2], data[3], data[4], data[5]);
199

  
200
    env->regs[R_EAX] = data[0]; env->regs[R_EBX] = data[1];
201
    env->regs[R_ECX] = data[2]; env->regs[R_EDX] = data[3];
202
    env->regs[R_ESI] = data[4]; env->regs[R_EDI] = data[5];
203
}
204

  
205 181
static uint32_t vmmouse_ioport_read(void *opaque, uint32_t addr)
206 182
{
207 183
    VMMouseState *s = opaque;
b/hw/vmport.c
102 102
    return ram_size;
103 103
}
104 104

  
105
/* vmmouse helpers */
106
void vmmouse_get_data(uint32_t *data)
107
{
108
    CPUState *env = cpu_single_env;
109

  
110
    data[0] = env->regs[R_EAX]; data[1] = env->regs[R_EBX];
111
    data[2] = env->regs[R_ECX]; data[3] = env->regs[R_EDX];
112
    data[4] = env->regs[R_ESI]; data[5] = env->regs[R_EDI];
113
}
114

  
115
void vmmouse_set_data(const uint32_t *data)
116
{
117
    CPUState *env = cpu_single_env;
118

  
119
    env->regs[R_EAX] = data[0]; env->regs[R_EBX] = data[1];
120
    env->regs[R_ECX] = data[2]; env->regs[R_EDX] = data[3];
121
    env->regs[R_ESI] = data[4]; env->regs[R_EDI] = data[5];
122
}
123

  
105 124
static int vmport_initfn(ISADevice *dev)
106 125
{
107 126
    VMPortState *s = DO_UPCAST(VMPortState, dev, dev);

Also available in: Unified diff