Zephyr API Documentation  3.6.99
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
segmentation.h File Reference
#include <zephyr/types.h>

Go to the source code of this file.

Data Structures

struct  task_state_segment
 
struct  segment_descriptor
 
struct  pseudo_descriptor
 
struct  far_ptr
 

Macros

#define SEG_TYPE_LDT   0x2
 
#define SEG_TYPE_TASK_GATE   0x5
 
#define SEG_TYPE_TSS   0x9
 
#define SEG_TYPE_TSS_BUSY   0xB
 
#define SEG_TYPE_CALL_GATE   0xC
 
#define SEG_TYPE_IRQ_GATE   0xE
 
#define SEG_TYPE_TRAP_GATE   0xF
 
#define DT_GRAN_BYTE   0
 
#define DT_GRAN_PAGE   1
 
#define DT_READABLE   1
 
#define DT_NON_READABLE   0
 
#define DT_WRITABLE   1
 
#define DT_NON_WRITABLE   0
 
#define DT_EXPAND_DOWN   1
 
#define DT_EXPAND_UP   0
 
#define DT_CONFORM   1
 
#define DT_NONCONFORM   0
 
#define DT_TYPE_SYSTEM   0
 
#define DT_TYPE_CODEDATA   1
 
#define SEG_SELECTOR(index, table, dpl)   (index << 3 | table << 2 | dpl)
 
#define DT_ZERO_ENTRY   { { 0 } }
 
#define DT_CODE_SEG_ENTRY(base_p, limit_p, granularity_p, dpl_p, readable_p, conforming_p)
 
#define DT_DATA_SEG_ENTRY(base_p, limit_p, granularity_p, dpl_p, writable_p, direction_p)
 
#define DT_LDT_ENTRY(base_p, limit_p, granularity_p, dpl_p)
 
#define DT_TSS_ENTRY(base_p, limit_p, granularity_p, dpl_p)
 
#define DT_TSS_STD_ENTRY(base_p, dpl_p)
 
#define DT_TASK_GATE_ENTRY(segment_p, dpl_p)
 
#define DT_IRQ_GATE_ENTRY(segment_p, offset_p, dpl_p)
 
#define DT_TRAP_GATE_ENTRY(segment_p, offset_p, dpl_p)
 
#define DT_CALL_GATE_ENTRY(segment_p, offset_p, dpl_p, param_count_p)
 
#define DTE_BASE(dt_entry)
 
#define DTE_LIMIT(dt_entry)
 
#define DTE_OFFSET(dt_entry)
 
#define DT_INIT(entries)   { sizeof(entries) - 1, &entries[0] }
 

Macro Definition Documentation

◆ DT_CALL_GATE_ENTRY

#define DT_CALL_GATE_ENTRY (   segment_p,
  offset_p,
  dpl_p,
  param_count_p 
)
Value:
{ \
_DESC_COMMON(dpl_p), \
_SEGMENT_AND_OFFSET(segment_p, offset_p), \
_SYS_DESC(SEG_TYPE_TRAP_GATE), \
.reserved_or_param = (param_count_p), \
.always_0_0 = 0 \
}
#define SEG_TYPE_TRAP_GATE
Definition: segmentation.h:31

◆ DT_CODE_SEG_ENTRY

#define DT_CODE_SEG_ENTRY (   base_p,
  limit_p,
  granularity_p,
  dpl_p,
  readable_p,
  conforming_p 
)
Value:
{ \
_DESC_COMMON(dpl_p), \
_LIMIT_AND_BASE(base_p, limit_p, granularity_p), \
.accessed = 0, \
.rw = (readable_p), \
.cd = (conforming_p), \
.executable = 1, \
.descriptor_type = 1 \
}

◆ DT_CONFORM

#define DT_CONFORM   1

◆ DT_DATA_SEG_ENTRY

#define DT_DATA_SEG_ENTRY (   base_p,
  limit_p,
  granularity_p,
  dpl_p,
  writable_p,
  direction_p 
)
Value:
{ \
_DESC_COMMON(dpl_p), \
_LIMIT_AND_BASE(base_p, limit_p, granularity_p), \
.accessed = 0, \
.rw = (writable_p), \
.cd = (direction_p), \
.executable = 0, \
.descriptor_type = 1 \
}

◆ DT_EXPAND_DOWN

#define DT_EXPAND_DOWN   1

◆ DT_EXPAND_UP

#define DT_EXPAND_UP   0

◆ DT_GRAN_BYTE

#define DT_GRAN_BYTE   0

◆ DT_GRAN_PAGE

#define DT_GRAN_PAGE   1

◆ DT_INIT

#define DT_INIT (   entries)    { sizeof(entries) - 1, &entries[0] }

◆ DT_IRQ_GATE_ENTRY

#define DT_IRQ_GATE_ENTRY (   segment_p,
  offset_p,
  dpl_p 
)
Value:
{ \
_DESC_COMMON(dpl_p), \
_SEGMENT_AND_OFFSET(segment_p, offset_p), \
_SYS_DESC(SEG_TYPE_IRQ_GATE), \
.always_0_0 = 0 \
}
#define SEG_TYPE_IRQ_GATE
Definition: segmentation.h:30

◆ DT_LDT_ENTRY

#define DT_LDT_ENTRY (   base_p,
  limit_p,
  granularity_p,
  dpl_p 
)
Value:
{ \
_DESC_COMMON(dpl_p), \
_LIMIT_AND_BASE(base_p, limit_p, granularity_p), \
_SYS_DESC(SEG_TYPE_LDT) \
}
#define SEG_TYPE_LDT
Definition: segmentation.h:25

◆ DT_NON_READABLE

#define DT_NON_READABLE   0

◆ DT_NON_WRITABLE

#define DT_NON_WRITABLE   0

◆ DT_NONCONFORM

#define DT_NONCONFORM   0

◆ DT_READABLE

#define DT_READABLE   1

◆ DT_TASK_GATE_ENTRY

#define DT_TASK_GATE_ENTRY (   segment_p,
  dpl_p 
)
Value:
{ \
_DESC_COMMON(dpl_p), \
_SYS_DESC(SEG_TYPE_TASK_GATE), \
.segment_selector = (segment_p) \
}
#define SEG_TYPE_TASK_GATE
Definition: segmentation.h:26

◆ DT_TRAP_GATE_ENTRY

#define DT_TRAP_GATE_ENTRY (   segment_p,
  offset_p,
  dpl_p 
)
Value:
{ \
_DESC_COMMON(dpl_p), \
_SEGMENT_AND_OFFSET(segment_p, offset_p), \
_SYS_DESC(SEG_TYPE_TRAP_GATE), \
.always_0_0 = 0 \
}

◆ DT_TSS_ENTRY

#define DT_TSS_ENTRY (   base_p,
  limit_p,
  granularity_p,
  dpl_p 
)
Value:
{ \
_DESC_COMMON(dpl_p), \
_LIMIT_AND_BASE(base_p, limit_p, granularity_p), \
_SYS_DESC(SEG_TYPE_TSS) \
}
#define SEG_TYPE_TSS
Definition: segmentation.h:27

◆ DT_TSS_STD_ENTRY

#define DT_TSS_STD_ENTRY (   base_p,
  dpl_p 
)
Value:
DT_TSS_ENTRY(base_p, sizeof(struct task_state_segment), DT_GRAN_BYTE, \
dpl_p)
#define DT_GRAN_BYTE
Definition: segmentation.h:33
#define DT_TSS_ENTRY(base_p, limit_p, granularity_p, dpl_p)
Definition: segmentation.h:298
Definition: segmentation.h:54

◆ DT_TYPE_CODEDATA

#define DT_TYPE_CODEDATA   1

◆ DT_TYPE_SYSTEM

#define DT_TYPE_SYSTEM   0

◆ DT_WRITABLE

#define DT_WRITABLE   1

◆ DT_ZERO_ENTRY

#define DT_ZERO_ENTRY   { { 0 } }

◆ DTE_BASE

#define DTE_BASE (   dt_entry)
Value:
((dt_entry)->base_low | \
((dt_entry)->base_mid << 16) | \
((dt_entry)->base_hi << 24))

◆ DTE_LIMIT

#define DTE_LIMIT (   dt_entry)
Value:
((dt_entry)->limit_low | \
((dt_entry)->limit_hi << 16))

◆ DTE_OFFSET

#define DTE_OFFSET (   dt_entry)
Value:
((dt_entry)->offset_low | \
((dt_entry)->offset_hi << 16))

◆ SEG_SELECTOR

#define SEG_SELECTOR (   index,
  table,
  dpl 
)    (index << 3 | table << 2 | dpl)

◆ SEG_TYPE_CALL_GATE

#define SEG_TYPE_CALL_GATE   0xC

◆ SEG_TYPE_IRQ_GATE

#define SEG_TYPE_IRQ_GATE   0xE

◆ SEG_TYPE_LDT

#define SEG_TYPE_LDT   0x2

◆ SEG_TYPE_TASK_GATE

#define SEG_TYPE_TASK_GATE   0x5

◆ SEG_TYPE_TRAP_GATE

#define SEG_TYPE_TRAP_GATE   0xF

◆ SEG_TYPE_TSS

#define SEG_TYPE_TSS   0x9

◆ SEG_TYPE_TSS_BUSY

#define SEG_TYPE_TSS_BUSY   0xB