netbsd32_machdep.h revision 1.22 1 1.22 kamil /* $NetBSD: netbsd32_machdep.h,v 1.22 2017/02/23 03:34:22 kamil 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.22 kamil struct dbreg32 {
118 1.22 kamil int dr[8];
119 1.22 kamil };
120 1.22 kamil
121 1.21 maxv struct x86_get_ldt_args32 {
122 1.21 maxv int32_t start;
123 1.21 maxv uint32_t desc;
124 1.21 maxv int32_t num;
125 1.21 maxv };
126 1.21 maxv
127 1.21 maxv struct x86_set_ldt_args32 {
128 1.21 maxv int32_t start;
129 1.21 maxv uint32_t desc;
130 1.21 maxv int32_t num;
131 1.21 maxv };
132 1.21 maxv
133 1.1 fvdl struct mtrr32 {
134 1.1 fvdl uint64_t base;
135 1.1 fvdl uint64_t len;
136 1.1 fvdl uint8_t type;
137 1.1 fvdl uint8_t __pad0[3];
138 1.1 fvdl int flags;
139 1.1 fvdl uint32_t owner;
140 1.15 perry } __packed;
141 1.1 fvdl
142 1.1 fvdl struct x86_64_get_mtrr_args32 {
143 1.1 fvdl uint32_t mtrrp;
144 1.1 fvdl uint32_t n;
145 1.1 fvdl };
146 1.1 fvdl
147 1.1 fvdl struct x86_64_set_mtrr_args32 {
148 1.1 fvdl uint32_t mtrrp;
149 1.1 fvdl uint32_t n;
150 1.1 fvdl };
151 1.1 fvdl
152 1.5 drochner #define NETBSD32_MID_MACHINE MID_I386
153 1.5 drochner
154 1.9 cube int netbsd32_process_read_regs(struct lwp *, struct reg32 *);
155 1.18 dsl int netbsd32_process_read_fpregs(struct lwp *, struct fpreg32 *, size_t *);
156 1.22 kamil int netbsd32_process_read_dbregs(struct lwp *, struct dbreg32 *, size_t *);
157 1.9 cube
158 1.20 skrll int netbsd32_process_write_regs(struct lwp *, const struct reg32 *);
159 1.20 skrll int netbsd32_process_write_fpregs(struct lwp *, const struct fpreg32 *, size_t);
160 1.22 kamil int netbsd32_process_write_dbregs(struct lwp *, const struct dbreg32 *, size_t);
161 1.20 skrll
162 1.1 fvdl #endif /* _MACHINE_NETBSD32_H_ */
163