Commit 08145b08 authored by Huacai Chen's avatar Huacai Chen
Browse files

LoongArch: Add ELF-related definitions



Add ELF-related definitions for LoongArch, including: EM_LOONGARCH,
KEXEC_ARCH_LOONGARCH, AUDIT_ARCH_LOONGARCH32, AUDIT_ARCH_LOONGARCH64
and NT_LOONGARCH_*.

Reviewed-by: default avatarWANG Xuerui <git@xen0n.name>
Reviewed-by: default avatarJiaxun Yang <jiaxun.yang@flygoat.com>
Signed-off-by: default avatarHuacai Chen <chenhuacai@loongson.cn>
parent f23b2259
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -439,6 +439,8 @@ enum {
#define AUDIT_ARCH_UNICORE	(EM_UNICORE|__AUDIT_ARCH_LE)
#define AUDIT_ARCH_X86_64	(EM_X86_64|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)
#define AUDIT_ARCH_XTENSA	(EM_XTENSA)
#define AUDIT_ARCH_LOONGARCH32	(EM_LOONGARCH|__AUDIT_ARCH_LE)
#define AUDIT_ARCH_LOONGARCH64	(EM_LOONGARCH|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)

#define AUDIT_PERM_EXEC		1
#define AUDIT_PERM_WRITE	2
+1 −0
Original line number Diff line number Diff line
@@ -51,6 +51,7 @@
#define EM_RISCV	243	/* RISC-V */
#define EM_BPF		247	/* Linux BPF - in-kernel virtual machine */
#define EM_CSKY		252	/* C-SKY */
#define EM_LOONGARCH	258	/* LoongArch */
#define EM_FRV		0x5441	/* Fujitsu FR-V */

/*
+5 −0
Original line number Diff line number Diff line
@@ -438,6 +438,11 @@ typedef struct elf64_shdr {
#define NT_MIPS_DSP	0x800		/* MIPS DSP ASE registers */
#define NT_MIPS_FP_MODE	0x801		/* MIPS floating-point mode */
#define NT_MIPS_MSA	0x802		/* MIPS SIMD registers */
#define NT_LOONGARCH_CPUCFG	0xa00	/* LoongArch CPU config registers */
#define NT_LOONGARCH_CSR	0xa01	/* LoongArch control and status registers */
#define NT_LOONGARCH_LSX	0xa02	/* LoongArch Loongson SIMD Extension registers */
#define NT_LOONGARCH_LASX	0xa03	/* LoongArch Loongson Advanced SIMD Extension registers */
#define NT_LOONGARCH_LBT	0xa04	/* LoongArch Loongson Binary Translation registers */

/* Note types with note name "GNU" */
#define NT_GNU_PROPERTY_TYPE_0	5
+1 −0
Original line number Diff line number Diff line
@@ -43,6 +43,7 @@
#define KEXEC_ARCH_MIPS    ( 8 << 16)
#define KEXEC_ARCH_AARCH64 (183 << 16)
#define KEXEC_ARCH_RISCV   (243 << 16)
#define KEXEC_ARCH_LOONGARCH	(258 << 16)

/* The artificial cap on the number of segments passed to kexec_load. */
#define KEXEC_SEGMENT_MAX 16
+5 −0
Original line number Diff line number Diff line
@@ -60,6 +60,10 @@
#define EM_RISCV	243
#endif

#ifndef EM_LOONGARCH
#define EM_LOONGARCH	258
#endif

static uint32_t (*r)(const uint32_t *);
static uint16_t (*r2)(const uint16_t *);
static uint64_t (*r8)(const uint64_t *);
@@ -313,6 +317,7 @@ static int do_file(char const *const fname, void *addr)
	case EM_ARCOMPACT:
	case EM_ARCV2:
	case EM_ARM:
	case EM_LOONGARCH:
	case EM_MICROBLAZE:
	case EM_MIPS:
	case EM_XTENSA: