blob: 220169d2803cc9354a6f5a0da330e5dea11f1334 [file] [log] [blame]
Russ Cox580ef3e2014-11-11 17:07:37 -05001package runtime
2
David du Colombiere9c57d82014-11-21 19:39:01 +01003const _PAGESIZE = 0x1000
4
Russ Cox580ef3e2014-11-11 17:07:37 -05005type ureg struct {
6 di uint32 /* general registers */
7 si uint32 /* ... */
8 bp uint32 /* ... */
9 nsp uint32
10 bx uint32 /* ... */
11 dx uint32 /* ... */
12 cx uint32 /* ... */
13 ax uint32 /* ... */
14 gs uint32 /* data segments */
15 fs uint32 /* ... */
16 es uint32 /* ... */
17 ds uint32 /* ... */
18 trap uint32 /* trap _type */
19 ecode uint32 /* error code (or zero) */
20 pc uint32 /* pc */
21 cs uint32 /* old context */
22 flags uint32 /* old flags */
23 sp uint32
24 ss uint32 /* old stack segment */
25}
Anthony Martin3d032d72014-12-18 05:05:44 -080026
27type sigctxt struct {
28 u *ureg
29}
30
Ian Lance Taylord03e8b22016-10-04 07:11:55 -070031//go:nosplit
32//go:nowritebarrierrec
Anthony Martin3d032d72014-12-18 05:05:44 -080033func (c *sigctxt) pc() uintptr { return uintptr(c.u.pc) }
Ian Lance Taylord03e8b22016-10-04 07:11:55 -070034
Anthony Martin3d032d72014-12-18 05:05:44 -080035func (c *sigctxt) sp() uintptr { return uintptr(c.u.sp) }
Richard Millerd1454562016-01-27 18:43:36 +000036func (c *sigctxt) lr() uintptr { return uintptr(0) }
Anthony Martin3d032d72014-12-18 05:05:44 -080037
38func (c *sigctxt) setpc(x uintptr) { c.u.pc = uint32(x) }
39func (c *sigctxt) setsp(x uintptr) { c.u.sp = uint32(x) }
Richard Millerd1454562016-01-27 18:43:36 +000040func (c *sigctxt) setlr(x uintptr) {}
41
42func (c *sigctxt) savelr(x uintptr) {}
Anthony Martin3d032d72014-12-18 05:05:44 -080043
44func dumpregs(u *ureg) {
45 print("ax ", hex(u.ax), "\n")
46 print("bx ", hex(u.bx), "\n")
47 print("cx ", hex(u.cx), "\n")
48 print("dx ", hex(u.dx), "\n")
49 print("di ", hex(u.di), "\n")
50 print("si ", hex(u.si), "\n")
51 print("bp ", hex(u.bp), "\n")
52 print("sp ", hex(u.sp), "\n")
53 print("pc ", hex(u.pc), "\n")
54 print("flags ", hex(u.flags), "\n")
55 print("cs ", hex(u.cs), "\n")
56 print("fs ", hex(u.fs), "\n")
57 print("gs ", hex(u.gs), "\n")
58}
Richard Millerd1454562016-01-27 18:43:36 +000059
60func sigpanictramp() {}