docs: Fix Hakefile comment
[barrelfish] / platforms / Hakefile
1 --------------------------------------------------------------------------
2 -- Copyright (c) 2015-2016, 2019 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, Universitaetstrasse 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                         "hellotest",
33                         "idctest",
34                         "memtest",
35                         "nkmtest_all",
36                         "nkmtest_map_unmap",
37                         "nkmtest_modify_flags",
38                         "nkmtest_map_offset",
39                         "nkmtest_vnode_inherit",
40                         "nkmtest_vnode_inherit_no_delete",
41                         "schedtest",
42                         "test_retype",
43                         "test_rootcn_resize",
44                         "test_create_l1l2_cnodes",
45                         "test_remote_retype",
46                         "test_remote_delete",
47                         "test_remote_revoke",
48                         "testerror",
49                         "yield_test",
50                         "skb_cap_storage"
51                     ] ]
52
53     tests_x86 = [ "/sbin/" ++ f | f <- [
54                         "tests/luatest",
55                         "tests/numatest" ] ] ++ tests_common
56
57     tests_x86_64 = [ "/sbin/" ++ f | f <- [
58                         "arrakis_hellotest",
59                         "ata_rw28_test",
60                         "bomp_cpu_bound",
61                         "bomp_cpu_bound_progress",
62                         "bomp_sync",
63                         "bomp_sync_progress",
64                         "bomp_test",
65                         "bulk_shm",
66                         "cryptotest",
67                         "fread_test",
68                         "fscanf_test",
69                         "mdbtest_addr_zero",
70                         "mdbtest_range_query",
71                         "mem_affinity",
72                         "memtest_pmap_array",
73                         "memtest_pmap_array_mcn",
74                         "memtest_pmap_list",
75                         "memtest_pmap_list_mcn",
76                         "multihoptest",
77                         "net-test",
78                         "net_openport_test",
79                         "nkmtest_invalid_mappings",
80                         "perfmontest",
81                         "phoenix_kmeans",
82                         "socketpipetest",
83                         "spantest",
84                         "spin",
85                         "testconcurrent",
86                         "testdesc",
87                         "testdesc-child",
88                         "tests/cxxtest",
89                         "tests/ep_basic",
90                         "tests/dma_test",
91                         "tests/tftpclient",
92                         "tests/xphi_nameservice_test",
93                         "thcidctest",
94                         "thcminitest",
95                         "thctest",
96                         "timer_test",
97                         "tlstest",
98                         "tweedtest",
99                         "xcorecap",
100                         "xcorecapserv" ] ] ++ tests_x86
101
102
103     tests_k1om = [ "/sbin/" ++ f | f <- [
104                         "tests/dma_test",
105                         "tests/xeon_phi_inter",
106                         "tests/xeon_phi_test",
107                         "tests/xphi_nameservice_test" ] ] ++ tests_x86
108
109     bench_common = [ "/sbin/" ++ f | f <- [
110                         "channel_cost_bench",
111                         "flounder_stubs_buffer_bench",
112                         "flounder_stubs_empty_bench",
113                         "flounder_stubs_payload_bench",
114                         "xcorecapbench" ]]
115
116     bench_x86 =  [ "/sbin/" ++ f | f <- [
117                       "multihop_latency_bench",
118                       "net_openport_test",
119                       "perfmontest",
120                       "thc_v_flounder_empty",
121                       "timer_test",
122                       "udp_throughput",
123                       "ump_exchange",
124                       "ump_latency",
125                       "ump_latency_cache",
126                       "ump_receive",
127                       "ump_send",
128                       "ump_throughput" ]]
129
130     bench_x86_64 = bench_x86 ++ bin_rcce_bt ++ bin_rcce_lu ++
131                    [ "/sbin/" ++ f | f <- [
132                         "ahci_bench",
133                         "apicdrift_bench",
134                         "benchmarks/bomp_mm",
135                         "benchmarks/dma_bench",
136                         "benchmarks/vspace_map",
137                         "benchmarks/xomp_share",
138                         "benchmarks/xomp_spawn",
139                         "benchmarks/xomp_work",
140                         "benchmarks/xphi_ump_bench",
141                         "bomp_benchmark_cg",
142                         "bomp_benchmark_ft",
143                         "bomp_benchmark_is",
144                         "bulk_transfer_passthrough",
145                         "bulkbench",
146                         "bulkbench_micro_echo",
147                         "bulkbench_micro_rtt",
148                         "bulkbench_micro_throughput",
149                         "cowbench",
150                         "distops_standalone_runner",
151                         "bench_delete_foreign_copy",
152                         "bench_delete_last_copy",
153                         "bench_delete_last_copy_remote",
154                         "bench_delete_cnode_last_copy",
155                         "bench_delete_cnode_last_copy_2",
156                         "bench_delete_local_copy",
157                         "bench_revoke_no_remote",
158                         "bench_revoke_no_remote_standalone",
159                         "bench_revoke_remote_copy",
160                         "bench_revoke_with_remote_copies",
161                         "bench_retype_no_remote",
162                         "bench_retype_w_local_descendants",
163                         "bench_retype_with_remote_copies",
164                         "bench_noop",
165                         "bench_noop_invocation",
166                         "elb_app",
167                         "elb_app_tcp",
168                         "lrpc_bench",
169                         "mdb_bench_noparent",
170                         "mdb_bench_linkedlist",
171                         "netthroughput",
172                         "phases_bench",
173                         "phases_scale_bench",
174                         "placement_bench",
175                         "rcce_pingpong",
176                         "shared_mem_clock_bench",
177                         "tsc_bench" ]]
178
179     bench_k1om = [ "/sbin/" ++ f | f <- [
180                         "benchmarks/bomp_mm",
181                         "benchmarks/dma_bench",
182                         "benchmarks/xomp_share",
183                         "benchmarks/xomp_spawn",
184                         "benchmarks/xomp_work",
185                         "benchmarks/xphi_ump_bench",
186                         "benchmarks/xphi_xump_bench" ] ] ++ bench_x86
187
188     -- Example program modules
189     modules_xmpl = [ "/sbin/" ++ f | f <- [
190         --"examples/xmpl-call-response",
191         "examples/xmpl-cow",
192         "examples/xmpl-hello",
193         --"examples/xmpl-msg",
194         --"examples/xmpl-rpc_msg",
195         --"examples/xmpl-rpc_rpc",
196         "examples/xmpl-span",
197         "examples/xmpl-spawn",
198         "examples/xmpl-thc-binding",
199         --"examples/xmpl-thc-lang",
200         "examples/xmpl-thread",
201         "examples/xmpl-thread-min",
202         "examples/xmpl-trace" ] ]
203
204     -- Default list of modules to build/install for all enabled architectures
205     modules_common = [ "/sbin/" ++ f | f <- [
206                           "init",
207                           "skb",
208                           "spawnd",
209                           "proc_mgmt",
210                           "startd",
211                           "mem_serv",
212                           "monitor",
213                           "ramfsd" ]]
214
215     -- List of modules that are arch-independent and always built
216     modules_generic = [
217         "/eclipseclp_ramfs.cpio.gz",
218         "/skb_ramfs.cpio.gz" ]
219
220     -- x86_64-specific modules to build by default
221     -- this should shrink as targets are ported and move into the generic list above
222     modules_x86_64  = [ "/sbin/" ++ f | f <- [
223                            "elver",
224                            "cpu",
225                            "acpi",
226                            "ahcid",
227                            "angler",
228                            "arrakismon",
229                            "bcached",
230                            "bench",
231                            "bfscope",
232                            "bfscope_nfs",
233                            "block_server",
234                            "block_server_client",
235                            "boot_perfmon",
236                            "bs_user",
237                            "bulk_shm",
238                            "corectrl",
239                            "datagatherer",
240                            "dma_mgr",
241                            "e1000n",
242                            "e10k",
243                            "echoserver",
244                            "fbdemo",
245                            "fish",
246                            "hpet",
247                            "hwmodel/offload",
248                            "ioat_dma",
249                            "iommu",
250                            "kaluga",
251                            "lo_queue",
252                            "lpc_kbd",
253                            "lpc_timer",
254                            "lshw",
255                            "mem_serv_dist",
256                            "netd",
257                            "NGD_mng",
258                            "pci",
259                            "routing_setup",
260                            "rtl8029",
261                            "serial_pc16550d",
262                            "sfn5122f",
263                            "slideshow",
264                            "vbe",
265                            "virtio_blk",
266                            "virtio_blk_host",
267                            "vmkitmon",
268                            "vnode_map_test",
269                            "webserver",
270                            "xeon_phi",
271                            "hpet",
272                            "xeon_phi_mgr",
273                            "mlx4",
274                            "net_sockets_server"
275                            ]] ++ modules_common
276
277     -- the following are broken in the newidc system
278     modules_x86_64_broken  = [ "/sbin/" ++ f | f <- [
279                                   "barriers",
280                                   "ipi_bench",
281                                   "ring_barriers",
282                                   "ssf_bcast",
283                                   "lamport_bcast" ]]
284
285
286     modules_k1om = [ "/sbin/" ++ f | f <- [
287                         "weever",
288                         "cpu",
289                         "xeon_phi",
290                         "hwmodel/offload",
291                         "corectrl" ] ] ++ modules_common
292
293     -- ARMv7-a Pandaboard modules
294     pandaModules = [ "/sbin/" ++ f | f <- [
295                         "cpu_omap44xx",
296                         "init",
297                         "mem_serv",
298                         "monitor",
299                         "proc_mgmt",
300                         "ramfsd",
301                         "spawnd",
302                         "startd",
303                         "skb",
304                         "memtest",
305                         "kaluga",
306                         "fish",
307                         "sdmatest",
308                         "sdma_bench",
309                         "bulk_sdma",
310                         "usb_manager",
311                         "usb_keyboard",
312                         "serial_omap44xx",
313                         "serial_kernel",
314                         "angler",
315                         "corectrl",
316                         "driverdomain",
317                         "driverdomain_pl390",
318                         "int_route"
319                         ] ]
320
321     -- ARMv7-A modules for Versatile Express EMM board (GEM5, qemu)
322     vExpressEMMModules_A15 = [ "/sbin/" ++ f | f <- [
323                                "cpu_a15ve",
324                                "init",
325                                "kaluga",
326                                "mem_serv",
327                                "monitor",
328                                "proc_mgmt",
329                                "ramfsd",
330                                "spawnd",
331                                "startd",
332                                "corectrl",
333                                "skb",
334                                "angler",
335                                "fish",
336                                "memtest",
337                                "serial_kernel",
338                                "serial_pl011",
339                                "driverdomain",
340                                "driverdomain_pl390",
341                                "int_route"
342                                ] ]
343
344     -- ARMv7-A modules for Versatile Express EMM board (FVP)
345     vExpressEMMModules_A9 = [ "/sbin/" ++ f | f <- [
346                               "cpu_a9ve",
347                               "init",
348                               "kaluga",
349                               "mem_serv",
350                               "monitor",
351                               "proc_mgmt",
352                               "ramfsd",
353                               "serial_kernel",
354                               "serial_pl011",
355                               "spawnd",
356                               "startd",
357                               "corectrl",
358                               "skb",
359                               "angler",
360                               "fish",
361                               "memtest"
362                               ] ]
363
364     -- ARMv7-A modules for the Xilinx Zynq7000
365     zynq7Modules = [ "/sbin/" ++ f | f <- [
366                      "cpu_zynq7",
367                      "init",
368                      "kaluga",
369                      "mem_serv",
370                      "monitor",
371                      "proc_mgmt",
372                      "ramfsd",
373                      "spawnd",
374                      "startd",
375                      "corectrl",
376                      "skb",
377                      "angler",
378                      "fish",
379                      "memtest"
380                      ] ]
381
382
383     -- ARMv8 modules for running under QEMU
384     armv8_modules= [ "/sbin/" ++ f | f <- [
385                        "init",
386                        "mem_serv",
387                        "monitor",
388                        "proc_mgmt",
389                        "ramfsd",
390                        "spawnd",
391                        "startd",
392                        "corectrl",
393                        "skb",
394                        "pci",
395                        "memtest",
396                        "int_route",
397                        "serial_kernel",
398                        "pl390_dist",
399                        "fish",
400                        "angler",
401                        "kaluga",    
402                        "enet",
403                        "acpi"
404                        ] ]
405
406     -- ARMv8 modules for running on the colibri imx8x boards
407     imx8x_modules = [ "/sbin/" ++ f | f <- [
408                         "serial_lpuart",
409                         "imx8x_sdhc"
410                    ]]
411
412
413   in
414  [
415    --
416    -- Rules to build assorted platforms
417    --
418
419     platform "X86_64_Basic" [ "x86_64" ]
420       ([ ("x86_64", f) | f <- modules_x86_64 ]
421        ++
422        [ ("",       f) | f <- modules_generic])
423       "Basic 64-bit x86 PC build",
424
425     platform "X86_64_Benchmarks" [ "x86_64" ]
426       ([ ("x86_64", f) | f <- modules_x86_64 ++ bench_x86_64]
427        ++
428        [ ("",       f) | f <- modules_generic])
429       "64-bit x86 PC build with benchmarks",
430
431     platform "X86_64_Full" [ "x86_64" ]
432       ([ ("x86_64", f) | f <- modules_x86_64 ++ bench_x86_64 ++ tests_x86_64 ++ modules_xmpl ]
433        ++
434        [ ("",       f) | f <- modules_generic])
435       "64-bit x86 PC build with benchmarks and test suites",
436
437     platform "K1OM_Basic" [ "k1om" ]
438       ([ ("k1om", f) | f <- modules_k1om ]
439        ++
440        [ ("",       f) | f <- modules_generic])
441       "Basic Xeon Phi build",
442
443     platform "K1OM_Benchmarks" [ "k1om" ]
444       ([ ("k1om", f) | f <- modules_k1om ++ bench_k1om]
445        ++
446        [ ("",       f) | f <- modules_generic])
447       "Xeon Phi build with benchmarks",
448
449     platform "K1OM_Full" [ "k1om" ]
450       ([ ("k1om", f) | f <- modules_k1om ++ bench_k1om ++ tests_k1om ]
451        ++
452        [ ("",       f) | f <- modules_generic])
453       "Xeon Phi build with benchmarks and test suites",
454
455     platform "ARMV7_Basic" [ "armv7" ]
456       ([ ("armv7", f) | f <- pandaModules ]
457        ++
458        [ ("",       f) | f <- modules_generic])
459       "Basic ARMv8 build",
460
461     platform "ARMV8_Basic" [ "armv8" ]
462       ([ ("armv8", f) | f <- armv8_modules ]
463        ++
464        [ ("",       f) | f <- modules_generic])
465       "Basic ARMv8 build",
466
467     platform "FVP" [ "armv8" ]
468       ([ ("armv8", "/sbin/cpu_a57_fvp"), ("armv8", "/sbin/boot_armv8_generic")  ]
469        ++
470        [ ("armv8", f) | f <- armv8_modules ]
471        ++
472        [ ("",       f) | f <- modules_generic])
473     "ARM Virtual Machine Board with ARM Cortex A57 processors in Fixed Virtual Platform.",
474
475     platform "ARM_FastModels_Base_A57" [ "armv8" ]
476        [ ("root", "/armv8_a57_fvp_base_image") ]
477     "ARM FastModels Base Board with A57 processors.",
478
479     platform "QEMU" [ "armv8" ]
480       ([ ("armv8", "/sbin/cpu_a57_qemu"), ("armv8", "/sbin/boot_armv8_generic")  ]
481        ++
482        [ ("armv8", f) | f <- armv8_modules ]
483        ++
484        [ ("",       f) | f <- modules_generic])
485     "ARM Virtual Machine Board with ARM Cortex A57 processors in QEMU",
486
487     platform "QEMU_U-Boot" [ "armv8" ]
488     ([ ("armv8", "/sbin/cpu_a57_qemu"), ("armv8", "/sbin/boot_armv8_generic")  ]
489      ++
490      [ ("armv8", f) | f <- armv8_modules ]
491      ++
492      [ ("",       f) | f <- modules_generic]
493      ++
494      [ ("root", "/armv8_a57_qemu_image.efi") ])
495   "ARM Virtual Machine Board with ARM Cortex A57 processors in QEMU",
496
497     platform "APM88xxxx" [ "armv8" ]
498     ([ ("armv8", "/sbin/cpu_apm88xxxx"), ("armv8", "/sbin/boot_armv8_generic")]
499        ++
500        [ ("armv8", f) | f <- armv8_modules ]
501        ++
502        [ ("",       f) | f <- modules_generic]
503     )
504     "The APM XGene development board (Mustang)",
505
506     platform "ThunderX" [ "armv8" ]
507     ([ ("armv8", "/sbin/cpu_cn88xx"), ("armv8", "/sbin/boot_armv8_generic") ]
508        ++
509        [ ("armv8", f) | f <- armv8_modules ]
510        ++
511        [ ("",       f) | f <- modules_generic]
512     )
513     "Cavium ThunderX-1 (CN88xx) boards",
514
515     platform "RaspberryPi3" [ "armv8" ]
516       ([ ("armv8", "/sbin/cpu_a53_rpi3"), ("armv8", "/sbin/boot_armv8_generic")  ]
517        ++
518        [ ("armv8", f) | f <- armv8_modules ]
519        ++
520        [ ("",       f) | f <- modules_generic]
521        ++
522        [ ("root", "/armv8_rpi3_image.efi") ])
523     "Raspberry Pi 3 quad ARM Cortex A53",
524
525     platform "imx8x" [ "armv8" ]
526       ([ ("armv8", "/sbin/cpu_imx8x"), ("armv8", "/sbin/boot_armv8_generic")  ]
527        ++
528        [ ("root", "/armv8_imx8x_image.efi") ])
529     "NXP iMX8QXP",
530
531     platform "PandaboardES" [ "armv7" ]
532     ([ ("armv7", f) | f <- pandaModules ] ++
533      [ ("root", "/armv7_omap44xx_image"),
534        ("root", "/armv7_omap44xx_image-gdb.gdb") ])
535     "Standard Pandaboard ES build image and modules",
536
537     platform "VExpressEMM-A15" [ "armv7" ]
538     ([ ("armv7", f) | f <- vExpressEMMModules_A15 ] ++
539      [ ("root", "/armv7_a15ve_1_image"),
540        ("root", "/armv7_a15ve_1_image-gdb.gdb"),
541        ("root", "/armv7_a15ve_fvp_1_image"),
542        ("root", "/armv7_a15ve_fvp_1_image-gdb.gdb"),
543        ("root", "/armv7_a15ve_2_image"),
544        ("root", "/armv7_a15ve_2_image-gdb.gdb"),
545        ("root", "/armv7_a15ve_4_image"),
546        ("root", "/armv7_a15ve_4_image-gdb.gdb"),
547        ("root", "/armv7_a15ve_fvp_4_image"),
548        ("root", "/armv7_a15ve_fvp_4_image-gdb.gdb"),
549        ("root", "/armv7_a15ve_gem5_image"),
550        ("root", "/armv7_a15ve_gem5_image-gdb.gdb") ])
551     "VersatileExpress EMM board with ARM Cortex-A15s",
552
553     platform "VExpressEMM-A15-A7" [ "armv7" ]
554     ([ ("armv7", f) | f <- vExpressEMMModules_A15 ] ++
555      [ ("root", "/armv7_a15a7ve_image"),
556        ("root", "/armv7_a15a7ve_image-gdb.gdb") ])
557     "VersatileExpress EMM board with ARM Cortex-A15s and A7s",
558
559     platform "VExpressEMM-A9" [ "armv7" ]
560     ([ ("armv7", f) | f <- vExpressEMMModules_A9 ] ++
561      [ ("root", "/armv7_a9ve_1_image"),
562        ("root", "/armv7_a9ve_1_image-gdb.gdb"),
563        ("root", "/armv7_a9ve_4_image"),
564        ("root", "/armv7_a9ve_4_image-gdb.gdb") ])
565     "VersatileExpress EMM board for ARMv7-A Fixed Virtual Platforms",
566
567     platform "Zynq7000" [ "armv7" ]
568     ([ ("armv7", f) | f <- zynq7Modules ] ++
569      [ ("root", "/armv7_zynq7_image"),
570        ("root", "/armv7_zynq7_image-gdb.gdb") ])
571     "Xilinx Zynq7000",
572
573     --
574     -- Rules to build assorted boot images
575     --
576
577     -- Build the default PandaBoard boot image
578     armv7Image "armv7_omap44xx" "omap44xx" "omap44xx" "0x80000000"  modules_generic pandaModules,
579
580     -- Build the A15 simulation image (VersatileExpress EMM board, 1 core)
581     armv7Image "armv7_a15ve_1" "ve" "a15ve" "0x80000000" modules_generic vExpressEMMModules_A15,
582
583     -- Build the A15 simulation image (VersatileExpress EMM board, 1 core, FVP
584     -- quirks)
585     armv7Image "armv7_a15ve_fvp_1" "ve" "a15ve" "0x80000000" modules_generic vExpressEMMModules_A15,
586
587     -- Build the A15 simulation image (VersatileExpress EMM board, 2 cores)
588     armv7Image "armv7_a15ve_2" "ve" "a15ve" "0x80000000" modules_generic vExpressEMMModules_A15,
589
590     -- Build the A15 simulation image (VersatileExpress EMM board, 4 cores)
591     armv7Image "armv7_a15ve_4" "ve" "a15ve" "0x80000000" modules_generic vExpressEMMModules_A15,
592
593     -- Build the A15 simulation image (VersatileExpress EMM board, 4 cores,
594     -- FVP quirks)
595     armv7Image "armv7_a15ve_fvp_4" "ve" "a15ve" "0x80000000" modules_generic vExpressEMMModules_A15,
596
597     -- Build the A15 simulation image (VersatileExpress EMM board, with GEM5
598     -- quirks)
599     armv7Image "armv7_a15ve_gem5" "ve" "a15ve" "0x80000000" modules_generic vExpressEMMModules_A15,
600
601     -- Build the big.LITTLE A15/A7 simulation image (VersatileExpress EMM
602     -- board, 4+4 cores)
603     armv7Image "armv7_a15a7ve" "ve" "a15ve" "0x80000000" modules_generic vExpressEMMModules_A15,
604
605     -- Build the A9 simulation image (VersatileExpress EMM board, 1 core)
606     armv7Image "armv7_a9ve_1" "ve" "a9ve" "0x80000000" modules_generic vExpressEMMModules_A9,
607
608     -- Build the A9 simulation image (VersatileExpress EMM board, 4 cores)
609     armv7Image "armv7_a9ve_4" "ve" "a9ve" "0x80000000" modules_generic vExpressEMMModules_A9,
610
611     -- Build the Zynq7000 image
612     armv7Image "armv7_zynq7" "zynq7" "zynq7" "0x00000000" modules_generic zynq7Modules,
613
614     armv8Image "armv8_a57_qemu" "armv8_a57_qemu" "armv8_generic" "a57_qemu" modules_generic armv8_modules,
615
616     armv8Image "armv8_rpi3" "armv8_rpi3" "armv8_generic" "a53_rpi3" modules_generic armv8_modules,
617
618     armv8Image "armv8_imx8x" "armv8_imx8x" "armv8_generic" "imx8x" modules_generic (armv8_modules ++ imx8x_modules),
619
620     armv8EFIImage "armv8_a57_fvp_base" "armv8_a57_fvp_base" "armv8_generic" "a57_fvp" modules_generic armv8_modules,
621
622     armv8EFIImage "armv8_a57_qemu" "armv8_a57_qemu" "armv8_generic" "a57_qemu" modules_generic armv8_modules,
623
624     --
625     -- Booting: various targets for booting Barrelfish under different circumstances
626     --
627
628     -- Copy menu.list files across
629     Rules [ copyFile SrcTree "root" ("/hake/menu.lst." ++ p)
630                      "root" ("/platforms/arm/menu.lst." ++ p)
631             | p <- [ "armv8_a57v",
632                      "armv8_a57_qemu",
633                      "armv8_a57_fvp_base",
634                      "armv8_a57v_1",
635                      "armv8_a57_fvp_1",
636                      "armv8_apm88xxxx",
637                      "armv8_cn88xx",
638                      "armv8_imx8x",
639                      "armv8_rpi3",
640                      "armv7_a9ve_1",
641                      "armv7_a9ve_4",
642                      "armv7_a15ve_1",
643                      "armv7_a15ve_2",
644                      "armv7_a15ve_4",
645                      "armv7_a15ve_fvp_1",
646                      "armv7_a15ve_fvp_4",
647                      "armv7_a15ve_gem5",
648                      "armv7_a15a7ve",
649                      "armv7_omap44xx",
650                      "armv7_zynq7" ]],
651     Rules [ copyFile SrcTree "root" ("/hake/menu.lst." ++ p)
652                      "root" ("/platforms/x86/menu.lst." ++ p)
653             | p <- [ "x86_64", "k1om" ] ],
654
655
656     boot "gem5_armv7_vexpressemm" [ "armv7" ] [
657       In SrcTree "tools" "/tools/arm_gem5/boot_gem5.sh",
658       Str "VExpress_EMM",
659       In BuildTree "root" "/armv7_a15ve_gem5_image" ]
660     "Boot an ARMv7a multicore image on a VersatileExpress EMM board in GEM5",
661
662     boot "FVP_VE_A5x1" [ "armv7" ] [
663       Str "FVP_VE_Cortex-A5x1",
664       In BuildTree "root" "/armv7_a9ve_1_image" ]
665     "Boot on a single-core Cortex-A5 FVP model",
666
667     boot "FVP_VE_A7x1" [ "armv7" ] [
668       Str "FVP_VE_Cortex-A7x1",
669       In BuildTree "root" "/armv7_a15ve_fvp_1_image" ]
670     "Boot on a single-core Cortex-A7 FVP model",
671
672     boot "FVP_VE_A9x1" [ "armv7" ] [
673       Str "FVP_VE_Cortex-A9x1",
674       In BuildTree "root" "/armv7_a9ve_1_image" ]
675     "Boot on a single-core Cortex-A9 FVP model",
676
677     boot "FVP_VE_A9x4" [ "armv7" ] [
678       Str "FVP_VE_Cortex-A9x4",
679       In BuildTree "root" "/armv7_a9ve_4_image" ]
680     "Boot on a four-core Cortex-A9 FVP model",
681
682     boot "FVP_VE_A15x1" [ "armv7" ] [
683       Str "FVP_VE_Cortex-A15x1",
684       In BuildTree "root" "/armv7_a15ve_fvp_1_image" ]
685     "Boot on a single-core Cortex-A15 FVP model",
686
687     boot "FVP_VE_A15x4" [ "armv7" ] [
688       Str "FVP_VE_Cortex-A15x4-A7x4",
689       In BuildTree "root" "/armv7_a15ve_fvp_4_image" ]
690     "Boot on a four-core Cortex-A15 FVP model",
691
692     boot "FVP_VE_A15x4_A7x4" [ "armv7" ] [
693       Str "FVP_VE_Cortex-A15x4-A7x4",
694       NStr "-a coretile.cluster0.*=",
695       In BuildTree "root" "/armv7_a15a7ve_image",
696       NStr "-a coretile.cluster1.*=",
697       In BuildTree "root" "/armv7_a15a7ve_image",
698       Str "-C",
699       Str "coretile.dualclustersystemconfigurationblock.CFG_ACTIVECLUSTER=0x3"
700     ]
701     "Boot on a 4+4-core Cortex-A15/A7 FVP model",
702
703     boot "FVP_VE_A17x1" [ "armv7" ] [
704       Str "FVP_VE_Cortex-A17x1",
705       In BuildTree "root" "/armv7_a15ve_fvp_1_image" ]
706     "Boot on a single-core Cortex-A17 FVP model",
707
708     boot "qemu_a15ve_1" [ "armv7" ] [
709       In SrcTree "tools" "/tools/qemu-wrapper.sh",
710       Str "--image", In BuildTree "root" "/armv7_a15ve_1_image",
711       Str "--arch", Str "a15ve",
712       Str "--smp", Str "1" ]
713     "Boot QEMU in 32-bit ARM mode emulating a Versatile Express board (1 core)",
714
715     boot "qemu_a15ve_2" [ "armv7" ] [
716       In SrcTree "tools" "/tools/qemu-wrapper.sh",
717       Str "--image", In BuildTree "root" "/armv7_a15ve_2_image",
718       Str "--arch", Str "a15ve",
719       Str "--smp", Str "2" ]
720     "Boot QEMU in 32-bit ARM mode emulating a Versatile Express board (2 core)",
721
722     boot "qemu_a15ve_4" [ "armv7" ] [
723       In SrcTree "tools" "/tools/qemu-wrapper.sh",
724       Str "--image", In BuildTree "root" "/armv7_a15ve_4_image",
725       Str "--arch", Str "a15ve",
726       Str "--smp", Str "4" ]
727     "Boot QEMU in 32-bit ARM mode emulating a Versatile Express board (4 cores)",
728
729     boot "qemu_zynq7" [ "armv7" ] [
730       In SrcTree "tools" "/tools/qemu-wrapper.sh",
731       Str "--image", In BuildTree "root" "/armv7_zynq7_image",
732       Str "--arch", Str "zynq7" ]
733     "Boot QEMU in 32-bit ARM mode emulating a Zynq 7000",
734
735     boot "qemu_a57" [ "armv8" ] ([
736       In SrcTree "tools" "/tools/qemu-wrapper.sh",
737       Str "--image", In BuildTree "root" "/armv8_a57_qemu_image",
738       Str "--arch", Str "armv8",
739       Str "--bios", In SrcTree "tools" "/tools/hagfish/QEMU_EFI.fd"
740        ]
741       )
742     "Boot QEMU in 64-bit ARM mode emulating a ARM Virtual Machine using UEFI",
743
744     boot "qemu_a57_debug" [ "armv8" ] ([
745       In SrcTree "tools" "/tools/qemu-wrapper.sh",
746       Str "--image", In BuildTree "root" "/armv8_a57_qemu_image",
747       Str "--arch", Str "armv8",
748       Str "--bios", In SrcTree "tools" "/tools/hagfish/QEMU_EFI.fd",
749       Str "--debug", In SrcTree "tools" "/tools/debug.armv8.gdb" ]
750       )
751     "Boot QEMU in 64-bit ARM mode emulating a ARM Virtual Machine using UEFI with debugging enabled",
752
753     boot "qemu_a57_uboot" [ "armv8" ] ([
754       Str "MEMORY=3G",
755       In SrcTree "tools" "/tools/qemu-wrapper.sh",
756       Str "--image", In BuildTree "root" "/armv8_a57_qemu_image.efi",
757       Str "--arch", Str "armv8",
758       Str "--uboot-img", In SrcTree "tools" "/tools/qemu-armv8-uboot.bin" ]
759       )
760     "Boot QEMU in 64-bit ARM mode emulating a ARM Virtual Machine using U-Boot",
761
762     boot_fastmodels "ARM_FastModels_Base_A57x1" [ "armv8" ] 
763       "armv8_a57_fvp_base_image"
764       "ARM_FastModels/ARMv8_Base_A57x1/ARMv8_Base_A57x1"
765       fvp_simargs
766       "Boot on a ARM FastModels Base A57x1 Platform",
767
768     boot_fastmodels_lisa "ARM_FastModels_Barebones" [ "armv8" ] 
769       "armv8_a57_fvp_base_image"
770       "barebones"
771       barebones_simargs
772       "Boot on a ARM FastModels based on Sven's Barebones",
773
774     boot_fastmodels "ARM_FastModels_Base_A57x4" [ "armv8" ] 
775       "armv8_a57_fvp_base_image"
776       "ARM_FastModels/ARMv8_Base_A57x4"
777       fvp_simargs
778       "Boot on a ARM FastModels Base A57x4 Platform",
779
780     boot "qemu_x86_64" [ "x86_64" ] ([
781       In SrcTree "tools" "/tools/qemu-wrapper.sh",
782       Str "--menu", In BuildTree "root" "/platforms/x86/menu.lst.x86_64",
783       Str "--arch", Str "x86_64" ] ++ [
784       (Dep BuildTree "x86_64" f) | f <- modules_x86_64 ] ++ [
785       (Dep BuildTree "" f) | f <- modules_generic ])
786     "Boot QEMU in 64-bit x86 mode emulating a PC",
787
788     boot "qemu_x86_64_debug" [ "x86_64" ] ([
789       In SrcTree "tools" "/tools/qemu-wrapper.sh",
790       Str "--menu", In BuildTree "root" "/platforms/x86/menu.lst.x86_64",
791       Str "--arch", Str "x86_64",
792       Str "--debug", In SrcTree "tools" "/tools/debug.gdb" ] ++ [
793       (Dep BuildTree "x86_64" f) | f <- modules_x86_64 ] ++ [
794       (Dep BuildTree "" f) | f <- modules_generic ])
795     "Boot QEMU under GDB in 64-bit x86 mode emulating a PC",
796
797     boot "usbboot_panda" [ "armv7" ] [
798       In BuildTree "tools" "/bin/usbboot",
799       In BuildTree "root" "/armv7_omap44xx_image"
800     ]
801     "Boot Barrelfish on a Pandaboard, over a local USB cable",
802
803     boot "usbboot_imx8x" [ "armv8" ] [
804       In SrcTree "tools" "/tools/imx8x/bf-boot.sh",
805       Str "--bf",
806       In BuildTree "root" "/armv8_imx8x_image.efi"
807     ]
808     "Boot Barrelfish on a Colibri board, over a local USB cable"
809
810  ]