Changeset 103002 in vbox for trunk/include
- Timestamp:
- Jan 23, 2024 4:01:51 PM (16 months ago)
- svn:sync-xref-src-repo-rev:
- 161234
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/iprt/x86.h
r102986 r103002 43 43 44 44 #ifndef VBOX_FOR_DTRACE_LIB 45 # include <iprt/types.h> 46 # include <iprt/assert.h> 45 # ifndef __ASSEMBLER__ 46 # include <iprt/types.h> 47 # include <iprt/assert.h> 48 # else 49 # include <iprt/stdint.h> 50 # include <iprt/assertcompile.h> 51 # endif 47 52 #else 48 53 # pragma D depends_on library vbox-types.d … … 63 68 */ 64 69 65 #ifndef VBOX_FOR_DTRACE_LIB 70 #ifndef __ASSEMBLER__ 71 72 # ifndef VBOX_FOR_DTRACE_LIB 66 73 /** 67 74 * EFLAGS Bits. … … 118 125 /** Pointer to const EFLAGS bits. */ 119 126 typedef const X86EFLAGSBITS *PCX86EFLAGSBITS; 120 # endif /* !VBOX_FOR_DTRACE_LIB */127 # endif /* !VBOX_FOR_DTRACE_LIB */ 121 128 122 129 /** … … 127 134 /** The plain unsigned view. */ 128 135 uint32_t u; 129 # ifndef VBOX_FOR_DTRACE_LIB136 # ifndef VBOX_FOR_DTRACE_LIB 130 137 /** The bitfield view. */ 131 138 X86EFLAGSBITS Bits; 132 # endif139 # endif 133 140 /** The 8-bit view. */ 134 141 uint8_t au8[4]; … … 152 159 /** The plain unsigned view. */ 153 160 uint64_t u; 154 # ifndef VBOX_FOR_DTRACE_LIB161 # ifndef VBOX_FOR_DTRACE_LIB 155 162 /** The bitfield view. */ 156 163 X86EFLAGSBITS Bits; 157 # endif164 # endif 158 165 /** The 8-bit view. */ 159 166 uint8_t au8[8]; … … 171 178 /** Pointer to const RFLAGS. */ 172 179 typedef const X86RFLAGS *PCX86RFLAGS; 180 181 #endif /* !__ASSEMBLER__ */ 173 182 174 183 … … 253 262 254 263 264 #ifndef __ASSEMBLER__ 265 255 266 /** CPUID Feature information - ECX. 256 267 * CPUID query with EAX=1. 257 268 */ 258 # ifndef VBOX_FOR_DTRACE_LIB269 # ifndef VBOX_FOR_DTRACE_LIB 259 270 typedef struct X86CPUIDFEATECX 260 271 { … … 324 335 unsigned u1HVP : 1; 325 336 } X86CPUIDFEATECX; 326 # else /* VBOX_FOR_DTRACE_LIB */337 # else /* VBOX_FOR_DTRACE_LIB */ 327 338 typedef uint32_t X86CPUIDFEATECX; 328 # endif /* VBOX_FOR_DTRACE_LIB */339 # endif /* VBOX_FOR_DTRACE_LIB */ 329 340 /** Pointer to CPUID Feature Information - ECX. */ 330 341 typedef X86CPUIDFEATECX *PX86CPUIDFEATECX; … … 336 347 * CPUID query with EAX=1. 337 348 */ 338 # ifndef VBOX_FOR_DTRACE_LIB /* DTrace different (brain-dead from a C pov) bitfield implementation */349 # ifndef VBOX_FOR_DTRACE_LIB /* DTrace different (brain-dead from a C pov) bitfield implementation */ 339 350 typedef struct X86CPUIDFEATEDX 340 351 { … … 404 415 unsigned u1PBE : 1; 405 416 } X86CPUIDFEATEDX; 406 # else /* VBOX_FOR_DTRACE_LIB */417 # else /* VBOX_FOR_DTRACE_LIB */ 407 418 typedef uint32_t X86CPUIDFEATEDX; 408 # endif /* VBOX_FOR_DTRACE_LIB */419 # endif /* VBOX_FOR_DTRACE_LIB */ 409 420 /** Pointer to CPUID Feature Information - EDX. */ 410 421 typedef X86CPUIDFEATEDX *PX86CPUIDFEATEDX; 411 422 /** Pointer to const CPUID Feature Information - EDX. */ 412 423 typedef const X86CPUIDFEATEDX *PCX86CPUIDFEATEDX; 424 425 #endif /* !__ASSEMBLER__ */ 426 413 427 414 428 /** @name CPUID Vendor information. … … 1452 1466 #define MSR_IA32_MTRR_CAP_PRMRR RT_BIT_64(12) 1453 1467 1468 1469 #ifndef __ASSEMBLER__ 1454 1470 /** 1455 1471 * Variable-range MTRR MSR pair. … … 1460 1476 uint64_t MtrrPhysMask; /**< IA32_MTRR_PHYSMASKn */ 1461 1477 } X86MTRRVAR; 1462 # ifndef VBOX_FOR_DTRACE_LIB1478 # ifndef VBOX_FOR_DTRACE_LIB 1463 1479 AssertCompileSize(X86MTRRVAR, 16); 1464 # endif1480 # endif 1465 1481 /** Pointer to a variable-range MTRR MSR pair. */ 1466 1482 typedef X86MTRRVAR *PX86MTRRVAR; 1467 1483 /** Pointer to a const variable-range MTRR MSR pair. */ 1468 1484 typedef const X86MTRRVAR *PCX86MTRRVAR; 1485 #endif /* __ASSEMBLER__ */ 1486 1469 1487 1470 1488 /** Memory types that can be encoded in MTRRs. … … 2180 2198 */ 2181 2199 2200 #ifndef __ASSEMBLER__ 2182 2201 /** Page table/directory entry as an unsigned integer. */ 2183 2202 typedef uint32_t X86PGUINT; … … 2186 2205 /** Pointer to an const page table/directory table entry as an unsigned integer. */ 2187 2206 typedef X86PGUINT const *PCX86PGUINT; 2207 #endif 2188 2208 2189 2209 /** Number of entries in a 32-bit PT/PD. */ … … 2191 2211 2192 2212 2213 #ifndef __ASSEMBLER__ 2193 2214 /** PAE page table/page directory/pdpt/l4/l5 entry as an unsigned integer. */ 2194 2215 typedef uint64_t X86PGPAEUINT; … … 2197 2218 /** Pointer to an const PAE page table/page directory/pdpt/l4/l5 entry as an unsigned integer. */ 2198 2219 typedef X86PGPAEUINT const *PCX86PGPAEUINT; 2220 #endif 2199 2221 2200 2222 /** Number of entries in a PAE PT/PD. */ … … 2338 2360 /** Bits 63 - - LM - MBZ bits when no NX. */ 2339 2361 #define X86_PTE_LM_MBZ_MASK_NO_NX UINT64_C(0x8000000000000000) 2362 2363 #ifndef __ASSEMBLER__ 2340 2364 2341 2365 /** … … 2369 2393 uint32_t u20PageNo : 20; 2370 2394 } X86PTEBITS; 2371 # ifndef VBOX_FOR_DTRACE_LIB2395 # ifndef VBOX_FOR_DTRACE_LIB 2372 2396 AssertCompileSize(X86PTEBITS, 4); 2373 # endif2397 # endif 2374 2398 /** Pointer to a page table entry. */ 2375 2399 typedef X86PTEBITS *PX86PTEBITS; … … 2384 2408 /** Unsigned integer view */ 2385 2409 X86PGUINT u; 2386 # ifndef VBOX_WITHOUT_PAGING_BIT_FIELDS2410 # ifndef VBOX_WITHOUT_PAGING_BIT_FIELDS 2387 2411 /** Bit field view. */ 2388 2412 X86PTEBITS n; 2389 # endif2413 # endif 2390 2414 /** 32-bit view. */ 2391 2415 uint32_t au32[1]; … … 2395 2419 uint8_t au8[4]; 2396 2420 } X86PTE; 2397 # ifndef VBOX_FOR_DTRACE_LIB2421 # ifndef VBOX_FOR_DTRACE_LIB 2398 2422 AssertCompileSize(X86PTE, 4); 2399 # endif2423 # endif 2400 2424 /** Pointer to a page table entry. */ 2401 2425 typedef X86PTE *PX86PTE; … … 2440 2464 uint32_t u1NoExecute : 1; 2441 2465 } X86PTEPAEBITS; 2442 # ifndef VBOX_FOR_DTRACE_LIB2466 # ifndef VBOX_FOR_DTRACE_LIB 2443 2467 AssertCompileSize(X86PTEPAEBITS, 8); 2444 # endif2468 # endif 2445 2469 /** Pointer to a page table entry. */ 2446 2470 typedef X86PTEPAEBITS *PX86PTEPAEBITS; … … 2455 2479 /** Unsigned integer view */ 2456 2480 X86PGPAEUINT u; 2457 # ifndef VBOX_WITHOUT_PAGING_BIT_FIELDS2481 # ifndef VBOX_WITHOUT_PAGING_BIT_FIELDS 2458 2482 /** Bit field view. */ 2459 2483 X86PTEPAEBITS n; 2460 # endif2484 # endif 2461 2485 /** 32-bit view. */ 2462 2486 uint32_t au32[2]; … … 2466 2490 uint8_t au8[8]; 2467 2491 } X86PTEPAE; 2468 # ifndef VBOX_FOR_DTRACE_LIB2492 # ifndef VBOX_FOR_DTRACE_LIB 2469 2493 AssertCompileSize(X86PTEPAE, 8); 2470 # endif2494 # endif 2471 2495 /** Pointer to a PAE page table entry. */ 2472 2496 typedef X86PTEPAE *PX86PTEPAE; … … 2483 2507 X86PTE a[X86_PG_ENTRIES]; 2484 2508 } X86PT; 2485 # ifndef VBOX_FOR_DTRACE_LIB2509 # ifndef VBOX_FOR_DTRACE_LIB 2486 2510 AssertCompileSize(X86PT, 4096); 2487 # endif2511 # endif 2488 2512 /** Pointer to a page table. */ 2489 2513 typedef X86PT *PX86PT; … … 2491 2515 typedef const X86PT *PCX86PT; 2492 2516 2517 #endif /* !__ASSEMBLER__ */ 2518 2493 2519 /** The page shift to get the PT index. */ 2494 2520 #define X86_PT_SHIFT 12 … … 2497 2523 2498 2524 2525 #ifndef __ASSEMBLER__ 2499 2526 /** 2500 2527 * Page directory. … … 2505 2532 X86PTEPAE a[X86_PG_PAE_ENTRIES]; 2506 2533 } X86PTPAE; 2507 # ifndef VBOX_FOR_DTRACE_LIB2534 # ifndef VBOX_FOR_DTRACE_LIB 2508 2535 AssertCompileSize(X86PTPAE, 4096); 2509 # endif2536 # endif 2510 2537 /** Pointer to a page table. */ 2511 2538 typedef X86PTPAE *PX86PTPAE; 2512 2539 /** Pointer to a const page table. */ 2513 2540 typedef const X86PTPAE *PCX86PTPAE; 2541 #endif /* !__ASSEMBLY__ */ 2514 2542 2515 2543 /** The page shift to get the PA PTE index. */ … … 2554 2582 /** Bits 63, 7 - - LM - MBZ bits when no NX. */ 2555 2583 #define X86_PDE_LM_MBZ_MASK_NO_NX UINT64_C(0x8000000000000080) 2584 2585 #ifndef __ASSEMBLER__ 2556 2586 2557 2587 /** … … 2584 2614 uint32_t u20PageNo : 20; 2585 2615 } X86PDEBITS; 2586 # ifndef VBOX_FOR_DTRACE_LIB2616 # ifndef VBOX_FOR_DTRACE_LIB 2587 2617 AssertCompileSize(X86PDEBITS, 4); 2588 # endif2618 # endif 2589 2619 /** Pointer to a page directory entry. */ 2590 2620 typedef X86PDEBITS *PX86PDEBITS; … … 2628 2658 uint32_t u1NoExecute : 1; 2629 2659 } X86PDEPAEBITS; 2630 # ifndef VBOX_FOR_DTRACE_LIB2660 # ifndef VBOX_FOR_DTRACE_LIB 2631 2661 AssertCompileSize(X86PDEPAEBITS, 8); 2632 # endif2662 # endif 2633 2663 /** Pointer to a page directory entry. */ 2634 2664 typedef X86PDEPAEBITS *PX86PDEPAEBITS; 2635 2665 /** Pointer to a const page directory entry. */ 2636 2666 typedef const X86PDEPAEBITS *PCX86PDEPAEBITS; 2667 2668 #endif /* !__ASSEMBLER__ */ 2637 2669 2638 2670 /** @} */ … … 2689 2721 #define X86_PDE2M_LM_MBZ_MASK_NO_NX UINT64_C(0x80000000001fe000) 2690 2722 2723 #ifndef __ASSEMBLER__ 2724 2691 2725 /** 2692 2726 * 4MB page directory entry. … … 2726 2760 uint32_t u10PageNo : 10; 2727 2761 } X86PDE4MBITS; 2728 # ifndef VBOX_FOR_DTRACE_LIB2762 # ifndef VBOX_FOR_DTRACE_LIB 2729 2763 AssertCompileSize(X86PDE4MBITS, 4); 2730 # endif2764 # endif 2731 2765 /** Pointer to a page table entry. */ 2732 2766 typedef X86PDE4MBITS *PX86PDE4MBITS; … … 2775 2809 uint32_t u1NoExecute : 1; 2776 2810 } X86PDE2MPAEBITS; 2777 # ifndef VBOX_FOR_DTRACE_LIB2811 # ifndef VBOX_FOR_DTRACE_LIB 2778 2812 AssertCompileSize(X86PDE2MPAEBITS, 8); 2779 # endif2813 # endif 2780 2814 /** Pointer to a 2MB PAE page table entry. */ 2781 2815 typedef X86PDE2MPAEBITS *PX86PDE2MPAEBITS; … … 2783 2817 typedef const X86PDE2MPAEBITS *PCX86PDE2MPAEBITS; 2784 2818 2785 /** @} */ 2819 #endif /* !__ASSEMBLER__ */ 2820 2821 /** @} */ 2822 2823 #ifndef __ASSEMBLER__ 2786 2824 2787 2825 /** … … 2792 2830 /** Unsigned integer view. */ 2793 2831 X86PGUINT u; 2794 # ifndef VBOX_WITHOUT_PAGING_BIT_FIELDS2832 # ifndef VBOX_WITHOUT_PAGING_BIT_FIELDS 2795 2833 /** Normal view. */ 2796 2834 X86PDEBITS n; 2797 2835 /** 4MB view (big). */ 2798 2836 X86PDE4MBITS b; 2799 # endif2837 # endif 2800 2838 /** 8 bit unsigned integer view. */ 2801 2839 uint8_t au8[4]; … … 2805 2843 uint32_t au32[1]; 2806 2844 } X86PDE; 2807 # ifndef VBOX_FOR_DTRACE_LIB2845 # ifndef VBOX_FOR_DTRACE_LIB 2808 2846 AssertCompileSize(X86PDE, 4); 2809 # endif2847 # endif 2810 2848 /** Pointer to a page directory entry. */ 2811 2849 typedef X86PDE *PX86PDE; … … 2820 2858 /** Unsigned integer view. */ 2821 2859 X86PGPAEUINT u; 2822 # ifndef VBOX_WITHOUT_PAGING_BIT_FIELDS2860 # ifndef VBOX_WITHOUT_PAGING_BIT_FIELDS 2823 2861 /** Normal view. */ 2824 2862 X86PDEPAEBITS n; 2825 2863 /** 2MB page view (big). */ 2826 2864 X86PDE2MPAEBITS b; 2827 # endif2865 # endif 2828 2866 /** 8 bit unsigned integer view. */ 2829 2867 uint8_t au8[8]; … … 2833 2871 uint32_t au32[2]; 2834 2872 } X86PDEPAE; 2835 # ifndef VBOX_FOR_DTRACE_LIB2873 # ifndef VBOX_FOR_DTRACE_LIB 2836 2874 AssertCompileSize(X86PDEPAE, 8); 2837 # endif2875 # endif 2838 2876 /** Pointer to a page directory entry. */ 2839 2877 typedef X86PDEPAE *PX86PDEPAE; … … 2849 2887 X86PDE a[X86_PG_ENTRIES]; 2850 2888 } X86PD; 2851 # ifndef VBOX_FOR_DTRACE_LIB2889 # ifndef VBOX_FOR_DTRACE_LIB 2852 2890 AssertCompileSize(X86PD, 4096); 2853 # endif2891 # endif 2854 2892 /** Pointer to a page directory. */ 2855 2893 typedef X86PD *PX86PD; … … 2857 2895 typedef const X86PD *PCX86PD; 2858 2896 2897 #endif /* !__ASSEMBLER__ */ 2898 2859 2899 /** The page shift to get the PD index. */ 2860 2900 #define X86_PD_SHIFT 22 … … 2863 2903 2864 2904 2905 #ifndef __ASSEMBLER__ 2865 2906 /** 2866 2907 * PAE page directory. … … 2871 2912 X86PDEPAE a[X86_PG_PAE_ENTRIES]; 2872 2913 } X86PDPAE; 2873 # ifndef VBOX_FOR_DTRACE_LIB2914 # ifndef VBOX_FOR_DTRACE_LIB 2874 2915 AssertCompileSize(X86PDPAE, 4096); 2875 # endif2916 # endif 2876 2917 /** Pointer to a PAE page directory. */ 2877 2918 typedef X86PDPAE *PX86PDPAE; 2878 2919 /** Pointer to a const PAE page directory. */ 2879 2920 typedef const X86PDPAE *PCX86PDPAE; 2921 #endif /* !__ASSEMBLER__ */ 2880 2922 2881 2923 /** The page shift to get the PAE PD index. */ … … 2921 2963 #define X86_PDPE1G_LM_MBZ_MASK_NO_NX UINT64_C(0x800000003fffe000) 2922 2964 2965 #ifndef __ASSEMBLER__ 2923 2966 2924 2967 /** … … 2946 2989 uint32_t u12Reserved : 12; 2947 2990 } X86PDPEBITS; 2948 # ifndef VBOX_FOR_DTRACE_LIB2991 # ifndef VBOX_FOR_DTRACE_LIB 2949 2992 AssertCompileSize(X86PDPEBITS, 8); 2950 # endif2993 # endif 2951 2994 /** Pointer to a page directory pointer table entry. */ 2952 2995 typedef X86PDPEBITS *PX86PTPEBITS; … … 2985 3028 uint32_t u1NoExecute : 1; 2986 3029 } X86PDPEAMD64BITS; 2987 # ifndef VBOX_FOR_DTRACE_LIB3030 # ifndef VBOX_FOR_DTRACE_LIB 2988 3031 AssertCompileSize(X86PDPEAMD64BITS, 8); 2989 # endif3032 # endif 2990 3033 /** Pointer to a page directory pointer table entry. */ 2991 3034 typedef X86PDPEAMD64BITS *PX86PDPEAMD64BITS; … … 3032 3075 uint32_t u1NoExecute : 1; 3033 3076 } X86PDPE1GB; 3034 # ifndef VBOX_FOR_DTRACE_LIB3077 # ifndef VBOX_FOR_DTRACE_LIB 3035 3078 AssertCompileSize(X86PDPE1GB, 8); 3036 # endif3079 # endif 3037 3080 /** Pointer to a page directory pointer table entry for a 1GB page. */ 3038 3081 typedef X86PDPE1GB *PX86PDPE1GB; … … 3047 3090 /** Unsigned integer view. */ 3048 3091 X86PGPAEUINT u; 3049 # ifndef VBOX_WITHOUT_PAGING_BIT_FIELDS3092 # ifndef VBOX_WITHOUT_PAGING_BIT_FIELDS 3050 3093 /** Normal view. */ 3051 3094 X86PDPEBITS n; … … 3054 3097 /** AMD64 big view. */ 3055 3098 X86PDPE1GB b; 3056 # endif3099 # endif 3057 3100 /** 8 bit unsigned integer view. */ 3058 3101 uint8_t au8[8]; … … 3062 3105 uint32_t au32[2]; 3063 3106 } X86PDPE; 3064 # ifndef VBOX_FOR_DTRACE_LIB3107 # ifndef VBOX_FOR_DTRACE_LIB 3065 3108 AssertCompileSize(X86PDPE, 8); 3066 # endif3109 # endif 3067 3110 /** Pointer to a page directory pointer table entry. */ 3068 3111 typedef X86PDPE *PX86PDPE; … … 3079 3122 X86PDPE a[X86_PG_AMD64_PDPE_ENTRIES]; 3080 3123 } X86PDPT; 3081 # ifndef VBOX_FOR_DTRACE_LIB3124 # ifndef VBOX_FOR_DTRACE_LIB 3082 3125 AssertCompileSize(X86PDPT, 4096); 3083 # endif3126 # endif 3084 3127 /** Pointer to a page directory pointer table. */ 3085 3128 typedef X86PDPT *PX86PDPT; 3086 3129 /** Pointer to a const page directory pointer table. */ 3087 3130 typedef const X86PDPT *PCX86PDPT; 3131 3132 #endif /* !__ASSEMBLER__ */ 3088 3133 3089 3134 /** The page shift to get the PDPT index. */ … … 3122 3167 /** Bits 63 - NX - PAE - No execution flag. */ 3123 3168 #define X86_PML4E_NX RT_BIT_64(63) 3169 3170 #ifndef __ASSEMBLER__ 3124 3171 3125 3172 /** … … 3154 3201 uint32_t u1NoExecute : 1; 3155 3202 } X86PML4EBITS; 3156 # ifndef VBOX_FOR_DTRACE_LIB3203 # ifndef VBOX_FOR_DTRACE_LIB 3157 3204 AssertCompileSize(X86PML4EBITS, 8); 3158 # endif3205 # endif 3159 3206 /** Pointer to a page map level-4 entry. */ 3160 3207 typedef X86PML4EBITS *PX86PML4EBITS; … … 3169 3216 /** Unsigned integer view. */ 3170 3217 X86PGPAEUINT u; 3171 # ifndef VBOX_WITHOUT_PAGING_BIT_FIELDS3218 # ifndef VBOX_WITHOUT_PAGING_BIT_FIELDS 3172 3219 /** Normal view. */ 3173 3220 X86PML4EBITS n; 3174 # endif3221 # endif 3175 3222 /** 8 bit unsigned integer view. */ 3176 3223 uint8_t au8[8]; … … 3180 3227 uint32_t au32[2]; 3181 3228 } X86PML4E; 3182 # ifndef VBOX_FOR_DTRACE_LIB3229 # ifndef VBOX_FOR_DTRACE_LIB 3183 3230 AssertCompileSize(X86PML4E, 8); 3184 # endif3231 # endif 3185 3232 /** Pointer to a page map level-4 entry. */ 3186 3233 typedef X86PML4E *PX86PML4E; … … 3197 3244 X86PML4E a[X86_PG_PAE_ENTRIES]; 3198 3245 } X86PML4; 3199 # ifndef VBOX_FOR_DTRACE_LIB3246 # ifndef VBOX_FOR_DTRACE_LIB 3200 3247 AssertCompileSize(X86PML4, 4096); 3201 # endif3248 # endif 3202 3249 /** Pointer to a page map level-4. */ 3203 3250 typedef X86PML4 *PX86PML4; 3204 3251 /** Pointer to a const page map level-4. */ 3205 3252 typedef const X86PML4 *PCX86PML4; 3253 3254 #endif /* !__ASSEMBLER__ */ 3206 3255 3207 3256 /** The page shift to get the PML4 index. */ … … 3235 3284 #define X86_FPU_INT16_INDEFINITE INT16_MIN 3236 3285 /** @} */ 3286 3287 #ifndef __ASSEMBLER__ 3237 3288 3238 3289 /** … … 3254 3305 uint16_t padding4; /**< 0x1a */ 3255 3306 } X86FSTENV32P; 3256 # ifndef VBOX_FOR_DTRACE_LIB3307 # ifndef VBOX_FOR_DTRACE_LIB 3257 3308 AssertCompileSize(X86FSTENV32P, 0x1c); 3258 # endif3309 # endif 3259 3310 /** Pointer to a 32-bit protected mode FSTENV image. */ 3260 3311 typedef X86FSTENV32P *PX86FSTENV32P; … … 3270 3321 uint8_t reg[10]; 3271 3322 } X86FPUMMX; 3272 # ifndef VBOX_FOR_DTRACE_LIB3323 # ifndef VBOX_FOR_DTRACE_LIB 3273 3324 AssertCompileSize(X86FPUMMX, 10); 3274 # endif3325 # endif 3275 3326 /** Pointer to a 80-bit MMX/FPU register type. */ 3276 3327 typedef X86FPUMMX *PX86FPUMMX; … … 3300 3351 uint128_t au128[1]; 3301 3352 } X86FPUREG; 3302 # ifndef VBOX_FOR_DTRACE_LIB3353 # ifndef VBOX_FOR_DTRACE_LIB 3303 3354 AssertCompileSize(X86FPUREG, 16); 3304 # endif3355 # endif 3305 3356 /** Pointer to a FPU register. */ 3306 3357 typedef X86FPUREG *PX86FPUREG; … … 3309 3360 3310 3361 /** FPU (x87) register - v2 with correct size. */ 3311 # pragma pack(1)3362 # pragma pack(1) 3312 3363 typedef union X86FPUREG2 3313 3364 { … … 3327 3378 uint64_t au64[1]; 3328 3379 } X86FPUREG2; 3329 # pragma pack()3330 # ifndef VBOX_FOR_DTRACE_LIB3380 # pragma pack() 3381 # ifndef VBOX_FOR_DTRACE_LIB 3331 3382 AssertCompileSize(X86FPUREG2, 10); 3332 # endif3383 # endif 3333 3384 /** Pointer to a FPU register - v2. */ 3334 3385 typedef X86FPUREG2 *PX86FPUREG2; … … 3365 3416 /** Double precision floating point view. */ 3366 3417 RTFLOAT64U ar64[2]; 3367 # ifndef VBOX_FOR_DTRACE_LIB3418 # ifndef VBOX_FOR_DTRACE_LIB 3368 3419 /** Confusing nested 128-bit union view (this is what xmm should've been). */ 3369 3420 RTUINT128U uXmm; 3370 # endif3421 # endif 3371 3422 } X86XMMREG; 3372 # ifndef VBOX_FOR_DTRACE_LIB3423 # ifndef VBOX_FOR_DTRACE_LIB 3373 3424 AssertCompileSize(X86XMMREG, 16); 3374 # endif3425 # endif 3375 3426 /** Pointer to an XMM register state. */ 3376 3427 typedef X86XMMREG *PX86XMMREG; … … 3402 3453 X86XMMREG aXmm[2]; 3403 3454 } X86YMMREG; 3404 # ifndef VBOX_FOR_DTRACE_LIB3455 # ifndef VBOX_FOR_DTRACE_LIB 3405 3456 AssertCompileSize(X86YMMREG, 32); 3406 # endif3457 # endif 3407 3458 /** Pointer to an YMM register state. */ 3408 3459 typedef X86YMMREG *PX86YMMREG; … … 3434 3485 X86YMMREG aYmm[2]; 3435 3486 } X86ZMMREG; 3436 # ifndef VBOX_FOR_DTRACE_LIB3487 # ifndef VBOX_FOR_DTRACE_LIB 3437 3488 AssertCompileSize(X86ZMMREG, 64); 3438 # endif3489 # endif 3439 3490 /** Pointer to an ZMM register state. */ 3440 3491 typedef X86ZMMREG *PX86ZMMREG; … … 3446 3497 * 32-bit FPU state (aka FSAVE/FRSTOR Memory Region). 3447 3498 */ 3448 # pragma pack(1)3499 # pragma pack(1) 3449 3500 typedef struct X86FPUSTATE 3450 3501 { … … 3477 3528 X86FPUREG2 regs[8]; 3478 3529 } X86FPUSTATE; 3479 # pragma pack()3530 # pragma pack() 3480 3531 AssertCompileSize(X86FPUSTATE, 108); 3481 3532 /** Pointer to a FPU state. */ … … 3487 3538 * FPU Extended state (aka FXSAVE/FXRSTORE Memory Region). 3488 3539 */ 3489 # pragma pack(1)3540 # pragma pack(1) 3490 3541 typedef struct X86FXSTATE 3491 3542 { … … 3522 3573 uint32_t au32RsrvdForSoftware[(512 - 464) / sizeof(uint32_t)]; 3523 3574 } X86FXSTATE; 3524 # pragma pack()3575 # pragma pack() 3525 3576 /** Pointer to a FPU Extended state. */ 3526 3577 typedef X86FXSTATE *PX86FXSTATE; 3527 3578 /** Pointer to a const FPU Extended state. */ 3528 3579 typedef const X86FXSTATE *PCX86FXSTATE; 3580 3581 #endif /* !__ASSEMBLER__ */ 3582 3529 3583 3530 3584 /** Offset for software usable reserved bits (464:511) where we store a 32-bit … … 3731 3785 /** @} */ 3732 3786 3787 #ifndef __ASSEMBLER__ 3788 3733 3789 /** 3734 3790 * XSAVE header. … … 3743 3799 uint64_t au64Reserved[6]; 3744 3800 } X86XSAVEHDR; 3745 # ifndef VBOX_FOR_DTRACE_LIB3801 # ifndef VBOX_FOR_DTRACE_LIB 3746 3802 AssertCompileSize(X86XSAVEHDR, 64); 3747 # endif3803 # endif 3748 3804 /** Pointer to an XSAVE header. */ 3749 3805 typedef X86XSAVEHDR *PX86XSAVEHDR; … … 3761 3817 X86XMMREG aYmmHi[16]; 3762 3818 } X86XSAVEYMMHI; 3763 # ifndef VBOX_FOR_DTRACE_LIB3819 # ifndef VBOX_FOR_DTRACE_LIB 3764 3820 AssertCompileSize(X86XSAVEYMMHI, 256); 3765 # endif3821 # endif 3766 3822 /** Pointer to a high 128-bit YMM register state. */ 3767 3823 typedef X86XSAVEYMMHI *PX86XSAVEYMMHI; … … 3783 3839 } aRegs[4]; 3784 3840 } X86XSAVEBNDREGS; 3785 # ifndef VBOX_FOR_DTRACE_LIB3841 # ifndef VBOX_FOR_DTRACE_LIB 3786 3842 AssertCompileSize(X86XSAVEBNDREGS, 64); 3787 # endif3843 # endif 3788 3844 /** Pointer to a MPX bound register state. */ 3789 3845 typedef X86XSAVEBNDREGS *PX86XSAVEBNDREGS; … … 3799 3855 uint64_t fStatus; 3800 3856 } X86XSAVEBNDCFG; 3801 # ifndef VBOX_FOR_DTRACE_LIB3857 # ifndef VBOX_FOR_DTRACE_LIB 3802 3858 AssertCompileSize(X86XSAVEBNDCFG, 16); 3803 # endif3859 # endif 3804 3860 /** Pointer to a MPX bound config and status register state. */ 3805 3861 typedef X86XSAVEBNDCFG *PX86XSAVEBNDCFG; … … 3815 3871 uint64_t aKRegs[8]; 3816 3872 } X86XSAVEOPMASK; 3817 # ifndef VBOX_FOR_DTRACE_LIB3873 # ifndef VBOX_FOR_DTRACE_LIB 3818 3874 AssertCompileSize(X86XSAVEOPMASK, 64); 3819 # endif3875 # endif 3820 3876 /** Pointer to a AVX-512 opmask state. */ 3821 3877 typedef X86XSAVEOPMASK *PX86XSAVEOPMASK; … … 3831 3887 X86YMMREG aHi256Regs[16]; 3832 3888 } X86XSAVEZMMHI256; 3833 # ifndef VBOX_FOR_DTRACE_LIB3889 # ifndef VBOX_FOR_DTRACE_LIB 3834 3890 AssertCompileSize(X86XSAVEZMMHI256, 512); 3835 # endif3891 # endif 3836 3892 /** Pointer to a state comprising the upper 256-bits of ZMM0-15. */ 3837 3893 typedef X86XSAVEZMMHI256 *PX86XSAVEZMMHI256; … … 3847 3903 X86ZMMREG aRegs[16]; 3848 3904 } X86XSAVEZMM16HI; 3849 # ifndef VBOX_FOR_DTRACE_LIB3905 # ifndef VBOX_FOR_DTRACE_LIB 3850 3906 AssertCompileSize(X86XSAVEZMM16HI, 1024); 3851 # endif3907 # endif 3852 3908 /** Pointer to a state comprising ZMM16-32. */ 3853 3909 typedef X86XSAVEZMM16HI *PX86XSAVEZMM16HI; … … 3866 3922 uint64_t auLater[128/8]; 3867 3923 } X86XSAVELWP; 3868 # ifndef VBOX_FOR_DTRACE_LIB3924 # ifndef VBOX_FOR_DTRACE_LIB 3869 3925 AssertCompileSize(X86XSAVELWP, 128); 3870 # endif3926 # endif 3871 3927 3872 3928 … … 3919 3975 } u; 3920 3976 } X86XSAVEAREA; 3921 # ifndef VBOX_FOR_DTRACE_LIB3977 # ifndef VBOX_FOR_DTRACE_LIB 3922 3978 AssertCompileSize(X86XSAVEAREA, 8192); 3923 3979 AssertCompileMemberSize(X86XSAVEAREA, u.Intel, 0x840 /*2112 => total 0xa80 (2688) */); … … 3929 3985 AssertCompileMemberOffset(X86XSAVEAREA, u.Intel.ZmmHi256, 0x480 /* 1152 */); 3930 3986 AssertCompileMemberOffset(X86XSAVEAREA, u.Intel.Zmm16Hi, 0x680 /* 1664 */); 3931 # endif3987 # endif 3932 3988 /** Pointer to a XSAVE area. */ 3933 3989 typedef X86XSAVEAREA *PX86XSAVEAREA; 3934 3990 /** Pointer to a const XSAVE area. */ 3935 3991 typedef X86XSAVEAREA const *PCX86XSAVEAREA; 3992 3993 #endif /* __ASSEMBLER__ */ 3936 3994 3937 3995 … … 3990 4048 */ 3991 4049 3992 #ifndef VBOX_FOR_DTRACE_LIB 4050 #ifndef __ASSEMBLER__ 4051 # ifndef VBOX_FOR_DTRACE_LIB 3993 4052 /** 3994 4053 * Descriptor attributes (as seen by VT-x). … … 4019 4078 unsigned u1Unusable : 1; 4020 4079 } X86DESCATTRBITS; 4021 #endif /* !VBOX_FOR_DTRACE_LIB */ 4080 # endif /* !VBOX_FOR_DTRACE_LIB */ 4081 #endif /* !__ASSEMBLER__ */ 4022 4082 4023 4083 /** @name X86DESCATTR masks … … 4038 4098 /** @} */ 4039 4099 4040 #pragma pack(1) 4100 4101 #ifndef __ASSEMBLER__ 4102 # pragma pack(1) 4041 4103 typedef union X86DESCATTR 4042 4104 { 4043 4105 /** Unsigned integer view. */ 4044 4106 uint32_t u; 4045 # ifndef VBOX_FOR_DTRACE_LIB4107 # ifndef VBOX_FOR_DTRACE_LIB 4046 4108 /** Normal view. */ 4047 4109 X86DESCATTRBITS n; 4048 # endif4110 # endif 4049 4111 } X86DESCATTR; 4050 # pragma pack()4112 # pragma pack() 4051 4113 /** Pointer to descriptor attributes. */ 4052 4114 typedef X86DESCATTR *PX86DESCATTR; 4053 4115 /** Pointer to const descriptor attributes. */ 4054 4116 typedef const X86DESCATTR *PCX86DESCATTR; 4117 #endif /* !__ASSEMBLER__ */ 4055 4118 4056 4119 #ifndef VBOX_FOR_DTRACE_LIB 4057 4120 4121 #ifndef __ASSEMBLER__ 4058 4122 /** 4059 4123 * Generic descriptor table entry 4060 4124 */ 4061 # pragma pack(1)4125 # pragma pack(1) 4062 4126 typedef struct X86DESCGENERIC 4063 4127 { … … 4092 4156 unsigned u8BaseHigh2 : 8; 4093 4157 } X86DESCGENERIC; 4094 # pragma pack()4158 # pragma pack() 4095 4159 /** Pointer to a generic descriptor entry. */ 4096 4160 typedef X86DESCGENERIC *PX86DESCGENERIC; 4097 4161 /** Pointer to a const generic descriptor entry. */ 4098 4162 typedef const X86DESCGENERIC *PCX86DESCGENERIC; 4163 # endif /* !__ASSEMBLER__ */ 4164 4099 4165 4100 4166 /** @name Bit offsets of X86DESCGENERIC members. 4101 4167 * @{*/ 4102 # define X86DESCGENERIC_BIT_OFF_LIMIT_LOW(0) /**< Bit offset of X86DESCGENERIC::u16LimitLow. */4103 # define X86DESCGENERIC_BIT_OFF_BASE_LOW(16) /**< Bit offset of X86DESCGENERIC::u16BaseLow. */4104 # define X86DESCGENERIC_BIT_OFF_BASE_HIGH1(32) /**< Bit offset of X86DESCGENERIC::u8BaseHigh1. */4105 # define X86DESCGENERIC_BIT_OFF_TYPE(40) /**< Bit offset of X86DESCGENERIC::u4Type. */4106 # define X86DESCGENERIC_BIT_OFF_DESC_TYPE(44) /**< Bit offset of X86DESCGENERIC::u1DescType. */4107 # define X86DESCGENERIC_BIT_OFF_DPL(45) /**< Bit offset of X86DESCGENERIC::u2Dpl. */4108 # define X86DESCGENERIC_BIT_OFF_PRESENT(47) /**< Bit offset of X86DESCGENERIC::uu1Present. */4109 # define X86DESCGENERIC_BIT_OFF_LIMIT_HIGH(48) /**< Bit offset of X86DESCGENERIC::u4LimitHigh. */4110 # define X86DESCGENERIC_BIT_OFF_AVAILABLE(52) /**< Bit offset of X86DESCGENERIC::u1Available. */4111 # define X86DESCGENERIC_BIT_OFF_LONG(53) /**< Bit offset of X86DESCGENERIC::u1Long. */4112 # define X86DESCGENERIC_BIT_OFF_DEF_BIG(54) /**< Bit offset of X86DESCGENERIC::u1DefBig. */4113 # define X86DESCGENERIC_BIT_OFF_GRANULARITY(55) /**< Bit offset of X86DESCGENERIC::u1Granularity. */4114 # define X86DESCGENERIC_BIT_OFF_BASE_HIGH2(56) /**< Bit offset of X86DESCGENERIC::u8BaseHigh2. */4168 # define X86DESCGENERIC_BIT_OFF_LIMIT_LOW (0) /**< Bit offset of X86DESCGENERIC::u16LimitLow. */ 4169 # define X86DESCGENERIC_BIT_OFF_BASE_LOW (16) /**< Bit offset of X86DESCGENERIC::u16BaseLow. */ 4170 # define X86DESCGENERIC_BIT_OFF_BASE_HIGH1 (32) /**< Bit offset of X86DESCGENERIC::u8BaseHigh1. */ 4171 # define X86DESCGENERIC_BIT_OFF_TYPE (40) /**< Bit offset of X86DESCGENERIC::u4Type. */ 4172 # define X86DESCGENERIC_BIT_OFF_DESC_TYPE (44) /**< Bit offset of X86DESCGENERIC::u1DescType. */ 4173 # define X86DESCGENERIC_BIT_OFF_DPL (45) /**< Bit offset of X86DESCGENERIC::u2Dpl. */ 4174 # define X86DESCGENERIC_BIT_OFF_PRESENT (47) /**< Bit offset of X86DESCGENERIC::uu1Present. */ 4175 # define X86DESCGENERIC_BIT_OFF_LIMIT_HIGH (48) /**< Bit offset of X86DESCGENERIC::u4LimitHigh. */ 4176 # define X86DESCGENERIC_BIT_OFF_AVAILABLE (52) /**< Bit offset of X86DESCGENERIC::u1Available. */ 4177 # define X86DESCGENERIC_BIT_OFF_LONG (53) /**< Bit offset of X86DESCGENERIC::u1Long. */ 4178 # define X86DESCGENERIC_BIT_OFF_DEF_BIG (54) /**< Bit offset of X86DESCGENERIC::u1DefBig. */ 4179 # define X86DESCGENERIC_BIT_OFF_GRANULARITY (55) /**< Bit offset of X86DESCGENERIC::u1Granularity. */ 4180 # define X86DESCGENERIC_BIT_OFF_BASE_HIGH2 (56) /**< Bit offset of X86DESCGENERIC::u8BaseHigh2. */ 4115 4181 /** @} */ 4116 4182 … … 4118 4184 /** @name LAR mask 4119 4185 * @{ */ 4120 # define X86LAR_F_TYPEUINT16_C( 0x0f00)4121 # define X86LAR_F_DTUINT16_C( 0x1000)4122 # define X86LAR_F_DPLUINT16_C( 0x6000)4123 # define X86LAR_F_DPL_SHIFT13 /**< Shift count for the DPL value. */4124 # define X86LAR_F_PUINT16_C( 0x8000)4125 # define X86LAR_F_AVLUINT32_C(0x00100000)4126 # define X86LAR_F_LUINT32_C(0x00200000)4127 # define X86LAR_F_DUINT32_C(0x00400000)4128 # define X86LAR_F_GUINT32_C(0x00800000)4186 # define X86LAR_F_TYPE UINT16_C( 0x0f00) 4187 # define X86LAR_F_DT UINT16_C( 0x1000) 4188 # define X86LAR_F_DPL UINT16_C( 0x6000) 4189 # define X86LAR_F_DPL_SHIFT 13 /**< Shift count for the DPL value. */ 4190 # define X86LAR_F_P UINT16_C( 0x8000) 4191 # define X86LAR_F_AVL UINT32_C(0x00100000) 4192 # define X86LAR_F_L UINT32_C(0x00200000) 4193 # define X86LAR_F_D UINT32_C(0x00400000) 4194 # define X86LAR_F_G UINT32_C(0x00800000) 4129 4195 /** @} */ 4130 4196 4131 4197 4198 # ifndef __ASSEMBLER__ 4132 4199 /** 4133 4200 * Call-, Interrupt-, Trap- or Task-gate descriptor (legacy). … … 4162 4229 /** Pointer to a const Call-, Interrupt-, Trap- or Task-gate descriptor entry. */ 4163 4230 typedef const X86DESCGATE *PCX86DESCGATE; 4231 # endif /* !__ASSEMBLER__ */ 4164 4232 4165 4233 #endif /* VBOX_FOR_DTRACE_LIB */ 4166 4234 4235 #ifndef __ASSEMBLER__ 4167 4236 /** 4168 4237 * Descriptor table entry. 4169 4238 */ 4170 # pragma pack(1)4239 # pragma pack(1) 4171 4240 typedef union X86DESC 4172 4241 { 4173 # ifndef VBOX_FOR_DTRACE_LIB4242 # ifndef VBOX_FOR_DTRACE_LIB 4174 4243 /** Generic descriptor view. */ 4175 4244 X86DESCGENERIC Gen; 4176 4245 /** Gate descriptor view. */ 4177 4246 X86DESCGATE Gate; 4178 #endif 4179 4247 # endif 4180 4248 /** 8 bit unsigned integer view. */ 4181 4249 uint8_t au8[8]; … … 4189 4257 uint64_t u; 4190 4258 } X86DESC; 4191 # ifndef VBOX_FOR_DTRACE_LIB4259 # ifndef VBOX_FOR_DTRACE_LIB 4192 4260 AssertCompileSize(X86DESC, 8); 4193 # endif4194 # pragma pack()4261 # endif 4262 # pragma pack() 4195 4263 /** Pointer to descriptor table entry. */ 4196 4264 typedef X86DESC *PX86DESC; 4197 4265 /** Pointer to const descriptor table entry. */ 4198 4266 typedef const X86DESC *PCX86DESC; 4267 #endif /* !__ASSEMBLER__ */ 4199 4268 4200 4269 /** @def X86DESC_BASE … … 4230 4299 ( ((a_pDesc)->u >> (16+16+8)) & UINT32_C(0xf0ff) ) /** @todo do we have a define for 0xf0ff? */ 4231 4300 4232 #ifndef VBOX_FOR_DTRACE_LIB 4301 #ifndef __ASSEMBLER__ 4302 # ifndef VBOX_FOR_DTRACE_LIB 4233 4303 4234 4304 /** … … 4236 4306 * Note: most of these bits have no meaning in long mode. 4237 4307 */ 4238 # pragma pack(1)4308 # pragma pack(1) 4239 4309 typedef struct X86DESC64GENERIC 4240 4310 { … … 4274 4344 uint32_t u19Reserved : 19; 4275 4345 } X86DESC64GENERIC; 4276 # pragma pack()4346 # pragma pack() 4277 4347 /** Pointer to a generic descriptor entry. */ 4278 4348 typedef X86DESC64GENERIC *PX86DESC64GENERIC; … … 4285 4355 * @remarks This is, save a couple of comments, identical to X86DESC64GENERIC... 4286 4356 */ 4287 # pragma pack(1)4357 # pragma pack(1) 4288 4358 typedef struct X86DESC64SYSTEM 4289 4359 { … … 4323 4393 uint32_t u19Reserved : 19; 4324 4394 } X86DESC64SYSTEM; 4325 # pragma pack()4395 # pragma pack() 4326 4396 /** Pointer to a system descriptor entry. */ 4327 4397 typedef X86DESC64SYSTEM *PX86DESC64SYSTEM; … … 4367 4437 typedef const X86DESC64GATE *PCX86DESC64GATE; 4368 4438 4369 # endif /* VBOX_FOR_DTRACE_LIB */4439 # endif /* VBOX_FOR_DTRACE_LIB */ 4370 4440 4371 4441 /** 4372 4442 * Descriptor table entry. 4373 4443 */ 4374 # pragma pack(1)4444 # pragma pack(1) 4375 4445 typedef union X86DESC64 4376 4446 { 4377 # ifndef VBOX_FOR_DTRACE_LIB4447 # ifndef VBOX_FOR_DTRACE_LIB 4378 4448 /** Generic descriptor view. */ 4379 4449 X86DESC64GENERIC Gen; … … 4382 4452 /** Gate descriptor view. */ 4383 4453 X86DESC64GATE Gate; 4384 # endif4454 # endif 4385 4455 4386 4456 /** 8 bit unsigned integer view. */ … … 4393 4463 uint64_t au64[2]; 4394 4464 } X86DESC64; 4395 # ifndef VBOX_FOR_DTRACE_LIB4465 # ifndef VBOX_FOR_DTRACE_LIB 4396 4466 AssertCompileSize(X86DESC64, 16); 4397 # endif4398 # pragma pack()4467 # endif 4468 # pragma pack() 4399 4469 /** Pointer to descriptor table entry. */ 4400 4470 typedef X86DESC64 *PX86DESC64; … … 4434 4504 #endif 4435 4505 /** @} */ 4506 4507 #endif /* !__ASSEMBLER__ */ 4436 4508 4437 4509 … … 4589 4661 #define X86_SEL_TYPE_SYS_386_TSS_LIMIT_MIN 0x67 4590 4662 4663 #ifndef __ASSEMBLER__ 4664 4591 4665 /** 4592 4666 * 16-bit Task Segment (TSS). 4593 4667 */ 4594 # pragma pack(1)4668 # pragma pack(1) 4595 4669 typedef struct X86TSS16 4596 4670 { … … 4640 4714 RTSEL selLdt; 4641 4715 } X86TSS16; 4642 # ifndef VBOX_FOR_DTRACE_LIB4716 # ifndef VBOX_FOR_DTRACE_LIB 4643 4717 AssertCompileSize(X86TSS16, X86_SEL_TYPE_SYS_286_TSS_LIMIT_MIN + 1); 4644 # endif4645 # pragma pack()4718 # endif 4719 # pragma pack() 4646 4720 /** Pointer to a 16-bit task segment. */ 4647 4721 typedef X86TSS16 *PX86TSS16; … … 4653 4727 * 32-bit Task Segment (TSS). 4654 4728 */ 4655 # pragma pack(1)4729 # pragma pack(1) 4656 4730 typedef struct X86TSS32 4657 4731 { … … 4723 4797 uint16_t offIoBitmap; 4724 4798 } X86TSS32; 4725 # pragma pack()4799 # pragma pack() 4726 4800 /** Pointer to task segment. */ 4727 4801 typedef X86TSS32 *PX86TSS32; 4728 4802 /** Pointer to const task segment. */ 4729 4803 typedef const X86TSS32 *PCX86TSS32; 4730 # ifndef VBOX_FOR_DTRACE_LIB4804 # ifndef VBOX_FOR_DTRACE_LIB 4731 4805 AssertCompileSize(X86TSS32, X86_SEL_TYPE_SYS_386_TSS_LIMIT_MIN + 1); 4732 4806 AssertCompileMemberOffset(X86TSS32, cr3, 28); 4733 4807 AssertCompileMemberOffset(X86TSS32, offIoBitmap, 102); 4734 # endif4808 # endif 4735 4809 4736 4810 /** 4737 4811 * 64-bit Task segment. 4738 4812 */ 4739 # pragma pack(1)4813 # pragma pack(1) 4740 4814 typedef struct X86TSS64 4741 4815 { … … 4764 4838 uint16_t offIoBitmap; 4765 4839 } X86TSS64; 4766 # pragma pack()4840 # pragma pack() 4767 4841 /** Pointer to a 64-bit task segment. */ 4768 4842 typedef X86TSS64 *PX86TSS64; 4769 4843 /** Pointer to a const 64-bit task segment. */ 4770 4844 typedef const X86TSS64 *PCX86TSS64; 4771 # ifndef VBOX_FOR_DTRACE_LIB4845 # ifndef VBOX_FOR_DTRACE_LIB 4772 4846 AssertCompileSize(X86TSS64, X86_SEL_TYPE_SYS_386_TSS_LIMIT_MIN + 1); 4773 #endif 4847 # endif 4848 4849 #endif /* !__ASSEMBLER__ */ 4774 4850 4775 4851 /** @} */ … … 4816 4892 4817 4893 4894 #ifndef __ASSEMBLER__ 4818 4895 /** 4819 4896 * x86 Exceptions/Faults/Traps. … … 4873 4950 /** Pointer to a const x86 exception code. */ 4874 4951 typedef const X86XCPT *PCX86XCPT; 4952 #endif /* !__ASSEMBLER__ */ 4875 4953 /** The last valid (currently reserved) exception value. */ 4876 4954 #define X86_XCPT_LAST 0x1f … … 4910 4988 /** @} */ 4911 4989 4912 #pragma pack(1) 4990 #ifndef __ASSEMBLER__ 4991 4992 # pragma pack(1) 4913 4993 /** 4914 4994 * 16-bit IDTR. … … 4921 5001 uint16_t uSel; 4922 5002 } X86IDTR16, *PX86IDTR16; 4923 # pragma pack()4924 4925 # pragma pack(1)5003 # pragma pack() 5004 5005 # pragma pack(1) 4926 5006 /** 4927 5007 * 32-bit IDTR/GDTR. … … 4932 5012 uint16_t cb; 4933 5013 /** Address of the descriptor table. */ 4934 # ifndef VBOX_FOR_DTRACE_LIB5014 # ifndef VBOX_FOR_DTRACE_LIB 4935 5015 uint32_t uAddr; 4936 # else5016 # else 4937 5017 uint16_t au16Addr[2]; 4938 # endif5018 # endif 4939 5019 } X86XDTR32, *PX86XDTR32; 4940 # pragma pack()4941 4942 # pragma pack(1)5020 # pragma pack() 5021 5022 # pragma pack(1) 4943 5023 /** 4944 5024 * 64-bit IDTR/GDTR. … … 4949 5029 uint16_t cb; 4950 5030 /** Address of the descriptor table. */ 4951 # ifndef VBOX_FOR_DTRACE_LIB5031 # ifndef VBOX_FOR_DTRACE_LIB 4952 5032 uint64_t uAddr; 4953 # else5033 # else 4954 5034 uint16_t au16Addr[4]; 4955 # endif5035 # endif 4956 5036 } X86XDTR64, *PX86XDTR64; 4957 #pragma pack() 5037 # pragma pack() 5038 5039 #endif /* !__ASSEMBLER__ */ 4958 5040 4959 5041
Note:
See TracChangeset
for help on using the changeset viewer.