1// Copyright 2015 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
5package runtime
6
7const _PAGESIZE = 0x1000
8
9type ureg struct {
10	r0   uint32 /* general registers */
11	r1   uint32 /* ... */
12	r2   uint32 /* ... */
13	r3   uint32 /* ... */
14	r4   uint32 /* ... */
15	r5   uint32 /* ... */
16	r6   uint32 /* ... */
17	r7   uint32 /* ... */
18	r8   uint32 /* ... */
19	r9   uint32 /* ... */
20	r10  uint32 /* ... */
21	r11  uint32 /* ... */
22	r12  uint32 /* ... */
23	sp   uint32
24	link uint32 /* ... */
25	trap uint32 /* trap type */
26	psr  uint32
27	pc   uint32 /* interrupted addr */
28}
29
30type sigctxt struct {
31	u *ureg
32}
33
34//go:nosplit
35//go:nowritebarrierrec
36func (c *sigctxt) pc() uintptr { return uintptr(c.u.pc) }
37
38func (c *sigctxt) sp() uintptr { return uintptr(c.u.sp) }
39func (c *sigctxt) lr() uintptr { return uintptr(c.u.link) }
40
41func (c *sigctxt) setpc(x uintptr)  { c.u.pc = uint32(x) }
42func (c *sigctxt) setsp(x uintptr)  { c.u.sp = uint32(x) }
43func (c *sigctxt) setlr(x uintptr)  { c.u.link = uint32(x) }
44func (c *sigctxt) savelr(x uintptr) { c.u.r0 = uint32(x) }
45
46func dumpregs(u *ureg) {
47	print("r0    ", hex(u.r0), "\n")
48	print("r1    ", hex(u.r1), "\n")
49	print("r2    ", hex(u.r2), "\n")
50	print("r3    ", hex(u.r3), "\n")
51	print("r4    ", hex(u.r4), "\n")
52	print("r5    ", hex(u.r5), "\n")
53	print("r6    ", hex(u.r6), "\n")
54	print("r7    ", hex(u.r7), "\n")
55	print("r8    ", hex(u.r8), "\n")
56	print("r9    ", hex(u.r9), "\n")
57	print("r10   ", hex(u.r10), "\n")
58	print("r11   ", hex(u.r11), "\n")
59	print("r12   ", hex(u.r12), "\n")
60	print("sp    ", hex(u.sp), "\n")
61	print("link  ", hex(u.link), "\n")
62	print("pc    ", hex(u.pc), "\n")
63	print("psr   ", hex(u.psr), "\n")
64}
65
66func sigpanictramp()
67