1
0
mirror of https://github.com/golang/go synced 2024-10-04 11:21:21 -06:00
go/src/runtime/defs_plan9_amd64.go
Richard Miller d145456b16 runtime: signal handling support for plan9_arm
Plan 9 trap/signal handling differs on ARM from other architectures
because ARM has a link register.  Also trap message syntax varies
between different architectures (historical accident?).
Revised 7 March to clarify a comment.

Change-Id: Ib6485f82857a2f9a0d6b2c375cf0aaa230b83656
Reviewed-on: https://go-review.googlesource.com/18969
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2016-03-07 16:25:17 +00:00

75 lines
1.6 KiB
Go

package runtime
const _PAGESIZE = 0x1000
type ureg struct {
ax uint64
bx uint64
cx uint64
dx uint64
si uint64
di uint64
bp uint64
r8 uint64
r9 uint64
r10 uint64
r11 uint64
r12 uint64
r13 uint64
r14 uint64
r15 uint64
ds uint16
es uint16
fs uint16
gs uint16
_type uint64
error uint64 /* error code (or zero) */
ip uint64 /* pc */
cs uint64 /* old context */
flags uint64 /* old flags */
sp uint64 /* sp */
ss uint64 /* old stack segment */
}
type sigctxt struct {
u *ureg
}
func (c *sigctxt) pc() uintptr { return uintptr(c.u.ip) }
func (c *sigctxt) sp() uintptr { return uintptr(c.u.sp) }
func (c *sigctxt) lr() uintptr { return uintptr(0) }
func (c *sigctxt) setpc(x uintptr) { c.u.ip = uint64(x) }
func (c *sigctxt) setsp(x uintptr) { c.u.sp = uint64(x) }
func (c *sigctxt) setlr(x uintptr) {}
func (c *sigctxt) savelr(x uintptr) {}
func dumpregs(u *ureg) {
print("ax ", hex(u.ax), "\n")
print("bx ", hex(u.bx), "\n")
print("cx ", hex(u.cx), "\n")
print("dx ", hex(u.dx), "\n")
print("di ", hex(u.di), "\n")
print("si ", hex(u.si), "\n")
print("bp ", hex(u.bp), "\n")
print("sp ", hex(u.sp), "\n")
print("r8 ", hex(u.r8), "\n")
print("r9 ", hex(u.r9), "\n")
print("r10 ", hex(u.r10), "\n")
print("r11 ", hex(u.r11), "\n")
print("r12 ", hex(u.r12), "\n")
print("r13 ", hex(u.r13), "\n")
print("r14 ", hex(u.r14), "\n")
print("r15 ", hex(u.r15), "\n")
print("ip ", hex(u.ip), "\n")
print("flags ", hex(u.flags), "\n")
print("cs ", hex(u.cs), "\n")
print("fs ", hex(u.fs), "\n")
print("gs ", hex(u.gs), "\n")
}
func sigpanictramp() {}