VirtualBox

Changeset 59878 in vbox


Ignore:
Timestamp:
Feb 29, 2016 10:02:23 PM (9 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
105780
Message:

bs3kit: updates.

Location:
trunk/src/VBox/ValidationKit/bootsectors/bs3kit
Files:
5 edited

Legend:

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

    r59865 r59878  
    190190#
    191191VBOX_BS3KIT_MODE_SOURCES = \
     192        bs3-mode-Name.asm \
    192193        bs3-mode-SwitchToRM.asm \
    193194        bs3-mode-SwitchToPE16.asm \
     
    207208        bs3-mode-PagingGetRootForLM64.asm \
    208209        bs3-mode-TrapSystemCallHandler.asm \
     210        bs3-mode-TestDoModes.c \
     211        bs3-mode-TestDoModesHlp.asm \
    209212
    210213# The 16-bit real mode BS3Kit library.
  • trunk/src/VBox/ValidationKit/bootsectors/bs3kit/bs3-cmn-CpuDetectData.c

    r59789 r59878  
    3838#if ARCH_BITS == 16
    3939
    40 uint16_t BS3_DATA_NM(g_uBs3CpuDetected) = BS3CPU_TYPE_MASK | BS3CPU_F_CPUID | BS3CPU_F_CPUID_EXT_LEAVES | BS3CPU_F_LONG_MODE;
     40uint16_t BS3_DATA_NM(g_uBs3CpuDetected) = BS3CPU_TYPE_MASK | BS3CPU_F_CPUID | BS3CPU_F_CPUID_EXT_LEAVES
     41                                         | BS3CPU_F_PAE | BS3CPU_F_LONG_MODE;
    4142
    4243#endif /* ARCH_BITS == 16 */
  • trunk/src/VBox/ValidationKit/bootsectors/bs3kit/bs3-mode-CpuDetect.asm

    r59789 r59878  
    184184        ;
    185185        ; Do a very simple minded check here using the (standard) family field.
     186        ; While here, we also check for PAE.
    186187        ;
    187188        mov     eax, 1
    188189        cpuid
     190
     191        ; Calc the basic family value before we mess up EAX.
    189192        mov     cl, ah
    190         and     cl, 0fh                 ; Family.
     193        and     cl, 0fh
     194
     195        ; Start assembling return flags, checking for PAE.
     196        mov     xAX, BS3CPU_F_CPUID
     197        and     dx, X86_CPUID_FEATURE_EDX_PAE
     198        shl     dx, BS3CPU_F_PAE_BIT - X86_CPUID_FEATURE_EDX_PAE_BIT
     199        or      ax, dx
     200
     201        ; Add the CPU type based on the family value.
    191202        cmp     cl, 6
    192         mov     xAX, BS3CPU_PPro | BS3CPU_F_CPUID
     203        or      al, BS3CPU_PPro
    193204        jz      .return
    194205        ja      .NewerThanPPro
    195206        cmp     cl, 5
    196         mov     xAX, BS3CPU_Pentium | BS3CPU_F_CPUID
     207        or      al, BS3CPU_Pentium
    197208        je      .return
    198209        cmp     cl, 4
    199         mov     xAX, BS3CPU_80486 | BS3CPU_F_CPUID
     210        or      al, BS3CPU_80486
    200211        je      .return
    201212        cmp     cl, 3
    202         mov     xAX, BS3CPU_80386 | BS3CPU_F_CPUID
     213        or      al, BS3CPU_80386
    203214        je      .return
    204215.NewerThanPPro:
     216
    205217        ; Check for extended leaves and long mode.
    206218        mov     eax, 0x80000000
  • trunk/src/VBox/ValidationKit/bootsectors/bs3kit/bs3kit.h

    r59865 r59878  
    21312131 */
    21322132
     2133
    21332134/**
    21342135 * Macro for reducing typing.
     
    21372138 */
    21382139#define BS3_MODE_EXPAND_PROTOTYPES(a_RetType, a_BaseFnNm, a_Parameters) \
    2139     BS3_DECL(a_RetType) RT_CONCAT(a_BaseFnNm,_rm)     a_Parameters; \
    2140     BS3_DECL(a_RetType) RT_CONCAT(a_BaseFnNm,_pe16)   a_Parameters; \
    2141     BS3_DECL(a_RetType) RT_CONCAT(a_BaseFnNm,_pe32)   a_Parameters; \
    2142     BS3_DECL(a_RetType) RT_CONCAT(a_BaseFnNm,_pev86)  a_Parameters; \
    2143     BS3_DECL(a_RetType) RT_CONCAT(a_BaseFnNm,_pp16)   a_Parameters; \
    2144     BS3_DECL(a_RetType) RT_CONCAT(a_BaseFnNm,_pp32)   a_Parameters; \
    2145     BS3_DECL(a_RetType) RT_CONCAT(a_BaseFnNm,_ppv86)  a_Parameters; \
    2146     BS3_DECL(a_RetType) RT_CONCAT(a_BaseFnNm,_pae16)  a_Parameters; \
    2147     BS3_DECL(a_RetType) RT_CONCAT(a_BaseFnNm,_pae32)  a_Parameters; \
    2148     BS3_DECL(a_RetType) RT_CONCAT(a_BaseFnNm,_paev86) a_Parameters; \
    2149     BS3_DECL(a_RetType) RT_CONCAT(a_BaseFnNm,_lm16)   a_Parameters; \
    2150     BS3_DECL(a_RetType) RT_CONCAT(a_BaseFnNm,_lm32)   a_Parameters; \
    2151     BS3_DECL(a_RetType) RT_CONCAT(a_BaseFnNm,_lm64)   a_Parameters
     2140    BS3_DECL(a_RetType) RT_CONCAT(a_BaseFnNm,_rm)       a_Parameters; \
     2141    BS3_DECL(a_RetType) RT_CONCAT(a_BaseFnNm,_pe16)     a_Parameters; \
     2142    BS3_DECL(a_RetType) RT_CONCAT(a_BaseFnNm,_pe16_32)  a_Parameters; \
     2143    BS3_DECL(a_RetType) RT_CONCAT(a_BaseFnNm,_pe16_v86) a_Parameters; \
     2144    BS3_DECL(a_RetType) RT_CONCAT(a_BaseFnNm,_pe32)     a_Parameters; \
     2145    BS3_DECL(a_RetType) RT_CONCAT(a_BaseFnNm,_pe32_16)  a_Parameters; \
     2146    BS3_DECL(a_RetType) RT_CONCAT(a_BaseFnNm,_pev86)    a_Parameters; \
     2147    BS3_DECL(a_RetType) RT_CONCAT(a_BaseFnNm,_pp16)     a_Parameters; \
     2148    BS3_DECL(a_RetType) RT_CONCAT(a_BaseFnNm,_pp16_32)  a_Parameters; \
     2149    BS3_DECL(a_RetType) RT_CONCAT(a_BaseFnNm,_pp16_v86) a_Parameters; \
     2150    BS3_DECL(a_RetType) RT_CONCAT(a_BaseFnNm,_pp32)     a_Parameters; \
     2151    BS3_DECL(a_RetType) RT_CONCAT(a_BaseFnNm,_pp32_16)  a_Parameters; \
     2152    BS3_DECL(a_RetType) RT_CONCAT(a_BaseFnNm,_ppv86)    a_Parameters; \
     2153    BS3_DECL(a_RetType) RT_CONCAT(a_BaseFnNm,_pae16)    a_Parameters; \
     2154    BS3_DECL(a_RetType) RT_CONCAT(a_BaseFnNm,_pae16_16) a_Parameters; \
     2155    BS3_DECL(a_RetType) RT_CONCAT(a_BaseFnNm,_pae16_v86)a_Parameters; \
     2156    BS3_DECL(a_RetType) RT_CONCAT(a_BaseFnNm,_pae32)    a_Parameters; \
     2157    BS3_DECL(a_RetType) RT_CONCAT(a_BaseFnNm,_pae32_16) a_Parameters; \
     2158    BS3_DECL(a_RetType) RT_CONCAT(a_BaseFnNm,_paev86)   a_Parameters; \
     2159    BS3_DECL(a_RetType) RT_CONCAT(a_BaseFnNm,_lm16)     a_Parameters; \
     2160    BS3_DECL(a_RetType) RT_CONCAT(a_BaseFnNm,_lm32)     a_Parameters; \
     2161    BS3_DECL(a_RetType) RT_CONCAT(a_BaseFnNm,_lm64)     a_Parameters
     2162
     2163/**
     2164 * Macro for reducing typing.
     2165 *
     2166 * Doxygen knows how to expand this, well, kind of.
     2167 */
     2168#define BS3_MODE_EXPAND_EXTERN_DATA16(a_VarType, a_VarName, a_Suffix) \
     2169    extern BS3_DECL(a_VarType) BS3_FAR_DATA BS3_DATA_NM(RT_CONCAT(a_VarName,_rm))       a_Suffix; \
     2170    extern BS3_DECL(a_VarType) BS3_FAR_DATA BS3_DATA_NM(RT_CONCAT(a_VarName,_pe16))     a_Suffix; \
     2171    extern BS3_DECL(a_VarType) BS3_FAR_DATA BS3_DATA_NM(RT_CONCAT(a_VarName,_pe16_32))  a_Suffix; \
     2172    extern BS3_DECL(a_VarType) BS3_FAR_DATA BS3_DATA_NM(RT_CONCAT(a_VarName,_pe16_v86)) a_Suffix; \
     2173    extern BS3_DECL(a_VarType) BS3_FAR_DATA BS3_DATA_NM(RT_CONCAT(a_VarName,_pe32))     a_Suffix; \
     2174    extern BS3_DECL(a_VarType) BS3_FAR_DATA BS3_DATA_NM(RT_CONCAT(a_VarName,_pe32_16))  a_Suffix; \
     2175    extern BS3_DECL(a_VarType) BS3_FAR_DATA BS3_DATA_NM(RT_CONCAT(a_VarName,_pev86))    a_Suffix; \
     2176    extern BS3_DECL(a_VarType) BS3_FAR_DATA BS3_DATA_NM(RT_CONCAT(a_VarName,_pp16))     a_Suffix; \
     2177    extern BS3_DECL(a_VarType) BS3_FAR_DATA BS3_DATA_NM(RT_CONCAT(a_VarName,_pp16_32))  a_Suffix; \
     2178    extern BS3_DECL(a_VarType) BS3_FAR_DATA BS3_DATA_NM(RT_CONCAT(a_VarName,_pp16_v86)) a_Suffix; \
     2179    extern BS3_DECL(a_VarType) BS3_FAR_DATA BS3_DATA_NM(RT_CONCAT(a_VarName,_pp32))     a_Suffix; \
     2180    extern BS3_DECL(a_VarType) BS3_FAR_DATA BS3_DATA_NM(RT_CONCAT(a_VarName,_pp32_16))  a_Suffix; \
     2181    extern BS3_DECL(a_VarType) BS3_FAR_DATA BS3_DATA_NM(RT_CONCAT(a_VarName,_ppv86))    a_Suffix; \
     2182    extern BS3_DECL(a_VarType) BS3_FAR_DATA BS3_DATA_NM(RT_CONCAT(a_VarName,_pae16))    a_Suffix; \
     2183    extern BS3_DECL(a_VarType) BS3_FAR_DATA BS3_DATA_NM(RT_CONCAT(a_VarName,_pae16_32)) a_Suffix; \
     2184    extern BS3_DECL(a_VarType) BS3_FAR_DATA BS3_DATA_NM(RT_CONCAT(a_VarName,_pae16_v86))a_Suffix; \
     2185    extern BS3_DECL(a_VarType) BS3_FAR_DATA BS3_DATA_NM(RT_CONCAT(a_VarName,_pae32))    a_Suffix; \
     2186    extern BS3_DECL(a_VarType) BS3_FAR_DATA BS3_DATA_NM(RT_CONCAT(a_VarName,_pae32_16)) a_Suffix; \
     2187    extern BS3_DECL(a_VarType) BS3_FAR_DATA BS3_DATA_NM(RT_CONCAT(a_VarName,_paev86))   a_Suffix; \
     2188    extern BS3_DECL(a_VarType) BS3_FAR_DATA BS3_DATA_NM(RT_CONCAT(a_VarName,_lm16))     a_Suffix; \
     2189    extern BS3_DECL(a_VarType) BS3_FAR_DATA BS3_DATA_NM(RT_CONCAT(a_VarName,_lm32))     a_Suffix; \
     2190    extern BS3_DECL(a_VarType) BS3_FAR_DATA BS3_DATA_NM(RT_CONCAT(a_VarName,_lm64))     a_Suffix
     2191
     2192
     2193/** The TMPL_MODE_STR value for each mode.
     2194 * These are all in DATA16 so they can be accessed from any code.  */
     2195BS3_MODE_EXPAND_EXTERN_DATA16(const char *, g_szBs3ModeName, []);
    21522196
    21532197/**
     
    21792223/** Flag indicating that extend CPUID leaves are available (at least two).   */
    21802224#define BS3CPU_F_CPUID_EXT_LEAVES   UINT16_C(0x0200)
     2225/** Flag indicating that the CPU supports PAE. */
     2226#define BS3CPU_F_PAE                UINT16_C(0x0400)
    21812227/** Flag indicating that the CPU supports long mode. */
    2182 #define BS3CPU_F_LONG_MODE          UINT16_C(0x0400)
     2228#define BS3CPU_F_LONG_MODE          UINT16_C(0x0800)
    21832229/** @} */
    21842230
  • trunk/src/VBox/ValidationKit/bootsectors/bs3kit/bs3kit.mac

    r59863 r59878  
    12711271%define BS3CPU_F_CPUID              0x0100
    12721272%define BS3CPU_F_CPUID_EXT_LEAVES   0x0200
    1273 %define BS3CPU_F_LONG_MODE          0x0400
     1273%define BS3CPU_F_PAE                0x0400
     1274%define BS3CPU_F_PAE_BIT            10
     1275%define BS3CPU_F_LONG_MODE          0x0800
    12741276;; @}
    12751277
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