bl2-el3: Mark all the assembly functions in bl2 at el3
authorRoberto Vargas <roberto.vargas@arm.com>
Fri, 17 Nov 2017 10:51:54 +0000 (10:51 +0000)
committerRoberto Vargas <roberto.vargas@arm.com>
Thu, 18 Jan 2018 09:57:18 +0000 (09:57 +0000)
When BL2_AT_EL3 option is enabled some platforms are going to
need a resident part in BL2 because the boot rom may jump to it
after a reset. This patch introduces __TEXT_RESIDENT_START__ and
__TEXT_RESIDENT_END__ linker symbols that mark the resident region.

Change-Id: Ib20c1b8ee257831bcc0ca7d3df98d0cb617a04f8
Signed-off-by: Roberto Vargas <roberto.vargas@arm.com>
bl2/bl2_el3.ld.S

index 7ec4646ffa34df5fe92fcb2667a74e8237a54200..57709e352bba5e1c1905b9554a0be14c9f45fe95 100644 (file)
@@ -25,7 +25,10 @@ SECTIONS
 #if SEPARATE_CODE_AND_RODATA
     .text . : {
         __TEXT_START__ = .;
-        *bl2_el3_entrypoint.o(.text*)
+       __TEXT_RESIDENT_START__ = .;
+       *bl2_el3_entrypoint.o(.text*)
+       *(.text.asm.*)
+       __TEXT_RESIDENT_END__ = .;
         *(.text*)
         *(.vectors)
         . = NEXT(PAGE_SIZE);
@@ -54,10 +57,16 @@ SECTIONS
         . = NEXT(PAGE_SIZE);
         __RODATA_END__ = .;
     } >RAM
+
+    ASSERT(__TEXT_RESIDENT_END__ - __TEXT_RESIDENT_START__ <= PAGE_SIZE,
+          "Resident part of BL2 has exceeded its limit.")
 #else
     ro . : {
         __RO_START__ = .;
-        *bl2_el3_entrypoint.o(.text*)
+       __TEXT_RESIDENT_START__ = .;
+       *bl2_el3_entrypoint.o(.text*)
+       *(.text.asm.*)
+       __TEXT_RESIDENT_END__ = .;
         *(.text*)
         *(.rodata*)