aboutsummaryrefslogtreecommitdiffstats
path: root/hw/goldfish_tty.c
diff options
context:
space:
mode:
authorJun Nakajima <jnakajim@gmail.com>2011-03-04 17:17:45 -0800
committerJun Nakajima <jnakajim@gmail.com>2011-03-04 17:17:45 -0800
commit1321c76d96910c2c807207f3fdfeb560c598ca60 (patch)
tree1f83d7f3bd12e3f8b6d80fcceee5eab21e10f0e5 /hw/goldfish_tty.c
parent40ee75d90cdaaaec1006cbc91864b11dba09c351 (diff)
downloadexternal_qemu-1321c76d96910c2c807207f3fdfeb560c598ca60.zip
external_qemu-1321c76d96910c2c807207f3fdfeb560c598ca60.tar.gz
external_qemu-1321c76d96910c2c807207f3fdfeb560c598ca60.tar.bz2
x86: Enable KVM mode for Android x86 emulator (update/rebase)
This patch enables KVM mode on x86 Linux to boost performance of x86 emulaiton if the hardware-based virtualization feature is present on the host machine. Change-Id: I4b24474b3ec115a3b9a7bf017801f4f610253b09 Signed-off-by: Xiaohui Xin <xiaohui.xin@intel.com> Signed-off-by: Yunhong Jiang <yunhong.jiang@intel.com> Signed-off-by: Jun Nakajima <jun.nakajima@intel.com>
Diffstat (limited to 'hw/goldfish_tty.c')
-rw-r--r--hw/goldfish_tty.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/hw/goldfish_tty.c b/hw/goldfish_tty.c
index 904a07b..fd8eca8 100644
--- a/hw/goldfish_tty.c
+++ b/hw/goldfish_tty.c
@@ -13,6 +13,10 @@
#include "qemu-char.h"
#include "goldfish_device.h"
+#ifdef TARGET_I386
+#include "kvm.h"
+#endif
+
enum {
TTY_PUT_CHAR = 0x00,
TTY_BYTES_READY = 0x04,
@@ -126,6 +130,10 @@ static void goldfish_tty_write(void *opaque, target_phys_addr_t offset, uint32_t
if (to_write > len)
to_write = len;
+#ifdef TARGET_I386
+ if (kvm_enabled())
+ cpu_synchronize_state(cpu_single_env, 0);
+#endif
cpu_memory_rw_debug(cpu_single_env, buf, (uint8_t*)temp, to_write, 0);
qemu_chr_write(s->cs, (const uint8_t*)temp, to_write);
buf += to_write;
@@ -138,6 +146,10 @@ static void goldfish_tty_write(void *opaque, target_phys_addr_t offset, uint32_t
case TTY_CMD_READ_BUFFER:
if(s->ptr_len > s->data_count)
cpu_abort (cpu_single_env, "goldfish_tty_write: reading more data than available %d %d\n", s->ptr_len, s->data_count);
+#ifdef TARGET_I386
+ if (kvm_enabled())
+ cpu_synchronize_state(cpu_single_env, 0);
+#endif
cpu_memory_rw_debug(cpu_single_env,s->ptr, s->data, s->ptr_len,1);
//printf("goldfish_tty_write: read %d bytes to %x\n", s->ptr_len, s->ptr);
if(s->data_count > s->ptr_len)