babelfish: Allow the binary to be position independant

So far, the binary was generated with the assumption that it was going to be
run at the address 0x40008000.

This was convenient because quite simple to do, but wasn't really pratical,
since for a number of reasons (u-boot would not relocate our kernel,
Allwinner's bootloader would load us at a different address, the A80 seems to
have a different RAM base address, etc.) we might not be running from there.

Implement PIC in several steps:
  - Remove the text section address assignment
  - Discard the .data* sections, since any r/w data will generate a GOT based
    relocation, which won't work for us. This will also trigger a link
    error any time we will actually use one, which is good.
  - Remove the global variables that were used before, mostly the malloc_base
    variable, and create a new section for the heap instead, that will be used
    to hold our allocated memory. Since we can't use C global variables, the
    global heap_base variable will be set from the assembly code.
  - Convert fdt_strerror to a dumber but global-free code in order to
    accomodate with the above constraints
  - Retrieve the execution base address, and use that when dereferencing now
    relative pointers.

Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
head: Initialize the stack pointer

If we've just been booted in non-secure, we're running without any stack.
Make sure we have one.

To do so, create a new section in our binary so that we know no-one will step
on our foot, yet without providing any absolute address that might not apply to
our case.

Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
babelfish: Allow to give a prebuilt device tree

Some boards already have a device tree written. In such cases, we don't really
want any FEX probing logic, but we just want to load that DT. Handle such a
case.

Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
fixup: Stop prepending a fixed string

We don't really need that extra string anyway.

Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>