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