|
|
1.1 root 1: #ifndef __COMMON__GREGSET_H__
2: #define __COMMON__GREGSET_H__
3:
4: /*
5: * This file defines a "register set" type along the lines of the "gregset_t"
6: * type defined for the process file-system in System V, Release 4. This
7: * subsumes the function of the <sys/reg.h> header in the iBCS2 specification,
8: * which describes the layout of data on the signal stack and also within the
9: * kernel (in Coherent, via the "u.u_regl" pointer, and in SCO via "u.u_ar0")
10: * in terms of an array of "int".
11: *
12: * This file defines the structure layout; an incomplete type declaration is
13: * present in another file for use by code that has no need to know the
14: * internal structure of such items.
15: */
16:
17: #include <common/__types.h>
18: #include <common/gregset.h>
19:
20: union _gregset {
21: /*
22: * Frame for i386 task.
23: */
24: struct {
25: /*
26: * Pushed by the trap handler.
27: */
28: __ushort_t _gs;
29: __ushort_t _pad1;
30: __ushort_t _fs;
31: __ushort_t _pad2;
32: __ushort_t _es;
33: __ushort_t _pad3;
34: __ushort_t _ds;
35: __ushort_t _pad4;
36: /*
37: * Pushed by the trap handler with a "pusha" intruction.
38: */
39: __ulong_t _edi;
40: __ulong_t _esi;
41: __ulong_t _ebp;
42: __ulong_t _esp;
43: __ulong_t _ebx;
44: __ulong_t _edx;
45: __ulong_t _ecx;
46: __ulong_t _eax;
47: /*
48: * Created by the i386 when handling exceptions, or by the
49: * trap code when handling software/hardware interrupts.
50: */
51: __ulong_t _trapno;
52: __ulong_t _err;
53: /*
54: * General i386 inter-level interrupt return frame.
55: */
56: __ulong_t _eip;
57: __ushort_t _cs;
58: __ushort_t _pad5;
59: __ulong_t _eflags;
60: __ulong_t _uesp;
61: __ushort_t _ss;
62: __ushort_t _pad6;
63: } _i386;
64: /*
65: * Frame for i286 task, created from the same code as above but with
66: * only the low 16 bits of general registers containing valid data.
67: */
68: struct {
69: /*
70: * Pushed by the trap handler.
71: */
72: __ushort_t _gs;
73: __ushort_t _pad1;
74: __ushort_t _fs;
75: __ushort_t _pad2;
76: __ushort_t _es;
77: __ushort_t _pad3;
78: __ushort_t _ds;
79: __ushort_t _pad4;
80: /*
81: * Pushed by the trap handler with a "pusha" intruction.
82: */
83: __ushort_t _di;
84: __ushort_t _pad6;
85: __ushort_t _si;
86: __ushort_t _pad7;
87: __ushort_t _bp;
88: __ushort_t _pad8;
89: __ulong_t _esp; /* kernel %esp */
90: __ushort_t _bx;
91: __ushort_t _pad9;
92: __ushort_t _dx;
93: __ushort_t _pad10;
94: __ushort_t _cx;
95: __ushort_t _pad11;
96: __ushort_t _ax;
97: __ushort_t _pad12;
98: /*
99: * Created by the i386 when handling exceptions, or by the
100: * trap code when handling software/hardware interrupts.
101: */
102: __ulong_t _trapno;
103: __ulong_t _err;
104: /*
105: * General i386 inter-level interrupt return frame.
106: */
107: __ushort_t _ip;
108: __ushort_t _pad13;
109: __ushort_t _cs;
110: __ushort_t _pad14;
111: __ushort_t _flags;
112: __ushort_t _pad15;
113: __ushort_t _usp;
114: __ushort_t _pad16;
115: __ushort_t _ss;
116: __ushort_t _pad17;
117: } _i286;
118: };
119:
120: #endif /* ! defined (__COMMON__GREGSET_H__) */
121:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.