1 1.1 fvdl /* $NetBSD: netbsd32_machdep.h,v 1.1 2003/04/26 18:39:45 fvdl 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.1 fvdl typedef u_int32_t netbsd32_pointer_t; 7 1.1 fvdl #define NETBSD32PTR64(p32) ((void *)(u_long)(u_int)(p32)) 8 1.1 fvdl 9 1.1 fvdl typedef netbsd32_pointer_t netbsd32_sigcontextp_t; 10 1.1 fvdl 11 1.1 fvdl struct netbsd32_sigcontext13 { 12 1.1 fvdl int sc_gs; 13 1.1 fvdl int sc_fs; 14 1.1 fvdl int sc_es; 15 1.1 fvdl int sc_ds; 16 1.1 fvdl int sc_edi; 17 1.1 fvdl int sc_esi; 18 1.1 fvdl int sc_ebp; 19 1.1 fvdl int sc_ebx; 20 1.1 fvdl int sc_edx; 21 1.1 fvdl int sc_ecx; 22 1.1 fvdl int sc_eax; 23 1.1 fvdl /* XXX */ 24 1.1 fvdl int sc_eip; 25 1.1 fvdl int sc_cs; 26 1.1 fvdl int sc_eflags; 27 1.1 fvdl int sc_esp; 28 1.1 fvdl int sc_ss; 29 1.1 fvdl 30 1.1 fvdl int sc_onstack; /* sigstack state to restore */ 31 1.1 fvdl int sc_mask; /* signal mask to restore (old style) */ 32 1.1 fvdl 33 1.1 fvdl int sc_trapno; /* XXX should be above */ 34 1.1 fvdl int sc_err; 35 1.1 fvdl }; 36 1.1 fvdl 37 1.1 fvdl struct netbsd32_sigcontext { 38 1.1 fvdl int sc_gs; 39 1.1 fvdl int sc_fs; 40 1.1 fvdl int sc_es; 41 1.1 fvdl int sc_ds; 42 1.1 fvdl int sc_edi; 43 1.1 fvdl int sc_esi; 44 1.1 fvdl int sc_ebp; 45 1.1 fvdl int sc_ebx; 46 1.1 fvdl int sc_edx; 47 1.1 fvdl int sc_ecx; 48 1.1 fvdl int sc_eax; 49 1.1 fvdl /* XXX */ 50 1.1 fvdl int sc_eip; 51 1.1 fvdl int sc_cs; 52 1.1 fvdl int sc_eflags; 53 1.1 fvdl int sc_esp; 54 1.1 fvdl int sc_ss; 55 1.1 fvdl 56 1.1 fvdl int sc_onstack; /* sigstack state to restore */ 57 1.1 fvdl int __sc_mask13; /* signal mask to restore (old style) */ 58 1.1 fvdl 59 1.1 fvdl int sc_trapno; /* XXX should be above */ 60 1.1 fvdl int sc_err; 61 1.1 fvdl 62 1.1 fvdl sigset_t sc_mask; /* signal mask to restore (new style) */ 63 1.1 fvdl }; 64 1.1 fvdl 65 1.1 fvdl #define sc_sp sc_esp 66 1.1 fvdl #define sc_fp sc_ebp 67 1.1 fvdl #define sc_pc sc_eip 68 1.1 fvdl #define sc_ps sc_eflags 69 1.1 fvdl 70 1.1 fvdl struct netbsd32_sigframe { 71 1.1 fvdl uint32_t sf_ra; 72 1.1 fvdl int sf_signum; 73 1.1 fvdl int sf_code; 74 1.1 fvdl uint32_t sf_scp; 75 1.1 fvdl struct netbsd32_sigcontext sf_sc; 76 1.1 fvdl }; 77 1.1 fvdl 78 1.1 fvdl struct reg32 { 79 1.1 fvdl int r_eax; 80 1.1 fvdl int r_ecx; 81 1.1 fvdl int r_edx; 82 1.1 fvdl int r_ebx; 83 1.1 fvdl int r_esp; 84 1.1 fvdl int r_ebp; 85 1.1 fvdl int r_esi; 86 1.1 fvdl int r_edi; 87 1.1 fvdl int r_eip; 88 1.1 fvdl int r_eflags; 89 1.1 fvdl int r_cs; 90 1.1 fvdl int r_ss; 91 1.1 fvdl int r_ds; 92 1.1 fvdl int r_es; 93 1.1 fvdl int r_fs; 94 1.1 fvdl int r_gs; 95 1.1 fvdl }; 96 1.1 fvdl 97 1.1 fvdl struct fpreg32 { 98 1.1 fvdl char __data[108]; 99 1.1 fvdl }; 100 1.1 fvdl 101 1.1 fvdl struct mtrr32 { 102 1.1 fvdl uint64_t base; 103 1.1 fvdl uint64_t len; 104 1.1 fvdl uint8_t type; 105 1.1 fvdl uint8_t __pad0[3]; 106 1.1 fvdl int flags; 107 1.1 fvdl uint32_t owner; 108 1.1 fvdl } __attribute__((packed)); 109 1.1 fvdl 110 1.1 fvdl struct x86_64_get_mtrr_args32 { 111 1.1 fvdl uint32_t mtrrp; 112 1.1 fvdl uint32_t n; 113 1.1 fvdl }; 114 1.1 fvdl 115 1.1 fvdl struct x86_64_set_mtrr_args32 { 116 1.1 fvdl uint32_t mtrrp; 117 1.1 fvdl uint32_t n; 118 1.1 fvdl }; 119 1.1 fvdl 120 1.1 fvdl struct exec_package; 121 1.1 fvdl void netbsd32_setregs(struct lwp *l, struct exec_package *pack, u_long stack); 122 1.1 fvdl int netbsd32_sigreturn(struct lwp *l, void *v, register_t *retval); 123 1.1 fvdl void netbsd32_sendsig(int sig, sigset_t *mask, u_long code); 124 1.1 fvdl 125 1.1 fvdl extern char netbsd32_sigcode[], netbsd32_esigcode[]; 126 1.1 fvdl 127 1.1 fvdl #endif /* _MACHINE_NETBSD32_H_ */ 128