| // Copyright 2015 The Go Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style | |
| // license that can be found in the LICENSE file. | |
| package runtime | |
| const _PAGESIZE = 0x1000 | |
| type ureg struct { | |
| r0 uint32 /* general registers */ | |
| r1 uint32 /* ... */ | |
| r2 uint32 /* ... */ | |
| r3 uint32 /* ... */ | |
| r4 uint32 /* ... */ | |
| r5 uint32 /* ... */ | |
| r6 uint32 /* ... */ | |
| r7 uint32 /* ... */ | |
| r8 uint32 /* ... */ | |
| r9 uint32 /* ... */ | |
| r10 uint32 /* ... */ | |
| r11 uint32 /* ... */ | |
| r12 uint32 /* ... */ | |
| sp uint32 | |
| link uint32 /* ... */ | |
| trap uint32 /* trap type */ | |
| psr uint32 | |
| pc uint32 /* interrupted addr */ | |
| } | |
| type sigctxt struct { | |
| u *ureg | |
| } | |
| //go:nosplit | |
| //go:nowritebarrierrec | |
| func (c *sigctxt) pc() uintptr { return uintptr(c.u.pc) } | |
| func (c *sigctxt) sp() uintptr { return uintptr(c.u.sp) } | |
| func (c *sigctxt) lr() uintptr { return uintptr(c.u.link) } | |
| func (c *sigctxt) setpc(x uintptr) { c.u.pc = uint32(x) } | |
| func (c *sigctxt) setsp(x uintptr) { c.u.sp = uint32(x) } | |
| func (c *sigctxt) setlr(x uintptr) { c.u.link = uint32(x) } | |
| func (c *sigctxt) savelr(x uintptr) { c.u.r0 = uint32(x) } | |
| func dumpregs(u *ureg) { | |
| print("r0 ", hex(u.r0), "\n") | |
| print("r1 ", hex(u.r1), "\n") | |
| print("r2 ", hex(u.r2), "\n") | |
| print("r3 ", hex(u.r3), "\n") | |
| print("r4 ", hex(u.r4), "\n") | |
| print("r5 ", hex(u.r5), "\n") | |
| print("r6 ", hex(u.r6), "\n") | |
| print("r7 ", hex(u.r7), "\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("sp ", hex(u.sp), "\n") | |
| print("link ", hex(u.link), "\n") | |
| print("pc ", hex(u.pc), "\n") | |
| print("psr ", hex(u.psr), "\n") | |
| } | |
| func sigpanictramp() |