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:
  [SPARC]: Remove SunOS and Solaris binary support.
This commit is contained in:
Linus Torvalds 2008-04-21 17:20:53 -07:00
commit 8a32272688
76 changed files with 172 additions and 11625 deletions

View file

@ -5,7 +5,6 @@ header-y += asi.h
header-y += bpp.h
header-y += jsflash.h
header-y += openpromio.h
header-y += pconf.h
header-y += reg.h
header-y += traps.h
header-y += vfc_ioctls.h

View file

@ -1,52 +0,0 @@
/* a.out coredump register dumper
*
* Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
* Written by David Howells (dhowells@redhat.com)
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public Licence
* as published by the Free Software Foundation; either version
* 2 of the Licence, or (at your option) any later version.
*/
#ifndef _ASM_A_OUT_CORE_H
#define _ASM_A_OUT_CORE_H
#ifdef __KERNEL__
#include <linux/user.h>
/*
* fill in the user structure for an a.out core dump
*/
static inline void aout_dump_thread(struct pt_regs *regs, struct user *dump)
{
unsigned long first_stack_page;
dump->magic = SUNOS_CORE_MAGIC;
dump->len = sizeof(struct user);
dump->regs.psr = regs->psr;
dump->regs.pc = regs->pc;
dump->regs.npc = regs->npc;
dump->regs.y = regs->y;
/* fuck me plenty */
memcpy(&dump->regs.regs[0], &regs->u_regs[1], (sizeof(unsigned long) * 15));
dump->uexec = current->thread.core_exec;
dump->u_tsize = (((unsigned long) current->mm->end_code) -
((unsigned long) current->mm->start_code)) & ~(PAGE_SIZE - 1);
dump->u_dsize = ((unsigned long) (current->mm->brk + (PAGE_SIZE-1)));
dump->u_dsize -= dump->u_tsize;
dump->u_dsize &= ~(PAGE_SIZE - 1);
first_stack_page = (regs->u_regs[UREG_FP] & ~(PAGE_SIZE - 1));
dump->u_ssize = (TASK_SIZE - first_stack_page) & ~(PAGE_SIZE - 1);
memcpy(&dump->fpu.fpstatus.fregs.regs[0], &current->thread.float_regs[0], (sizeof(unsigned long) * 32));
dump->fpu.fpstatus.fsr = current->thread.fsr;
dump->fpu.fpstatus.flags = dump->fpu.fpstatus.extra = 0;
dump->fpu.fpstatus.fpq_count = current->thread.fpqdepth;
memcpy(&dump->fpu.fpstatus.fpq[0], &current->thread.fpqueue[0],
((sizeof(unsigned long) * 2) * 16));
dump->sigcode = 0;
}
#endif /* __KERNEL__ */
#endif /* _ASM_A_OUT_CORE_H */

View file

@ -1,97 +0,0 @@
#ifndef __SPARC_A_OUT_H__
#define __SPARC_A_OUT_H__
#define SPARC_PGSIZE 0x2000 /* Thanks to the sun4 architecture... */
#define SEGMENT_SIZE SPARC_PGSIZE /* whee... */
#ifndef __ASSEMBLY__
struct exec {
unsigned char a_dynamic:1; /* A __DYNAMIC is in this image */
unsigned char a_toolversion:7;
unsigned char a_machtype;
unsigned short a_info;
unsigned int a_text; /* length of text, in bytes */
unsigned int a_data; /* length of data, in bytes */
unsigned int a_bss; /* length of bss, in bytes */
unsigned int a_syms; /* length of symbol table, in bytes */
unsigned int a_entry; /* where program begins */
unsigned int a_trsize;
unsigned int a_drsize;
};
#endif /* !__ASSEMBLY__ */
/* Where in the file does the text information begin? */
#define N_TXTOFF(x) (N_MAGIC(x) == ZMAGIC ? 0 : sizeof (struct exec))
/* Where do the Symbols start? */
#define N_SYMOFF(x) (N_TXTOFF(x) + (x).a_text + \
(x).a_data + (x).a_trsize + \
(x).a_drsize)
/* Where does text segment go in memory after being loaded? */
#define N_TXTADDR(x) (unsigned long)(((N_MAGIC(x) == ZMAGIC) && \
((x).a_entry < SPARC_PGSIZE)) ? \
0 : SPARC_PGSIZE)
/* And same for the data segment.. */
#define N_DATADDR(x) (N_MAGIC(x)==OMAGIC ? \
(N_TXTADDR(x) + (x).a_text) \
: (unsigned long) (_N_SEGMENT_ROUND (_N_TXTENDADDR(x))))
#define N_TRSIZE(a) ((a).a_trsize)
#define N_DRSIZE(a) ((a).a_drsize)
#define N_SYMSIZE(a) ((a).a_syms)
#ifndef __ASSEMBLY__
/*
* Sparc relocation types
*/
enum reloc_type
{
RELOC_8,
RELOC_16,
RELOC_32, /* simplest relocs */
RELOC_DISP8,
RELOC_DISP16,
RELOC_DISP32, /* Disp's (pc-rel) */
RELOC_WDISP30,
RELOC_WDISP22, /* SR word disp's */
RELOC_HI22,
RELOC_22, /* SR 22-bit relocs */
RELOC_13,
RELOC_LO10, /* SR 13&10-bit relocs */
RELOC_SFA_BASE,
RELOC_SFA_OFF13, /* SR S.F.A. relocs */
RELOC_BASE10,
RELOC_BASE13,
RELOC_BASE22, /* base_relative pic */
RELOC_PC10,
RELOC_PC22, /* special pc-rel pic */
RELOC_JMP_TBL, /* jmp_tbl_rel in pic */
RELOC_SEGOFF16, /* ShLib offset-in-seg */
RELOC_GLOB_DAT,
RELOC_JMP_SLOT,
RELOC_RELATIVE /* rtld relocs */
};
/*
* Format of a relocation datum.
*/
struct relocation_info /* used when header.a_machtype == M_SPARC */
{
unsigned int r_address; /* relocation addr */
unsigned int r_index:24; /* segment index or symbol index */
unsigned int r_extern:1; /* if F, r_index==SEG#; if T, SYM idx */
unsigned int r_pad:2; /* <unused> */
enum reloc_type r_type:5; /* type of relocation to perform */
int r_addend; /* addend for relocation value */
};
#define N_RELOCATION_INFO_DECLARED 1
#endif /* !(__ASSEMBLY__) */
#endif /* __SPARC_A_OUT_H__ */

View file

@ -46,45 +46,12 @@
b linux_sparc_syscall; \
rd %psr, %l0;
/* Software trap for SunOS4.1.x system calls. */
#define SUNOS_SYSCALL_TRAP \
rd %psr, %l0; \
sethi %hi(sunos_sys_table), %l7; \
b linux_sparc_syscall; \
or %l7, %lo(sunos_sys_table), %l7;
#define SUNOS_NO_SYSCALL_TRAP \
b sunos_syscall; \
rd %psr, %l0; \
nop; \
nop;
/* Software trap for Slowaris system calls. */
#define SOLARIS_SYSCALL_TRAP \
b solaris_syscall; \
rd %psr, %l0; \
nop; \
nop;
#define INDIRECT_SOLARIS_SYSCALL(x) \
mov x, %g1; \
b solaris_syscall; \
rd %psr, %l0; \
nop;
#define BREAKPOINT_TRAP \
b breakpoint_trap; \
rd %psr,%l0; \
nop; \
nop;
/* Software trap for Sparc-netbsd system calls. */
#define NETBSD_SYSCALL_TRAP \
sethi %hi(sys_call_table), %l7; \
or %l7, %lo(sys_call_table), %l7; \
b bsd_syscall; \
rd %psr, %l0;
/* The Get Condition Codes software trap for userland. */
#define GETCC_TRAP \
b getcc_trap_handler; mov %psr, %l0; nop; nop;

View file

@ -43,8 +43,6 @@
#define __TIOCSETX _IOW('t', 34, int) /* SunOS Specific */
#define __TIOCGETX _IOR('t', 35, int) /* SunOS Specific */
#define TIOCCONS _IO('t', 36)
#define __TIOCSSIZE _IOW('t', 37, struct sunos_ttysize) /* SunOS Specific */
#define __TIOCGSIZE _IOR('t', 38, struct sunos_ttysize) /* SunOS Specific */
#define TIOCGSOFTCAR _IOR('t', 100, int)
#define TIOCSSOFTCAR _IOW('t', 101, int)
#define __TIOCUCNTL _IOW('t', 102, int) /* SunOS Specific */

View file

@ -22,19 +22,6 @@
#define MAP_POPULATE 0x8000 /* populate (prefault) pagetables */
#define MAP_NONBLOCK 0x10000 /* do not block on IO */
/* XXX Need to add flags to SunOS's mctl, mlockall, and madvise system
* XXX calls.
*/
/* SunOS sys_mctl() stuff... */
#define MC_SYNC 1 /* Sync pages in memory with storage (usu. a file) */
#define MC_LOCK 2 /* Lock pages into core ram, do not allow swapping of them */
#define MC_UNLOCK 3 /* Unlock pages locked via previous mctl() with MC_LOCK arg */
#define MC_LOCKAS 5 /* Lock an entire address space of the calling process */
#define MC_UNLOCKAS 6 /* Unlock entire address space of calling process */
#define MADV_FREE 0x5 /* (Solaris) contents can be freed */
#ifdef __KERNEL__
#ifndef __ASSEMBLY__
#define arch_mmap_check sparc_mmap_check

View file

@ -8,19 +8,6 @@
#ifndef __SPARC_NAMEI_H
#define __SPARC_NAMEI_H
#define SPARC_BSD_EMUL "/usr/gnemul/sunos/"
#define SPARC_SOL_EMUL "/usr/gnemul/solaris/"
static inline char * __emul_prefix(void)
{
switch (current->personality) {
case PER_SUNOS:
return SPARC_BSD_EMUL;
case PER_SVR4:
return SPARC_SOL_EMUL;
default:
return NULL;
}
}
#define __emul_prefix() NULL
#endif /* __SPARC_NAMEI_H */

View file

@ -1,25 +0,0 @@
/* $Id: pconf.h,v 1.3 1996/04/25 06:13:25 davem Exp $
* pconf.h: pathconf() and fpathconf() defines for SunOS
* system call compatibility.
*
* Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu)
*/
#ifndef _SPARC_PCONF_H
#define _SPARC_PCONF_H
#include <linux/fs.h>
#include <linux/limits.h>
#define _PCONF_LINK 1 /* Max number of links to an object */
#define _PCONF_CANON 2 /* TTY input buffer line size */
#define _PCONF_INPUT 3 /* Biggest packet a tty can imbibe at once */
#define _PCONF_NAME 4 /* Filename length max */
#define _PCONF_PATH 5 /* Max size of a pathname */
#define _PCONF_PIPE 6 /* Buffer size for a pipe */
#define _PCONF_CHRESTRICT 7 /* Can only root chown files? */
#define _PCONF_NOTRUNC 8 /* Are pathnames truncated if too big? */
#define _PCONF_VDISABLE 9 /* Magic char to disable special tty chars */
#define _PCONF_MAXPCONF 9
#endif /* !(_SPARC_PCONF_H) */

View file

@ -13,8 +13,6 @@
*/
#define current_text_addr() ({ void *pc; __asm__("sethi %%hi(1f), %0; or %0, %%lo(1f), %0;\n1:" : "=r" (pc)); pc; })
#include <linux/a.out.h>
#include <asm/psr.h>
#include <asm/ptrace.h>
#include <asm/head.h>
@ -67,7 +65,6 @@ struct thread_struct {
struct fpq fpqueue[16];
unsigned long flags;
mm_segment_t current_ds;
struct exec core_exec; /* just what it says. */
int new_signal;
};

View file

@ -24,9 +24,6 @@
#define SO_SNDTIMEO 0x4000
#define SO_ACCEPTCONN 0x8000
/* wha!??? */
#define SO_DONTLINGER (~SO_LINGER) /* Older SunOS compat. hack */
#define SO_SNDBUF 0x1001
#define SO_RCVBUF 0x1002
#define SO_SNDBUFFORCE 0x100a

View file

@ -1,132 +0,0 @@
/* $Id: solerrno.h,v 1.5 1996/04/25 06:13:32 davem Exp $
* solerrno.h: Solaris error return codes for compatibility.
*
* Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu)
*/
#ifndef _SPARC_SOLERRNO_H
#define _SPARC_SOLERRNO_H
#define SOL_EPERM 1 /* Required superuser access perms */
#define SOL_ENOENT 2 /* File or directory does not exist */
#define SOL_ESRCH 3 /* Process did not exist */
#define SOL_EINTR 4 /* System call was interrupted */
#define SOL_EIO 5 /* An i/o error occurred */
#define SOL_ENXIO 6 /* Device or Address does not exist */
#define SOL_E2BIG 7 /* Too many arguments were given */
#define SOL_ENOEXEC 8 /* Header of executable was munged */
#define SOL_EBADF 9 /* Bogus file number */
#define SOL_ECHILD 10 /* No children of process exist */
#define SOL_EAGAIN 11 /* beep beep, "try again later" */
#define SOL_ENOMEM 12 /* No memory available */
#define SOL_EACCES 13 /* Access not allowed */
#define SOL_EFAULT 14 /* Address passed was invalid */
#define SOL_ENOTBLK 15 /* blkdev op on non-block device */
#define SOL_EBUSY 16 /* Mounted device was busy */
#define SOL_EEXIST 17 /* File specified already exists */
#define SOL_EXDEV 18 /* Link request across diff devices */
#define SOL_ENODEV 19 /* Device does not exist on system */
#define SOL_ENOTDIR 20 /* Dir operation on non-directory */
#define SOL_EISDIR 21 /* File was of directory type */
#define SOL_EINVAL 22 /* Argument passed was invalid */
#define SOL_ENFILE 23 /* No more room in file table */
#define SOL_EMFILE 24 /* Proc has too many files open */
#define SOL_ENOTTY 25 /* Ioctl was invalid for req device */
#define SOL_ETXTBSY 26 /* Text file in busy state */
#define SOL_EFBIG 27 /* Too big of a file for operation */
#define SOL_ENOSPC 28 /* Disk is full */
#define SOL_ESPIPE 29 /* Seek attempted on non-seeking dev*/
#define SOL_EROFS 30 /* Write attempted on read-only fs */
#define SOL_EMLINK 31 /* Too many links in file search */
#define SOL_EPIPE 32 /* Call a plumber */
#define SOL_EDOM 33 /* Argument was out of fct domain */
#define SOL_ERANGE 34 /* Could not represent math result */
#define SOL_ENOMSG 35 /* Message of req type doesn't exist */
#define SOL_EIDRM 36 /* Identifier has been removed */
#define SOL_ECHRNG 37 /* Req channel number out of range */
#define SOL_EL2NSYNC 38 /* Could not sync at run level 2 */
#define SOL_EL3HLT 39 /* Halted at run level 3 */
#define SOL_EL3RST 40 /* Reset at run level 3 */
#define SOL_ELNRNG 41 /* Out of range link number */
#define SOL_EUNATCH 42 /* Driver for protocol not attached */
#define SOL_ENOCSI 43 /* CSI structure not around */
#define SOL_EL2HLT 44 /* Halted at run level 2 */
#define SOL_EDEADLK 45 /* Deadlock condition detected */
#define SOL_ENOLCK 46 /* Record locks unavailable */
#define SOL_ECANCELED 47 /* Cancellation of oper. happened */
#define SOL_ENOTSUP 48 /* Attempt of unsupported operation */
#define SOL_EDQUOT 49 /* Users disk quota exceeded */
#define SOL_EBADE 50 /* Invalid exchange */
#define SOL_EBADR 51 /* Request descriptor was invalid */
#define SOL_EXFULL 52 /* Full exchange */
#define SOL_ENOANO 53 /* ano does not exist */
#define SOL_EBADRQC 54 /* Req code was invalid */
#define SOL_EBADSLT 55 /* Bad slot number */
#define SOL_EDEADLOCK 56 /* Deadlock in fs error */
#define SOL_EBFONT 57 /* Font file format invalid */
/* YOW, I LOVE SYSV STREAMS!!!! */
#define SOL_ENOSTR 60 /* Stream-op on non-stream dev */
#define SOL_ENODATA 61 /* No data avail at this time */
#define SOL_ETIME 62 /* Expiration of time occurred */
#define SOL_ENOSR 63 /* Streams resources exhausted */
#define SOL_ENONET 64 /* No network connected */
#define SOL_ENOPKG 65 /* Non-installed package */
#define SOL_EREMOTE 66 /* Object was on remote machine */
#define SOL_ENOLINK 67 /* Cut link */
#define SOL_EADV 68 /* Error in advertise */
#define SOL_ESRMNT 69 /* Some magic srmount problem */
#define SOL_ECOMM 70 /* During send, comm error occurred */
#define SOL_EPROTO 71 /* Protocol botch */
#define SOL_EMULTIHOP 74 /* Multihop attempted */
#define SOL_EBADMSG 77 /* Message was unreadable */
#define SOL_ENAMETOOLONG 78 /* Too long of a path name */
#define SOL_EOVERFLOW 79 /* Data type too small for datum */
#define SOL_ENOTUNIQ 80 /* Logical name was not unique */
#define SOL_EBADFD 81 /* Op cannot be performed on fd */
#define SOL_EREMCHG 82 /* Remote address is now different */
#define SOL_ELIBACC 83 /* Shared lib could not be accessed */
#define SOL_ELIBBAD 84 /* ShLib is corrupted in some way */
#define SOL_ELIBSCN 85 /* A.out ShLib problems */
#define SOL_ELIBMAX 86 /* Exceeded ShLib linkage limit */
#define SOL_ELIBEXEC 87 /* Execution of ShLib attempted */
#define SOL_EILSEQ 88 /* Bad byte sequence found */
#define SOL_ENOSYS 89 /* Invalid filesystem operation */
#define SOL_ELOOP 90 /* Detected loop in symbolic links */
#define SOL_ERESTART 91 /* System call is restartable */
#define SOL_ESTRPIPE 92 /* Do not sleep in head of stream */
#define SOL_ENOTEMPTY 93 /* Rmdir of non-empty directory */
#define SOL_EUSERS 94 /* Over abundance of users for ufs */
#define SOL_ENOTSOCK 95 /* Sock-op on non-sock */
#define SOL_EDESTADDRREQ 96 /* No dest addr given, but needed */
#define SOL_EMSGSIZE 97 /* Msg too big */
#define SOL_EPROTOTYPE 98 /* Bad socket protocol */
#define SOL_ENOPROTOOPT 99 /* Unavailable protocol */
#define SOL_EPROTONOSUPPORT 120 /* Unsupported protocol */
#define SOL_ESOCKTNOSUPPORT 121 /* Unsupported socket type */
#define SOL_EOPNOTSUPP 122 /* Unsupported sock-op */
#define SOL_EPFNOSUPPORT 123 /* Unsupported protocol family */
#define SOL_EAFNOSUPPORT 124 /* Unsup addr family for protocol */
#define SOL_EADDRINUSE 125 /* Req addr is already in use */
#define SOL_EADDRNOTAVAIL 126 /* Req addr not available right now */
#define SOL_ENETDOWN 127 /* Your subnet is on fire */
#define SOL_ENETUNREACH 128 /* Someone playing with gateway and */
/* did not tell you he was going to */
#define SOL_ENETRESET 129 /* Buy less-buggy ethernet cards */
#define SOL_ECONNABORTED 130 /* Aborted connection due to sw */
#define SOL_ECONNRESET 131 /* Your peers reset your connection */
#define SOL_ENOBUFS 132 /* No buffer space available */
#define SOL_EISCONN 133 /* Connect on already connected */
/* socket attempted */
#define SOL_ENOTCONN 134 /* Comm on non-connected socket */
#define SOL_ESHUTDOWN 143 /* Op attempted after sock-shutdown */
#define SOL_ETOOMANYREFS 144 /* Reference limit exceeded */
#define SOL_ETIMEDOUT 145 /* Timed out connection */
#define SOL_ECONNREFUSED 146 /* Connection refused by remote host*/
#define SOL_EHOSTDOWN 147 /* Remote host is up in flames */
#define SOL_EHOSTUNREACH 148 /* Make a left at Easton Ave..... */
#define SOL_EWOULDBLOCK EAGAIN /* Just an alias */
#define SOL_EALREADY 149 /* Operation is already occurring */
#define SOL_EINPROGRESS 150 /* Operation is happening now */
#define SOL_ESTALE 151 /* Fungus growth on NFS file handle */
#endif /* !(_SPARC_SOLERRNO_H) */

View file

@ -1,119 +0,0 @@
/* Solaris/SPARC constants and definitions --
* (C) 1996 Miguel de Icaza
*
* This file is not meant to be included by user level applications
* but the solaris syscall emulator
*/
#ifndef _SPARC_SVR4_H
#define _SPARC_SVR4_H
/* Signals as used by svr4 */
typedef struct { /* signal set type */
ulong sigbits[4];
} svr4_sigset_t;
/* Values for siginfo.code */
#define SVR4_SINOINFO 32767
/* Siginfo, sucker expects bunch of information on those parameters */
typedef union {
char total_size [128];
struct {
int signo;
int code;
int error;
union {
} data;
} siginfo;
} svr4_siginfo_t;
/* Context definition */
/* Location of the user stored registers into a greg_t */
enum {
SVR4_PSR, SVR4_PC, SVR4_NPC, SVR4_Y,
SVR4_G1, SVR4_G2, SVR4_G3, SVR4_G4,
SVR4_G5, SVR4_G6, SVR4_G7, SVR4_O0,
SVR4_O1, SVR4_O2, SVR4_O3, SVR4_O4,
SVR4_O5, SVR4_O6, SVR4_O7
};
/* sizeof (regs) / sizeof (greg_t), defined in the ABI */
#define SVR4_NREGS 19
#define SVR4_MAXWIN 31
typedef struct {
uint rwin_lo[8];
uint rwin_in[8];
} svr4_rwindow_t;
typedef struct {
int count;
int __user *winptr [SVR4_MAXWIN]; /* pointer to the windows */
svr4_rwindow_t win[SVR4_MAXWIN]; /* the windows */
} svr4_gwindows_t;
typedef int svr4_gregset_t[SVR4_NREGS];
typedef struct {
double fpu_regs[32];
void *fp_q;
unsigned fp_fsr;
u_char fp_nqel;
u_char fp_nqsize;
u_char inuse; /* if fpu is in use */
} svr4_fregset_t;
typedef struct {
uint id; /* if this holds "xrs" string => ptr is valid */
caddr_t ptr;
} svr4_xrs_t;
/* Machine dependent context */
typedef struct {
svr4_gregset_t greg; /* registers 0..19 (see top) */
svr4_gwindows_t __user *gwin; /* may point to register windows */
svr4_fregset_t freg; /* floating point registers */
svr4_xrs_t xrs; /* mhm? */
long pad[19];
} svr4_mcontext_t;
/* flags for stack_t.flags */
enum svr4_stack_flags {
SVR4_SS_ONSTACK,
SVR4_SS_DISABLE,
};
/* signal stack exection place, unsupported */
typedef struct svr4_stack_t {
char __user *sp;
int size;
int flags;
} svr4_stack_t;
/* Context used by getcontext and setcontext */
typedef struct svr4_ucontext_t {
u_long flags; /* context flags, indicate what is loaded */
struct svr4_ucontext *link;
svr4_sigset_t sigmask;
svr4_stack_t stack;
svr4_mcontext_t mcontext;
long pad[23];
} svr4_ucontext_t;
/* windows hold the windows as they were at signal time,
* ucontext->mcontext holds a pointer to them.
* addresses for uc and si are passed as parameters to svr4 signal
* handler
*/
/* This is the signal frame that is passed to the signal handler */
typedef struct {
svr4_gwindows_t gw; /* windows */
svr4_ucontext_t uc; /* machine context */
svr4_siginfo_t si; /* siginfo */
} svr4_signal_frame_t;
#define SVR4_SF_ALIGNED (((sizeof (svr4_signal_frame_t) + 7) & (~7)))
#endif /* include control */

View file

@ -33,11 +33,6 @@ struct ltchars {
};
#endif /* __KERNEL__ */
struct sunos_ttysize {
int st_lines; /* Lines on the terminal */
int st_columns; /* Columns on the terminal */
};
struct winsize {
unsigned short ws_row;
unsigned short ws_col;

View file

@ -1,60 +1,6 @@
/* $Id: user.h,v 1.5 1998/02/23 01:49:22 rth Exp $
* asm-sparc/user.h: Core file definitions for the Sparc.
*
* Keep in sync with reg.h. Actually, we could get rid of this
* one, since we won't a.out core dump that much anyways - miguel.
* Copyright (C) 1995 (davem@caip.rutgers.edu)
*/
#ifndef _SPARC_USER_H
#define _SPARC_USER_H
#include <asm/a.out.h>
struct sunos_regs {
unsigned long psr, pc, npc, y;
unsigned long regs[15];
};
struct sunos_fpqueue {
unsigned long *addr;
unsigned long inst;
};
struct sunos_fp {
union {
unsigned long regs[32];
double reg_dbls[16];
} fregs;
unsigned long fsr;
unsigned long flags;
unsigned long extra;
unsigned long fpq_count;
struct sunos_fpqueue fpq[16];
};
struct sunos_fpu {
struct sunos_fp fpstatus;
};
/* The SunOS core file header layout. */
struct user {
unsigned long magic;
unsigned long len;
struct sunos_regs regs;
struct exec uexec;
int signal;
size_t u_tsize; /* all of these in bytes! */
size_t u_dsize;
size_t u_ssize;
char u_comm[17];
struct sunos_fpu fpu;
unsigned long sigcode; /* Special sigcontext subcode, if any */
};
#define NBPG 0x2000
#define UPAGES 1
#define HOST_TEXT_START_ADDR (u.start_code)
#define HOST_DATA_START_ADDR (u.uexec.a_data)
#define HOST_STACK_END_ADDR (- u.u_ssize * NBPG)
#define SUNOS_CORE_MAGIC 0x080456
/* Nothing to define. */
#endif /* !(_SPARC_USER_H) */