VirtualBox

Changeset 59258 in vbox


Ignore:
Timestamp:
Jan 5, 2016 5:37:22 PM (9 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
104892
Message:

bs3kit: working on 32-bit IDT.

Location:
trunk/src/VBox/ValidationKit/bootsectors/bs3kit
Files:
4 added
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/ValidationKit/bootsectors/bs3kit/Makefile.kmk

    r59254 r59258  
    521521        bs3-cmn-TestSendStrCmd.asm \
    522522        bs3-cmn-TestIsVmmDevTestingPresent.asm \
     523        bs3-cmn-Trap32Init.c \
     524        bs3-cmn-Trap32SetGate.c \
    523525       ../../../Runtime/common/asm/ASMBitFirstClear.asm \
    524526       ../../../Runtime/common/asm/ASMBitFirstSet.asm \
     
    557559        bs3-wc32-U8RS.asm \
    558560        bs3-wc32-U8LS.asm \
     561       bs3-c32-Trap32Generic.asm \
     562       bs3-c32-Trap32ResumeFrame.asm
    559563
    560564# The 64-bit BS3Kit library.
  • trunk/src/VBox/ValidationKit/bootsectors/bs3kit/bs3kit.h

    r59245 r59258  
    15591559#define Bs3KbdWrite BS3_CMN_NM(Bs3KbdWrite) /**< Selects #Bs3KbdWrite_c16, #Bs3KbdWrite_c32 or #Bs3KbdWrite_c64. */
    15601560
     1561
     1562/**
     1563 * BS3 integer register.
     1564 */
     1565typedef union BS3REG
     1566{
     1567    /** 8-bit unsigned integer. */
     1568    uint8_t     u8;
     1569    /** 16-bit unsigned integer. */
     1570    uint16_t    u16;
     1571    /** 32-bit unsigned integer. */
     1572    uint32_t    u32;
     1573    /** 64-bit unsigned integer. */
     1574    uint64_t    u64;
     1575    /** Full unsigned integer. */
     1576    uint64_t    u;
     1577    /** High/low byte view. */
     1578    struct
     1579    {
     1580        uint8_t bLo;
     1581        uint8_t bHi;
     1582    } b;
     1583    /** 8-bit view. */
     1584    uint8_t     au8[8];
     1585    /** 16-bit view. */
     1586    uint16_t    au16[4];
     1587    /** 32-bit view. */
     1588    uint32_t    au32[2];
     1589} BS3REG;
     1590/** Pointer to an integer register. */
     1591typedef BS3REG BS3_FAR *PBS3REG;
     1592/** Pointer to a const integer register. */
     1593typedef BS3REG const BS3_FAR *PCBS3REG;
     1594
     1595/**
     1596 * Register context (without FPU).
     1597 */
     1598typedef struct BS3REGCTX
     1599{
     1600    BS3REG      rax;
     1601    BS3REG      rcx;
     1602    BS3REG      rdx;
     1603    BS3REG      rbx;
     1604    BS3REG      rsp;
     1605    BS3REG      rbp;
     1606    BS3REG      rsi;
     1607    BS3REG      rdi;
     1608    BS3REG      r8;
     1609    BS3REG      r9;
     1610    BS3REG      r10;
     1611    BS3REG      r11;
     1612    BS3REG      r12;
     1613    BS3REG      r13;
     1614    BS3REG      r14;
     1615    BS3REG      r15;
     1616    BS3REG      rflags;
     1617    BS3REG      rip;
     1618    uint16_t    cs;
     1619    uint16_t    ds;
     1620    uint16_t    es;
     1621    uint16_t    fs;
     1622    uint16_t    gs;
     1623    uint16_t    ss;
     1624    uint8_t     cBits;
     1625    uint8_t     abPadding[3];
     1626    BS3REG      cr0;
     1627    BS3REG      cr2;
     1628    BS3REG      cr3;
     1629    BS3REG      cr4;
     1630} BS3REGCTX;
     1631/** Pointer to a register context. */
     1632typedef BS3REGCTX BS3_FAR *PBS3REGCTX;
     1633/** Pointer to a const register context. */
     1634typedef BS3REGCTX const BS3_FAR *PCBS3REGCTX;
     1635
     1636
     1637/**
     1638 * Trap frame.
     1639 */
     1640typedef struct BS3TRAPFRAME
     1641{
     1642    /** Exception/interrupt number. */
     1643    uint8_t     bXcpt;
     1644    /** Explicit alignment. */
     1645    uint8_t     bAlignment;
     1646    /** The handler CS. */
     1647    uint16_t    uHandlerCc;
     1648    /** The handler SS. */
     1649    uint16_t    uHandlerSs;
     1650    /** The handler RSP (top of iret frame). */
     1651    uint64_t    uHandlerRsp;
     1652    /** The handler RFLAGS value. */
     1653    uint64_t    fHandlerRfl;
     1654    /** The error code (if applicable). */
     1655    uint64_t    uErrCd;
     1656    /** The register context. */
     1657    BS3REGCTX   Ctx;
     1658} BS3TRAPFRAME;
     1659/** Pointer to a trap frame. */
     1660typedef BS3TRAPFRAME BS3_FAR *PBS3TRAPFRAME;
     1661/** Pointer to a const trap frame.   */
     1662typedef BS3TRAPFRAME const BS3_FAR *PCBS3TRAPFRAME;
     1663
     1664/**
     1665 * Resumes execution of a 32-bit trap frame.
     1666 *
     1667 * @param   pTrapFrame      Trap frame to resume.
     1668 * @param   fFlags          Flags, BS3TRAPRESUME_F_XXX.
     1669 */
     1670BS3_DECL(void) Bs3Trap32ResumeFrame_c32(BS3TRAPFRAME BS3_FAR *pTrapFrame, uint16_t fFlags);
     1671#define Bs3Trap32ResumeFrame BS3_CMN_NM(Bs3Trap32ResumeFrame) /**< Selects Bs3Trap32ResumeFrame_c16 (not implemented), #Bs3Trap32ResumeFrame_c32 or Bs3Trap32ResumeFrame_c64 (not implemented). */
     1672
     1673/** Skip restoring the CRx registers. */
     1674#define BS3TRAPRESUME_F_SKIP_CRX    UINT16_C(0x0001)
     1675
     1676/**
     1677 * Modifies the 32-bit IDT entry specified by @a iIdt.
     1678 *
     1679 * @param   iIdt        The index of the IDT entry to set.
     1680 * @param   bType       The gate type (X86_SEL_TYPE_SYS_XXX).
     1681 * @param   bDpl        The DPL.
     1682 * @param   uSel        The handler selector.
     1683 * @param   off         The handler offset (if applicable).
     1684 * @param   cParams     The parameter count (for call gates).
     1685 */
     1686BS3_DECL(void) Bs3Trap32SetGate(uint8_t iIdt, uint8_t bType, uint8_t bDpl, uint16_t uSel, uint32_t off, uint8_t cParams);
     1687
     1688/** The address of Bs3Idt32GenericEntries.
     1689 * Bs3Idt32GenericEntries is an array of interrupt/trap/whatever entry
     1690 * points, 8 bytes each, that will create a register frame and call the generic
     1691 * C compatible trap handlers. */
     1692extern uint32_t BS3_DATA_NM(g_Bs3Idt32GenericEntriesFlatAddr);
     1693
    15611694/** @} */
    15621695
  • trunk/src/VBox/ValidationKit/bootsectors/bs3kit/bs3kit.mac

    r59242 r59258  
    828828%endif
    829829
    830 %endif
    831 
     830;
     831; BS3 register context (without FPU).
     832;
     833struc BS3REGCTX
     834        .rax            resq 1
     835        .rcx            resq 1
     836        .rdx            resq 1
     837        .rbx            resq 1
     838        .rsp            resq 1
     839        .rbp            resq 1
     840        .rsi            resq 1
     841        .rdi            resq 1
     842        .r8             resq 1
     843        .r9             resq 1
     844        .r10            resq 1
     845        .r11            resq 1
     846        .r12            resq 1
     847        .r13            resq 1
     848        .r14            resq 1
     849        .r15            resq 1
     850        .rflags         resq 1
     851        .rip            resq 1
     852        .cs             resw 1
     853        .ds             resw 1
     854        .es             resw 1
     855        .fs             resw 1
     856        .gs             resw 1
     857        .ss             resw 1
     858        .cBits          resb 1
     859        .abPadding      resb 3
     860        .cr0            resq 1
     861        .cr2            resq 1
     862        .cr3            resq 1
     863        .cr4            resq 1
     864endstruc
     865
     866;;
     867; BS3 Trap Frame.
     868;
     869struc BS3TRAPFRAME
     870        .bXcpt          resb 1
     871        .bAlignment     resb 1
     872        .uHandlerCs     resw 1
     873        .uHandlerSs     resw 1
     874        .uHandlerRsp    resq 1
     875        .fHandlerRfl    resq 1
     876        .uErrCd         resq 1
     877        .Ctx            resb BS3REGCTX_size
     878endstruc
     879
     880;; Flag for Bs3TrapXxResumeFrame methods.
     881%define BS3TRAPRESUME_F_SKIP_CRX 1
     882
     883%endif
     884
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