home *** CD-ROM | disk | FTP | other *** search
/ NeXTSTEP 3.0 / NeXTSTEP3.0.iso / NextDeveloper / Headers / mach / m68k / thread_status.h < prev    next >
Text File  |  1992-07-29  |  2KB  |  73 lines

  1. /* 
  2.  * Copyright (c) 1987, 1988 NeXT, Inc.
  3.  *
  4.  * HISTORY
  5.  * 15-May-91  Gregg Kellogg (gk) at NeXT
  6.  *    Use m68k_saved_state instead of NeXT_saved_state.
  7.  *    Use m68k_thread_state_regs NeXT_regs.
  8.  *    Use m68k_thread_state_68882 NeXT_thread_state_68882.
  9.  *    Use m68k_thread_state_user_reg NeXT_thread_state_user_reg.
  10.  *    Moved m68k_saved_state and USER_REGS to pcb.h.
  11.  *
  12.  */ 
  13.  
  14. #ifndef    _MACH_M68K_THREAD_STATUS_
  15. #define    _MACH_M68K_THREAD_STATUS_
  16.  
  17. /*
  18.  *    m68k_thread_state_regs    this is the structure that is exported
  19.  *                to user threads for use in set/get status
  20.  *                calls.  This structure should never
  21.  *                change.
  22.  *
  23.  *    m68k_thread_state_68882    this structure is exported t&Crer threads
  24.  *                to allow the to set/get 68882 floating
  25.  *                pointer register state.
  26.  *
  27.  *    m68k_saved_state    this structure corresponds to the state
  28.  *                of the user registers as saved on the
  29.  *                stack upon kernel entry.  This structure
  30.  *                is used internally only.  Since this
  31.  *                structure may change from version to
  32.  *                version, it is hidden from the user.
  33.  */
  34.  
  35. #define    M68K_THREAD_STATE_REGS    (1)    /* normal registers */
  36. #define M68K_THREAD_STATE_68882    (2)    /* 68882 registers */
  37. #define M68K_THREAD_STATE_USER_REG (3)    /* additional user register */
  38.  
  39. #define M68K_THREAD_STATE_MAXFLAVOR (3)
  40.  
  41. struct m68k_thread_state_regs {
  42.     int    dreg[8];    /* data registers */
  43.     int    areg[8];    /* address registers (incl stack pointer) */
  44.     short    pad0;        /* not used */
  45.     short    sr;        /* user's status register */
  46.     int    pc;        /* user's program counter */
  47. };
  48.  
  49. #define    M68K_THREAD_STATE_REGS_COUNT \
  50.     (sizeof (struct m68k_thread_state_regs) / sizeof (int))
  51.  
  52. struct m68k_thread_state_68882 {
  53.     struct {
  54.         int    fp[3];        /* 96-bit extended format */
  55.     } regs[8];
  56.     int    cr;            /* control */
  57.     int    sr;            /* status */
  58.     int    iar;            /* instruction address */
  59.     int    state;            /* execution state */
  60. };
  61.  
  62. #define    M68K_THREAD_STATE_68882_COUNT \
  63.     (sizeof (struct m68k_thread_state_68882) / sizeof (int))
  64.  
  65. struct m68k_thread_state_user_reg {
  66.     int    user_reg;        /* user register (used by cthreads) */
  67. };
  68.  
  69. #define M68K_THREAD_STATE_USER_REG_COUNT \
  70.     (sizeof (struct m68k_thread_state_user_reg) / sizeof (int))
  71.  
  72. #endif    _MACH_M68K_THREAD_STATUS_
  73.