Lines Matching defs:e2
157 static inline unsigned int get_seg_limit(uint32_t e1, uint32_t e2)
160 limit = (e1 & 0xffff) | (e2 & 0x000f0000);
161 if (e2 & DESC_G_MASK)
166 static inline uint32_t get_seg_base(uint32_t e1, uint32_t e2)
168 return ((e1 >> 16) | ((e2 & 0xff) << 16) | (e2 & 0xff000000));
171 static inline void load_seg_cache_raw_dt(SegmentCache *sc, uint32_t e1, uint32_t e2)
173 sc->base = get_seg_base(e1, e2);
174 sc->limit = get_seg_limit(e1, e2);
175 sc->flags = e2;
224 uint32_t e1, e2;
228 if (load_segment(&e1, &e2, selector) != 0)
230 if (!(e2 & DESC_S_MASK))
233 dpl = (e2 >> DESC_DPL_SHIFT) & 3;
236 if (!(e2 & DESC_CS_MASK))
241 if ((e2 & DESC_C_MASK) && dpl > rpl)
245 if ((e2 & DESC_CS_MASK) || !(e2 & DESC_W_MASK))
251 if ((e2 & DESC_CS_MASK) && !(e2 & DESC_R_MASK))
254 if (((e2 >> DESC_TYPE_SHIFT) & 0xf) < 12) {
259 if (!(e2 & DESC_P_MASK))
262 get_seg_base(e1, e2),
263 get_seg_limit(e1, e2),
264 e2);
277 uint32_t e1, uint32_t e2, int source,
289 type = (e2 >> DESC_TYPE_SHIFT) & 0xf;
294 if (!(e2 & DESC_P_MASK))
299 if (load_segment(&e1, &e2, tss_selector) != 0)
301 if (e2 & DESC_S_MASK)
303 type = (e2 >> DESC_TYPE_SHIFT) & 0xf;
308 if (!(e2 & DESC_P_MASK))
315 tss_limit = get_seg_limit(e1, e2);
316 tss_base = get_seg_base(e1, e2);
366 uint32_t e2;
368 e2 = ldl_kernel(ptr + 4);
369 e2 &= ~DESC_TSS_BUSY_MASK;
370 stl_kernel(ptr + 4, e2);
418 uint32_t e2;
420 e2 = ldl_kernel(ptr + 4);
421 e2 |= DESC_TSS_BUSY_MASK;
422 stl_kernel(ptr + 4, e2);
432 env->tr.flags = e2 & ~DESC_TSS_BUSY_MASK;
484 e2 = ldl_kernel(ptr + 4);
485 if ((e2 & DESC_S_MASK) || ((e2 >> DESC_TYPE_SHIFT) & 0xf) != 2)
487 if (!(e2 & DESC_P_MASK))
489 load_seg_cache_raw_dt(&env->ldt, e1, e2);
590 static inline unsigned int get_sp_mask(unsigned int e2)
592 if (e2 & DESC_B_MASK)
664 uint32_t e1, e2, offset, ss = 0, esp, ss_e1 = 0, ss_e2 = 0;
680 e2 = ldl_kernel(ptr + 4);
682 type = (e2 >> DESC_TYPE_SHIFT) & 0x1f;
686 if (!(e2 & DESC_P_MASK))
688 switch_tss(intno * 8, e1, e2, SWITCH_TSS_CALL, old_eip);
717 dpl = (e2 >> DESC_DPL_SHIFT) & 3;
723 if (!(e2 & DESC_P_MASK))
726 offset = (e2 & 0xffff0000) | (e1 & 0x0000ffff);
730 if (load_segment(&e1, &e2, selector) != 0)
732 if (!(e2 & DESC_S_MASK) || !(e2 & (DESC_CS_MASK)))
734 dpl = (e2 >> DESC_DPL_SHIFT) & 3;
737 if (!(e2 & DESC_P_MASK))
739 if (!(e2 & DESC_C_MASK) && dpl < cpl) {
760 } else if ((e2 & DESC_C_MASK) || dpl == cpl) {
837 get_seg_base(e1, e2),
838 get_seg_limit(e1, e2),
839 e2);
889 uint32_t e1, e2, e3, ss;
905 e2 = ldl_kernel(ptr + 4);
908 type = (e2 >> DESC_TYPE_SHIFT) & 0x1f;
917 dpl = (e2 >> DESC_DPL_SHIFT) & 3;
923 if (!(e2 & DESC_P_MASK))
926 offset = ((target_ulong)e3 << 32) | (e2 & 0xffff0000) | (e1 & 0x0000ffff);
927 ist = e2 & 7;
931 if (load_segment(&e1, &e2, selector) != 0)
933 if (!(e2 & DESC_S_MASK) || !(e2 & (DESC_CS_MASK)))
935 dpl = (e2 >> DESC_DPL_SHIFT) & 3;
938 if (!(e2 & DESC_P_MASK))
940 if (!(e2 & DESC_L_MASK) || (e2 & DESC_B_MASK))
942 if ((!(e2 & DESC_C_MASK) && dpl < cpl) || ist != 0) {
951 } else if ((e2 & DESC_C_MASK) || dpl == cpl) {
985 get_seg_base(e1, e2),
986 get_seg_limit(e1, e2),
987 e2);
1170 uint32_t e2;
1179 e2 = ldl_kernel(ptr + 4);
1181 dpl = (e2 >> DESC_DPL_SHIFT) & 3;
2017 uint32_t e1, e2;
2041 e2 = ldl_kernel(ptr + 4);
2042 if ((e2 & DESC_S_MASK) || ((e2 >> DESC_TYPE_SHIFT) & 0xf) != 2)
2044 if (!(e2 & DESC_P_MASK))
2050 load_seg_cache_raw_dt(&env->ldt, e1, e2);
2055 load_seg_cache_raw_dt(&env->ldt, e1, e2);
2064 uint32_t e1, e2;
2089 e2 = ldl_kernel(ptr + 4);
2090 type = (e2 >> DESC_TYPE_SHIFT) & 0xf;
2091 if ((e2 & DESC_S_MASK) ||
2094 if (!(e2 & DESC_P_MASK))
2103 load_seg_cache_raw_dt(&env->tr, e1, e2);
2108 load_seg_cache_raw_dt(&env->tr, e1, e2);
2110 e2 |= DESC_TSS_BUSY_MASK;
2111 stl_kernel(ptr + 4, e2);
2119 uint32_t e1, e2;
2147 e2 = ldl_kernel(ptr + 4);
2149 if (!(e2 & DESC_S_MASK))
2152 dpl = (e2 >> DESC_DPL_SHIFT) & 3;
2155 if ((e2 & DESC_CS_MASK) || !(e2 & DESC_W_MASK))
2161 if ((e2 & (DESC_CS_MASK | DESC_R_MASK)) == DESC_CS_MASK)
2164 if (!(e2e2 & DESC_C_MASK)) {
2171 if (!(e2 & DESC_P_MASK)) {
2179 if (!(e2 & DESC_A_MASK)) {
2180 e2 |= DESC_A_MASK;
2181 stl_kernel(ptr + 4, e2);
2185 get_seg_base(e1, e2),
2186 get_seg_limit(e1, e2),
2187 e2);
2200 uint32_t e1, e2, cpl, dpl, rpl, limit;
2205 if (load_segment(&e1, &e2, new_cs) != 0)
2208 if (e2 & DESC_S_MASK) {
2209 if (!(e2 & DESC_CS_MASK))
2211 dpl = (e2 >> DESC_DPL_SHIFT) & 3;
2212 if (e2 & DESC_C_MASK) {
2224 if (!(e2 & DESC_P_MASK))
2226 limit = get_seg_limit(e1, e2);
2228 !(env->hflags & HF_LMA_MASK) && !(e2 & DESC_L_MASK))
2231 get_seg_base(e1, e2), limit, e2);
2235 dpl = (e2 >> DESC_DPL_SHIFT) & 3;
2238 type = (e2 >> DESC_TYPE_SHIFT) & 0xf;
2246 switch_tss(new_cs, e1, e2, SWITCH_TSS_JMP, next_eip);
2253 if (!(e2 & DESC_P_MASK))
2258 new_eip |= (e2 & 0xffff0000);
2259 if (load_segment(&e1, &e2, gate_cs) != 0)
2261 dpl = (e2 >> DESC_DPL_SHIFT) & 3;
2263 if (((e2 & (DESC_S_MASK | DESC_CS_MASK)) !=
2266 if (((e2 & DESC_C_MASK) && (dpl > cpl)) ||
2267 (!(e2 & DESC_C_MASK) && (dpl != cpl)))
2269 if (!(e2 & DESC_P_MASK))
2271 limit = get_seg_limit(e1, e2);
2275 get_seg_base(e1, e2), limit, e2);
2316 uint32_t e1, e2, cpl, dpl, rpl, selector, offset, param_count;
2326 if (load_segment(&e1, &e2, new_cs) != 0)
2329 LOG_PCALL("desc=%08x:%08x\n", e1, e2);
2330 if (e2 & DESC_S_MASK) {
2331 if (!(e2 & DESC_CS_MASK))
2333 dpl = (e2 >> DESC_DPL_SHIFT) & 3;
2334 if (e2 & DESC_C_MASK) {
2346 if (!(e2 & DESC_P_MASK))
2360 get_seg_base(e1, e2),
2361 get_seg_limit(e1, e2), e2);
2377 limit = get_seg_limit(e1, e2);
2383 get_seg_base(e1, e2), limit, e2);
2388 type = (e2 >> DESC_TYPE_SHIFT) & 0x1f;
2389 dpl = (e2 >> DESC_DPL_SHIFT) & 3;
2397 switch_tss(new_cs, e1, e2, SWITCH_TSS_CALL, next_eip);
2412 if (!(e2 & DESC_P_MASK))
2415 offset = (e2 & 0xffff0000) | (e1 & 0x0000ffff);
2416 param_count = e2 & 0x1f;
2420 if (load_segment(&e1, &e2, selector) != 0)
2422 if (!(e2 & DESC_S_MASK) || !(e2 & (DESC_CS_MASK)))
2424 dpl = (e2 >> DESC_DPL_SHIFT) & 3;
2427 if (!(e2 & DESC_P_MASK))
2430 if (!(e2 & DESC_C_MASK) && dpl < cpl) {
2503 get_seg_base(e1, e2),
2504 get_seg_limit(e1, e2),
2505 e2);
2557 uint32_t e2;
2566 e2 = env->segs[seg_reg].flags;
2567 dpl = (e2 >> DESC_DPL_SHIFT) & 3;
2568 if (!(e2 & DESC_CS_MASK) || !(e2 & DESC_C_MASK)) {
2581 uint32_t e1, e2, ss_e1, ss_e2;
2626 if (load_segment(&e1, &e2, new_cs) != 0)
2628 if (!(e2 & DESC_S_MASK) ||
2629 !(e2 & DESC_CS_MASK))
2635 dpl = (e2 >> DESC_DPL_SHIFT) & 3;
2636 if (e2 & DESC_C_MASK) {
2643 if (!(e2 & DESC_P_MASK))
2651 get_seg_base(e1, e2),
2652 get_seg_limit(e1, e2),
2653 e2);
2712 get_seg_base(e1, e2),
2713 get_seg_limit(e1, e2),
2714 e2);
2774 uint32_t e1, e2;
2785 if (load_segment(&e1, &e2, tss_selector) != 0)
2787 type = (e2 >> DESC_TYPE_SHIFT) & 0x17;
2791 switch_tss(tss_selector, e1, e2, SWITCH_TSS_IRET, next_eip);
3302 uint32_t e1, e2, eflags, selector;
3309 if (load_segment(&e1, &e2, selector) != 0)
3312 dpl = (e2 >> DESC_DPL_SHIFT) & 3;
3314 if (e2 & DESC_S_MASK) {
3315 if ((e2 & DESC_CS_MASK) && (e2 & DESC_C_MASK)) {
3322 type = (e2 >> DESC_TYPE_SHIFT) & 0xf;
3339 limit = get_seg_limit(e1, e2);
3346 uint32_t e1, e2, eflags, selector;
3353 if (load_segment(&e1, &e2, selector) != 0)
3356 dpl = (e2 >> DESC_DPL_SHIFT) & 3;
3358 if (e2 & DESC_S_MASK) {
3359 if ((e2 & DESC_CS_MASK) && (e2 & DESC_C_MASK)) {
3366 type = (e2 >> DESC_TYPE_SHIFT) & 0xf;
3387 return e2 & 0x00f0ff00;
3392 uint32_t e1, e2, eflags, selector;
3399 if (load_segment(&e1, &e2, selector) != 0)
3401 if (!(e2 & DESC_S_MASK))
3404 dpl = (e2 >> DESC_DPL_SHIFT) & 3;
3406 if (e2 & DESC_CS_MASK) {
3407 if (!(e2 & DESC_R_MASK))
3409 if (!(e2 & DESC_C_MASK)) {
3425 uint32_t e1, e2, eflags, selector;
3432 if (load_segment(&e1, &e2, selector) != 0)
3434 if (!(e2 & DESC_S_MASK))
3437 dpl = (e2 >> DESC_DPL_SHIFT) & 3;
3439 if (e2 & DESC_CS_MASK) {
3444 if (!(e2 & DESC_W_MASK)) {