diff options
author | Zach Reizner <zachr@google.com> | 2017-08-30 17:07:01 -0700 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2017-09-01 12:39:18 -0700 |
commit | 3cbded2c51574bfdefe8d26a9c6ff235c7330b59 (patch) | |
tree | 6e891f47d965e42c47c254094b17b6813ca8dd09 /src/main.rs | |
parent | 86fb9567b588a11ed1f7ed2e3223c25fad07cc6f (diff) | |
download | crosvm-3cbded2c51574bfdefe8d26a9c6ff235c7330b59.tar crosvm-3cbded2c51574bfdefe8d26a9c6ff235c7330b59.tar.gz crosvm-3cbded2c51574bfdefe8d26a9c6ff235c7330b59.tar.bz2 crosvm-3cbded2c51574bfdefe8d26a9c6ff235c7330b59.tar.lz crosvm-3cbded2c51574bfdefe8d26a9c6ff235c7330b59.tar.xz crosvm-3cbded2c51574bfdefe8d26a9c6ff235c7330b59.tar.zst crosvm-3cbded2c51574bfdefe8d26a9c6ff235c7330b59.zip |
fix armv7a and aarch64 build errors and warnings
BUG=None TEST=cargo build --target=armv7a-cros-linux-gnueabi && cargo build --target=aarch64-cros-linux-gnu Change-Id: I954c152f3c8086e24c4809dd5aabb5043fdd63af Reviewed-on: https://chromium-review.googlesource.com/644408 Commit-Ready: Zach Reizner <zachr@chromium.org> Tested-by: Zach Reizner <zachr@chromium.org> Reviewed-by: Jason Clinton <jclinton@chromium.org> Reviewed-by: Stephen Barber <smbarber@chromium.org> Reviewed-by: Dylan Reid <dgreid@chromium.org>
Diffstat (limited to 'src/main.rs')
-rw-r--r-- | src/main.rs | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/src/main.rs b/src/main.rs index c538c01..608bdda 100644 --- a/src/main.rs +++ b/src/main.rs @@ -8,6 +8,7 @@ extern crate clap; extern crate libc; extern crate io_jail; extern crate kvm; +#[cfg(any(target_arch = "x86", target_arch = "x86_64"))] extern crate x86_64; extern crate kernel_loader; extern crate byteorder; @@ -67,6 +68,7 @@ enum Error { RngDeviceNew(hw::virtio::RngError), RngDeviceRootSetup(sys_util::Error), KernelLoader(kernel_loader::Error), + #[cfg(any(target_arch = "x86", target_arch = "x86_64"))] ConfigureSystem(x86_64::Error), EventFd(sys_util::Error), SignalFd(sys_util::SignalFdError), @@ -82,6 +84,7 @@ impl std::convert::From<kernel_loader::Error> for Error { } } +#[cfg(any(target_arch = "x86", target_arch = "x86_64"))] impl std::convert::From<x86_64::Error> for Error { fn from(e: x86_64::Error) -> Error { Error::ConfigureSystem(e) @@ -122,6 +125,7 @@ impl fmt::Display for Error { &Error::Cmdline(ref e) => write!(f, "the given kernel command line was invalid: {}", e), &Error::RegisterIrqfd(ref e) => write!(f, "error registering irqfd: {:?}", e), &Error::KernelLoader(ref e) => write!(f, "error loading kernel: {:?}", e), + #[cfg(any(target_arch = "x86", target_arch = "x86_64"))] &Error::ConfigureSystem(ref e) => write!(f, "error configuring system: {:?}", e), &Error::EventFd(ref e) => write!(f, "error creating EventFd: {:?}", e), &Error::SignalFd(ref e) => write!(f, "error with SignalFd: {:?}", e), @@ -249,8 +253,12 @@ fn run_config(cfg: Config) -> Result<()> { } let mem_size = cfg.memory.unwrap_or(256) << 20; + #[cfg(not(any(target_arch = "x86", target_arch = "x86_64")))] + let arch_mem_regions = vec![(GuestAddress(0), mem_size)]; + #[cfg(any(target_arch = "x86", target_arch = "x86_64"))] + let arch_mem_regions = x86_64::arch_memory_regions(mem_size); let guest_mem = - GuestMemory::new(&x86_64::arch_memory_regions(mem_size)).expect("new mmap failed"); + GuestMemory::new(&arch_mem_regions).expect("new mmap failed"); let mut cmdline = kernel_cmdline::Cmdline::new(CMDLINE_MAX_SIZE); cmdline @@ -352,13 +360,16 @@ fn run_kvm(requests: Vec<VmRequest>, warn_unknown_ports: bool) -> Result<()> { let kvm = Kvm::new().map_err(Error::Kvm)?; - let tss_addr = GuestAddress(0xfffbd000); let kernel_start_addr = GuestAddress(KERNEL_START_OFFSET); let cmdline_addr = GuestAddress(CMDLINE_OFFSET); let mut vm = Vm::new(&kvm, guest_mem).map_err(Error::Vm)?; - vm.set_tss_addr(tss_addr).expect("set tss addr failed"); - vm.create_pit().expect("create pit failed"); + #[cfg(any(target_arch = "x86", target_arch = "x86_64"))] + { + let tss_addr = GuestAddress(0xfffbd000); + vm.set_tss_addr(tss_addr).expect("set tss addr failed"); + vm.create_pit().expect("create pit failed"); + } vm.create_irq_chip().expect("create irq chip failed"); let mut next_dev_pfn = BASE_DEV_MEMORY_PFN; @@ -375,6 +386,7 @@ fn run_kvm(requests: Vec<VmRequest>, kernel_loader::load_kernel(vm.get_memory(), kernel_start_addr, &mut kernel_image)?; kernel_loader::load_cmdline(vm.get_memory(), cmdline_addr, cmdline)?; + #[cfg(any(target_arch = "x86", target_arch = "x86_64"))] x86_64::configure_system(vm.get_memory(), kernel_start_addr, cmdline_addr, @@ -451,7 +463,8 @@ fn run_kvm(requests: Vec<VmRequest>, let kill_signaled = kill_signaled.clone(); let vcpu_thread_barrier = vcpu_thread_barrier.clone(); let vcpu_exit_evt = exit_evt.try_clone().map_err(Error::EventFd)?; - let vcpu = Vcpu::new(cpu_id as u64, &kvm, &vm).map_err(Error::Vcpu)?; + let vcpu = Vcpu::new(cpu_id as libc::c_ulong, &kvm, &vm).map_err(Error::Vcpu)?; + #[cfg(any(target_arch = "x86", target_arch = "x86_64"))] x86_64::configure_vcpu(vm.get_memory(), kernel_start_addr, &kvm, |