VirtualBox

Changeset 2107 in vbox for trunk


Ignore:
Timestamp:
Apr 16, 2007 4:01:54 PM (18 years ago)
Author:
vboxsync
Message:

Proper init of hidden selector registers.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/CPUM.cpp

    r2094 r2107  
    458458    pVM->cpum.s.fUseFlags   = fUseFlags;
    459459
    460     pCtx->cr0 = X86_CR0_CD | X86_CR0_NW | X86_CR0_ET;  //0x60000010
    461     pCtx->eip               = 0x0000fff0;
    462     pCtx->edx               = 0x00000600;   /* P6 processor */
    463     pCtx->eflags.Bits.u1Reserved0 = 1;
    464 
    465     pCtx->cs                =     0xf000;
    466     pCtx->csHid.u32Base     = 0xffff0000;
    467     pCtx->csHid.u32Limit    = 0x0000ffff;
    468     pCtx->dsHid.u32Limit    = 0x0000ffff;
    469     pCtx->esHid.u32Limit    = 0x0000ffff;
    470     pCtx->fsHid.u32Limit    = 0x0000ffff;
    471     pCtx->gsHid.u32Limit    = 0x0000ffff;
    472     pCtx->ssHid.u32Limit    = 0x0000ffff;
    473     pCtx->idtr.cbIdt        = 0xffff;
    474     pCtx->gdtr.cbGdt        = 0xffff;
    475     pCtx->ldtrHid.u32Limit  = 0xffff;
    476     pCtx->ldtrHid.Attr.u    = X86_DESC_P;
    477     pCtx->trHid.u32Limit    = 0xffff;
    478     pCtx->trHid.Attr.u      = X86_DESC_P;
    479 
    480     pCtx->fpu.FTW           = 0xff;         /* All tags are set, i.e. the regs are empty. */
    481     pCtx->fpu.FCW           = 0x37f;
     460    pCtx->cr0                       = X86_CR0_CD | X86_CR0_NW | X86_CR0_ET;  //0x60000010
     461    pCtx->eip                       = 0x0000fff0;
     462    pCtx->edx                       = 0x00000600;   /* P6 processor */
     463    pCtx->eflags.Bits.u1Reserved0   = 1;
     464
     465    pCtx->cs                        = 0xf000;
     466    pCtx->csHid.u32Base             = 0xffff0000;
     467    pCtx->csHid.u32Limit            = 0x0000ffff;
     468    pCtx->csHid.Attr.n.u1DescType   = 1; /* code/data segment */
     469    pCtx->csHid.Attr.n.u1Present    = 1;
     470    pCtx->csHid.Attr.n.u4Type       = X86_SEL_TYPE_READ | X86_SEL_TYPE_CODE;
     471
     472    pCtx->dsHid.u32Limit            = 0x0000ffff;
     473    pCtx->dsHid.Attr.n.u1DescType   = 1; /* code/data segment */
     474    pCtx->dsHid.Attr.n.u1Present    = 1;
     475    pCtx->dsHid.Attr.n.u4Type       = X86_SEL_TYPE_RW;
     476
     477    pCtx->esHid.u32Limit            = 0x0000ffff;
     478    pCtx->esHid.Attr.n.u1DescType   = 1; /* code/data segment */
     479    pCtx->esHid.Attr.n.u1Present    = 1;
     480    pCtx->esHid.Attr.n.u4Type       = X86_SEL_TYPE_RW;
     481
     482    pCtx->fsHid.u32Limit            = 0x0000ffff;
     483    pCtx->fsHid.Attr.n.u1DescType   = 1; /* code/data segment */
     484    pCtx->fsHid.Attr.n.u1Present    = 1;
     485    pCtx->fsHid.Attr.n.u4Type       = X86_SEL_TYPE_RW;
     486
     487    pCtx->gsHid.u32Limit            = 0x0000ffff;
     488    pCtx->gsHid.Attr.n.u1DescType   = 1; /* code/data segment */
     489    pCtx->gsHid.Attr.n.u1Present    = 1;
     490    pCtx->gsHid.Attr.n.u4Type       = X86_SEL_TYPE_RW;
     491
     492    pCtx->ssHid.u32Limit            = 0x0000ffff;
     493    pCtx->ssHid.Attr.n.u1Present    = 1;
     494    pCtx->ssHid.Attr.n.u1DescType   = 1; /* code/data segment */
     495    pCtx->ssHid.Attr.n.u4Type       = X86_SEL_TYPE_RW;
     496
     497    pCtx->idtr.cbIdt                = 0xffff;
     498    pCtx->gdtr.cbGdt                = 0xffff;
     499
     500    pCtx->ldtrHid.u32Limit          = 0xffff;
     501    pCtx->ldtrHid.Attr.n.u1Present  = 1;
     502    pCtx->ldtrHid.Attr.n.u4Type     = X86_SEL_TYPE_SYS_LDT;
     503
     504    pCtx->trHid.u32Limit            = 0xffff;
     505    pCtx->trHid.Attr.n.u1Present    = 1;
     506    pCtx->trHid.Attr.n.u4Type       = X86_SEL_TYPE_SYS_286_TSS_BUSY;
     507
     508    pCtx->dr6                       = 0xFFFF0FF0;
     509    pCtx->dr7                       = 0x400;
     510
     511    pCtx->fpu.FTW                   = 0xff;         /* All tags are set, i.e. the regs are empty. */
     512    pCtx->fpu.FCW                   = 0x37f;
    482513}
    483514
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