mirror of
https://github.com/acidanthera/audk.git
synced 2025-07-25 22:54:51 +02:00
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
|
gEfiMdeModulePkgTokenSpaceGuid.PcdImageLargeAddressLoad ## CONSUMES
|
||||||
gEfiMdePkgTokenSpaceGuid.PcdDebugRaisePropertyMask ## CONSUMES
|
gEfiMdePkgTokenSpaceGuid.PcdDebugRaisePropertyMask ## CONSUMES
|
||||||
gEfiMdePkgTokenSpaceGuid.PcdImageProtectionPolicy ## CONSUMES
|
gEfiMdePkgTokenSpaceGuid.PcdImageProtectionPolicy ## CONSUMES
|
||||||
|
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfWorkAreaBase ## CONSUMES
|
||||||
|
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfWorkAreaSize ## CONSUMES
|
||||||
|
|
||||||
# [Hob]
|
# [Hob]
|
||||||
# RESOURCE_DESCRIPTOR ## CONSUMES
|
# RESOURCE_DESCRIPTOR ## CONSUMES
|
||||||
|
@ -1714,6 +1714,15 @@ CoreStartImage (
|
|||||||
TopOfStack = ALIGN_POINTER (TopOfStack, CPU_STACK_ALIGNMENT);
|
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));
|
// 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 (
|
EnterUserImage (
|
||||||
(SWITCH_STACK_ENTRY_POINT)(UINTN)Image->EntryPoint,
|
(SWITCH_STACK_ENTRY_POINT)(UINTN)Image->EntryPoint,
|
||||||
ImageHandle,
|
ImageHandle,
|
||||||
|
@ -992,6 +992,10 @@ CreateIdentityMappingPageTables (
|
|||||||
|
|
||||||
Eflags.UintN = AsmReadEflags ();
|
Eflags.UintN = AsmReadEflags ();
|
||||||
Eflags.Bits.AC = 0;
|
Eflags.Bits.AC = 0;
|
||||||
|
//
|
||||||
|
// Allow user image to access ports.
|
||||||
|
//
|
||||||
|
Eflags.Bits.IOPL = 3;
|
||||||
AsmWriteEflags (Eflags.UintN);
|
AsmWriteEflags (Eflags.UintN);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user