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