home *** CD-ROM | disk | FTP | other *** search
/ OpenStep (Enterprise) / OpenStepENTCD.toast / OEDEV / DEV.Z / desc.h < prev    next >
Text File  |  1996-09-08  |  2KB  |  124 lines

  1. /*
  2.  * Copyright (c) 1992 NeXT Computer, Inc.
  3.  *
  4.  * Intel386 Family:    Segment descriptors.
  5.  *
  6.  * HISTORY
  7.  *
  8.  * 29 March 1992 David E. Bohman at NeXT
  9.  *    Created.
  10.  */
  11.  
  12. /*
  13.  * Code segment descriptor.
  14.  */
  15.  
  16. typedef struct code_desc {
  17.     unsigned short    limit00;
  18.     unsigned short    base00;
  19.     unsigned char    base16;
  20.     unsigned char    type    :5,
  21. #define DESC_CODE_EXEC    0x18
  22. #define DESC_CODE_READ    0x1a
  23.             dpl    :2,
  24.             present    :1;
  25.     unsigned char    limit16    :4,
  26.                 :2,
  27.             opsz    :1,
  28. #define DESC_CODE_16B    0
  29. #define DESC_CODE_32B    1
  30.             granular:1;
  31. #define DESC_GRAN_BYTE    0
  32. #define DESC_GRAN_PAGE    1
  33.     unsigned char    base24;
  34. } code_desc_t;
  35.  
  36. /*
  37.  * Data segment descriptor.
  38.  */
  39.  
  40. typedef struct data_desc {
  41.     unsigned short    limit00;
  42.     unsigned short    base00;
  43.     unsigned char    base16;
  44.     unsigned char    type    :5,
  45. #define DESC_DATA_RONLY    0x10
  46. #define DESC_DATA_WRITE    0x12
  47.             dpl    :2,
  48.             present    :1;
  49.     unsigned char    limit16    :4,
  50.                 :2,
  51.             stksz    :1,
  52. #define DESC_DATA_16B    0
  53. #define DESC_DATA_32B    1
  54.             granular:1;
  55.     unsigned char    base24;
  56. } data_desc_t;
  57.  
  58. /*
  59.  * LDT segment descriptor.
  60.  */
  61.  
  62. typedef struct ldt_desc {
  63.     unsigned short    limit00;
  64.     unsigned short    base00;
  65.     unsigned char    base16;
  66.     unsigned char    type    :5,
  67. #define DESC_LDT    0x02
  68.                 :2,
  69.             present    :1;
  70.     unsigned char    limit16    :4,
  71.                 :3,
  72.             granular:1;
  73.     unsigned char    base24;
  74. } ldt_desc_t;
  75.  
  76. #import <architecture/i386/sel.h>
  77.  
  78. /*
  79.  * Call gate descriptor.
  80.  */
  81.  
  82. typedef struct call_gate {
  83.     unsigned short    offset00;
  84.     sel_t        seg;
  85.     unsigned int    argcnt    :5,
  86.                     :3,
  87.             type    :5,
  88. #define DESC_CALL_GATE    0x0c
  89.             dpl    :2,
  90.             present    :1,
  91.             offset16:16;
  92. } call_gate_t;
  93.  
  94. /*
  95.  * Trap gate descriptor.
  96.  */
  97.  
  98. typedef struct trap_gate {
  99.     unsigned short    offset00;
  100.     sel_t        seg;
  101.     unsigned int        :8,
  102.                 type    :5,
  103. #define DESC_TRAP_GATE    0x0f
  104.             dpl    :2,
  105.             present    :1,
  106.             offset16:16;
  107. } trap_gate_t;
  108.  
  109.  
  110. /*
  111.  * Interrupt gate descriptor.
  112.  */
  113.  
  114. typedef struct intr_gate {
  115.     unsigned short    offset00;
  116.     sel_t        seg;
  117.     unsigned int        :8,
  118.                 type    :5,
  119. #define DESC_INTR_GATE    0x0e
  120.             dpl    :2,
  121.             present    :1,
  122.             offset16:16;
  123. } intr_gate_t;
  124.