@@ -66,7 +66,7 @@ fn spawn_emulator(target: &str,
66
66
start_android_emulator ( server) ;
67
67
} else {
68
68
let rootfs = rootfs. as_ref ( ) . expect ( "need rootfs on non-android" ) ;
69
- start_qemu_emulator ( rootfs, server, tmpdir) ;
69
+ start_qemu_emulator ( target , rootfs, server, tmpdir) ;
70
70
}
71
71
72
72
// Wait for the emulator to come online
@@ -120,7 +120,10 @@ fn start_android_emulator(server: &Path) {
120
120
. unwrap ( ) ;
121
121
}
122
122
123
- fn start_qemu_emulator ( rootfs : & Path , server : & Path , tmpdir : & Path ) {
123
+ fn start_qemu_emulator ( target : & str ,
124
+ rootfs : & Path ,
125
+ server : & Path ,
126
+ tmpdir : & Path ) {
124
127
// Generate a new rootfs image now that we've updated the test server
125
128
// executable. This is the equivalent of:
126
129
//
@@ -143,16 +146,36 @@ fn start_qemu_emulator(rootfs: &Path, server: &Path, tmpdir: &Path) {
143
146
assert ! ( t!( child. wait( ) ) . success( ) ) ;
144
147
145
148
// Start up the emulator, in the background
146
- let mut cmd = Command :: new ( "qemu-system-arm" ) ;
147
- cmd. arg ( "-M" ) . arg ( "vexpress-a15" )
148
- . arg ( "-m" ) . arg ( "1024" )
149
- . arg ( "-kernel" ) . arg ( "/tmp/zImage" )
150
- . arg ( "-initrd" ) . arg ( & rootfs_img)
151
- . arg ( "-dtb" ) . arg ( "/tmp/vexpress-v2p-ca15-tc1.dtb" )
152
- . arg ( "-append" ) . arg ( "console=ttyAMA0 root=/dev/ram rdinit=/sbin/init init=/sbin/init" )
153
- . arg ( "-nographic" )
154
- . arg ( "-redir" ) . arg ( "tcp:12345::12345" ) ;
155
- t ! ( cmd. spawn( ) ) ;
149
+ match target {
150
+ "arm-unknown-linux-gnueabihf" => {
151
+ let mut cmd = Command :: new ( "qemu-system-arm" ) ;
152
+ cmd. arg ( "-M" ) . arg ( "vexpress-a15" )
153
+ . arg ( "-m" ) . arg ( "1024" )
154
+ . arg ( "-kernel" ) . arg ( "/tmp/zImage" )
155
+ . arg ( "-initrd" ) . arg ( & rootfs_img)
156
+ . arg ( "-dtb" ) . arg ( "/tmp/vexpress-v2p-ca15-tc1.dtb" )
157
+ . arg ( "-append" )
158
+ . arg ( "console=ttyAMA0 root=/dev/ram rdinit=/sbin/init init=/sbin/init" )
159
+ . arg ( "-nographic" )
160
+ . arg ( "-redir" ) . arg ( "tcp:12345::12345" ) ;
161
+ t ! ( cmd. spawn( ) ) ;
162
+ }
163
+ "aarch64-unknown-linux-gnu" => {
164
+ let mut cmd = Command :: new ( "qemu-system-aarch64" ) ;
165
+ cmd. arg ( "-machine" ) . arg ( "virt" )
166
+ . arg ( "-cpu" ) . arg ( "cortex-a57" )
167
+ . arg ( "-m" ) . arg ( "1024" )
168
+ . arg ( "-kernel" ) . arg ( "/tmp/Image" )
169
+ . arg ( "-initrd" ) . arg ( & rootfs_img)
170
+ . arg ( "-append" )
171
+ . arg ( "console=ttyAMA0 root=/dev/ram rdinit=/sbin/init init=/sbin/init" )
172
+ . arg ( "-nographic" )
173
+ . arg ( "-netdev" ) . arg ( "user,id=net0,hostfwd=tcp::12345-:12345" )
174
+ . arg ( "-device" ) . arg ( "virtio-net-device,netdev=net0,mac=00:00:00:00:00:00" ) ;
175
+ t ! ( cmd. spawn( ) ) ;
176
+ }
177
+ _ => panic ! ( "cannot start emulator for: {}" < target) ,
178
+ }
156
179
157
180
fn add_files ( w : & mut Write , root : & Path , cur : & Path ) {
158
181
for entry in t ! ( cur. read_dir( ) ) {
0 commit comments