]> nv-tegra.nvidia Code Review - linux-2.6.git/blobdiff - include/asm-um/elf-x86_64.h
UML: Fix ELF_CORE_COPY_REGS build botch
[linux-2.6.git] / include / asm-um / elf-x86_64.h
index 8a8246d039363f0bd60c43584050de3e620caa1f..857471c49dacdffe5b8bb2ce72374f33f9aa3eef 100644 (file)
@@ -6,7 +6,9 @@
 #ifndef __UM_ELF_X86_64_H
 #define __UM_ELF_X86_64_H
 
+#include <linux/sched.h>
 #include <asm/user.h>
+#include "skas.h"
 
 /* x86-64 relocation types, taken from asm-x86_64/elf.h */
 #define R_X86_64_NONE          0       /* No reloc */
@@ -64,6 +66,44 @@ typedef struct { } elf_fpregset_t;
        PT_REGS_R15(regs) = 0; \
 } while (0)
 
+#define ELF_CORE_COPY_REGS(pr_reg, regs)               \
+       (pr_reg)[0] = (regs)->regs.skas.regs[0];                        \
+       (pr_reg)[1] = (regs)->regs.skas.regs[1];                        \
+       (pr_reg)[2] = (regs)->regs.skas.regs[2];                        \
+       (pr_reg)[3] = (regs)->regs.skas.regs[3];                        \
+       (pr_reg)[4] = (regs)->regs.skas.regs[4];                        \
+       (pr_reg)[5] = (regs)->regs.skas.regs[5];                        \
+       (pr_reg)[6] = (regs)->regs.skas.regs[6];                        \
+       (pr_reg)[7] = (regs)->regs.skas.regs[7];                        \
+       (pr_reg)[8] = (regs)->regs.skas.regs[8];                        \
+       (pr_reg)[9] = (regs)->regs.skas.regs[9];                        \
+       (pr_reg)[10] = (regs)->regs.skas.regs[10];                      \
+       (pr_reg)[11] = (regs)->regs.skas.regs[11];                      \
+       (pr_reg)[12] = (regs)->regs.skas.regs[12];                      \
+       (pr_reg)[13] = (regs)->regs.skas.regs[13];                      \
+       (pr_reg)[14] = (regs)->regs.skas.regs[14];                      \
+       (pr_reg)[15] = (regs)->regs.skas.regs[15];                      \
+       (pr_reg)[16] = (regs)->regs.skas.regs[16];                      \
+       (pr_reg)[17] = (regs)->regs.skas.regs[17];                      \
+       (pr_reg)[18] = (regs)->regs.skas.regs[18];                      \
+       (pr_reg)[19] = (regs)->regs.skas.regs[19];                      \
+       (pr_reg)[20] = (regs)->regs.skas.regs[20];                      \
+       (pr_reg)[21] = current->thread.arch.fs;                 \
+       (pr_reg)[22] = 0;                                       \
+       (pr_reg)[23] = 0;                                       \
+       (pr_reg)[24] = 0;                                       \
+       (pr_reg)[25] = 0;                                       \
+       (pr_reg)[26] = 0;
+
+static inline int elf_core_copy_fpregs(struct task_struct *t,
+                                      elf_fpregset_t *fpu)
+{
+       int cpu = current_thread->cpu;
+       return save_fp_registers(userspace_pid[cpu], (unsigned long *) fpu);
+}
+
+#define ELF_CORE_COPY_FPREGS(t, fpu) elf_core_copy_fpregs(t, fpu)
+
 #ifdef TIF_IA32 /* XXX */
 #error XXX, indeed
         clear_thread_flag(TIF_IA32);