From d2338bad95b9ea304136c4491e31dd5fa6f5aa07 Mon Sep 17 00:00:00 2001 From: Furquan Shaikh Date: Tue, 26 Aug 2014 15:21:15 -0700 Subject: rmodtool: Add support for aarch64 BUG=chrome-os-partner:31615 BRANCH=None TEST=Compiles succesfully, rmodule created and loaded for ryu Change-Id: Icc80b845fe43a012665d77c3ef55bd30784fd3fc Signed-off-by: Patrick Georgi Original-Commit-Id: 24ad4383a9ea75ba6beb084451b74e8a8735085b Original-Change-Id: I4f3a5dbb8fc8150aa670d2e6fed56a6774feb4a6 Original-Signed-off-by: Furquan Shaikh Original-Reviewed-on: https://chromium-review.googlesource.com/214329 Original-Reviewed-by: Aaron Durbin Original-Tested-by: Furquan Shaikh Original-Commit-Queue: Aaron Durbin Reviewed-on: http://review.coreboot.org/8806 Tested-by: build bot (Jenkins) Reviewed-by: Stefan Reinauer --- util/cbfstool/rmodule.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) (limited to 'util/cbfstool') diff --git a/util/cbfstool/rmodule.c b/util/cbfstool/rmodule.c index 1c8aea7052..c3b0f9b7ee 100644 --- a/util/cbfstool/rmodule.c +++ b/util/cbfstool/rmodule.c @@ -104,6 +104,31 @@ static int should_emit_arm(struct rmod_context *ctx, Elf64_Rela *rel) return (type == R_ARM_ABS32); } +static int valid_reloc_aarch64(struct rmod_context *ctx, Elf64_Rela *rel) +{ + int type; + + type = ELF64_R_TYPE(rel->r_info); + + return (type == R_AARCH64_ADR_PREL_PG_HI21 || + type == R_AARCH64_ADD_ABS_LO12_NC || + type == R_AARCH64_JUMP26 || + type == R_AARCH64_LDST32_ABS_LO12_NC || + type == R_AARCH64_CALL26 || + type == R_AARCH64_ABS64 || + type == R_AARCH64_LD_PREL_LO19 || + type == R_AARCH64_ADR_PREL_LO21); +} + +static int should_emit_aarch64(struct rmod_context *ctx, Elf64_Rela *rel) +{ + int type; + + type = ELF64_R_TYPE(rel->r_info); + + return (type == R_AARCH64_ABS64); +} + static struct arch_ops reloc_ops[] = { { .arch = EM_386, @@ -115,6 +140,11 @@ static struct arch_ops reloc_ops[] = { .valid_type = valid_reloc_arm, .should_emit = should_emit_arm, }, + { + .arch = EM_AARCH64, + .valid_type = valid_reloc_aarch64, + .should_emit = should_emit_aarch64, + }, }; /* -- cgit v1.2.3