From: Greentime Hu <green.hu@gmail.com>
To: greentime@andestech.com, linux-kernel@vger.kernel.org,
arnd@arndb.de, linux-arch@vger.kernel.org, tglx@linutronix.de,
jason@lakedaemon.net, marc.zyngier@arm.com, robh+dt@kernel.org,
netdev@vger.kernel.org, deanbo422@gmail.com,
devicetree@vger.kernel.org, viro@zeniv.linux.org.uk,
dhowells@redhat.com, will.deacon@arm.com,
daniel.lezcano@linaro.org, linux-serial@vger.kernel.org,
geert.uytterhoeven@gmail.com, linus.walleij@linaro.org,
mark.rutland@arm.com, greg@kroah.com, ren_guo@c-sky.com,
rdunlap@infradead.org, davem@davemloft.net, jonas@southpole.se,
stefan.kristiansson@saunalahti.fi, shorne@gmail.com
Cc: green.hu@gmail.com, Vincent Chen <vincentc@andestech.com>
Subject: [PATCH v7 18/37] nds32: ELF definitions
Date: Tue, 13 Feb 2018 17:09:22 +0800 [thread overview]
Message-ID: <24b075d1b99f22b0920ebb0186b5f5af8256f31c.1518505384.git.greentime@andestech.com> (raw)
In-Reply-To: <cover.1518505384.git.greentime@andestech.com>
In-Reply-To: <cover.1518505384.git.greentime@andestech.com>
This patch adds definitions for the ELF format, relocation types, vdso
locations and EXEC_PAGESIZE.
Signed-off-by: Vincent Chen <vincentc@andestech.com>
Signed-off-by: Greentime Hu <greentime@andestech.com>
Acked-by: Arnd Bergmann <arnd@arndb.de>
---
arch/nds32/include/asm/elf.h | 171 +++++++++++++++++++++++++++++++++++
arch/nds32/include/uapi/asm/auxvec.h | 12 +++
arch/nds32/include/uapi/asm/param.h | 11 +++
3 files changed, 194 insertions(+)
create mode 100644 arch/nds32/include/asm/elf.h
create mode 100644 arch/nds32/include/uapi/asm/auxvec.h
create mode 100644 arch/nds32/include/uapi/asm/param.h
diff --git a/arch/nds32/include/asm/elf.h b/arch/nds32/include/asm/elf.h
new file mode 100644
index 000000000000..56c479058802
--- /dev/null
+++ b/arch/nds32/include/asm/elf.h
@@ -0,0 +1,171 @@
+// SPDX-License-Identifier: GPL-2.0
+// Copyright (C) 2005-2017 Andes Technology Corporation
+
+#ifndef __ASMNDS32_ELF_H
+#define __ASMNDS32_ELF_H
+
+/*
+ * ELF register definitions..
+ */
+
+#include <asm/ptrace.h>
+
+typedef unsigned long elf_greg_t;
+typedef unsigned long elf_freg_t[3];
+
+extern unsigned int elf_hwcap;
+
+#define EM_NDS32 167
+
+#define R_NDS32_NONE 0
+#define R_NDS32_16_RELA 19
+#define R_NDS32_32_RELA 20
+#define R_NDS32_9_PCREL_RELA 22
+#define R_NDS32_15_PCREL_RELA 23
+#define R_NDS32_17_PCREL_RELA 24
+#define R_NDS32_25_PCREL_RELA 25
+#define R_NDS32_HI20_RELA 26
+#define R_NDS32_LO12S3_RELA 27
+#define R_NDS32_LO12S2_RELA 28
+#define R_NDS32_LO12S1_RELA 29
+#define R_NDS32_LO12S0_RELA 30
+#define R_NDS32_SDA15S3_RELA 31
+#define R_NDS32_SDA15S2_RELA 32
+#define R_NDS32_SDA15S1_RELA 33
+#define R_NDS32_SDA15S0_RELA 34
+#define R_NDS32_GOT20 37
+#define R_NDS32_25_PLTREL 38
+#define R_NDS32_COPY 39
+#define R_NDS32_GLOB_DAT 40
+#define R_NDS32_JMP_SLOT 41
+#define R_NDS32_RELATIVE 42
+#define R_NDS32_GOTOFF 43
+#define R_NDS32_GOTPC20 44
+#define R_NDS32_GOT_HI20 45
+#define R_NDS32_GOT_LO12 46
+#define R_NDS32_GOTPC_HI20 47
+#define R_NDS32_GOTPC_LO12 48
+#define R_NDS32_GOTOFF_HI20 49
+#define R_NDS32_GOTOFF_LO12 50
+#define R_NDS32_INSN16 51
+#define R_NDS32_LABEL 52
+#define R_NDS32_LONGCALL1 53
+#define R_NDS32_LONGCALL2 54
+#define R_NDS32_LONGCALL3 55
+#define R_NDS32_LONGJUMP1 56
+#define R_NDS32_LONGJUMP2 57
+#define R_NDS32_LONGJUMP3 58
+#define R_NDS32_LOADSTORE 59
+#define R_NDS32_9_FIXED_RELA 60
+#define R_NDS32_15_FIXED_RELA 61
+#define R_NDS32_17_FIXED_RELA 62
+#define R_NDS32_25_FIXED_RELA 63
+#define R_NDS32_PLTREL_HI20 64
+#define R_NDS32_PLTREL_LO12 65
+#define R_NDS32_PLT_GOTREL_HI20 66
+#define R_NDS32_PLT_GOTREL_LO12 67
+#define R_NDS32_LO12S0_ORI_RELA 72
+#define R_NDS32_DWARF2_OP1_RELA 77
+#define R_NDS32_DWARF2_OP2_RELA 78
+#define R_NDS32_DWARF2_LEB_RELA 79
+#define R_NDS32_WORD_9_PCREL_RELA 94
+#define R_NDS32_LONGCALL4 107
+#define R_NDS32_RELA_NOP_MIX 192
+#define R_NDS32_RELA_NOP_MAX 255
+
+#define ELF_NGREG (sizeof (struct user_pt_regs) / sizeof(elf_greg_t))
+#define ELF_CORE_COPY_REGS(dest, regs) \
+ *(struct user_pt_regs *)&(dest) = (regs)->user_regs;
+
+typedef elf_greg_t elf_gregset_t[ELF_NGREG];
+
+/* Core file format: The core file is written in such a way that gdb
+ can understand it and provide useful information to the user (under
+ linux we use the 'trad-core' bfd). There are quite a number of
+ obstacles to being able to view the contents of the floating point
+ registers, and until these are solved you will not be able to view the
+ contents of them. Actually, you can read in the core file and look at
+ the contents of the user struct to find out what the floating point
+ registers contain.
+ The actual file contents are as follows:
+ UPAGE: 1 page consisting of a user struct that tells gdb what is present
+ in the file. Directly after this is a copy of the task_struct, which
+ is currently not used by gdb, but it may come in useful at some point.
+ All of the registers are stored as part of the upage. The upage should
+ always be only one page.
+ DATA: The data area is stored. We use current->end_text to
+ current->brk to pick up all of the user variables, plus any memory
+ that may have been malloced. No attempt is made to determine if a page
+ is demand-zero or if a page is totally unused, we just cover the entire
+ range. All of the addresses are rounded in such a way that an integral
+ number of pages is written.
+ STACK: We need the stack information in order to get a meaningful
+ backtrace. We need to write the data from (esp) to
+ current->start_stack, so we round each of these off in order to be able
+ to write an integer number of pages.
+ The minimum core file size is 3 pages, or 12288 bytes.
+*/
+
+struct user_fp {
+ unsigned long long fd_regs[32];
+ unsigned long fpcsr;
+};
+
+typedef struct user_fp elf_fpregset_t;
+
+struct elf32_hdr;
+#define elf_check_arch(x) ((x)->e_machine == EM_NDS32)
+
+/*
+ * These are used to set parameters in the core dumps.
+ */
+#define ELF_CLASS ELFCLASS32
+#ifdef __NDS32_EB__
+#define ELF_DATA ELFDATA2MSB;
+#else
+#define ELF_DATA ELFDATA2LSB;
+#endif
+#define ELF_ARCH EM_NDS32
+#define USE_ELF_CORE_DUMP
+#define ELF_EXEC_PAGESIZE PAGE_SIZE
+
+/* This is the location that an ET_DYN program is loaded if exec'ed. Typical
+ use of this is to invoke "./ld.so someprog" to test out a new version of
+ the loader. We need to make sure that it is out of the way of the program
+ that it will "exec", and that there is sufficient room for the brk. */
+
+#define ELF_ET_DYN_BASE (2 * TASK_SIZE / 3)
+
+/* When the program starts, a1 contains a pointer to a function to be
+ registered with atexit, as per the SVR4 ABI. A value of 0 means we
+ have no such handler. */
+#define ELF_PLAT_INIT(_r, load_addr) (_r)->uregs[0] = 0
+
+/* This yields a mask that user programs can use to figure out what
+ instruction set this cpu supports. */
+
+#define ELF_HWCAP (elf_hwcap)
+
+#ifdef __KERNEL__
+
+#define ELF_PLATFORM (NULL)
+
+/* Old NetWinder binaries were compiled in such a way that the iBCS
+ heuristic always trips on them. Until these binaries become uncommon
+ enough not to care, don't trust the `ibcs' flag here. In any case
+ there is no other ELF system currently supported by iBCS.
+ @@ Could print a warning message to encourage users to upgrade. */
+#define SET_PERSONALITY(ex) set_personality(PER_LINUX)
+
+#endif
+
+#define ARCH_DLINFO \
+do { \
+ NEW_AUX_ENT(AT_SYSINFO_EHDR, \
+ (elf_addr_t)current->mm->context.vdso); \
+} while (0)
+#define ARCH_HAS_SETUP_ADDITIONAL_PAGES 1
+struct linux_binprm;
+int arch_setup_additional_pages(struct linux_binprm *, int);
+
+#endif
diff --git a/arch/nds32/include/uapi/asm/auxvec.h b/arch/nds32/include/uapi/asm/auxvec.h
new file mode 100644
index 000000000000..56043ce4972f
--- /dev/null
+++ b/arch/nds32/include/uapi/asm/auxvec.h
@@ -0,0 +1,12 @@
+// SPDX-License-Identifier: GPL-2.0
+// Copyright (C) 2005-2017 Andes Technology Corporation
+
+#ifndef __ASM_AUXVEC_H
+#define __ASM_AUXVEC_H
+
+/* VDSO location */
+#define AT_SYSINFO_EHDR 33
+
+#define AT_VECTOR_SIZE_ARCH 1
+
+#endif
diff --git a/arch/nds32/include/uapi/asm/param.h b/arch/nds32/include/uapi/asm/param.h
new file mode 100644
index 000000000000..e3fb723ee362
--- /dev/null
+++ b/arch/nds32/include/uapi/asm/param.h
@@ -0,0 +1,11 @@
+// SPDX-License-Identifier: GPL-2.0
+// Copyright (C) 2005-2017 Andes Technology Corporation
+
+#ifndef __ASM_NDS32_PARAM_H
+#define __ASM_NDS32_PARAM_H
+
+#define EXEC_PAGESIZE 8192
+
+#include <asm-generic/param.h>
+
+#endif /* __ASM_NDS32_PARAM_H */
--
2.16.1
next prev parent reply other threads:[~2018-02-13 9:09 UTC|newest]
Thread overview: 81+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-02-13 9:09 [PATCH v7 00/37] Andes(nds32) Linux Kernel Port Greentime Hu
2018-02-13 9:09 ` Greentime Hu
2018-02-13 9:09 ` [PATCH v7 01/37] openrisc: add ioremap_nocache declaration before include asm-generic/io.h and sync ioremap prototype with it Greentime Hu
2018-02-13 9:09 ` [PATCH v7 02/37] asm-generic/io.h: move ioremap_nocache/ioremap_uc/ioremap_wc/ioremap_wt out of ifndef CONFIG_MMU Greentime Hu
2018-02-16 9:30 ` kbuild test robot
2018-02-16 9:30 ` kbuild test robot
2018-02-16 9:30 ` kbuild test robot
2018-02-16 9:30 ` kbuild test robot
2018-02-16 10:47 ` kbuild test robot
2018-02-16 10:47 ` kbuild test robot
2018-02-21 11:21 ` Greentime Hu
2018-02-21 11:37 ` Arnd Bergmann
2018-02-21 12:02 ` Greentime Hu
2018-02-13 9:09 ` [PATCH v7 03/37] sparc: io: To use the define of ioremap_[nocache|wc|wb] in asm-generic/io.h Greentime Hu
2018-02-14 14:43 ` Arnd Bergmann
2018-02-14 14:43 ` Arnd Bergmann
2018-02-14 14:43 ` Arnd Bergmann
2018-02-14 14:43 ` Arnd Bergmann
2018-02-21 8:05 ` Greentime Hu
2018-02-21 8:05 ` Greentime Hu
2018-02-21 12:27 ` Arnd Bergmann
2018-02-21 12:27 ` Arnd Bergmann
2018-02-13 9:09 ` [PATCH v7 04/37] earlycon: add reg-offset to physical address before mapping Greentime Hu
2018-02-13 9:09 ` Greentime Hu
2018-02-13 9:09 ` Greentime Hu
2018-02-15 15:40 ` Rob Herring
2018-02-15 15:40 ` Rob Herring
2018-02-15 15:40 ` Rob Herring
2018-02-28 12:39 ` Greg Kroah-Hartman
2018-02-28 12:39 ` Greg Kroah-Hartman
2018-02-28 12:39 ` Greg Kroah-Hartman
2018-02-13 9:09 ` [PATCH v7 05/37] drivers/video/concole: add negative dependency for VGA_CONSOLE on nds32 Greentime Hu
2018-02-13 9:09 ` [PATCH v7 06/37] nds32: Assembly macros and definitions Greentime Hu
2018-02-13 9:09 ` [PATCH v7 07/37] nds32: Kernel booting and initialization Greentime Hu
2018-02-14 14:35 ` Arnd Bergmann
2018-02-14 14:35 ` Arnd Bergmann
2018-02-14 14:35 ` Arnd Bergmann
2018-02-13 9:09 ` [PATCH v7 08/37] nds32: Exception handling Greentime Hu
2018-02-14 14:31 ` Arnd Bergmann
2018-02-14 14:31 ` Arnd Bergmann
2018-02-14 14:31 ` Arnd Bergmann
2018-02-13 9:09 ` [PATCH v7 09/37] nds32: MMU definitions Greentime Hu
2018-02-13 9:09 ` [PATCH v7 10/37] nds32: MMU initialization Greentime Hu
2018-02-13 9:09 ` [PATCH v7 11/37] nds32: MMU fault handling and page table management Greentime Hu
2018-02-13 9:09 ` [PATCH v7 12/37] nds32: Cache and TLB routines Greentime Hu
2018-02-13 9:09 ` [PATCH v7 13/37] nds32: Process management Greentime Hu
2018-02-13 9:09 ` [PATCH v7 14/37] nds32: IRQ handling Greentime Hu
2018-02-13 9:09 ` [PATCH v7 15/37] nds32: Atomic operations Greentime Hu
2018-02-13 9:09 ` [PATCH v7 16/37] nds32: Device specific operations Greentime Hu
2018-02-13 9:09 ` [PATCH v7 17/37] nds32: DMA mapping API Greentime Hu
2018-02-13 9:09 ` Greentime Hu [this message]
2018-02-13 9:09 ` [PATCH v7 19/37] nds32: System calls handling Greentime Hu
2018-02-13 9:09 ` [PATCH v7 20/37] nds32: VDSO support Greentime Hu
2018-02-13 9:09 ` Greentime Hu
2018-02-13 9:09 ` [PATCH v7 21/37] nds32: Signal handling support Greentime Hu
2018-02-13 9:09 ` [PATCH v7 22/37] nds32: Library functions Greentime Hu
2018-02-13 9:09 ` [PATCH v7 23/37] nds32: Debugging support Greentime Hu
2018-02-14 14:32 ` Arnd Bergmann
2018-02-14 14:32 ` Arnd Bergmann
2018-02-14 14:32 ` Arnd Bergmann
2018-02-13 9:09 ` [PATCH v7 24/37] nds32: L2 cache support Greentime Hu
2018-02-13 9:09 ` [PATCH v7 25/37] nds32: Loadable modules Greentime Hu
2018-02-13 9:09 ` [PATCH v7 26/37] nds32: Generic timers support Greentime Hu
2018-02-13 9:09 ` [PATCH v7 27/37] nds32: Device tree support Greentime Hu
2018-02-13 9:09 ` [PATCH v7 28/37] nds32: Miscellaneous header files Greentime Hu
2018-02-13 9:09 ` [PATCH v7 29/37] nds32: defconfig Greentime Hu
2018-02-13 9:09 ` [PATCH v7 30/37] nds32: Build infrastructure Greentime Hu
2018-02-14 14:34 ` Arnd Bergmann
2018-02-14 14:34 ` Arnd Bergmann
2018-02-14 14:34 ` Arnd Bergmann
2018-02-13 9:09 ` [PATCH v7 31/37] MAINTAINERS: Add nds32 Greentime Hu
2018-02-13 16:02 ` Joe Perches
2018-02-13 16:02 ` Joe Perches
2018-02-14 5:54 ` Greentime Hu
2018-02-14 5:54 ` Greentime Hu
2018-02-13 9:09 ` [PATCH v7 32/37] dt-bindings: nds32 CPU Bindings Greentime Hu
2018-02-13 9:09 ` [PATCH v7 33/37] dt-bindings: nds32 L2 cache controller Bindings Greentime Hu
2018-02-13 9:09 ` [PATCH v7 34/37] dt-bindings: nds32 SoC Bindings Greentime Hu
2018-02-13 9:09 ` [PATCH v7 35/37] dt-bindings: interrupt-controller: Andestech Internal Vector Interrupt Controller Greentime Hu
2018-02-13 9:09 ` [PATCH v7 36/37] irqchip: Andestech Internal Vector Interrupt Controller driver Greentime Hu
2018-02-13 9:09 ` [PATCH v7 37/37] net: faraday add nds32 support Greentime Hu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=24b075d1b99f22b0920ebb0186b5f5af8256f31c.1518505384.git.greentime@andestech.com \
--to=green.hu@gmail.com \
--cc=arnd@arndb.de \
--cc=daniel.lezcano@linaro.org \
--cc=davem@davemloft.net \
--cc=deanbo422@gmail.com \
--cc=devicetree@vger.kernel.org \
--cc=dhowells@redhat.com \
--cc=geert.uytterhoeven@gmail.com \
--cc=greentime@andestech.com \
--cc=greg@kroah.com \
--cc=jason@lakedaemon.net \
--cc=jonas@southpole.se \
--cc=linus.walleij@linaro.org \
--cc=linux-arch@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-serial@vger.kernel.org \
--cc=marc.zyngier@arm.com \
--cc=mark.rutland@arm.com \
--cc=netdev@vger.kernel.org \
--cc=rdunlap@infradead.org \
--cc=ren_guo@c-sky.com \
--cc=robh+dt@kernel.org \
--cc=shorne@gmail.com \
--cc=stefan.kristiansson@saunalahti.fi \
--cc=tglx@linutronix.de \
--cc=vincentc@andestech.com \
--cc=viro@zeniv.linux.org.uk \
--cc=will.deacon@arm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.