Home | History | Annotate | Line # | Download | only in include
netbsd32_machdep.h revision 1.15.6.1
      1  1.15.6.1       mjf /*	$NetBSD: netbsd32_machdep.h,v 1.15.6.1 2009/01/17 13:27:49 mjf Exp $	*/
      2       1.1      fvdl 
      3       1.1      fvdl #ifndef _MACHINE_NETBSD32_H_
      4       1.1      fvdl #define _MACHINE_NETBSD32_H_
      5       1.1      fvdl 
      6       1.4      fvdl #include <sys/ucontext.h>
      7       1.6       chs #include <compat/sys/ucontext.h>
      8       1.7       chs #include <compat/sys/siginfo.h>
      9       1.4      fvdl 
     10      1.12       dsl #define NETBSD32_POINTER_TYPE uint32_t
     11      1.12       dsl typedef	struct { NETBSD32_POINTER_TYPE i32; } netbsd32_pointer_t;
     12       1.1      fvdl 
     13      1.13       dsl /* i386 has 32bit aligned 64bit integers */
     14      1.13       dsl #define NETBSD32_INT64_ALIGN __attribute__((__aligned__(4)))
     15      1.13       dsl 
     16       1.1      fvdl typedef netbsd32_pointer_t netbsd32_sigcontextp_t;
     17       1.1      fvdl 
     18       1.1      fvdl struct netbsd32_sigcontext13 {
     19       1.4      fvdl 	uint32_t	sc_gs;
     20       1.4      fvdl 	uint32_t	sc_fs;
     21       1.4      fvdl 	uint32_t	sc_es;
     22       1.4      fvdl 	uint32_t	sc_ds;
     23       1.4      fvdl 	uint32_t	sc_edi;
     24       1.4      fvdl 	uint32_t	sc_esi;
     25       1.4      fvdl 	uint32_t	sc_ebp;
     26       1.4      fvdl 	uint32_t	sc_ebx;
     27       1.4      fvdl 	uint32_t	sc_edx;
     28       1.4      fvdl 	uint32_t	sc_ecx;
     29       1.4      fvdl 	uint32_t	sc_eax;
     30       1.1      fvdl 	/* XXX */
     31       1.4      fvdl 	uint32_t	sc_eip;
     32       1.4      fvdl 	uint32_t	sc_cs;
     33       1.4      fvdl 	uint32_t	sc_eflags;
     34       1.4      fvdl 	uint32_t	sc_esp;
     35       1.4      fvdl 	uint32_t	sc_ss;
     36       1.1      fvdl 
     37       1.4      fvdl 	uint32_t	sc_onstack;	/* sigstack state to restore */
     38       1.4      fvdl 	uint32_t	sc_mask;	/* signal mask to restore (old style) */
     39       1.1      fvdl 
     40       1.4      fvdl 	uint32_t	sc_trapno;	/* XXX should be above */
     41       1.4      fvdl 	uint32_t	sc_err;
     42       1.1      fvdl };
     43       1.1      fvdl 
     44       1.1      fvdl struct netbsd32_sigcontext {
     45       1.4      fvdl 	uint32_t	sc_gs;
     46       1.4      fvdl 	uint32_t	sc_fs;
     47       1.4      fvdl 	uint32_t	sc_es;
     48       1.4      fvdl 	uint32_t	sc_ds;
     49       1.4      fvdl 	uint32_t	sc_edi;
     50       1.4      fvdl 	uint32_t	sc_esi;
     51       1.4      fvdl 	uint32_t	sc_ebp;
     52       1.4      fvdl 	uint32_t	sc_ebx;
     53       1.4      fvdl 	uint32_t	sc_edx;
     54       1.4      fvdl 	uint32_t	sc_ecx;
     55       1.4      fvdl 	uint32_t	sc_eax;
     56       1.1      fvdl 	/* XXX */
     57       1.4      fvdl 	uint32_t	sc_eip;
     58       1.4      fvdl 	uint32_t	sc_cs;
     59       1.4      fvdl 	uint32_t	sc_eflags;
     60       1.4      fvdl 	uint32_t	sc_esp;
     61       1.4      fvdl 	uint32_t	sc_ss;
     62       1.1      fvdl 
     63       1.4      fvdl 	uint32_t	sc_onstack;	/* sigstack state to restore */
     64       1.4      fvdl 	uint32_t	__sc_mask13;	/* signal mask to restore (old style) */
     65       1.1      fvdl 
     66       1.4      fvdl 	uint32_t	sc_trapno;	/* XXX should be above */
     67       1.4      fvdl 	uint32_t	sc_err;
     68       1.1      fvdl 
     69       1.1      fvdl 	sigset_t sc_mask;		/* signal mask to restore (new style) */
     70       1.1      fvdl };
     71       1.1      fvdl 
     72       1.1      fvdl #define sc_sp sc_esp
     73       1.1      fvdl #define sc_fp sc_ebp
     74       1.1      fvdl #define sc_pc sc_eip
     75       1.1      fvdl #define sc_ps sc_eflags
     76       1.1      fvdl 
     77       1.4      fvdl struct netbsd32_sigframe_sigcontext {
     78       1.4      fvdl 	uint32_t	sf_ra;
     79       1.4      fvdl 	int32_t		sf_signum;
     80       1.4      fvdl 	int32_t		sf_code;
     81       1.4      fvdl 	uint32_t	sf_scp;
     82       1.4      fvdl 	struct netbsd32_sigcontext sf_sc;
     83       1.4      fvdl };
     84       1.4      fvdl 
     85       1.4      fvdl struct netbsd32_sigframe_siginfo {
     86       1.4      fvdl 	uint32_t	sf_ra;
     87       1.4      fvdl 	int32_t		sf_signum;
     88       1.4      fvdl 	uint32_t	sf_sip;
     89       1.4      fvdl 	uint32_t	sf_ucp;
     90       1.4      fvdl 	siginfo32_t	sf_si;
     91       1.4      fvdl 	ucontext32_t	sf_uc;
     92       1.1      fvdl };
     93       1.1      fvdl 
     94       1.1      fvdl struct reg32 {
     95       1.1      fvdl 	int	r_eax;
     96       1.1      fvdl 	int	r_ecx;
     97       1.1      fvdl 	int	r_edx;
     98       1.1      fvdl 	int	r_ebx;
     99       1.1      fvdl 	int	r_esp;
    100       1.1      fvdl 	int	r_ebp;
    101       1.1      fvdl 	int	r_esi;
    102       1.1      fvdl 	int	r_edi;
    103       1.1      fvdl 	int	r_eip;
    104       1.1      fvdl 	int	r_eflags;
    105       1.1      fvdl 	int	r_cs;
    106       1.1      fvdl 	int	r_ss;
    107       1.1      fvdl 	int	r_ds;
    108       1.1      fvdl 	int	r_es;
    109       1.1      fvdl 	int	r_fs;
    110       1.1      fvdl 	int	r_gs;
    111       1.1      fvdl };
    112       1.1      fvdl 
    113       1.1      fvdl struct fpreg32 {
    114       1.1      fvdl 	char	__data[108];
    115       1.1      fvdl };
    116       1.1      fvdl 
    117       1.1      fvdl struct mtrr32 {
    118       1.1      fvdl 	uint64_t base;
    119       1.1      fvdl 	uint64_t len;
    120       1.1      fvdl 	uint8_t type;
    121       1.1      fvdl 	uint8_t __pad0[3];
    122       1.1      fvdl 	int flags;
    123       1.1      fvdl 	uint32_t owner;
    124      1.15     perry } __packed;
    125       1.1      fvdl 
    126       1.1      fvdl struct x86_64_get_mtrr_args32 {
    127       1.1      fvdl 	uint32_t mtrrp;
    128       1.1      fvdl 	uint32_t n;
    129       1.1      fvdl };
    130       1.1      fvdl 
    131       1.1      fvdl struct x86_64_set_mtrr_args32 {
    132       1.1      fvdl 	uint32_t mtrrp;
    133       1.1      fvdl 	uint32_t n;
    134       1.1      fvdl };
    135       1.1      fvdl 
    136  1.15.6.1       mjf struct netbsd32_saframe {
    137  1.15.6.1       mjf 	int			sa_ra;
    138  1.15.6.1       mjf 	int			sa_type;
    139  1.15.6.1       mjf 	netbsd32_pointer_t	sa_sas;
    140  1.15.6.1       mjf 	int			sa_events;
    141  1.15.6.1       mjf 	int			sa_interrupted;
    142  1.15.6.1       mjf 	netbsd32_pointer_t	sa_arg;
    143  1.15.6.1       mjf };
    144  1.15.6.1       mjf 
    145       1.9      cube struct env87 {
    146       1.9      cube 	int32_t		en_cw;
    147       1.9      cube 	int32_t		en_sw;
    148       1.9      cube 	int32_t		en_tw;
    149       1.9      cube 	int32_t		en_fip;
    150       1.9      cube 	uint16_t	en_fcs;
    151       1.9      cube 	uint16_t	en_opcode;
    152       1.9      cube 	int32_t		en_foo;
    153       1.9      cube 	int32_t		en_fos;
    154      1.15     perry } __packed;
    155       1.9      cube 
    156       1.9      cube struct fpacc87 {
    157       1.9      cube 	uint8_t 	fp_bytes[10];
    158      1.15     perry } __packed;
    159       1.9      cube 
    160       1.9      cube struct save87 {
    161       1.9      cube 	struct env87	sv_env;
    162       1.9      cube 	struct fpacc87	sv_ac[8];
    163       1.9      cube 	int32_t		sv_ex_sw;
    164       1.9      cube 	int32_t		sv_ex_tw;
    165       1.9      cube 	uint8_t		sv_pad[8 * 2 - 2 * 4];
    166      1.15     perry } __packed;
    167       1.9      cube 
    168       1.5  drochner #define NETBSD32_MID_MACHINE MID_I386
    169       1.5  drochner 
    170       1.9      cube int netbsd32_process_read_regs(struct lwp *, struct reg32 *);
    171       1.9      cube int netbsd32_process_read_fpregs(struct lwp *, struct fpreg32 *);
    172       1.9      cube 
    173       1.1      fvdl #endif /* _MACHINE_NETBSD32_H_ */
    174