Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=3389742f3c346d9ef5fb46e7baa04972bdd6d151
Commit:     3389742f3c346d9ef5fb46e7baa04972bdd6d151
Parent:     e72d71c405ef581595ec64091be9f2fda0a726a9
Author:     David S. Miller <[EMAIL PROTECTED]>
AuthorDate: Thu Feb 7 04:19:34 2008 -0800
Committer:  David S. Miller <[EMAIL PROTECTED]>
CommitDate: Thu Feb 7 04:19:34 2008 -0800

    [SPARC64]: Use regsets for ELF core dumping.
    
    Signed-off-by: David S. Miller <[EMAIL PROTECTED]>
---
 arch/sparc64/kernel/binfmt_elf32.c |   31 ++++---------------------------
 include/asm-sparc64/elf.h          |   30 +++++-------------------------
 2 files changed, 9 insertions(+), 52 deletions(-)

diff --git a/arch/sparc64/kernel/binfmt_elf32.c 
b/arch/sparc64/kernel/binfmt_elf32.c
index 1587a29..d141300 100644
--- a/arch/sparc64/kernel/binfmt_elf32.c
+++ b/arch/sparc64/kernel/binfmt_elf32.c
@@ -1,7 +1,7 @@
 /*
  * binfmt_elf32.c: Support 32-bit Sparc ELF binaries on Ultra.
  *
- * Copyright (C) 1995, 1996, 1997, 1998 David S. Miller        ([EMAIL 
PROTECTED])
+ * Copyright (C) 1995, 1996, 1997, 1998, 2008 David S. Miller ([EMAIL 
PROTECTED])
  * Copyright (C) 1995, 1996, 1997, 1998 Jakub Jelinek  ([EMAIL PROTECTED])
  */
 
@@ -9,13 +9,6 @@
 #define ELF_CLASS              ELFCLASS32
 #define ELF_DATA               ELFDATA2MSB;
 
-/* For the most part we present code dumps in the format
- * Solaris does.
- */
-typedef unsigned int elf_greg_t;
-#define ELF_NGREG 38
-typedef elf_greg_t elf_gregset_t[ELF_NGREG];
-
 /* Format is:
  *     G0 --> G7
  *     O0 --> O7
@@ -23,25 +16,9 @@ typedef elf_greg_t elf_gregset_t[ELF_NGREG];
  *     I0 --> I7
  *     PSR, PC, nPC, Y, WIM, TBR
  */
-#include <asm/psrcompat.h>
-#define ELF_CORE_COPY_REGS(__elf_regs, __pt_regs)      \
-do {   unsigned int *dest = &(__elf_regs[0]);          \
-       struct pt_regs *src = (__pt_regs);              \
-       unsigned int __user *sp;                        \
-       int i;                                          \
-       for(i = 0; i < 16; i++)                         \
-               dest[i] = (unsigned int) src->u_regs[i];\
-       /* Don't try this at home kids... */            \
-       sp = (unsigned int __user *) (src->u_regs[14] & \
-               0x00000000fffffffc);                    \
-       for(i = 0; i < 16; i++)                         \
-               __get_user(dest[i+16], &sp[i]);         \
-       dest[32] = tstate_to_psr(src->tstate);          \
-       dest[33] = (unsigned int) src->tpc;             \
-       dest[34] = (unsigned int) src->tnpc;            \
-       dest[35] = src->y;                              \
-       dest[36] = dest[37] = 0; /* XXX */              \
-} while(0);
+typedef unsigned int elf_greg_t;
+#define ELF_NGREG 38
+typedef elf_greg_t elf_gregset_t[ELF_NGREG];
 
 typedef struct {
        union {
diff --git a/include/asm-sparc64/elf.h b/include/asm-sparc64/elf.h
index 8653e86..217d768 100644
--- a/include/asm-sparc64/elf.h
+++ b/include/asm-sparc64/elf.h
@@ -72,6 +72,8 @@
 #define HWCAP_SPARC_BLKINIT    64
 #define HWCAP_SPARC_N2         128
 
+#define CORE_DUMP_USE_REGSET
+
 /*
  * These are used to set parameters in the core dumps.
  */
@@ -80,10 +82,6 @@
 #define ELF_CLASS              ELFCLASS64
 #define ELF_DATA               ELFDATA2MSB
 
-typedef unsigned long elf_greg_t;
-
-#define ELF_NGREG 36
-typedef elf_greg_t elf_gregset_t[ELF_NGREG];
 /* Format of 64-bit elf_gregset_t is:
  *     G0 --> G7
  *     O0 --> O7
@@ -94,24 +92,9 @@ typedef elf_greg_t elf_gregset_t[ELF_NGREG];
  *     TNPC
  *     Y
  */
-#define ELF_CORE_COPY_REGS(__elf_regs, __pt_regs)      \
-do {   unsigned long *dest = &(__elf_regs[0]);         \
-       struct pt_regs *src = (__pt_regs);              \
-       unsigned long __user *sp;                       \
-       int i;                                          \
-       for(i = 0; i < 16; i++)                         \
-               dest[i] = src->u_regs[i];               \
-       /* Don't try this at home kids... */            \
-       sp = (unsigned long __user *)                   \
-        ((src->u_regs[14] + STACK_BIAS)                \
-         & 0xfffffffffffffff8UL);                      \
-       for(i = 0; i < 16; i++)                         \
-               __get_user(dest[i+16], &sp[i]);         \
-       dest[32] = src->tstate;                         \
-       dest[33] = src->tpc;                            \
-       dest[34] = src->tnpc;                           \
-       dest[35] = src->y;                              \
-} while (0);
+typedef unsigned long elf_greg_t;
+#define ELF_NGREG 36
+typedef elf_greg_t elf_gregset_t[ELF_NGREG];
 
 typedef struct {
        unsigned long   pr_regs[32];
@@ -121,9 +104,6 @@ typedef struct {
 } elf_fpregset_t;
 #endif
 
-#define ELF_CORE_COPY_TASK_REGS(__tsk, __elf_regs)     \
-       ({ ELF_CORE_COPY_REGS((*(__elf_regs)), task_pt_regs(__tsk)); 1; })
-
 /*
  * This is used to ensure we don't load something for the wrong architecture.
  */
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to