diff options
author | kstailey <kstailey@cvs.openbsd.org> | 1999-09-12 14:15:18 +0000 |
---|---|---|
committer | kstailey <kstailey@cvs.openbsd.org> | 1999-09-12 14:15:18 +0000 |
commit | 4bd103c4353ae5c84c7366c63e8dc83c82437cdc (patch) | |
tree | f892dd5dcb3b772c932c6d8b6bce9c6b0fa6ac0b /sys/arch/alpha/include | |
parent | 3ce2c3853e88f4a74866322d7fcc5f644595f04c (diff) |
Add COMPAT_NETBSD. Currently only works for ELF64. Many missing system calls.
Diffstat (limited to 'sys/arch/alpha/include')
-rw-r--r-- | sys/arch/alpha/include/netbsd_machdep.h | 164 |
1 files changed, 164 insertions, 0 deletions
diff --git a/sys/arch/alpha/include/netbsd_machdep.h b/sys/arch/alpha/include/netbsd_machdep.h new file mode 100644 index 00000000000..c338e2642d1 --- /dev/null +++ b/sys/arch/alpha/include/netbsd_machdep.h @@ -0,0 +1,164 @@ +/* $NetBSD: freebsd_machdep.h,v 1.1 1995/10/10 01:22:35 mycroft Exp $ */ + +/* + * Copyright (c) 1986, 1989, 1991, 1993 + * The Regents of the University of California. All rights reserved. + * + * This code is derived from software contributed to Berkeley by + * William Jolitz. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the University of + * California, Berkeley and its contributors. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * from: @(#)signal.h 8.1 (Berkeley) 6/11/93 + * from: Id: signal.h,v 1.4 1994/08/21 04:55:30 paul Exp + * + * from: @(#)frame.h 5.2 (Berkeley) 1/18/91 + * from: Id: frame.h,v 1.10 1995/03/16 18:11:42 bde Exp + */ +#ifndef _FREEBSD_MACHDEP_H +#define _FREEBSD_MACHDEP_H + +/* + * signal support + */ + +struct freebsd_sigcontext { + int sc_onstack; /* sigstack state to restore */ + int sc_mask; /* signal mask to restore */ + int sc_esp; /* machine state */ + int sc_ebp; + int sc_isp; + int sc_eip; + int sc_eflags; + int sc_es; + int sc_ds; + int sc_cs; + int sc_ss; + int sc_edi; + int sc_esi; + int sc_ebx; + int sc_edx; + int sc_ecx; + int sc_eax; +}; + +struct freebsd_sigframe { + int sf_signum; + int sf_code; + struct freebsd_sigcontext *sf_scp; + char *sf_addr; + sig_t sf_handler; + struct freebsd_sigcontext sf_sc; +}; + +/* + * freebsd_ptrace(2) support + */ + +#define FREEBSD_USRSTACK 0xefbfe000 /* USRSTACK */ +#define FREEBSD_U_AR0_OFFSET 0x0000045c /* offsetof(struct user, u_ar0) */ +#define FREEBSD_U_SAVEFP_OFFSET 0x00000070 + /* offsetof(struct user, u_pcb) + offsetof(struct pcb, pcb_savefpu) */ + +/* Exception/Trap Stack Frame */ +struct freebsd_trapframe { + int tf_es; + int tf_ds; + int tf_edi; + int tf_esi; + int tf_ebp; + int tf_isp; + int tf_ebx; + int tf_edx; + int tf_ecx; + int tf_eax; + int tf_trapno; + /* below portion defined in 386 hardware */ + int tf_err; + int tf_eip; + int tf_cs; + int tf_eflags; + /* below only when transitting rings (e.g. user to kernel) */ + int tf_esp; + int tf_ss; +}; + +/* Environment information of floating point unit */ +struct freebsd_env87 { + long en_cw; /* control word (16bits) */ + long en_sw; /* status word (16bits) */ + long en_tw; /* tag word (16bits) */ + long en_fip; /* floating point instruction pointer */ + u_short en_fcs; /* floating code segment selector */ + u_short en_opcode; /* opcode last executed (11 bits ) */ + long en_foo; /* floating operand offset */ + long en_fos; /* floating operand segment selector */ +}; + +/* Contents of each floating point accumulator */ +struct freebsd_fpacc87 { +#ifdef dontdef /* too unportable */ + u_long fp_mantlo; /* mantissa low (31:0) */ + u_long fp_manthi; /* mantissa high (63:32) */ + int fp_exp:15; /* exponent */ + int fp_sgn:1; /* mantissa sign */ +#else + u_char fp_bytes[10]; +#endif +}; + +/* Floating point context */ +struct freebsd_save87 { + struct freebsd_env87 sv_env; /* floating point control/status */ + struct freebsd_fpacc87 sv_ac[8]; /* accumulator contents, 0-7 */ + u_long sv_ex_sw; /* status word for last exception */ + /* + * Bogus padding for emulators. Emulators should use their own + * struct and arrange to store into this struct (ending here) + * before it is inspected for ptracing or for core dumps. Some + * emulators overwrite the whole struct. We have no good way of + * knowing how much padding to leave. Leave just enough for the + * GPL emulator's i387_union (176 bytes total). + */ + u_char sv_pad[64]; /* padding; used by emulators */ +}; + +struct freebsd_ptrace_reg { + struct freebsd_trapframe freebsd_ptrace_regs; + struct freebsd_save87 freebsd_ptrace_fpregs; +}; + +/* sys/i386/include/exec.h */ +#define FREEBSD___LDPGSZ 4096 + +#ifdef _KERNEL +void freebsd_sendsig __P((sig_t, int, int, u_long, int, union sigval)); +#endif + +#endif /* _FREEBSD_MACHDEP_H */ |