[ARM] Move bss section towards end of xvisor arm binary

The bss section is a non-loadable section which means it does not
contain any data to be loaded hence keeping this section between
loadable sections will only increase xvisor binary size.

In fact, all non-loadable sections such as (bss and stack) should
be towards the end of the xvisor binary.

The patch moves bss section towards end of xvisor binary.

Signed-off-by: Anup Patel <anup@brainfault.org>
Signed-off-by: Sukanto Ghosh <sukantoghosh@gmail.com>
[ARM] Save boot register values passed by bootloader

The ARM bootloader pass information to ARM Linux via r0, r1, and r2
registers.

The Xvisor boot protocol is same as that of ARM Linux hence we save
the values of r0, r1, and r2 so that in-future it is usefule for
getting DTB passed to Xvisor via bootloader.

Signed-off-by: Anup Patel <anup@brainfault.org>
[LIBS] Make libfdt mandatory for all architectures.

Almost all architectures now and in-future will use DTB to populate
device tree in Xvisor.

Even x86 would be using it have guest templates and skeletal
device tree linked with Xvisor x86 binary. Actually, Xvisor x86
would be populating device tree from built-in DTB, ACPI tables
and Multiboot information.

This patch removes the configuration options that enables/disables
libfdt and DTC compiler.

Signed-off-by: Anup Patel <anup@brainfault.org>
[CORE] Use vmm_zalloc() in vmm_modules_init()

Signed-off-by: Anup Patel <anup@brainfault.org>
[ARCH] Place the built-in dtb in a separate .devtree section

Placing the built-in dtb in a separate section allows control on
where to place it.

For ARM, we place it inside init region so that this space can be
reclaimed later. We also reserve some space for future use.

For x86, we don't treat it in a special manner. Maybe someday
later it will be placed in init region for x86 too.

Signed-off-by: Sukanto Ghosh <sukantoghosh@gmail.com>
Signed-off-by: Anup Patel <anup@brainfault.org>
[ARM] Move built-in module table inside init region

The build-in module table in Xvisor ARM binary not used
once all modules are populated from it hence move it inside
init region to reclaim its memory later.

Signed-off-by: Anup Patel <anup@brainfault.org>
Merge branch 'x86-next', remote-tracking branch 'upstream/master' into x86-next
[x86] Populate device tree from ACPI tables.

This patch populates the device tree from the ACPI tables.
This happens in early boot after host address space is setup.
After this all drivers don't need to depend on ACPI to query
device details. Every property of device is available in the
device tree.

Currently APIC and HPET are supported but code is generic enough
to handle other kinds.

Signed-off-by: Himanshu Chauhan <hschauhan@nulltrace.org>