summaryrefslogtreecommitdiff
path: root/src/arch
diff options
context:
space:
mode:
authorAaron Durbin <adurbin@chromium.org>2015-09-05 12:59:26 -0500
committerAaron Durbin <adurbin@chromium.org>2015-09-09 19:35:30 +0000
commitdde7629e9cccf7b3a9b2e468ac8439f91d13cf97 (patch)
treef855ce91134e77665b4019efbaaee019dc36c774 /src/arch
parente5bad5cd3d828eba06f1db66f43948f966e7b0e0 (diff)
rmodule: use program.ld for linking
Bring rmodule linking into the common linking method. The __rmodule_entry symbol was removed while using a more common _start symbol. The rmodtool will honor the entry point found within the ELF header. Add ENV_RMODULE so that one can distinguish the environment when generating linker scripts for rmodules. Lastly, directly use program.ld for the rmodule.ld linker script. BUG=chrome-os-partner:44827 BRANCH=None TEST=Built rambi and analyzed the relocatable ramstage, sipi_vector, and smm rmodules. Change-Id: Iaa499eb229d8171272add9ee6d27cff75e7534ac Signed-off-by: Aaron Durbin <adubin@chromium.org> Reviewed-on: http://review.coreboot.org/11517 Tested-by: build bot (Jenkins) Reviewed-by: Patrick Georgi <pgeorgi@google.com>
Diffstat (limited to 'src/arch')
-rw-r--r--src/arch/arm64/include/arch/header.ld10
-rw-r--r--src/arch/arm64/stage_entry.S4
-rw-r--r--src/arch/x86/c_start.S2
-rw-r--r--src/arch/x86/include/arch/header.ld2
4 files changed, 12 insertions, 6 deletions
diff --git a/src/arch/arm64/include/arch/header.ld b/src/arch/arm64/include/arch/header.ld
index fa8fdfa380..55b4cb7c97 100644
--- a/src/arch/arm64/include/arch/header.ld
+++ b/src/arch/arm64/include/arch/header.ld
@@ -17,6 +17,8 @@
* Foundation, Inc.
*/
+#include <rules.h>
+
/* We use ELF as output format. So that we can debug the code in some form. */
OUTPUT_FORMAT("elf64-littleaarch64", "elf64-littleaarch64", "elf64-littleaarch64")
OUTPUT_ARCH(aarch64)
@@ -26,7 +28,13 @@ PHDRS
to_load PT_LOAD;
}
-#ifdef __BOOTBLOCK__
+#if ENV_BOOTBLOCK
TARGET(binary)
#endif
+
+/* secmon uses rmodules */
+#if ENV_RMODULE
+ENTRY(_start)
+#else
ENTRY(stage_entry)
+#endif
diff --git a/src/arch/arm64/stage_entry.S b/src/arch/arm64/stage_entry.S
index 4e15dbbddb..dbc6cadc4e 100644
--- a/src/arch/arm64/stage_entry.S
+++ b/src/arch/arm64/stage_entry.S
@@ -136,12 +136,12 @@ ENDPROC(arm64_c_environment)
2002:
.endm
-ENTRY(__rmodule_entry)
+ENTRY(_start)
split_bsp_path
/* Save the arguments to secmon in x25 */
mov x25, x0
b arm64_c_environment
-ENDPROC(__rmodule_entry)
+ENDPROC(_start)
/*
* Setup SCTLR so that:
diff --git a/src/arch/x86/c_start.S b/src/arch/x86/c_start.S
index 582966bfdc..ad4589acc1 100644
--- a/src/arch/x86/c_start.S
+++ b/src/arch/x86/c_start.S
@@ -23,8 +23,6 @@ thread_stacks:
.code32
#endif
.globl _start
- .globl __rmodule_entry
-__rmodule_entry:
_start:
cli
lgdt %cs:gdtaddr
diff --git a/src/arch/x86/include/arch/header.ld b/src/arch/x86/include/arch/header.ld
index 55547adcd4..0262c9208d 100644
--- a/src/arch/x86/include/arch/header.ld
+++ b/src/arch/x86/include/arch/header.ld
@@ -24,7 +24,7 @@ PHDRS
to_load PT_LOAD;
}
-#if ENV_RAMSTAGE
+#if ENV_RAMSTAGE || ENV_RMODULE
ENTRY(_start)
#elif ENV_ROMSTAGE
ENTRY(protected_start)