31bb5750a64774e3e5c7760af72fea1ad11c3bce
[barrelfish] / platforms / Hakefile
1 --------------------------------------------------------------------------
2 -- Copyright (c) 2015-2016 ETH Zurich.
3 -- All rights reserved.
4 --
5 -- This file is distributed under the terms in the attached LICENSE file.
6 -- If you do not find this file, copies can be found by writing to:
7 -- ETH Zurich D-INFK, Universitaetstr. 6, CH-8092 Zurich. Attn: Systems Group.
8 --
9 -- Hakefile for /platforms/
10 --
11 --------------------------------------------------------------------------
12
13 let bin_rcce_lu = [ "/sbin/" ++ f | f <- [
14                         "rcce_lu_A1",
15                         "rcce_lu_A2",
16                         "rcce_lu_A4",
17                         "rcce_lu_A8",
18                         "rcce_lu_A16",
19                         "rcce_lu_A32",
20                         "rcce_lu_A64" ]]
21
22     bin_rcce_bt = [ "/sbin/" ++ f | f <- [
23                         "rcce_bt_A1",
24                         "rcce_bt_A4",
25                         "rcce_bt_A9",
26                         "rcce_bt_A16",
27                         "rcce_bt_A25",
28                         "rcce_bt_A36" ]]
29
30     tests_common = [ "/sbin/" ++ f | f <- [
31                         "fputest",
32                         "fread_test",
33                         "fscanf_test",
34                         "hellotest",
35                         "idctest",
36                         "memtest",
37                         "nkmtest_all",
38                         "nkmtest_map_unmap",
39                         "nkmtest_modify_flags",
40                         "schedtest",
41                         "test_retype",
42                         "test_rootcn_resize",
43                         "test_create_l1l2_cnodes",
44                         "test_remote_retype",
45                         "test_remote_delete",
46                         "test_remote_revoke",
47                         "testerror",
48                         "yield_test" ] ]
49
50     tests_x86 = [ "/sbin/" ++ f | f <- [
51                         "tests/luatest",
52                         "tests/numatest" ] ] ++ tests_common
53
54     tests_x86_64 = [ "/sbin/" ++ f | f <- [
55                         "arrakis_hellotest",
56                         "ata_rw28_test",
57                         "bomp_cpu_bound",
58                         "bomp_cpu_bound_progress",
59                         "bomp_sync",
60                         "bomp_sync_progress",
61                         "bomp_test",
62                         "bulk_shm",
63                         "cryptotest",
64                         "mdbtest_addr_zero",
65                         "mdbtest_range_query",
66                         "mem_affinity",
67                         "multihoptest",
68                         "net-test",
69                         "net_openport_test",
70                         "nkmtest_invalid_mappings",
71                         "perfmontest",
72                         "phoenix_kmeans",
73                         "socketpipetest",
74                         "spantest",
75                         "spin",
76                         "testconcurrent",
77                         "testdesc",
78                         "testdesc-child",
79                         "tests/cxxtest",
80                         "tests/dma_test",
81                         "tests/xphi_nameservice_test",
82                         "thcidctest",
83                         "thcminitest",
84                         "thctest",
85                         "timer_test",
86                         "tlstest",
87                         "tweedtest",
88                         "xcorecap",
89                         "xcorecapserv" ] ] ++ tests_x86
90
91     tests_x86_32 = tests_x86
92
93     tests_k1om = [ "/sbin/" ++ f | f <- [
94                         "tests/dma_test",
95                         "tests/xeon_phi_inter",
96                         "tests/xeon_phi_test",
97                         "tests/xphi_nameservice_test" ] ] ++ tests_x86
98
99     bench_common = [ "/sbin/" ++ f | f <- [
100                         "channel_cost_bench",
101                         "flounder_stubs_buffer_bench",
102                         "flounder_stubs_empty_bench",
103                         "flounder_stubs_payload_bench",
104                         "xcorecapbench" ]]
105
106     bench_x86 =  [ "/sbin/" ++ f | f <- [
107                       "multihop_latency_bench",
108                       "net_openport_test",
109                       "perfmontest",
110                       "thc_v_flounder_empty",
111                       "timer_test",
112                       "udp_throughput",
113                       "ump_exchange",
114                       "ump_latency",
115                       "ump_latency_cache",
116                       "ump_receive",
117                       "ump_send",
118                       "ump_throughput" ]]
119
120     bench_x86_64 = bench_x86 ++ bin_rcce_bt ++ bin_rcce_lu ++
121                    [ "/sbin/" ++ f | f <- [
122                         "ahci_bench",
123                         "apicdrift_bench",
124                         "benchmarks/bomp_mm",
125                         "benchmarks/dma_bench",
126                         "benchmarks/xomp_share",
127                         "benchmarks/xomp_spawn",
128                         "benchmarks/xomp_work",
129                         "benchmarks/xphi_ump_bench",
130                         "bomp_benchmark_cg",
131                         "bomp_benchmark_ft",
132                         "bomp_benchmark_is",
133                         "bulk_transfer_passthrough",
134                         "bulkbench",
135                         "bulkbench_micro_echo",
136                         "bulkbench_micro_rtt",
137                         "bulkbench_micro_throughput",
138                         "elb_app",
139                         "elb_app_tcp",
140                         "lrpc_bench",
141                         "mdb_bench",
142                         "mdb_bench_old",
143                         "netthroughput",
144                         "phases_bench",
145                         "phases_scale_bench",
146                         "placement_bench",
147                         "rcce_pingpong",
148                         "shared_mem_clock_bench",
149                         "tsc_bench" ]]
150
151     bench_x86_32 = bench_x86 ++ bin_rcce_bt ++ bin_rcce_lu
152
153     bench_k1om = [ "/sbin/" ++ f | f <- [
154                         "benchmarks/bomp_mm",
155                         "benchmarks/dma_bench",
156                         "benchmarks/xomp_share",
157                         "benchmarks/xomp_spawn",
158                         "benchmarks/xomp_work",
159                         "benchmarks/xphi_ump_bench",
160                         "benchmarks/xphi_xump_bench" ] ] ++ bench_x86
161
162     -- Default list of modules to build/install for all enabled architectures
163     modules_common = [ "/sbin/" ++ f | f <- [
164                           "init",
165                           "skb",
166                           "spawnd",
167                           "startd",
168                           "mem_serv",
169                           "monitor",
170                           "ramfsd" ]]
171
172     -- List of modules that are arch-independent and always built
173     modules_generic = [
174         "/eclipseclp_ramfs.cpio.gz",
175         "/skb_ramfs.cpio.gz",
176         "/sshd_ramfs.cpio.gz" ]
177
178     -- x86_64-specific modules to build by default
179     -- this should shrink as targets are ported and move into the generic list above
180     modules_x86_64  = [ "/sbin/" ++ f | f <- [
181                            "elver",
182                            "cpu",
183                            "acpi",
184                            "ahcid",
185                            "angler",
186                            "arrakismon",
187                            "bcached",
188                            "bench",
189                            "bfscope",
190                            "block_server",
191                            "block_server_client",
192                            "boot_perfmon",
193                            "bs_user",
194                            "bulk_shm",
195                            "corectrl",
196                            "datagatherer",
197                            "dma_mgr",
198                            "e1000n",
199                            "e10k",
200                            "e10k_queue",
201                            "echoserver",
202                            "fbdemo",
203                            "fish",
204                            "hpet",
205                            "ioat_dma",
206                            "kaluga",
207                            "lo_queue",
208                            "lpc_kbd",
209                            "lpc_timer",
210                            "lshw",
211                            "mem_serv_dist",
212                            "netd",
213                            "NGD_mng",
214                            "pci",
215                            "routing_setup",
216                            "rtl8029",
217                            "serial_pc16550d",
218                            "sfxge",
219                            "slideshow",
220                            "sshd",
221                            "vbe",
222                            "virtio_blk",
223                            "virtio_blk_host",
224                            "vmkitmon",
225                            "vnode_map_test",
226                            "webserver",
227                            "xeon_phi",
228                            "xeon_phi_mgr"
229                            ]] ++ modules_common
230
231     -- the following are broken in the newidc system
232     modules_x86_64_broken  = [ "/sbin/" ++ f | f <- [
233                                   "barriers",
234                                   "ipi_bench",
235                                   "ring_barriers",
236                                   "ssf_bcast",
237                                   "lamport_bcast" ]]
238
239     -- x86-32-specific module to build by default
240     modules_x86_32  = [ "/sbin/" ++ f | f <- [
241                            "cpu",
242                            "lpc_kbd",
243                            "serial_pc16550d",
244                            "rcce_pingpong",
245                            "bench",
246                            "fbdemo",
247                            "fish",
248                            "fputest",
249                            "pci",
250                            "acpi",
251                            "kaluga",
252                            "slideshow",
253                            "thc_v_flounder_empty",
254                            "thcidctest",
255                            "thcminitest",
256                            "thctest",
257                            "vbe",
258                            "mem_serv_dist",
259                            "routing_setup",
260                            "multihoptest",
261                            "multihop_latency_bench",
262                            "angler",
263                            "sshd",
264                            "corectrl" ]] ++ bin_rcce_bt ++ bin_rcce_lu
265
266     modules_k1om = [ "/sbin/" ++ f | f <- [
267                         "weever",
268                         "cpu",
269                         "xeon_phi",
270                         "corectrl" ] ]
271
272     -- ARMv7-a Pandaboard modules
273     pandaModules = [ "/sbin/" ++ f | f <- [
274                         "cpu_omap44xx",
275                         "init",
276                         "mem_serv",
277                         "monitor",
278                         "ramfsd",
279                         "spawnd",
280                         "startd",
281                         "skb",
282                         "memtest",
283                         "kaluga",
284                         "fish",
285                         "sdma",
286                         "sdmatest",
287                         "sdma_bench",
288                         "bulk_sdma",
289                         "usb_manager",
290                         "usb_keyboard",
291                         "serial_omap44xx",
292                         "serial_kernel",
293                         "angler",
294                         "corectrl"
295                         ] ]
296
297     -- ARMv7-A modules for Versatile Express EMM board (GEM5, qemu)
298     vExpressEMMModules_A15 = [ "/sbin/" ++ f | f <- [
299                                "cpu_a15ve",
300                                "init",
301                                "kaluga",
302                                "mem_serv",
303                                "monitor",
304                                "ramfsd",
305                                "serial_pl011",
306                                "serial_kernel",
307                                "spawnd",
308                                "startd",
309                                "corectrl",
310                                "skb",
311                                "angler",
312                                "fish",
313                                "memtest"
314                                ] ]
315
316     -- ARMv7-A modules for Versatile Express EMM board (FVP)
317     vExpressEMMModules_A9 = [ "/sbin/" ++ f | f <- [
318                               "cpu_a9ve",
319                               "init",
320                               "kaluga",
321                               "mem_serv",
322                               "monitor",
323                               "ramfsd",
324                               "serial_pl011",
325                               "serial_kernel",
326                               "spawnd",
327                               "startd",
328                               "corectrl",
329                               "skb",
330                               "angler",
331                               "fish",
332                               "memtest"
333                               ] ]
334
335     -- ARMv7-A modules for the Xilinx Zynq7000
336     zynq7Modules = [ "/sbin/" ++ f | f <- [
337                      "cpu_zynq7",
338                      "init",
339                      "kaluga",
340                      "mem_serv",
341                      "monitor",
342                      "ramfsd",
343                      "serial_kernel",
344                      "spawnd",
345                      "startd",
346                      "corectrl",
347                      "skb",
348                      "angler",
349                      "fish",
350                      "memtest"
351                      ] ]
352
353     -- ARMv8 modules for running under GEM5
354     armv8_gem5Modules = [ "/sbin/" ++ f | f <- [
355                        "cpu_gem5",
356                        "init",
357                        "mem_serv",
358                        "monitor",
359                        "ramfsd",
360                        "spawnd",
361                        "startd",
362                        -- "corectrl",
363                        "skb",
364                        "memtest",
365                        "serial_pl011",
366                        "fish",
367                        "angler"
368                        ] ]
369
370     -- ARMv8 modules for running under QEMU
371     armv8_qemuModules = [ "/sbin/" ++ f | f <- [
372                        "cpu_tmas",
373                        "init",
374                        "mem_serv",
375                        "monitor",
376                        "ramfsd",
377                        "spawnd",
378                        "startd",
379                        "corectrl",
380                        "skb",
381                        "pci",
382                        "memtest",
383                        "serial_kernel",
384                        "fish",
385                        "angler",
386                        "kaluga",
387                        "acpi"
388                        ] ]
389
390     armv7Image target bootTarget cpuTarget physBase modules =
391         let bootDriver = "/sbin/boot_" ++ bootTarget
392             cpuDriver  = "/sbin/cpu_"  ++ cpuTarget
393             image      = "/" ++ target ++ "_image"
394         in Rules [
395             Rule ([ In BuildTree "tools" "/bin/arm_bootimage",
396                     In BuildTree "root" ("/platforms/arm/menu.lst."++target),
397                     In BuildTree "armv7" bootDriver,
398                     Out "root" image,
399                     NoDep BuildTree "root" "/",
400                     Str physBase ] ++
401                     [ (Dep BuildTree "armv7" m) | m <- modules ] ++ 
402                     [ (Dep BuildTree "" m) | m <- modules_generic ] ),
403
404             Rule ([ Str Config.arm_objcopy,
405                     Str "-O binary",
406                     In BuildTree "root" image,
407                     Out "root" (image ++ ".bin") ]),
408             Rule ([ In SrcTree "tools" "/tools/arm_boot/gdb_script.sh",
409                     Str Config.arm_objdump,
410                     In BuildTree "root" image,
411                     In BuildTree "armv7" bootDriver,
412                     In BuildTree "armv7" cpuDriver,
413                     Out "root" (image ++ "-gdb.gdb") ])
414             ]
415   in
416  [
417    --
418    -- Rules to build assorted platforms
419    --
420
421     platform "X86_64_Basic" [ "x86_64" ]
422       ([ ("x86_64", f) | f <- modules_x86_64 ]
423        ++
424        [ ("",       f) | f <- modules_generic])
425       "Basic 64-bit x86 PC build",
426
427     platform "X86_64_Benchmarks" [ "x86_64" ]
428       ([ ("x86_64", f) | f <- modules_x86_64 ++ bench_x86_64]
429        ++
430        [ ("",       f) | f <- modules_generic])
431       "64-bit x86 PC build with benchmarks",
432
433     platform "X86_64_Full" [ "x86_64" ]
434       ([ ("x86_64", f) | f <- modules_x86_64 ++ bench_x86_64 ++ tests_x86_64 ]
435        ++
436        [ ("",       f) | f <- modules_generic])
437       "64-bit x86 PC build with benchmarks and test suites",
438
439     platform "X86_32_Basic" [ "x86_32" ]
440       ([ ("x86_32", f) | f <- modules_x86_32 ]
441        ++
442        [ ("",       f) | f <- modules_generic])
443       "Basic 32-bit x86 PC build",
444
445     platform "X86_32_Benchmarks" [ "x86_32" ]
446       ([ ("x86_32", f) | f <- modules_x86_32 ++ bench_x86_32]
447        ++
448        [ ("",       f) | f <- modules_generic])
449       "32-bit x86 PC build with benchmarks",
450
451     platform "X86_32_Full" [ "x86_32" ]
452       ([ ("x86_32", f) | f <- modules_x86_32 ++ bench_x86_32 ++ tests_x86_32 ]
453        ++
454        [ ("",       f) | f <- modules_generic])
455       "32-bit x86 PC build with benchmarks and test suites",
456
457     platform "K1OM_Basic" [ "k1om" ]
458       ([ ("k1om", f) | f <- modules_k1om ]
459        ++
460        [ ("",       f) | f <- modules_generic])
461       "Basic Xeon Phi build",
462
463     platform "K1OM_Benchmarks" [ "k1om" ]
464       ([ ("k1om", f) | f <- modules_k1om ++ bench_k1om]
465        ++
466        [ ("",       f) | f <- modules_generic])
467       "Xeon Phi build with benchmarks",
468
469     platform "K1OM_Full" [ "k1om" ]
470       ([ ("k1om", f) | f <- modules_k1om ++ bench_k1om ++ tests_k1om ]
471        ++
472        [ ("",       f) | f <- modules_generic])
473       "Xeon Phi build with benchmarks and test suites",
474
475     platform "ARMv8-QEMU" [ "armv8" ]
476     ([ ("armv8", f) | f <- armv8_qemuModules ]
477         ++
478      [ ("",       f) | f <- modules_generic]
479     )
480     "ARM Virtual Machine Board with ARM Cortex A57 processors in Qemu.",
481
482     platform "ARMv8-GEM5" [ "armv8" ]
483     ([ ("armv8", f) | f <- armv8_gem5Modules ] ++ [ ("root", "/armv8_gem5_image") ])
484     "GEM5 emulator for ARM Cortex-A series multicore processors",
485
486     platform "PandaboardES" [ "armv7" ]
487     ([ ("armv7", f) | f <- pandaModules ] ++
488      [ ("root", "/armv7_omap44xx_image"),
489        ("root", "/armv7_omap44xx_image-gdb.gdb") ])
490     "Standard Pandaboard ES build image and modules",
491
492     platform "VExpressEMM-A15" [ "armv7" ]
493     ([ ("armv7", f) | f <- vExpressEMMModules_A15 ] ++
494      [ ("root", "/armv7_a15ve_1_image"),
495        ("root", "/armv7_a15ve_1_image-gdb.gdb"),
496        ("root", "/armv7_a15ve_fvp_1_image"),
497        ("root", "/armv7_a15ve_fvp_1_image-gdb.gdb"),
498        ("root", "/armv7_a15ve_4_image"),
499        ("root", "/armv7_a15ve_4_image-gdb.gdb"),
500        ("root", "/armv7_a15ve_fvp_4_image"),
501        ("root", "/armv7_a15ve_fvp_4_image-gdb.gdb"),
502        ("root", "/armv7_a15ve_gem5_image"),
503        ("root", "/armv7_a15ve_gem5_image-gdb.gdb") ])
504     "VersatileExpress EMM board with ARM Cortex-A15s",
505
506     platform "VExpressEMM-A9" [ "armv7" ]
507     ([ ("armv7", f) | f <- vExpressEMMModules_A9 ] ++
508      [ ("root", "/armv7_a9ve_1_image"),
509        ("root", "/armv7_a9ve_1_image-gdb.gdb"),
510        ("root", "/armv7_a9ve_4_image"),
511        ("root", "/armv7_a9ve_4_image-gdb.gdb") ])
512     "VersatileExpress EMM board for ARMv7-A Fixed Virtual Platforms",
513
514     platform "Zynq7000" [ "armv7" ]
515     ([ ("armv7", f) | f <- zynq7Modules ] ++
516      [ ("root", "/armv7_zynq7_image"),
517        ("root", "/armv7_zynq7_image-gdb.gdb") ])
518     "Xilinx Zynq7000",
519
520     platform "Mustang" [ "armv8" ]
521     ([ ("armv8", "/sbin/cpu_apm88xxxx") ])
522     "The APM XGene development board (Mustang)",
523
524     --
525     -- Rules to build assorted boot images
526     --
527
528     -- Build the default PandaBoard boot image
529     armv7Image "armv7_omap44xx" "omap44xx" "omap44xx" "0x80000000" pandaModules,
530
531     -- Build the A15 simulation image (VersatileExpress EMM board, 1 core)
532     armv7Image "armv7_a15ve_1" "ve" "a15ve" "0x80000000" vExpressEMMModules_A15,
533
534     -- Build the A15 simulation image (VersatileExpress EMM board, 1 core, FVP
535     -- quirks)
536     armv7Image "armv7_a15ve_fvp_1" "ve" "a15ve" "0x80000000" vExpressEMMModules_A15,
537
538     -- Build the A15 simulation image (VersatileExpress EMM board, 4 cores)
539     armv7Image "armv7_a15ve_4" "ve" "a15ve" "0x80000000" vExpressEMMModules_A15,
540
541     -- Build the A15 simulation image (VersatileExpress EMM board, 4 cores,
542     -- FVP quirks)
543     armv7Image "armv7_a15ve_fvp_4" "ve" "a15ve" "0x80000000" vExpressEMMModules_A15,
544
545     -- Build the A15 simulation image (VersatileExpress EMM board, with GEM5
546     -- quirks)
547     armv7Image "armv7_a15ve_gem5" "ve" "a15ve" "0x80000000" vExpressEMMModules_A15,
548
549     -- Build the A9 simulation image (VersatileExpress EMM board, 1 core)
550     armv7Image "armv7_a9ve_1" "ve" "a9ve" "0x80000000" vExpressEMMModules_A9,
551
552     -- Build the A9 simulation image (VersatileExpress EMM board, 4 cores)
553     armv7Image "armv7_a9ve_4" "ve" "a9ve" "0x80000000" vExpressEMMModules_A9,
554
555     -- Build the Zynq7000 image
556     armv7Image "armv7_zynq7" "zynq7" "zynq7" "0x00000000" zynq7Modules,
557
558     -- Build the ARMv8 GEM5 simulation image
559     Rule ([ In SrcTree "tools" "/tools/arm_molly/build_molly_image.sh",
560             Str "--srcdir",   NoDep SrcTree "root" "/.",
561             Str "--builddir", NoDep BuildTree "root" "/.",
562             Str "--arch armv8-a",
563             Str "--menu",     In BuildTree "root" "/platforms/arm/menu.lst.armv8_gem5",
564             Str "--baseaddr", Str "0x100000",
565             Str "--image",    Out "root" "/armv8_gem5_image",
566             Str "--gcc",      Str Config.aarch64_cc,
567             Str "--objcopy",  Str Config.aarch64_objcopy,
568             Dep BuildTree "tools" "/bin/arm_molly"
569           ] ++ [ (Dep BuildTree "armv8" m) | m <- armv8_gem5Modules ]),
570
571     --
572     -- Booting: various targets for booting Barrelfish under different circumstances
573     --
574
575     -- Copy menu.list files across
576     Rules [ copyFile SrcTree "root" ("/hake/menu.lst." ++ p)
577                      "root" ("/platforms/arm/menu.lst." ++ p)
578             | p <- [ "armv8_gem5",
579                      "armv8_qemu",
580                      "armv7_a9ve_1",
581                      "armv7_a9ve_4",
582                      "armv7_a15ve_1",
583                      "armv7_a15ve_4",
584                      "armv7_a15ve_fvp_1",
585                      "armv7_a15ve_fvp_4",
586                      "armv7_a15ve_gem5",
587                      "armv7_omap44xx",
588                      "armv7_zynq7" ]],
589     Rules [ copyFile SrcTree "root" ("/hake/menu.lst." ++ p)
590                      "root" ("/platforms/x86/menu.lst." ++ p)
591             | p <- [ "x86_32", "x86_64", "k1om" ] ],
592
593     -- Convenient functions for running GEM5
594     boot "gem5_armv8" [ "armv8" ] [
595       Str Config.gem5,
596       In SrcTree "tools" "/tools/aarch64_gem5/gem5script.py",
597       Str "--caches",
598       Str "--l2cache",
599       Str "--n=1",
600       NStr "--kernel=", In BuildTree "root" "/armv8_gem5_image" ]
601     "Boot an ARMv8 single core image in GEM5",
602
603     boot "gem5_armv8_detailed" [ "armv8" ] [
604       Str Config.gem5,
605       In SrcTree "tools" "/tools/aarch64_gem5/gem5script.py",
606       Str "--caches",
607       Str "--l2cache",
608       Str "--n=1",
609       Str "--cpu-type=arm_detailed",
610       NStr "--kernel=", In BuildTree "root" "/armv8_gem5_image" ]
611     "Boot an ARMv8 single core image in GEM5 using a detailed CPU model",
612
613     boot "gem5_armv7_vexpressemm" [ "armv7" ] [
614       In SrcTree "tools" "/tools/arm_gem5/boot_gem5.sh",
615       Str "VExpress_EMM",
616       In BuildTree "root" "/armv7_a15ve_gem5_image" ]
617     "Boot an ARMv7a multicore image on a VersatileExpress EMM board in GEM5",
618
619     boot "FVP_VE_A5x1" [ "armv7" ] [
620       Str "FVP_VE_Cortex-A5x1",
621       In BuildTree "root" "/armv7_a9ve_1_image" ]
622     "Boot on a single-core Cortex-A5 FVP model",
623
624     boot "FVP_VE_A7x1" [ "armv7" ] [
625       Str "FVP_VE_Cortex-A7x1",
626       In BuildTree "root" "/armv7_a15ve_fvp_1_image" ]
627     "Boot on a single-core Cortex-A7 FVP model",
628
629     boot "FVP_VE_A9x1" [ "armv7" ] [
630       Str "FVP_VE_Cortex-A9x1",
631       In BuildTree "root" "/armv7_a9ve_1_image" ]
632     "Boot on a single-core Cortex-A9 FVP model",
633
634     boot "FVP_VE_A9x4" [ "armv7" ] [
635       Str "FVP_VE_Cortex-A9x4",
636       In BuildTree "root" "/armv7_a9ve_4_image" ]
637     "Boot on a four-core Cortex-A9 FVP model",
638
639     boot "FVP_VE_A15x1" [ "armv7" ] [
640       Str "FVP_VE_Cortex-A15x1",
641       In BuildTree "root" "/armv7_a15ve_fvp_1_image" ]
642     "Boot on a single-core Cortex-A15 FVP model",
643
644     boot "FVP_VE_A15x4" [ "armv7" ] [
645       Str "FVP_VE_Cortex-A15x4-A7x4",
646       In BuildTree "root" "/armv7_a15ve_fvp_4_image" ]
647     "Boot on a eight-core Cortex-A15/A7 FVP model",
648
649     boot "FVP_VE_A17x1" [ "armv7" ] [
650       Str "FVP_VE_Cortex-A17x1",
651       In BuildTree "root" "/armv7_a15ve_fvp_1_image" ]
652     "Boot on a single-core Cortex-A17 FVP model",
653
654     boot "qemu_x86_64" [ "x86_64" ] [
655       In SrcTree "tools" "/tools/qemu-wrapper.sh",
656       Str "--menu", In BuildTree "root" "/platforms/x86/menu.lst.x86_64",
657       Str "--arch", Str "x86_64" ]
658     "Boot QEMU in 64-bit x86 mode emulating a PC",
659
660     boot "qemu_x86_32" [ "x86_32" ] [
661       In SrcTree "tools" "/tools/qemu-wrapper.sh",
662       Str "--menu", In BuildTree "root" "/platforms/x86/menu.lst.x86_32",
663       Str "--arch", Str "x86_32" ]
664     "Boot QEMU in 32-bit x86 mode emulating a PC",
665
666     boot "qemu_a15ve_1" [ "armv7" ] [
667       In SrcTree "tools" "/tools/qemu-wrapper.sh",
668       Str "--image", In BuildTree "root" "/armv7_a15ve_1_image",
669       Str "--arch", Str "a15ve",
670       Str "--smp", Str "1" ]
671     "Boot QEMU in 32-bit ARM mode emulating a Versatile Express board (1 core)",
672
673     boot "qemu_a15ve_4" [ "armv7" ] [
674       In SrcTree "tools" "/tools/qemu-wrapper.sh",
675       Str "--image", In BuildTree "root" "/armv7_a15ve_4_image",
676       Str "--arch", Str "a15ve",
677       Str "--smp", Str "4" ]
678     "Boot QEMU in 32-bit ARM mode emulating a Versatile Express board (4 cores)",
679
680     boot "qemu_zynq7" [ "armv7" ] [
681       In SrcTree "tools" "/tools/qemu-wrapper.sh",
682       Str "--image", In BuildTree "root" "/armv7_zynq7_image",
683       Str "--arch", Str "zynq7" ]
684     "Boot QEMU in 32-bit ARM mode emulating a Zynq 7000",
685
686     boot "qemu_a57v" [ "armv8" ] [
687       In SrcTree "tools" "/tools/qemu-wrapper.sh",
688       Str "--menu", In BuildTree "root" "/platforms/arm/menu.lst.armv8_qemu",
689       Str "--arch", Str "armv8",
690       Str "--hagfish", Str Config.hagfish_location ]
691     "Boot QEMU in 64-bit ARM mode emulating a ARM Virtual Machine",
692
693     boot "qemu_a57v_debug" [ "armv8" ] [
694       In SrcTree "tools" "/tools/qemu-wrapper.sh",
695       Str "--menu", In BuildTree "root" "/platforms/arm/menu.lst.armv8_qemu",
696       Str "--arch", Str "armv8",
697       Str "--hagfish", Str Config.hagfish_location,
698       Str "--debug", In SrcTree "tools" "/tools/debug.armv8.gdb" ]
699     "Boot QEMU in 64-bit ARM mode emulating a ARM Virtual Machine",
700
701     boot "qemu_x86_64_debug" [ "x86_64" ] [
702       In SrcTree "tools" "/tools/qemu-wrapper.sh",
703       Str "--menu", In BuildTree "root" "/platforms/x86/menu.lst.x86_64",
704       Str "--arch", Str "x86_64",
705       Str "--debug", In SrcTree "tools" "/tools/debug.gdb" ]
706     "Boot QEMU under GDB in 64-bit x86 mode emulating a PC",
707
708     boot "qemu_x86_32_debug" [ "x86_32" ] [
709       In SrcTree "tools" "/tools/qemu-wrapper.sh",
710       Str "--menu", In BuildTree "root" "/platforms/x86/menu.lst.x86_32",
711       Str "--arch", Str "x86_32",
712       Str "--debug", In SrcTree "tools" "/tools/debug.gdb" ]
713     "Boot QEMU under GDB in 32-bit x86 mode emulating a PC",
714
715     boot "usbboot_panda" [ "armv7" ] [
716       In BuildTree "tools" "/bin/usbboot",
717       In BuildTree "root" "/armv7_omap44xx_image"
718     ]
719     "Boot Barrelfish on a Pandaboard, over a local USB cable"
720
721  ]