aboutsummaryrefslogtreecommitdiffstats
path: root/vl-android.c
diff options
context:
space:
mode:
authorJun Nakajima <jun.nakajima@intel.com>2011-12-17 19:13:25 -0800
committerJiang, Yunhong <yunhong.jiang@intel.com>2012-01-17 06:15:06 +0800
commita381ef07088ce479610129e37bfef42538f397da (patch)
tree523581dd6c18ddd42bb3980483778a3dd5d6154d /vl-android.c
parente7e8b324a626a4ba112c3ad47d54eb9cfd3025ba (diff)
downloadexternal_qemu-a381ef07088ce479610129e37bfef42538f397da.zip
external_qemu-a381ef07088ce479610129e37bfef42538f397da.tar.gz
external_qemu-a381ef07088ce479610129e37bfef42538f397da.tar.bz2
Changes to existing files to add HAX support
HAX (Hardware-based Accelerated eXecution) employes hardware virtualization technology to boost performance of the Android emulator on Mac OS X or Windows hosts. This changeset includes the changes required to the existing files. To pass the compilation, hax.h is added, but CONFIG_HAX is disabled so that no real changes added. Change-Id: Ifa5777e8788e6698747c1ec4cd91315161c2ca0b Signed-off-by: Zhang, Xiantao <xiantao.zhang@intel.com> Signed-off-by: Xin, Xiaohui <xiaohui.xin@intel.com> Signed-off-by: Jiang Yunhong <yunhong.jiang@intel.com> Signed-off-by: Nakajima, Jun <jun.nakajima@intel.com>
Diffstat (limited to 'vl-android.c')
-rw-r--r--vl-android.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/vl-android.c b/vl-android.c
index 8f439ac..8071052 100644
--- a/vl-android.c
+++ b/vl-android.c
@@ -198,6 +198,7 @@ int qemu_main(int argc, char **argv, char **envp);
#include "audio/audio.h"
#include "migration.h"
#include "kvm.h"
+#include "hax.h"
#ifdef CONFIG_KVM
#include "kvm-android.h"
#endif
@@ -298,6 +299,7 @@ int smp_cpus = 1;
const char *vnc_display;
int acpi_enabled = 1;
int no_hpet = 0;
+int hax_disabled = 0;
int no_virtio_balloon = 0;
int fd_bootchk = 1;
int no_reboot = 0;
@@ -1989,6 +1991,11 @@ static void main_loop(void)
qemu_cond_broadcast(&qemu_system_cond);
#endif
+#ifdef CONFIG_HAX
+ if (hax_enabled())
+ hax_sync_vcpus();
+#endif
+
for (;;) {
do {
#ifdef CONFIG_PROFILER
@@ -3357,7 +3364,11 @@ int main(int argc, char **argv, char **envp)
case QEMU_OPTION_nand:
nand_add_dev(optarg);
break;
+
#endif
+ case QEMU_OPTION_disable_hax:
+ hax_disabled = 1;
+ break;
case QEMU_OPTION_android_ports:
android_op_ports = (char*)optarg;
break;
@@ -4127,6 +4138,17 @@ int main(int argc, char **argv, char **envp)
}
}
+#ifdef CONFIG_HAX
+ if (!hax_disabled)
+ {
+ int ret;
+
+ ret = hax_init(smp_cpus);
+ fprintf(stderr, "HAX is %s and emulator runs in %s mode\n",
+ !ret ? "working" :"not working", !ret ? "fast virt" : "emulation");
+ }
+#endif
+
if (monitor_device) {
monitor_hd = qemu_chr_open("monitor", monitor_device, NULL);
if (!monitor_hd) {
@@ -4259,6 +4281,11 @@ int main(int argc, char **argv, char **envp)
}
}
+#ifdef CONFIG_HAX
+ if (hax_enabled())
+ hax_sync_vcpus();
+#endif
+
/* init USB devices */
if (usb_enabled) {
for(i = 0; i < usb_devices_index; i++) {