fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git] / include / asm-sparc / elf.h
index 2b2a519..aaf6ef4 100644 (file)
@@ -6,14 +6,8 @@
  * ELF register definitions..
  */
 
-#include <linux/config.h>
 #include <asm/ptrace.h>
 
-#ifdef __KERNEL__
-#include <asm/mbus.h>
-#include <asm/uaccess.h>
-#endif
-
 /*
  * Sparc section types
  */
@@ -78,6 +72,23 @@ typedef unsigned long elf_greg_t;
 #define ELF_NGREG 38
 typedef elf_greg_t elf_gregset_t[ELF_NGREG];
 
+typedef struct {
+       union {
+               unsigned long   pr_regs[32];
+               double          pr_dregs[16];
+       } pr_fr;
+       unsigned long __unused;
+       unsigned long   pr_fsr;
+       unsigned char   pr_qcnt;
+       unsigned char   pr_q_entrysize;
+       unsigned char   pr_en;
+       unsigned int    pr_q[64];
+} elf_fpregset_t;
+
+#ifdef __KERNEL__
+#include <asm/mbus.h>
+#include <asm/uaccess.h>
+
 /* Format is:
  *     G0 --> G7
  *     O0 --> O7
@@ -88,11 +99,11 @@ typedef elf_greg_t elf_gregset_t[ELF_NGREG];
 #define ELF_CORE_COPY_REGS(__elf_regs, __pt_regs)      \
 do {   unsigned long *dest = &(__elf_regs[0]);         \
        struct pt_regs *src = (__pt_regs);              \
-       unsigned long *sp;                              \
+       unsigned long __user *sp;                       \
        memcpy(&dest[0], &src->u_regs[0],               \
               sizeof(unsigned long) * 16);             \
        /* Don't try this at home kids... */            \
-       sp = (unsigned long *) src->u_regs[14];         \
+       sp = (unsigned long __user *) src->u_regs[14];  \
        copy_from_user(&dest[16], sp,                   \
                       sizeof(unsigned long) * 16);     \
        dest[32] = src->psr;                            \
@@ -100,20 +111,7 @@ do {       unsigned long *dest = &(__elf_regs[0]);         \
        dest[34] = src->npc;                            \
        dest[35] = src->y;                              \
        dest[36] = dest[37] = 0; /* XXX */              \
-} while(0); /* Janitors: Don't touch this colon. */
-
-typedef struct {
-       union {
-               unsigned long   pr_regs[32];
-               double          pr_dregs[16];
-       } pr_fr;
-       unsigned long __unused;
-       unsigned long   pr_fsr;
-       unsigned char   pr_qcnt;
-       unsigned char   pr_q_entrysize;
-       unsigned char   pr_en;
-       unsigned int    pr_q[64];
-} elf_fpregset_t;
+} while(0); /* Janitors: Don't touch this semicolon. */
 
 #define ELF_CORE_COPY_TASK_REGS(__tsk, __elf_regs)     \
        ({ ELF_CORE_COPY_REGS((*(__elf_regs)), (__tsk)->thread.kregs); 1; })
@@ -143,7 +141,7 @@ typedef struct {
    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         (0x08000000)
+#define ELF_ET_DYN_BASE         (TASK_UNMAPPED_BASE)
 
 /* This yields a mask that user programs can use to figure out what
    instruction set this cpu supports.  This can NOT be done in userspace
@@ -166,8 +164,8 @@ typedef struct {
 
 #define ELF_PLATFORM   (NULL)
 
-#ifdef __KERNEL__
 #define SET_PERSONALITY(ex, ibcs2) set_personality((ibcs2)?PER_SVR4:PER_LINUX)
-#endif
+
+#endif /* __KERNEL__ */
 
 #endif /* !(__ASMSPARC_ELF_H) */