Loading include/asm-arm/elf.h +49 −43 Original line number Original line Diff line number Diff line #ifndef __ASMARM_ELF_H #ifndef __ASMARM_ELF_H #define __ASMARM_ELF_H #define __ASMARM_ELF_H #ifndef __ASSEMBLY__ /* /* * ELF register definitions.. * ELF register definitions.. */ */ #include <asm/ptrace.h> #include <asm/ptrace.h> #include <asm/user.h> #include <asm/user.h> typedef unsigned long elf_greg_t; typedef unsigned long elf_greg_t; typedef unsigned long elf_freg_t[3]; typedef unsigned long elf_freg_t[3]; #define ELF_NGREG (sizeof (struct pt_regs) / sizeof(elf_greg_t)) typedef elf_greg_t elf_gregset_t[ELF_NGREG]; typedef struct user_fp elf_fpregset_t; #endif #define EM_ARM 40 #define EM_ARM 40 #define EF_ARM_APCS26 0x08 #define EF_ARM_APCS26 0x08 #define EF_ARM_SOFT_FLOAT 0x200 #define EF_ARM_SOFT_FLOAT 0x200 Loading @@ -23,11 +28,6 @@ typedef unsigned long elf_freg_t[3]; #define R_ARM_CALL 28 #define R_ARM_CALL 28 #define R_ARM_JUMP24 29 #define R_ARM_JUMP24 29 #define ELF_NGREG (sizeof (struct pt_regs) / sizeof(elf_greg_t)) typedef elf_greg_t elf_gregset_t[ELF_NGREG]; typedef struct user_fp elf_fpregset_t; /* /* * These are used to set parameters in the core dumps. * These are used to set parameters in the core dumps. */ */ Loading @@ -42,10 +42,50 @@ typedef struct user_fp elf_fpregset_t; #ifdef __KERNEL__ #ifdef __KERNEL__ #include <asm/procinfo.h> #include <asm/procinfo.h> #ifndef __ASSEMBLY__ /* * This yields a mask that user programs can use to figure out what * instruction set this cpu supports. */ #define ELF_HWCAP (elf_hwcap) extern unsigned int elf_hwcap; /* * This yields a string that ld.so will use to load implementation * specific libraries for optimization. This is more specific in * intent than poking at uname or /proc/cpuinfo. * * For now we just provide a fairly general string that describes the * processor family. This could be made more specific later if someone * implemented optimisations that require it. 26-bit CPUs give you * "v1l" for ARM2 (no SWP) and "v2l" for anything else (ARM1 isn't * supported). 32-bit CPUs give you "v3[lb]" for anything based on an * ARM6 or ARM7 core and "armv4[lb]" for anything based on a StrongARM-1 * core. */ #define ELF_PLATFORM_SIZE 8 #define ELF_PLATFORM (elf_platform) extern char elf_platform[]; #endif /* /* * This is used to ensure we don't load something for the wrong architecture. * This is used to ensure we don't load something for the wrong architecture. */ */ #define elf_check_arch(x) ( ((x)->e_machine == EM_ARM) && (ELF_PROC_OK((x))) ) #define elf_check_arch(x) ((x)->e_machine == EM_ARM && ELF_PROC_OK(x)) /* * 32-bit code is always OK. Some cpus can do 26-bit, some can't. */ #define ELF_PROC_OK(x) (ELF_THUMB_OK(x) && ELF_26BIT_OK(x)) #define ELF_THUMB_OK(x) \ ((elf_hwcap & HWCAP_THUMB && ((x)->e_entry & 1) == 1) || \ ((x)->e_entry & 3) == 0) #define ELF_26BIT_OK(x) \ ((elf_hwcap & HWCAP_26BIT && (x)->e_flags & EF_ARM_APCS26) || \ ((x)->e_flags & EF_ARM_APCS26) == 0) #define USE_ELF_CORE_DUMP #define USE_ELF_CORE_DUMP #define ELF_EXEC_PAGESIZE 4096 #define ELF_EXEC_PAGESIZE 4096 Loading @@ -62,40 +102,6 @@ typedef struct user_fp elf_fpregset_t; have no such handler. */ have no such handler. */ #define ELF_PLAT_INIT(_r, load_addr) (_r)->ARM_r0 = 0 #define ELF_PLAT_INIT(_r, load_addr) (_r)->ARM_r0 = 0 /* This yields a mask that user programs can use to figure out what instruction set this cpu supports. */ #define ELF_HWCAP (elf_hwcap) /* This yields a string that ld.so will use to load implementation specific libraries for optimization. This is more specific in intent than poking at uname or /proc/cpuinfo. */ /* For now we just provide a fairly general string that describes the processor family. This could be made more specific later if someone implemented optimisations that require it. 26-bit CPUs give you "v1l" for ARM2 (no SWP) and "v2l" for anything else (ARM1 isn't supported). 32-bit CPUs give you "v3[lb]" for anything based on an ARM6 or ARM7 core and "armv4[lb]" for anything based on a StrongARM-1 core. */ #define ELF_PLATFORM_SIZE 8 extern char elf_platform[]; #define ELF_PLATFORM (elf_platform) /* * 32-bit code is always OK. Some cpus can do 26-bit, some can't. */ #define ELF_PROC_OK(x) (ELF_THUMB_OK(x) && ELF_26BIT_OK(x)) #define ELF_THUMB_OK(x) \ (( (elf_hwcap & HWCAP_THUMB) && ((x)->e_entry & 1) == 1) || \ ((x)->e_entry & 3) == 0) #define ELF_26BIT_OK(x) \ (( (elf_hwcap & HWCAP_26BIT) && (x)->e_flags & EF_ARM_APCS26) || \ ((x)->e_flags & EF_ARM_APCS26) == 0) #ifndef CONFIG_IWMMXT #ifndef CONFIG_IWMMXT /* Old NetWinder binaries were compiled in such a way that the iBCS /* Old NetWinder binaries were compiled in such a way that the iBCS Loading Loading
include/asm-arm/elf.h +49 −43 Original line number Original line Diff line number Diff line #ifndef __ASMARM_ELF_H #ifndef __ASMARM_ELF_H #define __ASMARM_ELF_H #define __ASMARM_ELF_H #ifndef __ASSEMBLY__ /* /* * ELF register definitions.. * ELF register definitions.. */ */ #include <asm/ptrace.h> #include <asm/ptrace.h> #include <asm/user.h> #include <asm/user.h> typedef unsigned long elf_greg_t; typedef unsigned long elf_greg_t; typedef unsigned long elf_freg_t[3]; typedef unsigned long elf_freg_t[3]; #define ELF_NGREG (sizeof (struct pt_regs) / sizeof(elf_greg_t)) typedef elf_greg_t elf_gregset_t[ELF_NGREG]; typedef struct user_fp elf_fpregset_t; #endif #define EM_ARM 40 #define EM_ARM 40 #define EF_ARM_APCS26 0x08 #define EF_ARM_APCS26 0x08 #define EF_ARM_SOFT_FLOAT 0x200 #define EF_ARM_SOFT_FLOAT 0x200 Loading @@ -23,11 +28,6 @@ typedef unsigned long elf_freg_t[3]; #define R_ARM_CALL 28 #define R_ARM_CALL 28 #define R_ARM_JUMP24 29 #define R_ARM_JUMP24 29 #define ELF_NGREG (sizeof (struct pt_regs) / sizeof(elf_greg_t)) typedef elf_greg_t elf_gregset_t[ELF_NGREG]; typedef struct user_fp elf_fpregset_t; /* /* * These are used to set parameters in the core dumps. * These are used to set parameters in the core dumps. */ */ Loading @@ -42,10 +42,50 @@ typedef struct user_fp elf_fpregset_t; #ifdef __KERNEL__ #ifdef __KERNEL__ #include <asm/procinfo.h> #include <asm/procinfo.h> #ifndef __ASSEMBLY__ /* * This yields a mask that user programs can use to figure out what * instruction set this cpu supports. */ #define ELF_HWCAP (elf_hwcap) extern unsigned int elf_hwcap; /* * This yields a string that ld.so will use to load implementation * specific libraries for optimization. This is more specific in * intent than poking at uname or /proc/cpuinfo. * * For now we just provide a fairly general string that describes the * processor family. This could be made more specific later if someone * implemented optimisations that require it. 26-bit CPUs give you * "v1l" for ARM2 (no SWP) and "v2l" for anything else (ARM1 isn't * supported). 32-bit CPUs give you "v3[lb]" for anything based on an * ARM6 or ARM7 core and "armv4[lb]" for anything based on a StrongARM-1 * core. */ #define ELF_PLATFORM_SIZE 8 #define ELF_PLATFORM (elf_platform) extern char elf_platform[]; #endif /* /* * This is used to ensure we don't load something for the wrong architecture. * This is used to ensure we don't load something for the wrong architecture. */ */ #define elf_check_arch(x) ( ((x)->e_machine == EM_ARM) && (ELF_PROC_OK((x))) ) #define elf_check_arch(x) ((x)->e_machine == EM_ARM && ELF_PROC_OK(x)) /* * 32-bit code is always OK. Some cpus can do 26-bit, some can't. */ #define ELF_PROC_OK(x) (ELF_THUMB_OK(x) && ELF_26BIT_OK(x)) #define ELF_THUMB_OK(x) \ ((elf_hwcap & HWCAP_THUMB && ((x)->e_entry & 1) == 1) || \ ((x)->e_entry & 3) == 0) #define ELF_26BIT_OK(x) \ ((elf_hwcap & HWCAP_26BIT && (x)->e_flags & EF_ARM_APCS26) || \ ((x)->e_flags & EF_ARM_APCS26) == 0) #define USE_ELF_CORE_DUMP #define USE_ELF_CORE_DUMP #define ELF_EXEC_PAGESIZE 4096 #define ELF_EXEC_PAGESIZE 4096 Loading @@ -62,40 +102,6 @@ typedef struct user_fp elf_fpregset_t; have no such handler. */ have no such handler. */ #define ELF_PLAT_INIT(_r, load_addr) (_r)->ARM_r0 = 0 #define ELF_PLAT_INIT(_r, load_addr) (_r)->ARM_r0 = 0 /* This yields a mask that user programs can use to figure out what instruction set this cpu supports. */ #define ELF_HWCAP (elf_hwcap) /* This yields a string that ld.so will use to load implementation specific libraries for optimization. This is more specific in intent than poking at uname or /proc/cpuinfo. */ /* For now we just provide a fairly general string that describes the processor family. This could be made more specific later if someone implemented optimisations that require it. 26-bit CPUs give you "v1l" for ARM2 (no SWP) and "v2l" for anything else (ARM1 isn't supported). 32-bit CPUs give you "v3[lb]" for anything based on an ARM6 or ARM7 core and "armv4[lb]" for anything based on a StrongARM-1 core. */ #define ELF_PLATFORM_SIZE 8 extern char elf_platform[]; #define ELF_PLATFORM (elf_platform) /* * 32-bit code is always OK. Some cpus can do 26-bit, some can't. */ #define ELF_PROC_OK(x) (ELF_THUMB_OK(x) && ELF_26BIT_OK(x)) #define ELF_THUMB_OK(x) \ (( (elf_hwcap & HWCAP_THUMB) && ((x)->e_entry & 1) == 1) || \ ((x)->e_entry & 3) == 0) #define ELF_26BIT_OK(x) \ (( (elf_hwcap & HWCAP_26BIT) && (x)->e_flags & EF_ARM_APCS26) || \ ((x)->e_flags & EF_ARM_APCS26) == 0) #ifndef CONFIG_IWMMXT #ifndef CONFIG_IWMMXT /* Old NetWinder binaries were compiled in such a way that the iBCS /* Old NetWinder binaries were compiled in such a way that the iBCS Loading