76 lines
2.0 KiB
Plaintext
76 lines
2.0 KiB
Plaintext
|
#!/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)
|