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 <pgeorgi@chromium.org> Original-Commit-Id: 24ad4383a9ea75ba6beb084451b74e8a8735085b Original-Change-Id: I4f3a5dbb8fc8150aa670d2e6fed56a6774feb4a6 Original-Signed-off-by: Furquan Shaikh <furquan@google.com> Original-Reviewed-on: https://chromium-review.googlesource.com/214329 Original-Reviewed-by: Aaron Durbin <adurbin@chromium.org> Original-Tested-by: Furquan Shaikh <furquan@chromium.org> Original-Commit-Queue: Aaron Durbin <adurbin@chromium.org> Reviewed-on: http://review.coreboot.org/8806 Tested-by: build bot (Jenkins) Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
This commit is contained in:
parent
91e9f676b7
commit
d2338bad95
|
@ -104,6 +104,31 @@ static int should_emit_arm(struct rmod_context *ctx, Elf64_Rela *rel)
|
||||||
return (type == R_ARM_ABS32);
|
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[] = {
|
static struct arch_ops reloc_ops[] = {
|
||||||
{
|
{
|
||||||
.arch = EM_386,
|
.arch = EM_386,
|
||||||
|
@ -115,6 +140,11 @@ static struct arch_ops reloc_ops[] = {
|
||||||
.valid_type = valid_reloc_arm,
|
.valid_type = valid_reloc_arm,
|
||||||
.should_emit = should_emit_arm,
|
.should_emit = should_emit_arm,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
.arch = EM_AARCH64,
|
||||||
|
.valid_type = valid_reloc_aarch64,
|
||||||
|
.should_emit = should_emit_aarch64,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Reference in New Issue