Commit 26fb5e48d9b4ab676b7b78e0f38e8e4ed126f047
1 parent
4ce7ff6e
Fix vmmouse with -smp
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@4165 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
3 changed files
with
11 additions
and
12 deletions
hw/pc.c
... | ... | @@ -748,9 +748,10 @@ static void pc_init1(int ram_size, int vga_ram_size, |
748 | 748 | if (pci_enabled) { |
749 | 749 | apic_init(env); |
750 | 750 | } |
751 | - vmport_init(env); | |
752 | 751 | } |
753 | 752 | |
753 | + vmport_init(); | |
754 | + | |
754 | 755 | /* allocate RAM */ |
755 | 756 | ram_addr = qemu_ram_alloc(ram_size); |
756 | 757 | cpu_register_physical_memory(0, ram_size, ram_addr); | ... | ... |
hw/pc.h
... | ... | @@ -59,7 +59,7 @@ int pit_get_mode(PITState *pit, int channel); |
59 | 59 | int pit_get_out(PITState *pit, int channel, int64_t current_time); |
60 | 60 | |
61 | 61 | /* vmport.c */ |
62 | -void vmport_init(CPUState *env); | |
62 | +void vmport_init(void); | |
63 | 63 | void vmport_register(unsigned char command, IOPortReadFunc *func, void *opaque); |
64 | 64 | |
65 | 65 | /* vmmouse.c */ | ... | ... |
hw/vmport.c
... | ... | @@ -34,7 +34,6 @@ |
34 | 34 | |
35 | 35 | typedef struct _VMPortState |
36 | 36 | { |
37 | - CPUState *env; | |
38 | 37 | IOPortReadFunc *func[VMPORT_ENTRIES]; |
39 | 38 | void *opaque[VMPORT_ENTRIES]; |
40 | 39 | } VMPortState; |
... | ... | @@ -53,14 +52,15 @@ void vmport_register(unsigned char command, IOPortReadFunc *func, void *opaque) |
53 | 52 | static uint32_t vmport_ioport_read(void *opaque, uint32_t addr) |
54 | 53 | { |
55 | 54 | VMPortState *s = opaque; |
55 | + CPUState *env = cpu_single_env; | |
56 | 56 | unsigned char command; |
57 | 57 | uint32_t eax; |
58 | 58 | |
59 | - eax = s->env->regs[R_EAX]; | |
59 | + eax = env->regs[R_EAX]; | |
60 | 60 | if (eax != VMPORT_MAGIC) |
61 | 61 | return eax; |
62 | 62 | |
63 | - command = s->env->regs[R_ECX]; | |
63 | + command = env->regs[R_ECX]; | |
64 | 64 | if (command >= VMPORT_ENTRIES) |
65 | 65 | return eax; |
66 | 66 | if (!s->func[command]) |
... | ... | @@ -74,25 +74,23 @@ static uint32_t vmport_ioport_read(void *opaque, uint32_t addr) |
74 | 74 | |
75 | 75 | static uint32_t vmport_cmd_get_version(void *opaque, uint32_t addr) |
76 | 76 | { |
77 | - CPUState *env = opaque; | |
77 | + CPUState *env = cpu_single_env; | |
78 | 78 | env->regs[R_EBX] = VMPORT_MAGIC; |
79 | 79 | return 6; |
80 | 80 | } |
81 | 81 | |
82 | 82 | static uint32_t vmport_cmd_ram_size(void *opaque, uint32_t addr) |
83 | 83 | { |
84 | - CPUState *env = opaque; | |
84 | + CPUState *env = cpu_single_env; | |
85 | 85 | env->regs[R_EBX] = 0x1177; |
86 | 86 | return ram_size; |
87 | 87 | } |
88 | 88 | |
89 | -void vmport_init(CPUState *env) | |
89 | +void vmport_init(void) | |
90 | 90 | { |
91 | - port_state.env = env; | |
92 | - | |
93 | 91 | register_ioport_read(0x5658, 1, 4, vmport_ioport_read, &port_state); |
94 | 92 | |
95 | 93 | /* Register some generic port commands */ |
96 | - vmport_register(VMPORT_CMD_GETVERSION, vmport_cmd_get_version, env); | |
97 | - vmport_register(VMPORT_CMD_GETRAMSIZE, vmport_cmd_ram_size, env); | |
94 | + vmport_register(VMPORT_CMD_GETVERSION, vmport_cmd_get_version, NULL); | |
95 | + vmport_register(VMPORT_CMD_GETRAMSIZE, vmport_cmd_ram_size, NULL); | |
98 | 96 | } | ... | ... |