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