1--------------------------------------------------------------------------
2-- Copyright (c) 2007-2016, ETH Zurich.
3-- Copyright (c) 2015-2016, Hewlett Packard Enterprise Development LP.
4-- All rights reserved.
5--
6-- This file is distributed under the terms in the attached LICENSE file.
7-- If you do not find this file, copies can be found by writing to:
8-- ETH Zurich D-INFK, CAB F.78, Universitaetstr. 6, CH-8092 Zurich.
9-- Attn: Systems Group.
10--
11-- Hakefile for Barrelfish CPU drivers
12--
13--------------------------------------------------------------------------
14
15--
16-- Missing from this new Hakefile is the rule to build kernel debug
17-- symbols, since this requires some thinking about naming
18-- conventions.  Here is the rule we need:
19--
20--                Rule ( [ Str "OBJDUMP=objdump",
21--                         In SrcTree "src" "/tools/gen-gdbscript.sh",
22--                         In SrcTree "src" "/tools/debug.gdb.in",
23--                         In BuildTree arch "../sbin/cpu",
24--                         Str ">", Out arch "/debug.gdb"
25--                        ] )
26
27let
28  scheduler = case Config.scheduler of
29      Config.RR   -> "schedule_rr.c"
30      Config.RBED -> "schedule_rbed.c"
31  common_c = [ "gdb_stub.c",
32               "capabilities.c",
33               "cap_delete.c",
34               "dispatch.c",
35               scheduler,
36               "kcb.c",
37               "logging.c",
38               "memset.c",
39               "memmove.c",
40               "monitor.c",
41               "paging_generic.c",
42               "printf.c",
43               "startup.c",
44               "stdlib.c",
45               "string.c",
46               "sys_debug.c",
47               "syscall.c",
48               "wakeup.c",
49               "useraccess.c",
50               "coreboot.c",
51               "systime.c" ]
52             ++ (if Config.microbenchmarks then ["microbenchmarks.c"] else [])
53             ++ (if Config.oneshot_timer then ["timer.c"] else [])
54  common_libs = [ "getopt", "mdb_kernel" ]
55  boot_c = [ "memset.c",
56             "printf.c",
57             "stdlib.c",
58             "string.c" ]
59
60  link_cpudriver arg = linkKernel opts name objs libs "cpu"
61    where
62      opts = kernelOptions $ head $ Args.architectures arg
63      suffix = if "cpu" == Args.target arg
64             then ""
65             else "_" ++ (Args.target arg)
66      name = "cpu" ++ suffix
67      objs = [ objectFilePath opts f
68             | f <- (Args.assemblyFiles arg) ++ (Args.cFiles arg) ++ common_c ]
69      libs = (Args.addLibraries arg) ++ common_libs
70
71  link_bootdriver arg = linkKernel opts name objs libs "boot"
72    where
73      opts = kernelOptions $ head $ Args.architectures arg
74      name = "boot_" ++ Args.target arg
75      objs = [ objectFilePath opts f
76             | f <- (Args.assemblyFiles arg) ++ (Args.cFiles arg) ]
77      libs = (Args.addLibraries arg) ++ common_libs
78
79  cpudrivers arglist =
80    let
81      cafiles = Data.List.nub $ concat [ [ [ arch, cfile ]
82                                         | arch <- Args.architectures arg,
83                                           cfile <- common_c ++ (Args.cFiles arg) ]
84                                       | arg <- arglist ]
85      safiles = Data.List.nub $ concat [ [ [ arch, sfile ]
86                                         | arch <- Args.architectures arg,
87                                           sfile <- Args.assemblyFiles arg ]
88                                       | arg <- arglist ]
89      mafiles = Data.List.nub $ concat [ [ [ arch, mfile ]
90                                         | arch <- Args.architectures arg,
91                                           mfile <- Args.mackerelDevices arg ]
92                                       | arg <- arglist ]
93    in
94     ( [ compileCFile (kernelOptions a) f | [a,f] <- cafiles ]
95       ++
96       [ assembleSFile (kernelOptions a) f | [a,f] <- safiles ]
97       ++
98       [ mackerelDependencies (kernelOptions a) f [ c | [a,c] <- cafiles]
99       | [a,f] <- mafiles ]
100       ++
101       [ if Args.driverType arg == "boot"
102            then link_bootdriver arg
103            else link_cpudriver arg | arg <- arglist ]
104     )
105
106  in cpudrivers [
107  --
108  -- Generic Intel/AMD amd64 64-bit x86 core
109  --
110  cpuDriver {
111     architectures = [ "x86_64" ],
112     assemblyFiles = [ "arch/x86_64/boot.S",
113                       "arch/x86_64/entry.S",
114                       "../usr/drivers/cpuboot/arch/x86/init_ap_x86_64.S",
115                       "../usr/drivers/cpuboot/arch/x86/init_ap_x86_32.S" ],
116     cFiles = [ "arch/x86_64/debug.c",
117                "arch/x86_64/gdb_arch.c",
118                "arch/x86_64/init.c",
119                "arch/x86_64/irq.c",
120                "arch/x86_64/startup_arch.c",
121                "arch/x86_64/dispatch.c",
122                "arch/x86_64/exec.c",
123                "arch/x86_64/syscall.c",
124                "arch/x86_64/paging.c",
125                "arch/x86_64/vmkit.c" ,
126                "arch/x86_64/vmx_checks.c",
127                "arch/x86_64/vmx_vmkit.c",
128                "arch/x86_64/svm_vmkit.c",
129                "arch/x86_64/page_mappings_arch.c",
130                "arch/x86/apic.c",
131                "arch/x86/pic.c",
132                "arch/x86/pit.c",
133                "arch/x86/cmos.c",
134                "arch/x86/misc.c",
135                "arch/x86/serial.c",
136                "arch/x86/conio.c",
137                "arch/x86/syscall.c",
138                "arch/x86/debugregs.c",
139                "arch/x86/perfmon.c",
140                "arch/x86/perfmon_intel.c",
141                "arch/x86/perfmon_amd.c",
142                "arch/x86/rtc.c",
143                "arch/x86/timing.c",
144                "arch/x86/startup_x86.c",
145                "arch/x86/mcheck.c",
146                "arch/x86/multiboot.c",
147                "arch/x86/ipi_notify.c"
148              ] ++ (if Config.microbenchmarks then ["arch/x86_64/microbenchmarks.c"] else []),
149     mackerelDevices = [ "lpc_pic",
150                         "pc16550d",
151                         "ia32",
152                         "amd64",
153                         "xapic",
154                         "amd_vmcb",
155                         "cpuid",
156                         "lpc_rtc",
157                         "lpc_timer" ],
158     addLibraries = [ "elf_kernel" ]
159     },
160  --
161  -- Intel Xeon Phi (K1OM)
162  --
163  cpuDriver {
164     architectures = [ "k1om" ],
165     assemblyFiles = [ "arch/x86_64/boot.S",
166                       "arch/x86_64/entry.S",
167                       "../usr/drivers/cpuboot/arch/x86/init_ap_x86_64.S",
168                       "../usr/drivers/cpuboot/arch/x86/init_ap_x86_32.S" ],
169     cFiles = [ "arch/x86/apic.c",
170    --          "arch/x86/pic.c",
171                "arch/x86/misc.c",
172                "arch/x86/syscall.c",
173                "arch/x86/debugregs.c",
174                "arch/x86/perfmon.c",
175                "arch/x86/perfmon_intel.c",
176                "arch/x86/perfmon_amd.c",
177--              "arch/x86/rtc.c",
178                "arch/x86/timing.c",
179                "arch/x86/startup_x86.c",
180                "arch/x86/ipi_notify.c",
181                "arch/x86_64/syscall.c",
182                "arch/x86_64/debug.c",
183                "arch/x86_64/dispatch.c",
184                "arch/x86_64/exec.c",
185                "arch/x86_64/irq.c",
186                "arch/x86_64/paging.c",
187                "arch/x86_64/page_mappings_arch.c",
188                "arch/x86_64/gdb_arch.c",
189                "arch/k1om/init.c",
190                "arch/k1om/startup_arch.c",
191                "arch/k1om/mcheck.c",
192                "arch/k1om/serial.c",
193                "arch/x86/multiboot.c",
194                "arch/k1om/xeon_phi.c"
195
196              ] ++ (if Config.microbenchmarks then ["arch/x86_64/microbenchmarks.c"] else []),
197     mackerelDevices = [ "lpc_pic",
198                         "ia32",
199                         "amd64",
200                         "xapic",
201                         "cpuid",
202                         "xeon_phi/xeon_phi_serial" ],
203     addLibraries = [ "elf_kernel" ]
204     },
205
206  --
207  -- Versatile Express Cortex-A15 ARMv7-A, e.g. GEM5 or qemu
208  --
209  cpuDriver {
210    target = "a15ve",
211    architectures = [ "armv7" ],
212    assemblyFiles = [ "arch/armv7/exceptions.S",
213                      "arch/armv7/set_stack_for_mode.S",
214                      "arch/armv7/bsp_start.S",
215                      "arch/armv7/cpu_start.S"
216                    ],
217    cFiles = [
218               "arch/armv7/a15_gt.c",
219               "arch/armv7/boot_protocol.c",
220               "arch/armv7/dispatch.c",
221               "arch/armv7/init.c",
222               "arch/armv7/gdb_arch.c",
223               "arch/armv7/paging.c",
224               "arch/armv7/plat_a15mpcore.c",
225               "arch/armv7/plat_id.c",
226               "arch/armv7/plat_priv_cbar.c",
227               "arch/armv7/plat_vexpress.c",
228               "arch/armv7/plat_vexpress_consts.c",
229               "arch/armv7/startup_arch.c",
230               "arch/armv7/syscall.c",
231               "arch/arm/debug.c",
232               "arch/arm/exec.c",
233               "arch/arm/exn.c",
234               "arch/arm/gic.c",
235               "arch/arm/gdb_arch.c",
236               "arch/arm/irq.c",
237               "arch/arm/kputchar.c",
238               "arch/arm/misc.c",
239               "arch/arm/multiboot.c",
240               "arch/arm/pl011.c"
241               ],
242    mackerelDevices = [ "arm",
243                        "cpuid_arm",
244                        "pl011_uart",
245                        "pl130_gic" ],
246    addLibraries = [ "elf" ]
247    },
248  --
249  -- Common boot driver for Versatile Express boards
250  --
251  bootDriver {
252     target = "ve",
253     architectures = [ "armv7" ],
254     assemblyFiles = [ "arch/armv7/boot.S" ],
255     cFiles = [
256               "logging.c",
257                "arch/armv7/boot_driver.c",
258                "arch/armv7/gdb_arch.c",
259                "arch/armv7/paging_init.c",
260                "arch/armv7/plat_basic_boot.c",
261                "arch/armv7/plat_vexpress_consts.c",
262                "arch/arm/gdb_arch.c",
263                "arch/arm/kputchar.c",
264                "arch/arm/misc.c",
265                "arch/arm/multiboot.c",
266                "arch/arm/pl011.c"
267                ] ++ boot_c,
268     mackerelDevices = [ "arm",
269                         "cpuid_arm",
270                         "pl011_uart"
271                       ],
272     addLibraries = [ ]
273     },
274  --
275  -- Versatile Express Cortex-A9 ARMv7-A, e.g. ARM Fixed Virtual Platform
276  --
277  cpuDriver {
278     target = "a9ve",
279     architectures = [ "armv7" ],
280     assemblyFiles = [ "arch/armv7/exceptions.S",
281                       "arch/armv7/set_stack_for_mode.S",
282                       "arch/armv7/bsp_start.S",
283                       "arch/armv7/cpu_start.S"
284                     ],
285     cFiles = [
286                "arch/armv7/a9_gt.c",
287                "arch/armv7/a9_scu.c",
288                "arch/armv7/boot_protocol.c",
289                "arch/armv7/init.c",
290                "arch/armv7/dispatch.c",
291                "arch/armv7/gdb_arch.c",
292                "arch/armv7/paging.c",
293                "arch/armv7/plat_a9mpcore.c",
294                "arch/armv7/plat_id.c",
295                "arch/armv7/plat_priv_cbar.c",
296                "arch/armv7/plat_vexpress.c",
297                "arch/armv7/plat_vexpress_consts.c",
298                "arch/armv7/startup_arch.c",
299                "arch/armv7/syscall.c",
300                "arch/arm/debug.c",
301                "arch/arm/exec.c",
302                "arch/arm/exn.c",
303                "arch/arm/gic.c",
304                "arch/arm/gdb_arch.c",
305                "arch/arm/irq.c",
306                "arch/arm/kputchar.c",
307                "arch/arm/misc.c",
308                "arch/arm/multiboot.c",
309                "arch/arm/pl011.c"
310                ],
311     mackerelDevices = [ "arm",
312                         "cpuid_arm",
313                         "pl011_uart",
314                         "pl130_gic",
315                         "cortex_a9_gt",
316                         "cortex_a9_scu"
317                       ],
318     addLibraries = [ "elf" ]
319     },
320  --
321  -- TI OMAP44xx-series dual-core Cortex-A9 SoC
322  --
323  bootDriver {
324     target = "omap44xx",
325     architectures = [ "armv7" ],
326     assemblyFiles = [ "arch/armv7/boot.S" ],
327     cFiles = [
328               "logging.c",
329                "arch/armv7/boot_driver.c",
330                "arch/armv7/gdb_arch.c",
331                "arch/armv7/paging_init.c",
332                "arch/armv7/plat_omap44xx_boot.c",
333                "arch/armv7/plat_omap44xx_consts.c",
334                "arch/arm/gdb_arch.c",
335                "arch/arm/kputchar.c",
336                "arch/arm/misc.c",
337                "arch/arm/multiboot.c",
338                "arch/arm/omap_uart.c"
339                ] ++ boot_c,
340     mackerelDevices = [ "arm",
341                         "cpuid_arm",
342                         "omap/omap44xx_cortexa9_wugen",
343                         "omap/omap44xx_uart3"
344                       ],
345     addLibraries = [ ]
346     },
347  cpuDriver {
348     target = "omap44xx",
349     architectures = [ "armv7" ],
350     assemblyFiles = [ "arch/armv7/exceptions.S",
351                       "arch/armv7/set_stack_for_mode.S",
352                       "arch/armv7/bsp_start.S",
353                       "arch/armv7/cpu_start.S"
354                     ],
355     cFiles = [
356                "arch/armv7/a9_gt.c",
357                "arch/armv7/a9_scu.c",
358                "arch/armv7/boot_protocol.c",
359                "arch/armv7/gdb_arch.c",
360                "arch/armv7/init.c",
361                "arch/armv7/dispatch.c",
362                "arch/armv7/paging.c",
363                "arch/armv7/plat_a9mpcore.c",
364                "arch/armv7/plat_id.c",
365                "arch/armv7/plat_omap44xx.c",
366                "arch/armv7/plat_omap44xx_consts.c",
367                "arch/armv7/plat_priv_cbar.c",
368                "arch/armv7/startup_arch.c",
369                "arch/armv7/syscall.c",
370                "arch/arm/debug.c",
371                "arch/arm/exec.c",
372                "arch/arm/gdb_arch.c",
373                "arch/arm/exn.c",
374                "arch/arm/gic.c",
375                "arch/arm/irq.c",
376                "arch/arm/kputchar.c",
377                "arch/arm/misc.c",
378                "arch/arm/multiboot.c",
379                "arch/arm/omap_uart.c"
380                ],
381     mackerelDevices = [ "arm",
382                         "cpuid_arm",
383                         "pl130_gic",
384                         "cortex_a9_pit",
385                         "cortex_a9_gt",
386                         "cortex_a9_scu",
387                         "omap/omap44xx_uart3",
388                         "omap/omap44xx_id",
389                         "omap/omap44xx_emif",
390                         "omap/omap44xx_sysctrl_padconf_core",
391                         "omap/omap44xx_sysctrl_padconf_wkup",
392                         "omap/omap44xx_hsusbhost",
393                         "omap/omap44xx_usbtllhs_config",
394                         "omap/omap44xx_scrm",
395                         "omap/omap44xx_ehci",
396                         "omap/omap44xx_ckgen_prm",
397                         "omap/omap44xx_ckgen_cm1",
398                         "omap/omap44xx_l4per_cm2",
399                         "omap/omap44xx_l3init_cm2",
400                         "omap/omap44xx_spinlock",
401                         "omap/omap44xx_gpio"
402                         ],
403     addLibraries = [ "elf" ]
404     },
405  --
406  -- Xilinx Zynq7000-series dual-core Cortex-A9 SoC
407  --
408  bootDriver {
409     target = "zynq7",
410     architectures = [ "armv7" ],
411     assemblyFiles = [ "arch/armv7/boot.S" ],
412     cFiles = [
413               "logging.c",
414                "arch/armv7/boot_driver.c",
415                "arch/armv7/gdb_arch.c",
416                "arch/armv7/paging_init.c",
417                "arch/armv7/plat_basic_boot.c",
418                "arch/armv7/plat_zynq7_consts.c",
419                "arch/arm/gdb_arch.c",
420                "arch/arm/kputchar.c",
421                "arch/arm/misc.c",
422                "arch/arm/multiboot.c",
423                "arch/arm/zynq_uart.c"
424                ] ++ boot_c,
425     mackerelDevices = [ "arm",
426                         "cpuid_arm",
427                         "zynq7/zynq_uart"
428                       ],
429     addLibraries = [ "elf" ]
430     },
431  cpuDriver {
432     target = "zynq7",
433     architectures = [ "armv7" ],
434     assemblyFiles = [ "arch/armv7/exceptions.S",
435                       "arch/armv7/set_stack_for_mode.S",
436                       "arch/armv7/bsp_start.S",
437                       "arch/armv7/cpu_start.S"
438                     ],
439     cFiles = [
440                "arch/armv7/a9_gt.c",
441                "arch/armv7/a9_scu.c",
442                "arch/armv7/boot_protocol.c",
443                "arch/armv7/gdb_arch.c",
444                "arch/armv7/init.c",
445                "arch/armv7/dispatch.c",
446                "arch/armv7/paging.c",
447                "arch/armv7/plat_a9mpcore.c",
448                "arch/armv7/plat_id.c",
449                "arch/armv7/plat_priv_cbar.c",
450                "arch/armv7/plat_zynq7.c",
451                "arch/armv7/plat_zynq7_consts.c",
452                "arch/armv7/startup_arch.c",
453                "arch/armv7/syscall.c",
454                "arch/arm/debug.c",
455                "arch/arm/gdb_arch.c",
456                "arch/arm/exec.c",
457                "arch/arm/exn.c",
458                "arch/arm/gic.c",
459                "arch/arm/irq.c",
460                "arch/arm/kputchar.c",
461                "arch/arm/misc.c",
462                "arch/arm/multiboot.c",
463                "arch/arm/zynq_uart.c"
464                ],
465     mackerelDevices = [ "arm",
466                         "cpuid_arm",
467                         "pl130_gic",
468                         "cortex_a9_pit",
469                         "cortex_a9_gt",
470                         "cortex_a9_scu",
471                         "zynq7/zynq_uart",
472                         "zynq7/zynq_slcr"
473                         ],
474     addLibraries = [ "elf", "cpio" ]
475     },
476
477  --
478  -- Applied Micro APM88xxxx series SoC,
479  --
480  cpuDriver {
481     target = "apm88xxxx",
482     architectures = [ "armv8" ],
483     assemblyFiles = [
484        "arch/armv8/sysreg.S",
485        "arch/armv8/exceptions.S",
486        "arch/armv8/smc_hvc.S"
487     ],
488     cFiles = [
489         "arch/arm/misc.c",
490         "arch/arm/kputchar.c",
491         "arch/arm/gdb_arch.c",
492         "arch/armv8/plat_apm88xxxx.c",
493         "arch/armv8/plat_apm88xxxx_consts.c",
494         "arch/armv8/init.c",
495         "arch/armv8/gdb_arch.c",
496         "arch/armv8/gic_v2.c",
497         -----
498         "arch/armv8/kernel_multiboot2.c",
499         "arch/armv8/dispatch.c",
500         "arch/armv8/exec.c",
501         "arch/armv8/psci.c",
502         "arch/armv8/exn.c",
503         "arch/armv8/paging.c",
504         "arch/armv8/startup_arch.c",
505         "arch/armv8/syscall.c",
506         "arch/armv8/timers.c",
507         "arch/arm/debug.c",
508         "arch/arm/gic.c",
509         "arch/arm/irq.c"
510     ],
511     mackerelDevices = [
512        "arm",
513        "armv8",
514        "gic_v3_dist",
515        "gic_v3_redist",
516        "gic_v2_cpu",
517        "armv8/armv8_cache_ctrl",
518        "pl130_gic",
519        "arm_icp_pit",
520        "apm88xxxx/apm88xxxx_pc16550"
521     ],
522     addLibraries = [
523        "elf",
524        "cpio"
525    ]
526  },
527
528  --
529  -- ARM Virtual Machine Cortex-A57 ARMv8-A, (FVP)
530  --
531  cpuDriver {
532    target = "a57_fvp",
533    architectures = [ "armv8" ],
534    assemblyFiles = [
535        "arch/armv8/sysreg.S",
536        "arch/armv8/exceptions.S",
537        "arch/armv8/smc_hvc.S"
538    ],
539    cFiles = [
540        "arch/arm/misc.c",
541        "arch/arm/pl011.c",
542        "arch/arm/kputchar.c",
543        "arch/arm/gdb_arch.c",
544        "arch/armv8/plat_arm_vm.c",
545        "arch/armv8/plat_arm_vm_consts.c",
546        "arch/armv8/init.c",
547        "arch/armv8/gic_v3.c",
548        "arch/armv8/gdb_arch.c",
549        -----
550        "arch/armv8/kernel_multiboot2.c",
551        "arch/armv8/dispatch.c",
552        "arch/armv8/exec.c",
553        "arch/armv8/exn.c",
554        "arch/armv8/psci.c",
555        "arch/armv8/paging.c",
556        "arch/armv8/startup_arch.c",
557        "arch/armv8/syscall.c",
558        "arch/armv8/timers.c",
559        "arch/arm/debug.c",
560        "arch/arm/irq.c"
561    ],
562    mackerelDevices = [
563        "arm",
564        "armv8",
565        "armv8/armv8_cache_ctrl",
566        "arm_icp_pit",
567        "gic_v3_dist",
568        "gic_v3_redist",
569        "pl011_uart"
570    ],
571    addLibraries = [
572        "elf",
573        "cpio"
574    ]
575    },
576  
577  --
578  -- ARM Virtual Machine Cortex-A57 ARMv8-A, (qemu)
579  --
580  cpuDriver {
581    target = "a57_qemu",
582    architectures = [ "armv8" ],
583    assemblyFiles = [
584        "arch/armv8/sysreg.S",
585        "arch/armv8/exceptions.S",
586        "arch/armv8/smc_hvc.S"
587    ],
588    cFiles = [
589        "arch/arm/misc.c",
590        "arch/arm/pl011.c",
591        "arch/arm/kputchar.c",
592        "arch/arm/gdb_arch.c",
593        "arch/armv8/plat_qemu.c",
594        "arch/armv8/init.c",
595        "arch/armv8/gic_v3.c",
596        "arch/armv8/gdb_arch.c",
597        -----
598        "arch/armv8/kernel_multiboot2.c",
599        "arch/armv8/dispatch.c",
600        "arch/armv8/exec.c",
601        "arch/armv8/exn.c",
602        "arch/armv8/psci.c",
603        "arch/armv8/paging.c",
604        "arch/armv8/startup_arch.c",
605        "arch/armv8/syscall.c",
606        "arch/armv8/timers.c",
607        "arch/arm/debug.c",
608        "arch/arm/irq.c"
609    ],
610    mackerelDevices = [
611        "arm",
612        "armv8",
613        "armv8/armv8_cache_ctrl",
614        "arm_icp_pit",
615        "gic_v3_dist",
616        "gic_v3_redist",
617        "pl011_uart"
618    ],
619    addLibraries = [
620        "elf",
621        "cpio"
622    ]
623    },
624  
625  --
626  -- Cavium ThunderX CN88xx series SoC,
627  --
628  bootDriver {
629     target = "armv8_generic",
630     architectures = [ "armv8" ],
631     assemblyFiles = [  "arch/armv8/boot/boot_entry.S" ],
632     cFiles = [  "arch/armv8/boot/boot_generic.c" ],
633     mackerelDevices = [ "armv8" ]
634     },
635  cpuDriver {
636     target = "cn88xx",
637     architectures = [ "armv8" ],
638     assemblyFiles = [
639        "arch/armv8/sysreg.S",
640        "arch/armv8/exceptions.S",
641        "arch/armv8/smc_hvc.S"
642     ],
643     cFiles = [
644         "arch/arm/misc.c",
645         "arch/arm/pl011.c",
646         "arch/arm/kputchar.c",
647         "arch/arm/gdb_arch.c",
648         "arch/armv8/plat_cn88xx.c",
649         "arch/armv8/init.c",
650         "arch/armv8/gic_v3.c",
651         "arch/armv8/gdb_arch.c",
652         -----
653         "arch/armv8/kernel_multiboot2.c",
654         "arch/armv8/dispatch.c",
655         "arch/armv8/exec.c",
656         "arch/armv8/exn.c",
657         "arch/armv8/psci.c",
658         "arch/armv8/paging.c",
659         "arch/armv8/startup_arch.c",
660         "arch/armv8/syscall.c",
661         "arch/armv8/timers.c",
662         "arch/arm/debug.c",
663         "arch/arm/irq.c"
664     ],
665     mackerelDevices = [
666        "arm",
667        "armv8",
668        "gic_v3_dist",
669        "gic_v3_redist",
670        "armv8/armv8_cache_ctrl",
671        "pl011_uart",
672        "pl130_gic",
673        "arm_icp_pit"
674     ],
675     addLibraries = [
676        "elf",
677        "cpio"
678    ]
679  }
680  ]
681