Pull release into acpica branch
[pandora-kernel.git] / arch / mips / kernel / binfmt_elfo32.c
index b4075e9..cec5f32 100644 (file)
@@ -54,7 +54,6 @@ typedef elf_fpreg_t elf_fpregset_t[ELF_NFPREG];
 
 #include <asm/processor.h>
 #include <linux/module.h>
-#include <linux/config.h>
 #include <linux/elfcore.h>
 #include <linux/compat.h>
 
@@ -98,7 +97,7 @@ struct elf_prpsinfo32
 #define init_elf_binfmt init_elf32_binfmt
 
 #define jiffies_to_timeval jiffies_to_compat_timeval
-static __inline__ void
+static inline void
 jiffies_to_compat_timeval(unsigned long jiffies, struct compat_timeval *value)
 {
        /*
@@ -113,21 +112,26 @@ jiffies_to_compat_timeval(unsigned long jiffies, struct compat_timeval *value)
 #undef ELF_CORE_COPY_REGS
 #define ELF_CORE_COPY_REGS(_dest,_regs) elf32_core_copy_regs(_dest,_regs);
 
-void elf32_core_copy_regs(elf_gregset_t _dest, struct pt_regs *_regs)
+void elf32_core_copy_regs(elf_gregset_t grp, struct pt_regs *regs)
 {
        int i;
 
-       memset(_dest, 0, sizeof(elf_gregset_t));
-
-       /* XXXKW the 6 is from EF_REG0 in gdb/gdb/mips-linux-tdep.c, include/asm-mips/reg.h */
-       for (i=6; i<38; i++)
-               _dest[i] = (elf_greg_t) _regs->regs[i-6];
-       _dest[i++] = (elf_greg_t) _regs->lo;
-       _dest[i++] = (elf_greg_t) _regs->hi;
-       _dest[i++] = (elf_greg_t) _regs->cp0_epc;
-       _dest[i++] = (elf_greg_t) _regs->cp0_badvaddr;
-       _dest[i++] = (elf_greg_t) _regs->cp0_status;
-       _dest[i++] = (elf_greg_t) _regs->cp0_cause;
+       for (i = 0; i < EF_R0; i++)
+               grp[i] = 0;
+       grp[EF_R0] = 0;
+       for (i = 1; i <= 31; i++)
+               grp[EF_R0 + i] = (elf_greg_t) regs->regs[i];
+       grp[EF_R26] = 0;
+       grp[EF_R27] = 0;
+       grp[EF_LO] = (elf_greg_t) regs->lo;
+       grp[EF_HI] = (elf_greg_t) regs->hi;
+       grp[EF_CP0_EPC] = (elf_greg_t) regs->cp0_epc;
+       grp[EF_CP0_BADVADDR] = (elf_greg_t) regs->cp0_badvaddr;
+       grp[EF_CP0_STATUS] = (elf_greg_t) regs->cp0_status;
+       grp[EF_CP0_CAUSE] = (elf_greg_t) regs->cp0_cause;
+#ifdef EF_UNUSED0
+       grp[EF_UNUSED0] = 0;
+#endif
 }
 
 MODULE_DESCRIPTION("Binary format loader for compatibility with o32 Linux/MIPS binaries");
@@ -136,4 +140,7 @@ MODULE_AUTHOR("Ralf Baechle (ralf@linux-mips.org)");
 #undef MODULE_DESCRIPTION
 #undef MODULE_AUTHOR
 
+#undef TASK_SIZE
+#define TASK_SIZE TASK_SIZE32
+
 #include "../../../fs/binfmt_elf.c"