home *** CD-ROM | disk | FTP | other *** search
/ OpenStep 4.2J (Developer) / os42jdev.iso / NextDeveloper / Source / GNU / cctools / include / mach / hppa / thread_status.h
Encoding:
C/C++ Source or Header  |  1993-10-21  |  5.2 KB  |  180 lines

  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_ */
  180.