Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-only */
0002 /*
0003  * Copyright (C) 2004, 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com)
0004  */
0005 
0006 #ifndef __ASM_ARC_ELF_H
0007 #define __ASM_ARC_ELF_H
0008 
0009 #include <linux/types.h>
0010 #include <linux/elf-em.h>
0011 #include <uapi/asm/elf.h>
0012 
0013 #define EM_ARC_INUSE        (IS_ENABLED(CONFIG_ISA_ARCOMPACT) ? \
0014                     EM_ARCOMPACT : EM_ARCV2)
0015 
0016 /* ARC Relocations (kernel Modules only) */
0017 #define  R_ARC_32       0x4
0018 #define  R_ARC_32_ME        0x1B
0019 #define  R_ARC_32_PCREL     0x31
0020 
0021 /*to set parameters in the core dumps */
0022 #define ELF_ARCH        EM_ARC_INUSE
0023 #define ELF_CLASS       ELFCLASS32
0024 
0025 #ifdef CONFIG_CPU_BIG_ENDIAN
0026 #define ELF_DATA        ELFDATA2MSB
0027 #else
0028 #define ELF_DATA        ELFDATA2LSB
0029 #endif
0030 
0031 /*
0032  * To ensure that
0033  *  -we don't load something for the wrong architecture.
0034  *  -The userspace is using the correct syscall ABI
0035  */
0036 struct elf32_hdr;
0037 extern int elf_check_arch(const struct elf32_hdr *);
0038 #define elf_check_arch  elf_check_arch
0039 
0040 #define CORE_DUMP_USE_REGSET
0041 
0042 #define ELF_EXEC_PAGESIZE   PAGE_SIZE
0043 
0044 /*
0045  * This is the location that an ET_DYN program is loaded if exec'ed.  Typical
0046  * use of this is to invoke "./ld.so someprog" to test out a new version of
0047  * the loader.  We need to make sure that it is out of the way of the program
0048  * that it will "exec", and that there is sufficient room for the brk.
0049  */
0050 #define ELF_ET_DYN_BASE     (2UL * TASK_SIZE / 3)
0051 
0052 /*
0053  * When the program starts, a1 contains a pointer to a function to be
0054  * registered with atexit, as per the SVR4 ABI.  A value of 0 means we
0055  * have no such handler.
0056  */
0057 #define ELF_PLAT_INIT(_r, load_addr)    ((_r)->r0 = 0)
0058 
0059 /*
0060  * This yields a mask that user programs can use to figure out what
0061  * instruction set this cpu supports.
0062  */
0063 #define ELF_HWCAP   (0)
0064 
0065 /*
0066  * This yields a string that ld.so will use to load implementation
0067  * specific libraries for optimization.  This is more specific in
0068  * intent than poking at uname or /proc/cpuinfo.
0069  */
0070 #define ELF_PLATFORM    (NULL)
0071 
0072 #endif