Changeset 59258 in vbox
- Timestamp:
- Jan 5, 2016 5:37:22 PM (9 years ago)
- svn:sync-xref-src-repo-rev:
- 104892
- 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 521 521 bs3-cmn-TestSendStrCmd.asm \ 522 522 bs3-cmn-TestIsVmmDevTestingPresent.asm \ 523 bs3-cmn-Trap32Init.c \ 524 bs3-cmn-Trap32SetGate.c \ 523 525 ../../../Runtime/common/asm/ASMBitFirstClear.asm \ 524 526 ../../../Runtime/common/asm/ASMBitFirstSet.asm \ … … 557 559 bs3-wc32-U8RS.asm \ 558 560 bs3-wc32-U8LS.asm \ 561 bs3-c32-Trap32Generic.asm \ 562 bs3-c32-Trap32ResumeFrame.asm 559 563 560 564 # The 64-bit BS3Kit library. -
trunk/src/VBox/ValidationKit/bootsectors/bs3kit/bs3kit.h
r59245 r59258 1559 1559 #define Bs3KbdWrite BS3_CMN_NM(Bs3KbdWrite) /**< Selects #Bs3KbdWrite_c16, #Bs3KbdWrite_c32 or #Bs3KbdWrite_c64. */ 1560 1560 1561 1562 /** 1563 * BS3 integer register. 1564 */ 1565 typedef 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. */ 1591 typedef BS3REG BS3_FAR *PBS3REG; 1592 /** Pointer to a const integer register. */ 1593 typedef BS3REG const BS3_FAR *PCBS3REG; 1594 1595 /** 1596 * Register context (without FPU). 1597 */ 1598 typedef 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. */ 1632 typedef BS3REGCTX BS3_FAR *PBS3REGCTX; 1633 /** Pointer to a const register context. */ 1634 typedef BS3REGCTX const BS3_FAR *PCBS3REGCTX; 1635 1636 1637 /** 1638 * Trap frame. 1639 */ 1640 typedef 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. */ 1660 typedef BS3TRAPFRAME BS3_FAR *PBS3TRAPFRAME; 1661 /** Pointer to a const trap frame. */ 1662 typedef 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 */ 1670 BS3_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 */ 1686 BS3_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. */ 1692 extern uint32_t BS3_DATA_NM(g_Bs3Idt32GenericEntriesFlatAddr); 1693 1561 1694 /** @} */ 1562 1695 -
trunk/src/VBox/ValidationKit/bootsectors/bs3kit/bs3kit.mac
r59242 r59258 828 828 %endif 829 829 830 %endif 831 830 ; 831 ; BS3 register context (without FPU). 832 ; 833 struc 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 864 endstruc 865 866 ;; 867 ; BS3 Trap Frame. 868 ; 869 struc 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 878 endstruc 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.