|  | @@ -1,7 +1,8 @@
 | 
	
		
			
				|  |  |  target := aarch64-unknown-none
 | 
	
		
			
				|  |  |  mode := release
 | 
	
		
			
				|  |  |  kernel := target/$(target)/$(mode)/aarch64
 | 
	
		
			
				|  |  | -kernel_bin := target/$(target)/$(mode)/aarch64.bin
 | 
	
		
			
				|  |  | +kernel_qemu_bin := target/$(target)/$(mode)/aarch64_qemu.bin
 | 
	
		
			
				|  |  | +kernel_crosvm_bin := target/$(target)/$(mode)/aarch64_crosvm.bin
 | 
	
		
			
				|  |  |  img := target/$(target)/$(mode)/img
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  sysroot := $(shell rustc --print sysroot)
 | 
	
	
		
			
				|  | @@ -19,11 +20,17 @@ env:
 | 
	
		
			
				|  |  |  	rustup component add llvm-tools-preview rustfmt
 | 
	
		
			
				|  |  |  	rustup target add $(target)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -kernel:
 | 
	
		
			
				|  |  | -	cargo build $(BUILD_ARGS)
 | 
	
		
			
				|  |  | +kernel_qemu:
 | 
	
		
			
				|  |  | +	cargo build $(BUILD_ARGS) --config 'build.rustflags="--cfg platform=\"qemu\""'
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -$(kernel_bin): kernel
 | 
	
		
			
				|  |  | -	aarch64-linux-gnu-objcopy -O binary $(kernel) $(kernel_bin)
 | 
	
		
			
				|  |  | +kernel_crosvm:
 | 
	
		
			
				|  |  | +	cargo build $(BUILD_ARGS) --config 'build.rustflags="--cfg platform=\"crosvm\""'
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +$(kernel_qemu_bin): kernel_qemu
 | 
	
		
			
				|  |  | +	aarch64-linux-gnu-objcopy -O binary $(kernel) $(kernel_qemu_bin)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +$(kernel_crosvm_bin): kernel_crosvm
 | 
	
		
			
				|  |  | +	aarch64-linux-gnu-objcopy -O binary $(kernel) $(kernel_crosvm_bin)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  asm: kernel
 | 
	
		
			
				|  |  |  	$(objdump) -d $(kernel) | less
 | 
	
	
		
			
				|  | @@ -37,13 +44,13 @@ header: kernel
 | 
	
		
			
				|  |  |  clean:
 | 
	
		
			
				|  |  |  	cargo clean
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -qemu: $(kernel_bin) $(img)
 | 
	
		
			
				|  |  | +qemu: $(kernel_qemu_bin) $(img)
 | 
	
		
			
				|  |  |  	qemu-system-aarch64 \
 | 
	
		
			
				|  |  |  	  $(QEMU_ARGS) \
 | 
	
		
			
				|  |  |  		-machine virt \
 | 
	
		
			
				|  |  |  		-cpu max \
 | 
	
		
			
				|  |  |  		-serial chardev:char0 \
 | 
	
		
			
				|  |  | -		-kernel $(kernel_bin) \
 | 
	
		
			
				|  |  | +		-kernel $(kernel_qemu_bin) \
 | 
	
		
			
				|  |  |  		-global virtio-mmio.force-legacy=false \
 | 
	
		
			
				|  |  |  		-nic none \
 | 
	
		
			
				|  |  |  		-drive file=$(img),if=none,format=raw,id=x0 \
 | 
	
	
		
			
				|  | @@ -53,12 +60,12 @@ qemu: $(kernel_bin) $(img)
 | 
	
		
			
				|  |  |  		-chardev stdio,id=char0,mux=on \
 | 
	
		
			
				|  |  |  		-device virtconsole,chardev=char0
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -qemu-pci: $(kernel_bin) $(img)
 | 
	
		
			
				|  |  | +qemu-pci: $(kernel_qemu_bin) $(img)
 | 
	
		
			
				|  |  |  	qemu-system-aarch64 \
 | 
	
		
			
				|  |  |  		-machine virt \
 | 
	
		
			
				|  |  |  		-cpu max \
 | 
	
		
			
				|  |  |  		-serial chardev:char0 \
 | 
	
		
			
				|  |  | -		-kernel $(kernel_bin) \
 | 
	
		
			
				|  |  | +		-kernel $(kernel_qemu_bin) \
 | 
	
		
			
				|  |  |  		-nic none \
 | 
	
		
			
				|  |  |  		-drive file=$(img),if=none,format=raw,id=x0 \
 | 
	
		
			
				|  |  |  		-device virtio-blk-pci,drive=x0 \
 | 
	
	
		
			
				|  | @@ -67,6 +74,12 @@ qemu-pci: $(kernel_bin) $(img)
 | 
	
		
			
				|  |  |  		-chardev stdio,id=char0,mux=on \
 | 
	
		
			
				|  |  |  		-device virtconsole,chardev=char0
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +crosvm: $(kernel_crosvm_bin) $(img)
 | 
	
		
			
				|  |  | +	adb shell 'mkdir -p /data/local/tmp/virt_raw'
 | 
	
		
			
				|  |  | +	adb push $(kernel_crosvm_bin) /data/local/tmp/virt_raw/aarch64_example
 | 
	
		
			
				|  |  | +	adb push $(img) /data/local/tmp/virt_raw/disk_img
 | 
	
		
			
				|  |  | +	adb shell "/data/local/tmp/crosvm --log-level=trace --extended-status run --disable-sandbox --serial=stdout,hardware=serial,num=1 --rwdisk=/data/local/tmp/virt_raw/disk_img --bios=/data/local/tmp/virt_raw/aarch64_example"
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  $(img):
 | 
	
		
			
				|  |  |  	dd if=/dev/zero of=$@ bs=512 count=32
 | 
	
		
			
				|  |  |  
 |