mirror of https://github.com/acidanthera/audk.git
Ring3: Fixed LibraryConstructors' initialization and
allowed user to access ports.
This commit is contained in:
parent
98de0a212e
commit
233a5cff09
|
@ -193,6 +193,8 @@
|
|||
gEfiMdeModulePkgTokenSpaceGuid.PcdImageLargeAddressLoad ## CONSUMES
|
||||
gEfiMdePkgTokenSpaceGuid.PcdDebugRaisePropertyMask ## CONSUMES
|
||||
gEfiMdePkgTokenSpaceGuid.PcdImageProtectionPolicy ## CONSUMES
|
||||
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfWorkAreaBase ## CONSUMES
|
||||
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfWorkAreaSize ## CONSUMES
|
||||
|
||||
# [Hob]
|
||||
# RESOURCE_DESCRIPTOR ## CONSUMES
|
||||
|
|
|
@ -1714,6 +1714,15 @@ CoreStartImage (
|
|||
TopOfStack = ALIGN_POINTER (TopOfStack, CPU_STACK_ALIGNMENT);
|
||||
// DEBUG ((DEBUG_ERROR, "RING3_CODE64_SEL = 0x%x RING3_DATA64_SEL = 0x%x\n", (UINT16)RING3_CODE64_SEL, (UINT16)RING3_DATA64_SEL));
|
||||
|
||||
//
|
||||
// Necessary fix for ProcessLibraryConstructorList() -> DxeCcProbeLibConstructor()
|
||||
//
|
||||
SetUefiImageMemoryAttributes (
|
||||
FixedPcdGet32 (PcdOvmfWorkAreaBase),
|
||||
FixedPcdGet32 (PcdOvmfWorkAreaSize),
|
||||
EFI_MEMORY_XP | EFI_MEMORY_USER
|
||||
);
|
||||
|
||||
EnterUserImage (
|
||||
(SWITCH_STACK_ENTRY_POINT)(UINTN)Image->EntryPoint,
|
||||
ImageHandle,
|
||||
|
|
|
@ -992,6 +992,10 @@ CreateIdentityMappingPageTables (
|
|||
|
||||
Eflags.UintN = AsmReadEflags ();
|
||||
Eflags.Bits.AC = 0;
|
||||
//
|
||||
// Allow user image to access ports.
|
||||
//
|
||||
Eflags.Bits.IOPL = 3;
|
||||
AsmWriteEflags (Eflags.UintN);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue