1 --- qemu-0.8.2/kqemu.c- 2006-07-22 21:23:34 +0400
2 +++ qemu-0.8.2/kqemu.c 2006-08-23 21:57:27 +0400
7 -#define KQEMU_DEVICE "\\\\.\\kqemu"
8 +#define KQEMU_DEV "\\\\.\\kqemu"
9 +#define QVM86_DEV "\\\\.\\qvm86"
11 -#define KQEMU_DEVICE "/dev/kqemu"
12 +#define KQEMU_DEV "/dev/kqemu"
13 +#define QVM86_DEV "/dev/qvm86"
17 @@ -154,7 +156,7 @@ static void kqemu_update_cpuid(CPUState
21 -int kqemu_init(CPUState *env)
22 +int kqemu_open(CPUState *env, char *dev)
24 struct kqemu_init init;
26 @@ -166,15 +168,15 @@ int kqemu_init(CPUState *env)
30 - kqemu_fd = CreateFile(KQEMU_DEVICE, GENERIC_WRITE | GENERIC_READ,
31 + kqemu_fd = CreateFile(dev, GENERIC_WRITE | GENERIC_READ,
32 FILE_SHARE_READ | FILE_SHARE_WRITE,
33 NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,
36 - kqemu_fd = open(KQEMU_DEVICE, O_RDWR);
37 + kqemu_fd = open(dev, O_RDWR);
39 if (kqemu_fd == KQEMU_INVALID_FD) {
40 - fprintf(stderr, "Could not open '%s' - QEMU acceleration layer not activated\n", KQEMU_DEVICE);
41 + fprintf(stderr, "Could not open %s - QEMU acceleration layer not activated\n", dev);
45 @@ -185,8 +187,8 @@ int kqemu_init(CPUState *env)
46 ioctl(kqemu_fd, KQEMU_GET_VERSION, &version);
48 if (version != KQEMU_VERSION) {
49 - fprintf(stderr, "Version mismatch between kqemu module and qemu (%08x %08x) - disabling kqemu use\n",
50 - version, KQEMU_VERSION);
51 + fprintf(stderr, "Version mismatch between %s and qemu (%08x %08x) - disabling %s use\n",
52 + dev, version, KQEMU_VERSION, dev);
56 @@ -226,7 +228,7 @@ int kqemu_init(CPUState *env)
57 ret = ioctl(kqemu_fd, KQEMU_INIT, &init);
60 - fprintf(stderr, "Error %d while initializing QEMU acceleration layer - disabling it for now\n", ret);
61 + fprintf(stderr, "Error %d while initializing %s acceleration layer - disabling it for now\n", ret, dev);
63 kqemu_closefd(kqemu_fd);
64 kqemu_fd = KQEMU_INVALID_FD;
65 @@ -236,9 +238,22 @@ int kqemu_init(CPUState *env)
66 env->kqemu_enabled = kqemu_allowed;
67 nb_pages_to_flush = 0;
68 nb_ram_pages_to_update = 0;
69 + fprintf(stderr, "QEMU %s acceleration layer activated\n", dev);
73 +int kqemu_init(CPUState *env)
75 + if (kqemu_open(env, KQEMU_DEV) >= 0)
77 + if (kqemu_open(env, QVM86_DEV) >= 0) {
78 + /* flags not supported by qvm86 */
79 + env->cpuid_features &= ~(CPUID_PAT | CPUID_PAE | CPUID_SEP);
85 void kqemu_flush_page(CPUState *env, target_ulong addr)