diff options
author | Sandrine Bailleux <sandrine.bailleux@arm.com> | 2013-11-28 09:43:06 +0000 |
---|---|---|
committer | Dan Handley <dan.handley@arm.com> | 2013-12-05 11:33:15 +0000 |
commit | 65f546a14fbc0438c051b4243f71abd2206a7307 (patch) | |
tree | 1187ac9d3eb596ecb61ac4568969041392764a14 /bl1 | |
parent | 8d69a03f6a7db3c437b7cfdd15402627277d8cb4 (diff) |
Properly initialise the C runtime environment
This patch makes sure the C runtime environment is properly
initialised before executing any C code.
- Zero-initialise NOBITS sections (e.g. the bss section).
- Relocate BL1 data from ROM to RAM.
Change-Id: I0da81b417b2f0d1f7ef667cc5131b1e47e22571f
Diffstat (limited to 'bl1')
-rw-r--r-- | bl1/aarch64/bl1_entrypoint.S | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/bl1/aarch64/bl1_entrypoint.S b/bl1/aarch64/bl1_entrypoint.S index 7fe3bc6c..119ae936 100644 --- a/bl1/aarch64/bl1_entrypoint.S +++ b/bl1/aarch64/bl1_entrypoint.S @@ -93,6 +93,30 @@ _wait_for_entrypoint: _do_cold_boot: /* --------------------------------------------- + * Init C runtime environment. + * - Zero-initialise the NOBITS sections. + * There are 2 of them: + * - the .bss section; + * - the coherent memory section. + * - Copy the data section from BL1 image + * (stored in ROM) to the correct location + * in RAM. + * --------------------------------------------- + */ + ldr x0, =__BSS_START__ + ldr x1, =__BSS_SIZE__ + bl zeromem16 + + ldr x0, =__COHERENT_RAM_START__ + ldr x1, =__COHERENT_RAM_UNALIGNED_SIZE__ + bl zeromem16 + + ldr x0, =__DATA_RAM_START__ + ldr x1, =__DATA_ROM_START__ + ldr x2, =__DATA_SIZE__ + bl memcpy16 + + /* --------------------------------------------- * Initialize platform and jump to our c-entry * point for this type of reset * --------------------------------------------- |