RISCV: add this architecture to cbfstool

Change-Id: I6d972e595f12585cda08e1a6d2b94b4bf4f212f5
Signed-off-by: Ronald G. Minnich <rminnich@gmail.com>
Reviewed-on: http://review.coreboot.org/7067
Tested-by: build bot (Jenkins)
Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
This commit is contained in:
Ronald G. Minnich 2014-10-16 10:55:39 +00:00
parent a9db82fbaf
commit 833bf20f92
4 changed files with 47 additions and 0 deletions

View File

@ -53,6 +53,7 @@ struct cbfs_header {
#define CBFS_ARCHITECTURE_X86 0x00000001 #define CBFS_ARCHITECTURE_X86 0x00000001
#define CBFS_ARCHITECTURE_ARM 0x00000010 #define CBFS_ARCHITECTURE_ARM 0x00000010
#define CBFS_ARCHITECTURE_AARCH64 0x0000aa64 #define CBFS_ARCHITECTURE_AARCH64 0x0000aa64
#define CBFS_ARCHITECTURE_RISCV 0xc001d0de
#define CBFS_FILE_MAGIC "LARCHIVE" #define CBFS_FILE_MAGIC "LARCHIVE"

View File

@ -132,6 +132,7 @@ static struct {
} arch_names[] = { } arch_names[] = {
{ CBFS_ARCHITECTURE_AARCH64, "arm64" }, { CBFS_ARCHITECTURE_AARCH64, "arm64" },
{ CBFS_ARCHITECTURE_ARM, "arm" }, { CBFS_ARCHITECTURE_ARM, "arm" },
{ CBFS_ARCHITECTURE_RISCV, "riscv" },
{ CBFS_ARCHITECTURE_X86, "x86" }, { CBFS_ARCHITECTURE_X86, "x86" },
{ CBFS_ARCHITECTURE_UNKNOWN, "unknown" } { CBFS_ARCHITECTURE_UNKNOWN, "unknown" }
}; };

View File

@ -2688,4 +2688,48 @@ typedef Elf32_Addr Elf32_Conflict;
#define R_M32R_NUM 256 /* Keep this the last entry. */ #define R_M32R_NUM 256 /* Keep this the last entry. */
/* RISC-V relocation types */
#define R_RISCV_NONE 0
#define R_RISCV_32 2
#define R_RISCV_REL32 3
#define R_RISCV_JAL 4
#define R_RISCV_HI20 5
#define R_RISCV_LO12_I 6
#define R_RISCV_LO12_S 7
#define R_RISCV_PCREL_LO12_I 8
#define R_RISCV_PCREL_LO12_S 9
#define R_RISCV_BRANCH 10
#define R_RISCV_CALL 11
#define R_RISCV_PCREL_HI20 12
#define R_RISCV_CALL_PLT 13
#define R_RISCV_64 18
#define R_RISCV_GOT_HI20 22
#define R_RISCV_GOT_LO12 23
#define R_RISCV_COPY 24
#define R_RISCV_JUMP_SLOT 25
/* TLS relocations */
#define R_RISCV_TPREL_HI20 30
#define R_RISCV_TPREL_LO12_I 31
#define R_RISCV_TPREL_LO12_S 32
#define R_RISCV_TLS_DTPMOD32 38
#define R_RISCV_TLS_DTPREL32 39
#define R_RISCV_TLS_DTPMOD64 40
#define R_RISCV_TLS_DTPREL64 41
#define R_RISCV_TLS_GD 42
#define R_RISCV_TLS_DTPREL_HI16 44
#define R_RISCV_TLS_DTPREL_LO16 45
#define R_RISCV_TLS_GOTTPREL 46
#define R_RISCV_TLS_TPREL32 47
#define R_RISCV_TLS_TPREL64 48
#define R_RISCV_TLS_GOT_HI20 51
#define R_RISCV_TLS_GOT_LO12 52
#define R_RISCV_TLS_GD_HI20 53
#define R_RISCV_TLS_GD_LO12 54
#define R_RISCV_GLOB_DAT 57
#define R_RISCV_ADD32 58
#define R_RISCV_ADD64 59
#define R_RISCV_SUB32 60
#define R_RISCV_SUB64 61
#define EM_RISCV 0xF3
#endif /* elf.h */ #endif /* elf.h */

View File

@ -611,6 +611,7 @@ elf_headers(const struct buffer *pinput,
// The tool may work in architecture-independent way. // The tool may work in architecture-independent way.
if (arch != CBFS_ARCHITECTURE_UNKNOWN && if (arch != CBFS_ARCHITECTURE_UNKNOWN &&
!((ehdr->e_machine == EM_ARM) && (arch == CBFS_ARCHITECTURE_ARM)) && !((ehdr->e_machine == EM_ARM) && (arch == CBFS_ARCHITECTURE_ARM)) &&
!((ehdr->e_machine == EM_RISCV) && (arch == CBFS_ARCHITECTURE_RISCV)) &&
!((ehdr->e_machine == EM_386) && (arch == CBFS_ARCHITECTURE_X86))) { !((ehdr->e_machine == EM_386) && (arch == CBFS_ARCHITECTURE_X86))) {
ERROR("The stage file has the wrong architecture\n"); ERROR("The stage file has the wrong architecture\n");
return -1; return -1;