mirror of
https://github.com/acidanthera/audk.git
synced 2025-04-07 19:45:07 +02:00
CpuExceptionHandlerLib: Added PcdSerialUseMmio condition.
This commit is contained in:
parent
469ae18183
commit
0dd56c8dae
@ -149,6 +149,7 @@
|
||||
gEfiHobMemoryAllocStackGuid ## SOMETIMES_CONSUMES ## SystemTable
|
||||
gUefiImageLoaderImageContextGuid ## CONSUMES ## HOB
|
||||
gEfiGlobalVariableGuid ## SOMETIMES_CONSUMES ## SysCall
|
||||
gEarlyPL011BaseAddressGuid ## CONSUMES
|
||||
|
||||
[Ppis]
|
||||
gEfiVectorHandoffInfoPpiGuid ## UNDEFINED # HOB
|
||||
|
@ -58,7 +58,7 @@ InitializeRing3 (
|
||||
|
||||
CopyMem ((VOID *)gRing3Data, (VOID *)Image->Info.SystemTable, sizeof (EFI_SYSTEM_TABLE));
|
||||
|
||||
if (FixedPcdGetBool (PcdSerialUseMmio)) {
|
||||
if (PcdGetBool (PcdSerialUseMmio)) {
|
||||
Status = CoreAllocatePages (
|
||||
AllocateAnyPages,
|
||||
EfiRing3MemoryType,
|
||||
@ -79,7 +79,7 @@ InitializeRing3 (
|
||||
|
||||
if (CompareGuid (&gEfiHobListGuid, &(Conf->VendorGuid))) {
|
||||
UartBase = GET_GUID_HOB_DATA (Conf->VendorTable);
|
||||
gUartBaseAddress = UartBase->DebugAddress;
|
||||
gUartBaseAddress = (UINTN)UartBase->DebugAddress;
|
||||
}
|
||||
|
||||
++Conf;
|
||||
|
@ -52,6 +52,7 @@
|
||||
gUefiCpuPkgTokenSpaceGuid.PcdCpuKnownGoodStackSize
|
||||
gUefiOvmfPkgTokenSpaceGuid.PcdUartBase ## CONSUMES
|
||||
gUefiOvmfPkgTokenSpaceGuid.PcdDebugIoPort ## CONSUMES
|
||||
gEfiMdeModulePkgTokenSpaceGuid.PcdSerialUseMmio ## CONSUMES
|
||||
|
||||
[FeaturePcd]
|
||||
gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmStackGuard ## CONSUMES
|
||||
|
@ -231,22 +231,25 @@ ArchSetupExceptionStack (
|
||||
StackTop -= CPU_KNOWN_GOOD_STACK_SIZE;
|
||||
Tss->SS0 = AsmReadSs ();
|
||||
Tss->IOMapBaseAddress = sizeof (IA32_TASK_STATE_SEGMENT);
|
||||
//
|
||||
// Allow access to gUartBase = 0x3F8 and Offsets: 0x01, 0x03, 0x04, 0x05, 0x06;
|
||||
// and DebugIoPort = 0x402.
|
||||
//
|
||||
|
||||
IOBitMap = (UINT8 *)((UINTN)Tss + Tss->IOMapBaseAddress);
|
||||
SetMem (IOBitMap, IO_BIT_MAP_SIZE, 0xFF);
|
||||
|
||||
IOBitMapPointer = (UINT8 *)((UINTN)IOBitMap + FixedPcdGet16 (PcdUartBase) / 8);
|
||||
Offset = (UINT8)(FixedPcdGet16 (PcdUartBase) & 0x7U);
|
||||
*(UINT16 *)IOBitMapPointer &= ~((1U << Offset) | (1U << (Offset + 1))
|
||||
| (1U << (Offset + 3)) | (1U << (Offset + 4))
|
||||
| (1U << (Offset + 5)) | (1U << (Offset + 6)));
|
||||
if (!PcdGetBool (PcdSerialUseMmio)) {
|
||||
//
|
||||
// Allow access to gUartBase = 0x3F8 and Offsets: 0x01, 0x03, 0x04, 0x05, 0x06;
|
||||
// and DebugIoPort = 0x402.
|
||||
//
|
||||
IOBitMapPointer = (UINT8 *)((UINTN)IOBitMap + FixedPcdGet16 (PcdUartBase) / 8);
|
||||
Offset = (UINT8)(FixedPcdGet16 (PcdUartBase) & 0x7U);
|
||||
*(UINT16 *)IOBitMapPointer &= ~((1U << Offset) | (1U << (Offset + 1))
|
||||
| (1U << (Offset + 3)) | (1U << (Offset + 4))
|
||||
| (1U << (Offset + 5)) | (1U << (Offset + 6)));
|
||||
|
||||
IOBitMapPointer = (UINT8 *)((UINTN)IOBitMap + FixedPcdGet16 (PcdDebugIoPort) / 8);
|
||||
Offset = (UINT8)(FixedPcdGet16 (PcdDebugIoPort) & 0x7U);
|
||||
*IOBitMapPointer &= ~(1U << Offset);
|
||||
IOBitMapPointer = (UINT8 *)((UINTN)IOBitMap + FixedPcdGet16 (PcdDebugIoPort) / 8);
|
||||
Offset = (UINT8)(FixedPcdGet16 (PcdDebugIoPort) & 0x7U);
|
||||
*IOBitMapPointer &= ~(1U << Offset);
|
||||
}
|
||||
|
||||
Tss = (IA32_TASK_STATE_SEGMENT *)((UINTN)Tss + sizeof (IA32_TASK_STATE_SEGMENT) + IO_BIT_MAP_SIZE);
|
||||
++TssDesc;
|
||||
|
@ -61,6 +61,7 @@
|
||||
gUefiCpuPkgTokenSpaceGuid.PcdCpuStackSwitchExceptionList
|
||||
gUefiOvmfPkgTokenSpaceGuid.PcdUartBase ## CONSUMES
|
||||
gUefiOvmfPkgTokenSpaceGuid.PcdDebugIoPort ## CONSUMES
|
||||
gEfiMdeModulePkgTokenSpaceGuid.PcdSerialUseMmio ## CONSUMES
|
||||
|
||||
[FeaturePcd]
|
||||
gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmStackGuard ## CONSUMES
|
||||
|
@ -72,6 +72,7 @@
|
||||
gUefiCpuPkgTokenSpaceGuid.PcdCpuKnownGoodStackSize
|
||||
gUefiOvmfPkgTokenSpaceGuid.PcdUartBase ## CONSUMES
|
||||
gUefiOvmfPkgTokenSpaceGuid.PcdDebugIoPort ## CONSUMES
|
||||
gEfiMdeModulePkgTokenSpaceGuid.PcdSerialUseMmio ## CONSUMES
|
||||
|
||||
[FeaturePcd]
|
||||
gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmStackGuard ## CONSUMES
|
||||
|
@ -59,6 +59,7 @@
|
||||
gUefiCpuPkgTokenSpaceGuid.PcdCpuKnownGoodStackSize
|
||||
gUefiOvmfPkgTokenSpaceGuid.PcdUartBase ## CONSUMES
|
||||
gUefiOvmfPkgTokenSpaceGuid.PcdDebugIoPort ## CONSUMES
|
||||
gEfiMdeModulePkgTokenSpaceGuid.PcdSerialUseMmio ## CONSUMES
|
||||
|
||||
[FeaturePcd]
|
||||
gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmStackGuard ## CONSUMES
|
||||
|
@ -238,23 +238,25 @@ ArchSetupExceptionStack (
|
||||
Tss->RSP0 = StackTop;
|
||||
StackTop -= CPU_KNOWN_GOOD_STACK_SIZE;
|
||||
Tss->IOMapBaseAddress = sizeof (IA32_TASK_STATE_SEGMENT);
|
||||
//
|
||||
// Allow access to gUartBase = 0x3F8 and Offsets: 0x01, 0x03, 0x04, 0x05, 0x06;
|
||||
// and DebugIoPort = 0x402.
|
||||
//
|
||||
|
||||
IOBitMap = (UINT8 *)((UINTN)Tss + Tss->IOMapBaseAddress);
|
||||
SetMem (IOBitMap, IO_BIT_MAP_SIZE, 0xFF);
|
||||
|
||||
IOBitMapPointer = (UINT8 *)((UINTN)IOBitMap + FixedPcdGet16 (PcdUartBase) / 8);
|
||||
Offset = (UINT8)(FixedPcdGet16 (PcdUartBase) & 0x7U);
|
||||
*(UINT16 *)IOBitMapPointer &= ~((1U << Offset) | (1U << (Offset + 1))
|
||||
| (1U << (Offset + 3)) | (1U << (Offset + 4))
|
||||
| (1U << (Offset + 5)) | (1U << (Offset + 6)));
|
||||
|
||||
IOBitMapPointer = (UINT8 *)((UINTN)IOBitMap + FixedPcdGet16 (PcdDebugIoPort) / 8);
|
||||
Offset = (UINT8)(FixedPcdGet16 (PcdDebugIoPort) & 0x7U);
|
||||
*IOBitMapPointer &= ~(1U << Offset);
|
||||
if (!PcdGetBool (PcdSerialUseMmio)) {
|
||||
//
|
||||
// Allow access to gUartBase = 0x3F8 and Offsets: 0x01, 0x03, 0x04, 0x05, 0x06;
|
||||
// and DebugIoPort = 0x402.
|
||||
//
|
||||
IOBitMapPointer = (UINT8 *)((UINTN)IOBitMap + FixedPcdGet16 (PcdUartBase) / 8);
|
||||
Offset = (UINT8)(FixedPcdGet16 (PcdUartBase) & 0x7U);
|
||||
*(UINT16 *)IOBitMapPointer &= ~((1U << Offset) | (1U << (Offset + 1))
|
||||
| (1U << (Offset + 3)) | (1U << (Offset + 4))
|
||||
| (1U << (Offset + 5)) | (1U << (Offset + 6)));
|
||||
|
||||
IOBitMapPointer = (UINT8 *)((UINTN)IOBitMap + FixedPcdGet16 (PcdDebugIoPort) / 8);
|
||||
Offset = (UINT8)(FixedPcdGet16 (PcdDebugIoPort) & 0x7U);
|
||||
*IOBitMapPointer &= ~(1U << Offset);
|
||||
}
|
||||
//
|
||||
// Fixup IST and task-state segment
|
||||
//
|
||||
|
Loading…
x
Reference in New Issue
Block a user