Home | History | Annotate | Download | only in runtime
      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 
      5 package runtime
      6 
      7 const _PAGESIZE = 0x1000
      8 
      9 type 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 
     30 type sigctxt struct {
     31 	u *ureg
     32 }
     33 
     34 //go:nosplit
     35 //go:nowritebarrierrec
     36 func (c *sigctxt) pc() uintptr { return uintptr(c.u.pc) }
     37 
     38 func (c *sigctxt) sp() uintptr { return uintptr(c.u.sp) }
     39 func (c *sigctxt) lr() uintptr { return uintptr(c.u.link) }
     40 
     41 func (c *sigctxt) setpc(x uintptr)  { c.u.pc = uint32(x) }
     42 func (c *sigctxt) setsp(x uintptr)  { c.u.sp = uint32(x) }
     43 func (c *sigctxt) setlr(x uintptr)  { c.u.link = uint32(x) }
     44 func (c *sigctxt) savelr(x uintptr) { c.u.r0 = uint32(x) }
     45 
     46 func 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 
     66 func sigpanictramp()
     67