github.com/twelsh-aw/go/src@v0.0.0-20230516233729-a56fe86a7c81/runtime/defs_windows_amd64.go (about) 1 // Copyright 2009 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package runtime 6 7 const _CONTEXT_CONTROL = 0x100001 8 9 type m128a struct { 10 low uint64 11 high int64 12 } 13 14 type context struct { 15 p1home uint64 16 p2home uint64 17 p3home uint64 18 p4home uint64 19 p5home uint64 20 p6home uint64 21 contextflags uint32 22 mxcsr uint32 23 segcs uint16 24 segds uint16 25 seges uint16 26 segfs uint16 27 seggs uint16 28 segss uint16 29 eflags uint32 30 dr0 uint64 31 dr1 uint64 32 dr2 uint64 33 dr3 uint64 34 dr6 uint64 35 dr7 uint64 36 rax uint64 37 rcx uint64 38 rdx uint64 39 rbx uint64 40 rsp uint64 41 rbp uint64 42 rsi uint64 43 rdi uint64 44 r8 uint64 45 r9 uint64 46 r10 uint64 47 r11 uint64 48 r12 uint64 49 r13 uint64 50 r14 uint64 51 r15 uint64 52 rip uint64 53 anon0 [512]byte 54 vectorregister [26]m128a 55 vectorcontrol uint64 56 debugcontrol uint64 57 lastbranchtorip uint64 58 lastbranchfromrip uint64 59 lastexceptiontorip uint64 60 lastexceptionfromrip uint64 61 } 62 63 func (c *context) ip() uintptr { return uintptr(c.rip) } 64 func (c *context) sp() uintptr { return uintptr(c.rsp) } 65 66 // AMD64 does not have link register, so this returns 0. 67 func (c *context) lr() uintptr { return 0 } 68 func (c *context) set_lr(x uintptr) {} 69 70 func (c *context) set_ip(x uintptr) { c.rip = uint64(x) } 71 func (c *context) set_sp(x uintptr) { c.rsp = uint64(x) } 72 func (c *context) set_fp(x uintptr) { c.rbp = uint64(x) } 73 74 func prepareContextForSigResume(c *context) { 75 c.r8 = c.rsp 76 c.r9 = c.rip 77 } 78 79 func dumpregs(r *context) { 80 print("rax ", hex(r.rax), "\n") 81 print("rbx ", hex(r.rbx), "\n") 82 print("rcx ", hex(r.rcx), "\n") 83 print("rdi ", hex(r.rdi), "\n") 84 print("rsi ", hex(r.rsi), "\n") 85 print("rbp ", hex(r.rbp), "\n") 86 print("rsp ", hex(r.rsp), "\n") 87 print("r8 ", hex(r.r8), "\n") 88 print("r9 ", hex(r.r9), "\n") 89 print("r10 ", hex(r.r10), "\n") 90 print("r11 ", hex(r.r11), "\n") 91 print("r12 ", hex(r.r12), "\n") 92 print("r13 ", hex(r.r13), "\n") 93 print("r14 ", hex(r.r14), "\n") 94 print("r15 ", hex(r.r15), "\n") 95 print("rip ", hex(r.rip), "\n") 96 print("rflags ", hex(r.eflags), "\n") 97 print("cs ", hex(r.segcs), "\n") 98 print("fs ", hex(r.segfs), "\n") 99 print("gs ", hex(r.seggs), "\n") 100 }