|
|
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.