arm64:Add multiboot support (via fdt) for Xen boot
- This multiboot support is built into linux module for aarch64.
- The implementation for Xen is following <Multiboot on ARM Specification>: http://wiki.xen.org/wiki/Xen_ARM_with_Virtualization_Extensions/Multiboot and xen/docs/misc/arm/device-tree/booting.txt in Xen source code.
- The example of this support is <How to boot Xen with GRUB on AArch64 the Foundation FVP model> https://wiki.linaro.org/LEG/Engineering/Grub2/Xen_booting_on_Foundation_FVP_...
- This adds support for the Xen Multiboot on ARM specification for arm64, enabling config file portability across the architectures.
- The multiboot command is currently x86-only, so reusing these command names should not conflict with any future additions of ARM support to multiboot2.
- The reason of adding this functionality to the existing "linux" module rather than "multiboot(2)" (1)multiboot is x86 only (2)Multiboot is added to "linux" module because it reuses existing code.
- Some changes in original linux module code Move some #define from grub-core/loader/arm64/linux.c to include/grub/arm64/linux.h Make some shared functions for multiboot.c Remove "loaded" checking in the grub_cmd_devicetree of linux.c
- Add grub_fdt_set_reg64 macro into fdt.h header file for inserting "reg" properiy, while #address-cells = <0x2> and #size-cells = <0x2>
- Add the introduction of multiboot/module command in docs/grub.texi
This multiboot support will be built in linux module for aarch64, and can not be used alone.
docs/grub.texi | 25 ++ grub-core/Makefile.core.def | 1 + grub-core/loader/arm64/linux.c | 72 ++--- grub-core/loader/arm64/multiboot.c | 593 +++++++++++++++++++++++++++++++++++++ include/grub/arm64/linux.h | 11 + include/grub/arm64/multiboot.h | 115 +++++++ include/grub/fdt.h | 12 + 7 files changed, 793 insertions(+), 36 deletions(-) create mode 100644 grub-core/loader/arm64/multiboot.c create mode 100644 include/grub/arm64/multiboot.h
Signed-off-by: Fu Wei fu.wei@linaro.org