VirtualBox

Changeset 106362 in vbox for trunk/include/VBox/vmm/dbgf.h


Ignore:
Timestamp:
Oct 16, 2024 1:08:09 PM (4 months ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
165175
Message:

VMM/DBGF: Prepare DBGF to support ARMv8/A64 style breakpoints for the VMM debugger. This converts the x86 centric int3 naming to software breakpoint, bugref:10393

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/VBox/vmm/dbgf.h

    r106061 r106362  
    829829    /** Debug register. */
    830830    DBGFBPTYPE_REG,
    831     /** INT 3 instruction. */
    832     DBGFBPTYPE_INT3,
     831    /** Software breakpoint (INT 3 on x86, bkpt on AArch64). */
     832    DBGFBPTYPE_SOFTWARE,
    833833    /** Port I/O breakpoint. */
    834834    DBGFBPTYPE_PORT_IO,
     
    920920        } Reg;
    921921
    922         /** INT3 breakpoint data. */
    923         struct DBGFBPINT3
     922        /** Software breakpoint data. */
     923        struct DBGFBPSW
    924924        {
    925925            /** The flat GC address of the breakpoint. */
     
    927927            /** The physical address of the breakpoint. */
    928928            RTGCPHYS        PhysAddr;
    929             /** The byte value we replaced by the INT 3 instruction. */
    930             uint8_t         bOrg;
    931         } Int3;
     929
     930            /** Architecture specific breakpoint data. */
     931            union
     932            {
     933                /** BKPT breakpoint data. */
     934                struct
     935                {
     936                    /** The original instruction being replaced by the breakpoint. */
     937                    uint32_t        u32Org;
     938                } armv8;
     939                /** Int 3 data. */
     940                struct
     941                {
     942                    /** The byte value we replaced by the INT 3 instruction. */
     943                    uint8_t         bOrg;
     944                } x86;
     945            } Arch;
     946        } Sw;
    932947
    933948        /** I/O port breakpoint data.   */
     
    959974AssertCompileSize(DBGFBPPUB, 64 - 8);
    960975AssertCompileMembersAtSameOffset(DBGFBPPUB, u.GCPtr, DBGFBPPUB, u.Reg.GCPtr);
    961 AssertCompileMembersAtSameOffset(DBGFBPPUB, u.GCPtr, DBGFBPPUB, u.Int3.GCPtr);
     976AssertCompileMembersAtSameOffset(DBGFBPPUB, u.GCPtr, DBGFBPPUB, u.Sw.GCPtr);
    962977
    963978/** Pointer to the visible breakpoint state. */
     
    20472062    DBGFREG_ARMV8_FIRST,
    20482063    /** General purpose registers. */
    2049     DBGFREG_ARMV8_GREG_X0,
     2064    DBGFREG_ARMV8_GREG_X0 = DBGFREG_ARMV8_FIRST,
    20502065    DBGFREG_ARMV8_GREG_W0 = DBGFREG_ARMV8_GREG_X0,
    20512066    DBGFREG_ARMV8_GREG_X1,
Note: See TracChangeset for help on using the changeset viewer.

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