mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-07-16 19:13:39 -04:00
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6: [SPARC32]: Use regsets in arch_ptrace(). [SPARC64]: Use regsets in arch_ptrace(). [SPARC32]: Use regsets for ELF core dumping. [SPARC64]: Use regsets for ELF core dumping. [SPARC64]: Remove unintentional ptrace debugging messages. [SPARC]: Move over to arch_ptrace(). [SPARC]: Remove PTRACE_SUN* handling. [SPARC]: Kill DEBUG_PTRACE code. [SPARC32]: Add user regset support. [SPARC64]: Add user regsets. [SPARC64]: Fix booting on non-zero cpu.
This commit is contained in:
@@ -65,8 +65,14 @@
|
||||
#define HWCAP_SPARC_V9 16
|
||||
#define HWCAP_SPARC_ULTRA3 32
|
||||
|
||||
/* For the most part we present code dumps in the format
|
||||
* Solaris does.
|
||||
#define CORE_DUMP_USE_REGSET
|
||||
|
||||
/* Format is:
|
||||
* G0 --> G7
|
||||
* O0 --> O7
|
||||
* L0 --> L7
|
||||
* I0 --> I7
|
||||
* PSR, PC, nPC, Y, WIM, TBR
|
||||
*/
|
||||
typedef unsigned long elf_greg_t;
|
||||
#define ELF_NGREG 38
|
||||
@@ -86,34 +92,6 @@ typedef struct {
|
||||
} elf_fpregset_t;
|
||||
|
||||
#include <asm/mbus.h>
|
||||
#include <asm/uaccess.h>
|
||||
|
||||
/* Format is:
|
||||
* G0 --> G7
|
||||
* O0 --> O7
|
||||
* L0 --> L7
|
||||
* I0 --> I7
|
||||
* PSR, PC, nPC, Y, WIM, TBR
|
||||
*/
|
||||
#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; \
|
||||
memcpy(&dest[0], &src->u_regs[0], \
|
||||
sizeof(unsigned long) * 16); \
|
||||
/* Don't try this at home kids... */ \
|
||||
sp = (unsigned long __user *) src->u_regs[14]; \
|
||||
copy_from_user(&dest[16], sp, \
|
||||
sizeof(unsigned long) * 16); \
|
||||
dest[32] = src->psr; \
|
||||
dest[33] = src->pc; \
|
||||
dest[34] = src->npc; \
|
||||
dest[35] = src->y; \
|
||||
dest[36] = dest[37] = 0; /* XXX */ \
|
||||
} 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; })
|
||||
|
||||
/*
|
||||
* This is used to ensure we don't load something for the wrong architecture.
|
||||
|
||||
@@ -61,8 +61,6 @@ struct sparc_stackf {
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
#define __ARCH_SYS_PTRACE 1
|
||||
|
||||
#define user_mode(regs) (!((regs)->psr & PSR_PS))
|
||||
#define instruction_pointer(regs) ((regs)->pc)
|
||||
unsigned long profile_pc(struct pt_regs *);
|
||||
@@ -151,8 +149,6 @@ extern void show_regs(struct pt_regs *);
|
||||
#define SF_XXARG 0x5c
|
||||
|
||||
/* Stuff for the ptrace system call */
|
||||
#define PTRACE_SUNATTACH 10
|
||||
#define PTRACE_SUNDETACH 11
|
||||
#define PTRACE_GETREGS 12
|
||||
#define PTRACE_SETREGS 13
|
||||
#define PTRACE_GETFPREGS 14
|
||||
@@ -164,7 +160,4 @@ extern void show_regs(struct pt_regs *);
|
||||
#define PTRACE_GETFPAREGS 20
|
||||
#define PTRACE_SETFPAREGS 21
|
||||
|
||||
#define PTRACE_GETUCODE 29 /* stupid bsd-ism */
|
||||
|
||||
|
||||
#endif /* !(_SPARC_PTRACE_H) */
|
||||
|
||||
@@ -70,6 +70,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.
|
||||
*/
|
||||
@@ -78,10 +80,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
|
||||
@@ -92,24 +90,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];
|
||||
@@ -119,9 +102,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.
|
||||
*/
|
||||
|
||||
@@ -95,8 +95,6 @@ struct sparc_trapf {
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
#define __ARCH_SYS_PTRACE 1
|
||||
|
||||
#define force_successful_syscall_return() \
|
||||
do { current_thread_info()->syscall_noerror = 1; \
|
||||
} while (0)
|
||||
@@ -261,8 +259,6 @@ extern void show_regs(struct pt_regs *);
|
||||
#define SF_XXARG 0x5c
|
||||
|
||||
/* Stuff for the ptrace system call */
|
||||
#define PTRACE_SUNATTACH 10
|
||||
#define PTRACE_SUNDETACH 11
|
||||
#define PTRACE_GETREGS 12
|
||||
#define PTRACE_SETREGS 13
|
||||
#define PTRACE_GETFPREGS 14
|
||||
@@ -284,18 +280,4 @@ extern void show_regs(struct pt_regs *);
|
||||
#define PTRACE_GETFPREGS64 25
|
||||
#define PTRACE_SETFPREGS64 26
|
||||
|
||||
#define PTRACE_GETUCODE 29 /* stupid bsd-ism */
|
||||
|
||||
/* These are for 32-bit processes debugging 64-bit ones.
|
||||
* Here addr and addr2 are passed in %g2 and %g3 respectively.
|
||||
*/
|
||||
#define PTRACE_PEEKTEXT64 (30 + PTRACE_PEEKTEXT)
|
||||
#define PTRACE_POKETEXT64 (30 + PTRACE_POKETEXT)
|
||||
#define PTRACE_PEEKDATA64 (30 + PTRACE_PEEKDATA)
|
||||
#define PTRACE_POKEDATA64 (30 + PTRACE_POKEDATA)
|
||||
#define PTRACE_READDATA64 (30 + PTRACE_READDATA)
|
||||
#define PTRACE_WRITEDATA64 (30 + PTRACE_WRITEDATA)
|
||||
#define PTRACE_READTEXT64 (30 + PTRACE_READTEXT)
|
||||
#define PTRACE_WRITETEXT64 (30 + PTRACE_WRITETEXT)
|
||||
|
||||
#endif /* !(_SPARC64_PTRACE_H) */
|
||||
|
||||
Reference in New Issue
Block a user