Genode Packages collection
https://git.sr.ht/~ehmry/genodepkgs/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
75 lines
2.0 KiB
75 lines
2.0 KiB
#!/usr/bin/env expect |
|
|
|
## |
|
# Generate assembly code aggregating boot-module data from specified files. |
|
# |
|
proc generate_boot_modules_asm {modules} { |
|
|
|
# architecture dependent definitions |
|
set address_type ".quad" |
|
|
|
# header |
|
set asm_src {} |
|
append asm_src ".set MIN_PAGE_SIZE_LOG2, 12\n" |
|
append asm_src ".set DATA_ACCESS_ALIGNM_LOG2, 3\n" |
|
append asm_src "\n" |
|
append asm_src ".section .data\n" |
|
append asm_src "\n" |
|
append asm_src ".p2align DATA_ACCESS_ALIGNM_LOG2\n" |
|
append asm_src ".global _boot_modules_headers_begin\n" |
|
append asm_src "_boot_modules_headers_begin:\n" |
|
append asm_src "\n" |
|
|
|
# module list |
|
set i 0 |
|
foreach module $modules { |
|
incr i |
|
append asm_src "${address_type} _boot_module_${i}_name\n" |
|
append asm_src "${address_type} _boot_module_${i}_begin\n" |
|
append asm_src "${address_type} _boot_module_${i}_end -" |
|
append asm_src " _boot_module_${i}_begin\n" |
|
append asm_src "\n" |
|
} |
|
append asm_src ".global _boot_modules_headers_end\n" |
|
append asm_src "_boot_modules_headers_end:\n" |
|
append asm_src "\n" |
|
|
|
# module names |
|
set i 0 |
|
foreach module $modules { |
|
incr i |
|
append asm_src ".p2align DATA_ACCESS_ALIGNM_LOG2\n" |
|
append asm_src "_boot_module_${i}_name:\n" |
|
append asm_src ".string \"${module}\"\n" |
|
append asm_src ".byte 0\n" |
|
append asm_src "\n" |
|
} |
|
|
|
# header end |
|
append asm_src ".section .data.boot_modules_binaries\n" |
|
append asm_src "\n" |
|
append asm_src ".global _boot_modules_binaries_begin\n" |
|
append asm_src "_boot_modules_binaries_begin:\n" |
|
append asm_src "\n" |
|
|
|
# module data |
|
set i 0 |
|
foreach module $modules { |
|
incr i |
|
append asm_src ".p2align MIN_PAGE_SIZE_LOG2\n" |
|
append asm_src "_boot_module_${i}_begin:\n" |
|
append asm_src ".incbin \"${module}\"\n" |
|
append asm_src "_boot_module_${i}_end:\n" |
|
append asm_src "\n" |
|
} |
|
|
|
append asm_src ".p2align MIN_PAGE_SIZE_LOG2\n" |
|
append asm_src ".global _boot_modules_binaries_end\n" |
|
append asm_src "_boot_modules_binaries_end:\n" |
|
|
|
return $asm_src |
|
} |
|
|
|
eval $env(baseSetup) |
|
|
|
eval $env(testScript)
|
|
|