aboutsummaryrefslogtreecommitdiffstats
path: root/arch/mips/include
diff options
context:
space:
mode:
authorPaul Burton <paul.burton@imgtec.com>2014-09-11 03:30:21 -0400
committerRalf Baechle <ralf@linux-mips.org>2014-11-24 01:45:07 -0500
commit6cd962292d9eb3b3e7189fde532f7e49f395cccb (patch)
tree52becfc0bcacfc7ef1e20e097ba90cb853395fbc /arch/mips/include
parent4227a2d4efc9c84f35826dc4d1e6dc183f6c1c05 (diff)
MIPS: ELF: Add definition for the .MIPS.abiflags section
New toolchains will generate a .MIPS.abiflags section, referenced by a new PT_MIPS_ABIFLAGS program header. This section will provide information about the requirements of the ELF, including the ISA level the code is built for, the ASEs it requires, the size of various registers and its expectations of the floating point mode. This patch introduces a definition of the structure of this section and the program header, for use in a subsequent patch. Signed-off-by: Paul Burton <paul.burton@imgtec.com> Cc: linux-mips@linux-mips.org Cc: Alexander Viro <viro@zeniv.linux.org.uk> Cc: linux-fsdevel@vger.kernel.org Cc: linux-kernel@vger.kernel.org Patchwork: https://patchwork.linux-mips.org/patch/7682/ Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Diffstat (limited to 'arch/mips/include')
-rw-r--r--arch/mips/include/asm/elf.h25
1 files changed, 25 insertions, 0 deletions
diff --git a/arch/mips/include/asm/elf.h b/arch/mips/include/asm/elf.h
index 9343529db7bc..bfa4bbd42c6c 100644
--- a/arch/mips/include/asm/elf.h
+++ b/arch/mips/include/asm/elf.h
@@ -28,6 +28,7 @@
28#define PT_MIPS_REGINFO 0x70000000 28#define PT_MIPS_REGINFO 0x70000000
29#define PT_MIPS_RTPROC 0x70000001 29#define PT_MIPS_RTPROC 0x70000001
30#define PT_MIPS_OPTIONS 0x70000002 30#define PT_MIPS_OPTIONS 0x70000002
31#define PT_MIPS_ABIFLAGS 0x70000003
31 32
32/* Flags in the e_flags field of the header */ 33/* Flags in the e_flags field of the header */
33#define EF_MIPS_NOREORDER 0x00000001 34#define EF_MIPS_NOREORDER 0x00000001
@@ -174,6 +175,30 @@ typedef elf_greg_t elf_gregset_t[ELF_NGREG];
174typedef double elf_fpreg_t; 175typedef double elf_fpreg_t;
175typedef elf_fpreg_t elf_fpregset_t[ELF_NFPREG]; 176typedef elf_fpreg_t elf_fpregset_t[ELF_NFPREG];
176 177
178struct mips_elf_abiflags_v0 {
179 uint16_t version; /* Version of flags structure */
180 uint8_t isa_level; /* The level of the ISA: 1-5, 32, 64 */
181 uint8_t isa_rev; /* The revision of ISA: 0 for MIPS V and below,
182 1-n otherwise */
183 uint8_t gpr_size; /* The size of general purpose registers */
184 uint8_t cpr1_size; /* The size of co-processor 1 registers */
185 uint8_t cpr2_size; /* The size of co-processor 2 registers */
186 uint8_t fp_abi; /* The floating-point ABI */
187 uint32_t isa_ext; /* Mask of processor-specific extensions */
188 uint32_t ases; /* Mask of ASEs used */
189 uint32_t flags1; /* Mask of general flags */
190 uint32_t flags2;
191};
192
193#define MIPS_ABI_FP_ANY 0 /* FP ABI doesn't matter */
194#define MIPS_ABI_FP_DOUBLE 1 /* -mdouble-float */
195#define MIPS_ABI_FP_SINGLE 2 /* -msingle-float */
196#define MIPS_ABI_FP_SOFT 3 /* -msoft-float */
197#define MIPS_ABI_FP_OLD_64 4 /* -mips32r2 -mfp64 */
198#define MIPS_ABI_FP_XX 5 /* -mfpxx */
199#define MIPS_ABI_FP_64 6 /* -mips32r2 -mfp64 */
200#define MIPS_ABI_FP_64A 7 /* -mips32r2 -mfp64 -mno-odd-spreg */
201
177#ifdef CONFIG_32BIT 202#ifdef CONFIG_32BIT
178 203
179/* 204/*