blob: 8c0d6d8b98fdcc373bae98699e44078ca0232538 [file] [log] [blame]
Dan Willemsen09eb3b12015-09-16 14:34:17 -07001// created by cgo -cdefs and then converted to Go
2// cgo -cdefs defs_windows.go
3
4package runtime
5
6const (
7 _PROT_NONE = 0
8 _PROT_READ = 1
9 _PROT_WRITE = 2
10 _PROT_EXEC = 4
11
12 _MAP_ANON = 1
13 _MAP_PRIVATE = 2
14
15 _DUPLICATE_SAME_ACCESS = 0x2
16 _THREAD_PRIORITY_HIGHEST = 0x2
17
18 _SIGINT = 0x2
19 _CTRL_C_EVENT = 0x0
20 _CTRL_BREAK_EVENT = 0x1
21
22 _CONTEXT_CONTROL = 0x10001
23 _CONTEXT_FULL = 0x10007
24
25 _EXCEPTION_ACCESS_VIOLATION = 0xc0000005
26 _EXCEPTION_BREAKPOINT = 0x80000003
27 _EXCEPTION_FLT_DENORMAL_OPERAND = 0xc000008d
28 _EXCEPTION_FLT_DIVIDE_BY_ZERO = 0xc000008e
29 _EXCEPTION_FLT_INEXACT_RESULT = 0xc000008f
30 _EXCEPTION_FLT_OVERFLOW = 0xc0000091
31 _EXCEPTION_FLT_UNDERFLOW = 0xc0000093
32 _EXCEPTION_INT_DIVIDE_BY_ZERO = 0xc0000094
33 _EXCEPTION_INT_OVERFLOW = 0xc0000095
34
35 _INFINITE = 0xffffffff
36 _WAIT_TIMEOUT = 0x102
37
38 _EXCEPTION_CONTINUE_EXECUTION = -0x1
39 _EXCEPTION_CONTINUE_SEARCH = 0x0
40)
41
42type systeminfo struct {
43 anon0 [4]byte
44 dwpagesize uint32
45 lpminimumapplicationaddress *byte
46 lpmaximumapplicationaddress *byte
47 dwactiveprocessormask uint32
48 dwnumberofprocessors uint32
49 dwprocessortype uint32
50 dwallocationgranularity uint32
51 wprocessorlevel uint16
52 wprocessorrevision uint16
53}
54
55type exceptionrecord struct {
56 exceptioncode uint32
57 exceptionflags uint32
58 exceptionrecord *exceptionrecord
59 exceptionaddress *byte
60 numberparameters uint32
61 exceptioninformation [15]uint32
62}
63
64type floatingsavearea struct {
65 controlword uint32
66 statusword uint32
67 tagword uint32
68 erroroffset uint32
69 errorselector uint32
70 dataoffset uint32
71 dataselector uint32
72 registerarea [80]uint8
73 cr0npxstate uint32
74}
75
76type context struct {
77 contextflags uint32
78 dr0 uint32
79 dr1 uint32
80 dr2 uint32
81 dr3 uint32
82 dr6 uint32
83 dr7 uint32
84 floatsave floatingsavearea
85 seggs uint32
86 segfs uint32
87 seges uint32
88 segds uint32
89 edi uint32
90 esi uint32
91 ebx uint32
92 edx uint32
93 ecx uint32
94 eax uint32
95 ebp uint32
96 eip uint32
97 segcs uint32
98 eflags uint32
99 esp uint32
100 segss uint32
101 extendedregisters [512]uint8
102}
103
104func (c *context) ip() uintptr { return uintptr(c.eip) }
105func (c *context) sp() uintptr { return uintptr(c.esp) }
106
Colin Crossd9c6b802019-03-19 21:10:31 -0700107// 386 does not have link register, so this returns 0.
108func (c *context) lr() uintptr { return 0 }
109func (c *context) set_lr(x uintptr) {}
110
111func (c *context) set_ip(x uintptr) { c.eip = uint32(x) }
112func (c *context) set_sp(x uintptr) { c.esp = uint32(x) }
Dan Willemsen09eb3b12015-09-16 14:34:17 -0700113
114func dumpregs(r *context) {
115 print("eax ", hex(r.eax), "\n")
116 print("ebx ", hex(r.ebx), "\n")
117 print("ecx ", hex(r.ecx), "\n")
118 print("edx ", hex(r.edx), "\n")
119 print("edi ", hex(r.edi), "\n")
120 print("esi ", hex(r.esi), "\n")
121 print("ebp ", hex(r.ebp), "\n")
122 print("esp ", hex(r.esp), "\n")
123 print("eip ", hex(r.eip), "\n")
124 print("eflags ", hex(r.eflags), "\n")
125 print("cs ", hex(r.segcs), "\n")
126 print("fs ", hex(r.segfs), "\n")
127 print("gs ", hex(r.seggs), "\n")
128}
129
130type overlapped struct {
131 internal uint32
132 internalhigh uint32
133 anon0 [8]byte
134 hevent *byte
135}
Dan Willemsenc7413322018-08-27 23:21:26 -0700136
137type memoryBasicInformation struct {
138 baseAddress uintptr
139 allocationBase uintptr
140 allocationProtect uint32
141 regionSize uintptr
142 state uint32
143 protect uint32
144 type_ uint32
145}