|
|
1.1 ! root 1: /* ! 2: * @HP_COPYRIGHT@ ! 3: */ ! 4: /* ! 5: * HISTORY ! 6: * $Log: thread_status.h,v $ ! 7: * Revision 1.4.3.2 1992/01/09 20:05:31 sharpe ! 8: * initial 1.1 vers from 1.0 ! 9: * [1992/01/09 19:29:20 sharpe] ! 10: * ! 11: * Revision 1.4 1991/07/03 17:25:42 osfrcs ! 12: * 06/19/90 rand Add THREAD_STATE_FLAVOR_LIST to getstatus ! 13: * [91/06/21 17:29:52 brezak] ! 14: * ! 15: * Revision 1.3.2.2 91/06/21 18:05:17 brezak ! 16: * 06/19/90 rand Add THREAD_STATE_FLAVOR_LIST to getstatus ! 17: * [91/06/21 17:29:52 brezak] ! 18: * ! 19: * Revision 1.2.2.2 91/04/30 09:48:00 brezak ! 20: * rand 04/19/91 Add options to control reflection of assist/unalign exceptions ! 21: * [91/04/29 11:46:12 brezak] ! 22: * ! 23: * Revision 1.2 91/04/14 20:47:10 osfrcs ! 24: * Initial version. ! 25: * [91/03/30 09:32:42 brezak] ! 26: * ! 27: * $EndLog$ ! 28: */ ! 29: ! 30: #ifndef _HPPA_THREAD_STATE_ ! 31: #define _HPPA_THREAD_STATE_ ! 32: ! 33: #include <mach/machine/boolean.h> ! 34: ! 35: ! 36: #define HPPA_INTEGER_THREAD_STATE 1 ! 37: #define HPPA_FRAME_THREAD_STATE 2 ! 38: #define HPPA_FP_THREAD_STATE 3 ! 39: ! 40: /* ! 41: * Flow control information that can ! 42: * be changed from user state (with ! 43: * some restrictions on psw). ! 44: */ ! 45: struct hp_pa_frame_thread_state { ! 46: unsigned long ts_pcsq_front; /* instruction address space front */ ! 47: unsigned long ts_pcsq_back; /* instruction address space back */ ! 48: unsigned long ts_pcoq_front; /* instruction offset space front */ ! 49: unsigned long ts_pcoq_back; /* instruction offset space back */ ! 50: unsigned long ts_psw; /* process status word */ ! 51: unsigned long ts_unaligned_faults; /* number of unaligned data references READ-ONLY */ ! 52: unsigned long ts_fault_address; /* address of failing page fault READ-ONLY */ ! 53: /* ! 54: * A step range is a range of address that ! 55: * will be executed with out generating a single ! 56: * step event. If both values are 0 no stepping ! 57: * will occur. Otherwise the program will run while: ! 58: * ! 59: * if (step_range_start <= step_range_stop) ! 60: * pcoq0 >= step_range_start && pcoq0 < step_range_stop ! 61: * if (step_range_start > step_range_stop) ! 62: * pcoq0 < step_range_stop && pcoq0 >= step_range_start ! 63: * ! 64: * notice that setting step_range_start and step_range_stop to the ! 65: * same non-zero value will execute only one instruction due to action ! 66: * of the pc queue. (Yes, nullified instructions count) ! 67: */ ! 68: unsigned long ts_step_range_start; ! 69: unsigned long ts_step_range_stop; ! 70: ! 71: /* Generate an exception when OS assists with an alignment fault */ ! 72: boolean_t ts_alignment_trap_reflect; ! 73: ! 74: /* Generate an exception when OS assists with an FP fault */ ! 75: boolean_t ts_execution_trap_reflect; ! 76: }; ! 77: ! 78: /* ! 79: * Get rid of as soon as all users of frame_thread_state ! 80: * have been recompiled. XXX ! 81: */ ! 82: struct hp_pa_old_frame_thread_state { ! 83: unsigned long ts_pcsq_front; /* instruction address space front */ ! 84: unsigned long ts_pcsq_back; /* instruction address space back */ ! 85: unsigned long ts_pcoq_front; /* instruction offset space front */ ! 86: unsigned long ts_pcoq_back; /* instruction offset space back */ ! 87: unsigned long ts_psw; /* process status word */ ! 88: }; ! 89: ! 90: /* ! 91: * The unsigned longeger state that may be changed by any ! 92: * process in user space. ! 93: */ ! 94: typedef struct hp_pa_integer_thread_state { ! 95: unsigned long ts_gr1; /* the user's general registers */ ! 96: unsigned long ts_gr2; ! 97: unsigned long ts_gr3; ! 98: unsigned long ts_gr4; ! 99: unsigned long ts_gr5; ! 100: unsigned long ts_gr6; ! 101: unsigned long ts_gr7; ! 102: unsigned long ts_gr8; ! 103: unsigned long ts_gr9; ! 104: unsigned long ts_gr10; ! 105: unsigned long ts_gr11; ! 106: unsigned long ts_gr12; ! 107: unsigned long ts_gr13; ! 108: unsigned long ts_gr14; ! 109: unsigned long ts_gr15; ! 110: unsigned long ts_gr16; ! 111: unsigned long ts_gr17; ! 112: unsigned long ts_gr18; ! 113: unsigned long ts_gr19; ! 114: unsigned long ts_gr20; ! 115: unsigned long ts_gr21; ! 116: unsigned long ts_gr22; ! 117: unsigned long ts_gr23; ! 118: unsigned long ts_gr24; ! 119: unsigned long ts_gr25; ! 120: unsigned long ts_gr26; ! 121: unsigned long ts_gr27; ! 122: unsigned long ts_gr28; ! 123: unsigned long ts_gr29; ! 124: unsigned long ts_gr30; ! 125: unsigned long ts_gr31; ! 126: unsigned long ts_sr0; /* the user's space registgers */ ! 127: unsigned long ts_sr1; ! 128: unsigned long ts_sr2; ! 129: unsigned long ts_sr3; ! 130: unsigned long ts_sar; /* the user's shift amount register */ ! 131: } hp_pa_integer_thread_state_t; ! 132: ! 133: /* ! 134: * The floating point state that may be changed by any ! 135: * process in user space. ! 136: */ ! 137: typedef struct hp_pa_fp_thread_state { ! 138: double ts_fp0; /* all of the execution unit registers */ ! 139: double ts_fp1; ! 140: double ts_fp2; ! 141: double ts_fp3; ! 142: double ts_fp4; ! 143: double ts_fp5; ! 144: double ts_fp6; ! 145: double ts_fp7; ! 146: double ts_fp8; ! 147: double ts_fp9; ! 148: double ts_fp10; ! 149: double ts_fp11; ! 150: double ts_fp12; ! 151: double ts_fp13; ! 152: double ts_fp14; ! 153: double ts_fp15; ! 154: double ts_fp16; ! 155: double ts_fp17; ! 156: double ts_fp18; ! 157: double ts_fp19; ! 158: double ts_fp20; ! 159: double ts_fp21; ! 160: double ts_fp22; ! 161: double ts_fp23; ! 162: double ts_fp24; ! 163: double ts_fp25; ! 164: double ts_fp26; ! 165: double ts_fp27; ! 166: double ts_fp28; ! 167: double ts_fp29; ! 168: double ts_fp30; ! 169: double ts_fp31; ! 170: } hp_pa_fp_thread_state_t; ! 171: ! 172: #define HPPA_INTEGER_THREAD_STATE_COUNT (sizeof(struct hp_pa_integer_thread_state) / sizeof(unsigned long)) ! 173: #define HPPA_FRAME_THREAD_STATE_COUNT (sizeof(struct hp_pa_frame_thread_state) / sizeof(unsigned long)) ! 174: #define HPPA_FP_THREAD_STATE_COUNT (sizeof(struct hp_pa_fp_thread_state) / sizeof(unsigned long)) ! 175: ! 176: /* Get rid of as soon as all users of thread_frame_state have been recompiled XXX */ ! 177: #define HPPA_OLD_FRAME_THREAD_STATE_COUNT (sizeof(struct hp_pa_old_frame_thread_state) / sizeof(unsigned long)) ! 178: ! 179: #endif /* _HPPA_THREAD_STATE_ */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.