home *** CD-ROM | disk | FTP | other *** search
/ NeXTSTEP 3.2 (Developer) / NS_dev_3.2.iso / NextDeveloper / Headers / bsd / m68k / reg.h < prev    next >
C/C++ Source or Header  |  1993-10-19  |  4KB  |  204 lines

  1. /* 
  2.  * HISTORY
  3.  * 09-Nov-86  John Seamons (jks) at NeXT
  4.  *    Ported to NeXT.
  5.  */ 
  6.  
  7. #ifndef _M68K_REG_
  8. #define _M68K_REG_
  9.  
  10. /*
  11.  * processor exception frame definitions
  12.  */
  13.  
  14. /* format codes */
  15. #define EF_NORMAL4    0x0
  16. #define    EF_THROWAWAY    0x1
  17. #define    EF_NORMAL6    0x2
  18. #define    EF_FLOATPT    0x3    /* 040 only */
  19. #define    EF_ACCESS    0x7    /* 040 only */
  20. #define    EF_COPROC    0x9    /* 030 only */
  21. #define    EF_SHORTBUS    0xa    /* 030 only */
  22. #define    EF_LONGBUS    0xb    /* 030 only */
  23.  
  24. #ifndef ASSEMBLER
  25. struct excp_frame {
  26.     short        e_sr;
  27.     int        e_pc;
  28.     unsigned short    e_format : 4,
  29.             e_vector : 12;
  30. };
  31.  
  32. struct special_status {
  33.     unsigned short    ss_faultc    : 1,
  34.             ss_faultb    : 1,
  35.             ss_rerunc    : 1,
  36.             ss_rerunb    : 1,
  37.                     : 3,
  38.             ss_faultrerund    : 1,
  39.             ss_rmw        : 1,
  40.             ss_read        : 1,
  41.             ss_cyclesize    : 2,
  42.                     : 1,
  43.             ss_fcode    : 3;
  44. };
  45.  
  46. #define    e_faultc    e_ss.ss_faultc
  47. #define    e_faultb    e_ss.ss_faultb
  48. #define    e_rerunc    e_ss.ss_rerunc
  49. #define    e_rerunb    e_ss.ss_rerunb
  50. #define    e_faultd    e_ss.ss_faultrerund
  51. #define    e_rerund    e_ss.ss_faultrerund
  52. #define    e_rmw        e_ss.ss_rmw
  53. #define    e_read        e_ss.ss_read
  54. #define    e_cyclesize    e_ss.ss_cyclesize
  55. #define    e_fcode        e_ss.ss_fcode
  56. #endif    ASSEMBLER
  57.  
  58. /* bit fields as masks */
  59. #define    SS_FAULTC    0x8000
  60. #define    SS_FAULTB    0x4000
  61. #define    SS_FAULTD    0x0100
  62. #define    SS_READ        0x0040
  63. #define    SS_FCODE    0x0007
  64.  
  65. #ifndef    ASSEMBLER
  66. struct special_status_040 {
  67.     unsigned short    ss_cp    : 1,
  68.             ss_cu    : 1,
  69.             ss_ct    : 1,
  70.             ss_cm    : 1,
  71.             ss_ma    : 1,
  72.             ss_atc    : 1,
  73.             ss_lk    : 1,
  74.             ss_rw    : 1,
  75.                 : 1,
  76.             ss_size    : 2,
  77.             ss_tt    : 2,
  78.             ss_tm    : 3;
  79. };
  80.  
  81. #define    e_cp        e_ss.ss_cp
  82. #define    e_cu        e_ss.ss_cu
  83. #define    e_ct        e_ss.ss_ct
  84. #define    e_cm        e_ss.ss_cm
  85. #define    e_ma        e_ss.ss_ma
  86. #define    e_atc        e_ss.ss_atc
  87. #define    e_lk        e_ss.ss_lk
  88. #define    e_rw        e_ss.ss_rw
  89. #define    e_size        e_ss.ss_size
  90. #define    e_tt        e_ss.ss_tt
  91. #define    e_tm        e_ss.ss_tm
  92. #endif    ASSEMBLER
  93.  
  94. /* bit fields as masks */
  95. #define    SS_CP        0x8000
  96. #define    SS_CU        0x4000
  97. #define    SS_CT        0x2000
  98. #define    SS_CM        0x1000
  99. #define    SS_MA        0x0800
  100. #define    SS_ATC        0x0400
  101. #define    SS_LK        0x0200
  102. #define    SS_RW        0x0100
  103. #define    SS_SIZE        0x0060
  104. #define    SS_TT        0x0018
  105. #define    SS_TM        0x0007
  106.  
  107. #ifndef    ASSEMBLER
  108. struct writeback_status {
  109.     unsigned short    : 8,
  110.         wbs_v    : 1,
  111.         wbs_size    : 2,
  112.         wbs_tt    : 2,
  113.         wbs_tm    : 3;
  114. };
  115.  
  116. struct excp_normal6 {
  117.     int    e_ia;
  118. };
  119.  
  120. struct excp_coproc {
  121.     int    e_ia;
  122.     short    e_internal;
  123.     short    e_op;
  124.     int    e_effaddr;
  125. };
  126.  
  127. struct excp_floatpt {
  128.     int    e_effaddr;
  129. };
  130.  
  131. struct excp_access {
  132.     int    e_effaddr;
  133.     struct    special_status_040 e_ss;
  134.     struct    writeback_status e_wb3s, e_wb2s, e_wb1s;
  135.     int    e_faultaddr;
  136.     int    e_wb3a, e_wb3d;
  137.     int    e_wb2a, e_wb2d;
  138.     int    e_wb1a, e_wb1d_pd0;
  139.      int    e_pd1, e_pd2, e_pd3;
  140. };
  141.  
  142. struct excp_shortbus {
  143.     short    e_internal1;
  144.     struct    special_status e_ss;
  145.     short    e_ipipec;
  146.     short    e_ipipeb;
  147.     int    e_faultaddr;
  148.     short    e_internal2[2];
  149.     int    e_dob;
  150.     short    e_internal3[2];
  151. };
  152.  
  153. struct excp_longbus {
  154.     short    e_internal1;
  155.     struct    special_status e_ss;
  156.     short    e_ipipec;
  157.     short    e_ipipeb;
  158.     int    e_faultaddr;
  159.     short    e_internal2[2];
  160.     int    e_dob;
  161.     short    e_internal3[4];
  162.     int    e_stagebaddr;
  163.     short    e_internal4[2];
  164.     int    e_dib;
  165.     short    e_internal5[22];
  166. };
  167.  
  168. struct regs {
  169.     int    r_dreg[8];
  170. #define    r_d0    r_dreg[0]
  171.     int    r_areg[8];
  172. #define    r_fp    r_areg[6]
  173. #define    r_sp    r_areg[7]    /* system sp saved after switch to SR_SUPER */
  174. #if MONITOR
  175.     int    r_usp;        /* user sp */
  176.     int    r_isp;
  177.     int    r_msp;
  178.     int    r_sfc, r_dfc;
  179.     int    r_vbr;
  180.     int    r_caar, r_cacr;
  181.     int    r_crph, r_crpl;
  182.     int    r_srph, r_srpl;
  183.     int    r_tc;
  184.     int    r_tt0, r_tt1;
  185.     int    r_ts;
  186. #endif MONITOR
  187.     struct    excp_frame r_evec;
  188. #define    r_sr        r_evec.e_sr
  189. #define    r_pc        r_evec.e_pc
  190. #define    r_format    r_evec.e_format
  191. #define    r_vector    r_evec.e_vector
  192. };
  193.  
  194. /* offset definitions into u.u_ar0 for machine independent code */
  195. #define    R0    0
  196. #define    R1    1
  197. #define    SP    15
  198. #define    PS    16
  199. #define    PCH    16
  200. #define    PCL    17
  201. #endif ASSEMBLER
  202.  
  203. #endif _M68K_REG_
  204.