~ubuntu-branches/ubuntu/precise/linux-ti-omap4/precise-security

« back to all changes in this revision

Viewing changes to arch/um/sys-i386/asm/elf.h

  • Committer: Package Import Robot
  • Author(s): Paolo Pisati, Paolo Pisati
  • Date: 2011-12-06 15:56:07 UTC
  • Revision ID: package-import@ubuntu.com-20111206155607-pcf44kv5fmhk564f
Tags: 3.2.0-1401.1
[ Paolo Pisati ]

* Rebased on top of Ubuntu-3.2.0-3.8
* Tilt-tracking @ ef2487af4bb15bdd0689631774b5a5e3a59f74e2
* Delete debian.ti-omap4/control, it shoudln't be tracked
* Fix architecture spelling (s/armel/armhf/)
* [Config] Update configs following 3.2 import
* [Config] Fix compilation: disable CODA and ARCH_OMAP3
* [Config] Fix compilation: disable Ethernet Faraday
* Update series to precise

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/*
2
 
 * Copyright (C) 2000 - 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com)
3
 
 * Licensed under the GPL
4
 
 */
5
 
#ifndef __UM_ELF_I386_H
6
 
#define __UM_ELF_I386_H
7
 
 
8
 
#include <asm/user.h>
9
 
#include "skas.h"
10
 
 
11
 
#define R_386_NONE      0
12
 
#define R_386_32        1
13
 
#define R_386_PC32      2
14
 
#define R_386_GOT32     3
15
 
#define R_386_PLT32     4
16
 
#define R_386_COPY      5
17
 
#define R_386_GLOB_DAT  6
18
 
#define R_386_JMP_SLOT  7
19
 
#define R_386_RELATIVE  8
20
 
#define R_386_GOTOFF    9
21
 
#define R_386_GOTPC     10
22
 
#define R_386_NUM       11
23
 
 
24
 
typedef unsigned long elf_greg_t;
25
 
 
26
 
#define ELF_NGREG (sizeof (struct user_regs_struct) / sizeof(elf_greg_t))
27
 
typedef elf_greg_t elf_gregset_t[ELF_NGREG];
28
 
 
29
 
typedef struct user_i387_struct elf_fpregset_t;
30
 
 
31
 
/*
32
 
 * This is used to ensure we don't load something for the wrong architecture.
33
 
 */
34
 
#define elf_check_arch(x) \
35
 
        (((x)->e_machine == EM_386) || ((x)->e_machine == EM_486))
36
 
 
37
 
#define ELF_CLASS       ELFCLASS32
38
 
#define ELF_DATA        ELFDATA2LSB
39
 
#define ELF_ARCH        EM_386
40
 
 
41
 
#define ELF_PLAT_INIT(regs, load_addr) do { \
42
 
        PT_REGS_EBX(regs) = 0; \
43
 
        PT_REGS_ECX(regs) = 0; \
44
 
        PT_REGS_EDX(regs) = 0; \
45
 
        PT_REGS_ESI(regs) = 0; \
46
 
        PT_REGS_EDI(regs) = 0; \
47
 
        PT_REGS_EBP(regs) = 0; \
48
 
        PT_REGS_EAX(regs) = 0; \
49
 
} while (0)
50
 
 
51
 
#define ELF_EXEC_PAGESIZE 4096
52
 
 
53
 
#define ELF_ET_DYN_BASE (2 * TASK_SIZE / 3)
54
 
 
55
 
/* Shamelessly stolen from include/asm-i386/elf.h */
56
 
 
57
 
#define ELF_CORE_COPY_REGS(pr_reg, regs) do {   \
58
 
        pr_reg[0] = PT_REGS_EBX(regs);          \
59
 
        pr_reg[1] = PT_REGS_ECX(regs);          \
60
 
        pr_reg[2] = PT_REGS_EDX(regs);          \
61
 
        pr_reg[3] = PT_REGS_ESI(regs);          \
62
 
        pr_reg[4] = PT_REGS_EDI(regs);          \
63
 
        pr_reg[5] = PT_REGS_EBP(regs);          \
64
 
        pr_reg[6] = PT_REGS_EAX(regs);          \
65
 
        pr_reg[7] = PT_REGS_DS(regs);           \
66
 
        pr_reg[8] = PT_REGS_ES(regs);           \
67
 
        /* fake once used fs and gs selectors? */       \
68
 
        pr_reg[9] = PT_REGS_DS(regs);           \
69
 
        pr_reg[10] = PT_REGS_DS(regs);          \
70
 
        pr_reg[11] = PT_REGS_SYSCALL_NR(regs);  \
71
 
        pr_reg[12] = PT_REGS_IP(regs);          \
72
 
        pr_reg[13] = PT_REGS_CS(regs);          \
73
 
        pr_reg[14] = PT_REGS_EFLAGS(regs);      \
74
 
        pr_reg[15] = PT_REGS_SP(regs);          \
75
 
        pr_reg[16] = PT_REGS_SS(regs);          \
76
 
} while (0);
77
 
 
78
 
#define task_pt_regs(t) (&(t)->thread.regs)
79
 
 
80
 
struct task_struct;
81
 
 
82
 
extern int elf_core_copy_fpregs(struct task_struct *t, elf_fpregset_t *fpu);
83
 
 
84
 
#define ELF_CORE_COPY_FPREGS(t, fpu) elf_core_copy_fpregs(t, fpu)
85
 
 
86
 
extern long elf_aux_hwcap;
87
 
#define ELF_HWCAP (elf_aux_hwcap)
88
 
 
89
 
extern char * elf_aux_platform;
90
 
#define ELF_PLATFORM (elf_aux_platform)
91
 
 
92
 
#define SET_PERSONALITY(ex) do { } while (0)
93
 
 
94
 
extern unsigned long vsyscall_ehdr;
95
 
extern unsigned long vsyscall_end;
96
 
extern unsigned long __kernel_vsyscall;
97
 
 
98
 
#define VSYSCALL_BASE vsyscall_ehdr
99
 
#define VSYSCALL_END vsyscall_end
100
 
 
101
 
/*
102
 
 * This is the range that is readable by user mode, and things
103
 
 * acting like user mode such as get_user_pages.
104
 
 */
105
 
#define FIXADDR_USER_START      VSYSCALL_BASE
106
 
#define FIXADDR_USER_END        VSYSCALL_END
107
 
 
108
 
/*
109
 
 * Architecture-neutral AT_ values in 0-17, leave some room
110
 
 * for more of them, start the x86-specific ones at 32.
111
 
 */
112
 
#define AT_SYSINFO              32
113
 
#define AT_SYSINFO_EHDR         33
114
 
 
115
 
#define ARCH_DLINFO                                             \
116
 
do {                                                            \
117
 
        if ( vsyscall_ehdr ) {                                  \
118
 
                NEW_AUX_ENT(AT_SYSINFO, __kernel_vsyscall);     \
119
 
                NEW_AUX_ENT(AT_SYSINFO_EHDR, vsyscall_ehdr);    \
120
 
        }                                                       \
121
 
} while (0)
122
 
 
123
 
#endif