Source file
src/runtime/signal_openbsd_arm64.go
1
2
3
4
5 package runtime
6
7 import "unsafe"
8
9 type sigctxt struct {
10 info *siginfo
11 ctxt unsafe.Pointer
12 }
13
14
15
16 func (c *sigctxt) regs() *sigcontext {
17 return (*sigcontext)(c.ctxt)
18 }
19
20 func (c *sigctxt) r0() uint64 { return (uint64)(c.regs().sc_x[0]) }
21 func (c *sigctxt) r1() uint64 { return (uint64)(c.regs().sc_x[1]) }
22 func (c *sigctxt) r2() uint64 { return (uint64)(c.regs().sc_x[2]) }
23 func (c *sigctxt) r3() uint64 { return (uint64)(c.regs().sc_x[3]) }
24 func (c *sigctxt) r4() uint64 { return (uint64)(c.regs().sc_x[4]) }
25 func (c *sigctxt) r5() uint64 { return (uint64)(c.regs().sc_x[5]) }
26 func (c *sigctxt) r6() uint64 { return (uint64)(c.regs().sc_x[6]) }
27 func (c *sigctxt) r7() uint64 { return (uint64)(c.regs().sc_x[7]) }
28 func (c *sigctxt) r8() uint64 { return (uint64)(c.regs().sc_x[8]) }
29 func (c *sigctxt) r9() uint64 { return (uint64)(c.regs().sc_x[9]) }
30 func (c *sigctxt) r10() uint64 { return (uint64)(c.regs().sc_x[10]) }
31 func (c *sigctxt) r11() uint64 { return (uint64)(c.regs().sc_x[11]) }
32 func (c *sigctxt) r12() uint64 { return (uint64)(c.regs().sc_x[12]) }
33 func (c *sigctxt) r13() uint64 { return (uint64)(c.regs().sc_x[13]) }
34 func (c *sigctxt) r14() uint64 { return (uint64)(c.regs().sc_x[14]) }
35 func (c *sigctxt) r15() uint64 { return (uint64)(c.regs().sc_x[15]) }
36 func (c *sigctxt) r16() uint64 { return (uint64)(c.regs().sc_x[16]) }
37 func (c *sigctxt) r17() uint64 { return (uint64)(c.regs().sc_x[17]) }
38 func (c *sigctxt) r18() uint64 { return (uint64)(c.regs().sc_x[18]) }
39 func (c *sigctxt) r19() uint64 { return (uint64)(c.regs().sc_x[19]) }
40 func (c *sigctxt) r20() uint64 { return (uint64)(c.regs().sc_x[20]) }
41 func (c *sigctxt) r21() uint64 { return (uint64)(c.regs().sc_x[21]) }
42 func (c *sigctxt) r22() uint64 { return (uint64)(c.regs().sc_x[22]) }
43 func (c *sigctxt) r23() uint64 { return (uint64)(c.regs().sc_x[23]) }
44 func (c *sigctxt) r24() uint64 { return (uint64)(c.regs().sc_x[24]) }
45 func (c *sigctxt) r25() uint64 { return (uint64)(c.regs().sc_x[25]) }
46 func (c *sigctxt) r26() uint64 { return (uint64)(c.regs().sc_x[26]) }
47 func (c *sigctxt) r27() uint64 { return (uint64)(c.regs().sc_x[27]) }
48 func (c *sigctxt) r28() uint64 { return (uint64)(c.regs().sc_x[28]) }
49 func (c *sigctxt) r29() uint64 { return (uint64)(c.regs().sc_x[29]) }
50 func (c *sigctxt) lr() uint64 { return (uint64)(c.regs().sc_lr) }
51 func (c *sigctxt) sp() uint64 { return (uint64)(c.regs().sc_sp) }
52
53
54
55 func (c *sigctxt) rip() uint64 { return (uint64)(c.regs().sc_lr) }
56
57 func (c *sigctxt) fault() uintptr { return uintptr(c.sigaddr()) }
58 func (c *sigctxt) sigcode() uint64 { return uint64(c.info.si_code) }
59 func (c *sigctxt) sigaddr() uint64 {
60 return *(*uint64)(add(unsafe.Pointer(c.info), 16))
61 }
62
63
64
65 func (c *sigctxt) pc() uint64 { return uint64(c.regs().sc_elr) }
66
67 func (c *sigctxt) set_pc(x uint64) { c.regs().sc_elr = uintptr(x) }
68 func (c *sigctxt) set_sp(x uint64) { c.regs().sc_sp = uintptr(x) }
69 func (c *sigctxt) set_lr(x uint64) { c.regs().sc_lr = uintptr(x) }
70 func (c *sigctxt) set_r28(x uint64) { c.regs().sc_x[28] = uintptr(x) }
71
72 func (c *sigctxt) set_sigcode(x uint64) { c.info.si_code = int32(x) }
73 func (c *sigctxt) set_sigaddr(x uint64) {
74 *(*uint64)(add(unsafe.Pointer(c.info), 16)) = x
75 }
76
View as plain text