VirtualBox

Changeset 102374 in vbox


Ignore:
Timestamp:
Nov 29, 2023 10:39:20 AM (16 months ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
160510
Message:

VBox/vmm/cpumctx-x86-amd64.h: offsets to make disassembly easier to read. bugref:10371

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/VBox/vmm/cpumctx-x86-amd64.h

    r100935 r102374  
    325325typedef struct CPUMCTX
    326326{
    327     /** General purpose registers. */
     327    /** 0x0000 - General purpose registers. */
    328328    union /* no tag! */
    329329    {
     
    366366    } CPUM_UNION_NM(g);
    367367
    368     /** Segment registers. */
     368    /** 0x0080 - Segment registers. */
    369369    union /* no tag! */
    370370    {
     
    378378    } CPUM_UNION_NM(s);
    379379
    380     /** The task register.
     380    /** 0x0110 - The task register.
    381381     * Only the guest context uses all the members. */
    382382    CPUMSELREG          ldtr;
    383     /** The task register.
     383    /** 0x0128 - The task register.
    384384     * Only the guest context uses all the members. */
    385385    CPUMSELREG          tr;
    386386
    387     /** The program counter. */
     387    /** 0x0140 - The program counter. */
    388388    union
    389389    {
     
    393393    } CPUM_UNION_NM(rip);
    394394
    395     /** The flags register. */
     395    /** 0x0148 - The flags register. */
    396396    union
    397397    {
     
    400400    } CPUM_UNION_NM(rflags);
    401401
    402     /** 0x150 - Externalized state tracker, CPUMCTX_EXTRN_XXX. */
     402    /** 0x0150 - Externalized state tracker, CPUMCTX_EXTRN_XXX. */
    403403    uint64_t            fExtrn;
    404404
    405     /** The RIP value an interrupt shadow is/was valid for. */
     405    /** 0x0158 The RIP value an interrupt shadow is/was valid for. */
    406406    uint64_t            uRipInhibitInt;
    407407
    408408    /** @name Control registers.
    409409     * @{ */
    410     uint64_t            cr0;
    411     uint64_t            cr2;
    412     uint64_t            cr3;
    413     uint64_t            cr4;
     410    uint64_t            cr0;  /**< 0x0160 */
     411    uint64_t            cr2;  /**< 0x0168 */
     412    uint64_t            cr3;  /**< 0x0170 */
     413    uint64_t            cr4;  /**< 0x0178 */
    414414    /** @} */
    415415
    416     /** Debug registers.
     416    /** 0x0180 - Debug registers.
    417417     * @remarks DR4 and DR5 should not be used since they are aliases for
    418418     *          DR6 and DR7 respectively on both AMD and Intel CPUs.
     
    422422    uint64_t            dr[8];
    423423
    424     /** Padding before the structure so the 64-bit member is correctly aligned.
     424    /** 0x01c0 - Padding before the structure so the 64-bit member is correctly aligned.
    425425     * @todo fix this structure!  */
    426426    uint16_t            gdtrPadding[3];
     
    428428    VBOXGDTR            gdtr;
    429429
    430     /** Padding before the structure so the 64-bit member is correctly aligned.
     430    /** 0x01d0 - Padding before the structure so the 64-bit member is correctly aligned.
    431431     * @todo fix this structure!  */
    432432    uint16_t            idtrPadding[3];
     
    434434    VBOXIDTR            idtr;
    435435
    436     /** The sysenter msr registers.
     436    /** 0x01e0 - The sysenter msr registers.
    437437     * This member is not used by the hypervisor context. */
    438438    CPUMSYSENTER        SysEnter;
     
    440440    /** @name System MSRs.
    441441     * @{ */
    442     uint64_t            msrEFER; /**< @todo move EFER up to the crX registers for better cacheline mojo */
    443     uint64_t            msrSTAR;            /**< Legacy syscall eip, cs & ss. */
    444     uint64_t            msrPAT;             /**< Page attribute table. */
    445     uint64_t            msrLSTAR;           /**< 64 bits mode syscall rip. */
    446     uint64_t            msrCSTAR;           /**< Compatibility mode syscall rip. */
    447     uint64_t            msrSFMASK;          /**< syscall flag mask. */
    448     uint64_t            msrKERNELGSBASE;    /**< swapgs exchange value. */
     442    uint64_t            msrEFER;            /**< 0x01f8 - @todo move EFER up to the crX registers for better cacheline mojo */
     443    uint64_t            msrSTAR;            /**< 0x0200 - Legacy syscall eip, cs & ss. */
     444    uint64_t            msrPAT;             /**< 0x0208 - Page attribute table. */
     445    uint64_t            msrLSTAR;           /**< 0x0210 - 64 bits mode syscall rip. */
     446    uint64_t            msrCSTAR;           /**< 0x0218 - Compatibility mode syscall rip. */
     447    uint64_t            msrSFMASK;          /**< 0x0220 - syscall flag mask. */
     448    uint64_t            msrKERNELGSBASE;    /**< 0x0228 - swapgs exchange value. */
    449449    /** @} */
    450450
    451     uint64_t            au64Unused[2];
     451    uint64_t            au64Unused[2];      /**< 0x0230 */
    452452
    453453    /** 0x240 - PAE PDPTEs. */
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette