Lines Matching +full:segment +full:- +full:2 +full:a

1 /*-
2 * SPDX-License-Identifier: BSD-3-Clause
16 * 2. Redistributions in binary form must reproduce the above copyright
25 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
47 #define ISPL(s) ((s)&3) /* priority level of a selector */
53 #define LSEL(s,r) (((s)<<3) | SEL_LDT | r) /* a local selector */
54 #define GSEL(s,r) (((s)<<3) | r) /* a global selector */
57 * User segment descriptors (%cs, %ds etc for i386 apps. 64 bit wide)
58 * For long-mode apps, %cs only has the conforming bit in sd_type, the sd_dpl,
62 unsigned sd_lolimit:16; /* segment extent (lsb) */
63 unsigned sd_lobase:24; /* segment base address (lsb) */
64 unsigned sd_type:5; /* segment type */
65 unsigned sd_dpl:2; /* segment descriptor priority level */
66 unsigned sd_p:1; /* segment descriptor present */
67 unsigned sd_hilimit:4; /* segment extent (msb) */
68 unsigned sd_xx:2; /* unused */
71 unsigned sd_hibase:8; /* segment base address (msb) */
75 unsigned sd_lolimit:16; /* segment extent (lsb) */
76 unsigned sd_lobase:24; /* segment base address (lsb) */
77 unsigned sd_type:5; /* segment type */
78 unsigned sd_dpl:2; /* segment descriptor priority level */
79 unsigned sd_p:1; /* segment descriptor present */
80 unsigned sd_hilimit:4; /* segment extent (msb) */
85 unsigned sd_hibase:8; /* segment base address (msb) */
88 #define USD_GETBASE(sd) (((sd)->sd_lobase) | (sd)->sd_hibase << 24)
89 #define USD_SETBASE(sd, b) (sd)->sd_lobase = (b); \
90 (sd)->sd_hibase = ((b) >> 24);
91 #define USD_GETLIMIT(sd) (((sd)->sd_lolimit) | (sd)->sd_hilimit << 16)
92 #define USD_SETLIMIT(sd, l) (sd)->sd_lolimit = (l); \
93 (sd)->sd_hilimit = ((l) >> 16);
101 unsigned gd_selector:16; /* gate segment selector */
104 unsigned gd_type:5; /* segment type */
105 unsigned gd_dpl:2; /* segment descriptor priority level */
106 unsigned gd_p:1; /* segment descriptor present */
124 uint64_t gd_selector:16; /* gate segment selector */
127 uint64_t gd_type:5; /* segment type */
128 uint64_t gd_dpl:2; /* segment descriptor priority level */
129 uint64_t gd_p:1; /* segment descriptor present */
146 #define SDT_SYSLDT 2 /* system local descriptor table */
166 /* memory segment types */
195 #define IDT_NMI 2 /* Nonmaskable External Interrupt */
202 #define IDT_FPUGP 9 /* Coprocessor Segment Overrun */
204 #define IDT_NP 11 /* #NP: Segment Not Present */
205 #define IDT_SS 12 /* #SS: Stack Segment Fault */
208 #define IDT_MF 16 /* #MF: FPU Floating-Point Error */
211 #define IDT_XF 19 /* #XF: SIMD Floating-Point Exception */
220 * Note that each 4 entries share a single 32 byte L1 cache line.
221 * Some of the fast syscall instructions require a specific order here.
224 #define GPRIV_SEL 1 /* SMP Per-Processor Private Data */
225 #define GUFS_SEL 2 /* User %fs Descriptor (order critical: 1) */
226 #define GUGS_SEL 3 /* User %gs Descriptor (order critical: 2) */
228 #define GDATA_SEL 5 /* Kernel Data Descriptor (order critical: 2) */
259 #define GUFS32_SEL 2 /* User 32 bit %fs Descriptor */