//\r
// Convert frequency in Hz to a clock period in femtoseconds.\r
//\r
- mTimerPeriod = DivU64x64Remainder (1000000000000000, Frequency, NULL);\r
+ mTimerPeriod = DivU64x64Remainder (1000000000000000ULL, Frequency, NULL);\r
\r
CpuUpdateSmbios ();\r
\r
{\r
EFI_STATUS Status;\r
EMU_IO_THUNK_PROTOCOL *EmuIoThunk;\r
- EMU_BLOCK_IO_PRIVATE *Private;\r
+ EMU_BLOCK_IO_PRIVATE *Private = NULL;\r
\r
//\r
// Grab the protocols we need\r
goto Done;\r
}\r
\r
- Private = AllocatePool (sizeof (EMU_SIMPLE_FILE_SYSTEM_PRIVATE));\r
+ Private = AllocateZeroPool (sizeof (EMU_SIMPLE_FILE_SYSTEM_PRIVATE));\r
if (Private == NULL) {\r
goto Done;\r
}\r
PpiListLib|Include/Library/PpiListLib.h\r
\r
[Protocols]\r
- gEmuThunkProtocolGuid = { 0x398DCA31, 0x3505, 0xDB47, { 0xBD, 0x93, 0x1D, 0x38, 0x5F, 0x79, 0x13, 0x15 } }\r
+ gEmuThunkProtocolGuid = { 0x5CF32E0B, 0x8EDF, 0x2E44, { 0x9C, 0xDA, 0x93, 0x20, 0x5E, 0x99, 0xEC, 0x1C } }\r
gEmuIoThunkProtocolGuid = { 0x453368F6, 0x7C85, 0x434A, { 0xA9, 0x8A, 0x72, 0xD1, 0xB7, 0xFF, 0xA9, 0x26 } }\r
gEmuGraphicsWindowProtocolGuid = { 0x30FD316A, 0x6728, 0x2E41, { 0xA6, 0x90, 0x0D, 0x13, 0x33, 0xD8, 0xCA, 0xC1 } }\r
gEmuThreadThunkProtocolGuid = { 0x3B1E4B7C, 0x09D8, 0x944F, { 0xA4, 0x08, 0x13, 0x09, 0xEB, 0x8B, 0x44, 0x27 } }\r
gEmuBlockIoProtocolGuid = { 0x6888A4AE, 0xAFCE, 0xE84B, { 0x91, 0x02, 0xF7, 0xB9, 0xDA, 0xE6, 0xA0, 0x30 } }\r
\r
[Ppis]\r
- gEmuThunkPpiGuid = { 0xE113F896, 0x75CF, 0xF640, { 0x81, 0x7F, 0xC8, 0x5A, 0x79, 0xE8, 0xAE, 0x67 } }\r
+ gEmuThunkPpiGuid = { 0xE113F896, 0x75CF, 0xF640, { 0x81, 0x7F, 0xC8, 0x5A, 0x79, 0xE8, 0xAE, 0x67 } }\r
\r
[Guids]\r
gInOsEmuPkgTokenSpaceGuid = { 0x4F792E68, 0xE8C8, 0x794E, { 0xB1, 0xD8, 0x37, 0x03, 0xF3, 0xF2, 0xD5, 0xA5 } }\r
#define __EMU_THUNK_PROTOCOL_H__\r
\r
#define EMU_THUNK_PROTOCOL_GUID \\r
- { 0xA37D7CCD, 0x8E91, 0xFB48, { 0xA0, 0xBD, 0x64, 0xC1, 0x83, 0xA3, 0xB4, 0x3F } }\r
+ { 0x5CF32E0B, 0x8EDF, 0x2E44, { 0x9C, 0xDA, 0x93, 0x20, 0x5E, 0x99, 0xEC, 0x1C } }\r
\r
// neded for things like EFI_TIME_CAPABILITIES\r
#include <Uefi.h>\r
\r
\r
typedef \r
-EFI_STATUS\r
+UINTN\r
(EFIAPI *EMU_WRITE_STD_ERROR) (\r
+ IN UINT8 *Buffer,\r
+ IN UINTN NumberOfBytes\r
+ ); \r
+ \r
+typedef \r
+EFI_STATUS\r
+(EFIAPI *EMU_CONFIG_STD_IN) (\r
+ VOID\r
+ );\r
+ \r
+typedef \r
+UINTN\r
+(EFIAPI *EMU_WRITE_STD_OUT) (\r
IN UINT8 *Buffer,\r
IN UINTN NumberOfBytes\r
);\r
+ \r
+typedef \r
+UINTN\r
+(EFIAPI *EMU_READ_STD_IN) (\r
+ OUT UINT8 *Buffer,\r
+ IN UINTN NumberOfBytes\r
+ );\r
+\r
+typedef \r
+BOOLEAN\r
+(EFIAPI *EMU_POLL_STD_IN) (\r
+ VOID\r
+ );\r
+\r
+\r
\r
typedef \r
EFI_STATUS\r
struct _EMU_THUNK_PROTOCOL {\r
// Used for early debug printing\r
EMU_WRITE_STD_ERROR WriteStdErr;\r
+ EMU_CONFIG_STD_IN ConfigStdIn;\r
+ EMU_WRITE_STD_OUT WriteStdOut;\r
+ EMU_READ_STD_IN ReadStdIn;\r
+ EMU_POLL_STD_IN PollStdIn;\r
\r
///\r
/// PE/COFF loader hooks to get symbols loaded\r
--- /dev/null
+/** @file\r
+ Null Platform Hook Library instance.\r
+\r
+ Copyright (c) 2010, Intel Corporation. All rights reserved.<BR>\r
+ This program and the accompanying materials\r
+ are licensed and made available under the terms and conditions of the BSD License\r
+ which accompanies this distribution. The full text of the license may be found at\r
+ http://opensource.org/licenses/bsd-license.php\r
+\r
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+\r
+**/\r
+\r
+#include <Base.h>\r
+\r
+#include <Protocol/EmuThunk.h>\r
+#include <Protocol/EmuGraphicsWindow.h>\r
+#include <Protocol/EmuBlockIo.h>\r
+#include <Protocol/SimpleFileSystem.h>\r
+#include <Protocol/EmuThread.h>\r
+\r
+#include <Library/DevicePathTextLib.h>\r
+#include <Library/BaseMemoryLib.h>\r
+\r
+\r
+/**\r
+ Converts a Vendor device path structure to its string representative.\r
+\r
+ @param Str The string representative of input device.\r
+ @param DevPath The input device path structure.\r
+ @param DisplayOnly If DisplayOnly is TRUE, then the shorter text representation\r
+ of the display node is used, where applicable. If DisplayOnly\r
+ is FALSE, then the longer text representation of the display node\r
+ is used.\r
+ @param AllowShortcuts If AllowShortcuts is TRUE, then the shortcut forms of text\r
+ representation for a device node can be used, where applicable.\r
+\r
+ @return EFI_NOT_FOUND if no string representation exists.\r
+ @return EFI_SUCCESS a string representation was created.\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+DevPathToTextVendorLib (\r
+ IN OUT POOL_PRINT *Str,\r
+ IN VOID *DevPath,\r
+ IN BOOLEAN DisplayOnly,\r
+ IN BOOLEAN AllowShortcuts\r
+ )\r
+{\r
+ EMU_VENDOR_DEVICE_PATH_NODE *Vendor;\r
+ CHAR16 *Type;\r
+\r
+ Vendor = (EMU_VENDOR_DEVICE_PATH_NODE *)DevPath;\r
+ if (CompareGuid (&Vendor->VendorDevicePath.Guid, &gEmuThunkProtocolGuid)) {\r
+ CatPrint (Str, L"EmuThunk()");\r
+ return EFI_SUCCESS;\r
+ }\r
+ if (CompareGuid (&Vendor->VendorDevicePath.Guid, &gEmuGraphicsWindowProtocolGuid)) {\r
+ CatPrint (Str, L"EmuGraphics(%d)", Vendor->Instance);\r
+ return EFI_SUCCESS;\r
+ }\r
+ if (CompareGuid (&Vendor->VendorDevicePath.Guid, &gEfiSimpleFileSystemProtocolGuid)) {\r
+ CatPrint (Str, L"EmuFs(%d)", Vendor->Instance);\r
+ return EFI_SUCCESS;\r
+ }\r
+ if (CompareGuid (&Vendor->VendorDevicePath.Guid, &gEmuBlockIoProtocolGuid)) {\r
+ CatPrint (Str, L"EmuBlk(%d)", Vendor->Instance);\r
+ return EFI_SUCCESS;\r
+ }\r
+ if (CompareGuid (&Vendor->VendorDevicePath.Guid, &gEmuThreadThunkProtocolGuid)) {\r
+ CatPrint (Str, L"EmuThread()");\r
+ return EFI_SUCCESS;\r
+ }\r
+ \r
+ return EFI_NOT_FOUND;\r
+}\r
+\r
--- /dev/null
+## @file\r
+# Null DevicePathToText library.\r
+#\r
+# Copyright (c) 2010 - 2011, Intel Corporation. All rights reserved.<BR>\r
+#\r
+# This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+##\r
+\r
+[Defines]\r
+ INF_VERSION = 0x00010005\r
+ BASE_NAME = DevicePathTextLib\r
+ FILE_GUID = DCD1F939-1732-CA4D-81B7-C757AEC84DBC\r
+ MODULE_TYPE = BASE\r
+ VERSION_STRING = 1.0\r
+ LIBRARY_CLASS = DevicePathTextLib\r
+\r
+#\r
+# The following information is for reference only and not required by the build tools.\r
+#\r
+# VALID_ARCHITECTURES = IA32 X64 IPF EBC\r
+#\r
+\r
+[Sources]\r
+ DevicePathTextLib.c\r
+\r
+[Packages]\r
+ MdePkg/MdePkg.dec\r
+ MdeModulePkg/MdeModulePkg.dec\r
+ InOsEmuPkg/InOsEmuPkg.dec\r
+\r
+[LibraryClasses]\r
+ BaseMemoryLib\r
+\r
+[Protocols]\r
+ gEmuThunkProtocolGuid\r
+ gEmuGraphicsWindowProtocolGuid\r
+ gEfiSimpleFileSystemProtocolGuid\r
+ gEmuBlockIoProtocolGuid\r
+ gEmuThreadThunkProtocolGuid
\ No newline at end of file
VOID\r
)\r
{\r
- return RETURN_SUCCESS;\r
+ return gEmuThunk->ConfigStdIn ();\r
}\r
\r
/**\r
IN UINTN NumberOfBytes\r
)\r
{\r
- return gEmuThunk->WriteStdErr (Buffer, NumberOfBytes);\r
+ return gEmuThunk->WriteStdOut (Buffer, NumberOfBytes);\r
}\r
\r
\r
IN UINTN NumberOfBytes\r
)\r
{\r
- return 0;\r
+ return gEmuThunk->ReadStdIn (Buffer, NumberOfBytes);\r
}\r
\r
/**\r
VOID\r
)\r
{\r
- return FALSE;\r
+ return gEmuThunk->PollStdIn ();\r
}\r
\r
\r
\r
[Defines]\r
INF_VERSION = 0x00010005\r
- BASE_NAME = DxeEmuSerialPortLibNull\r
+ BASE_NAME = DxeEmuSerialPortLib\r
FILE_GUID = DF08A29A-F60B-E649-AA79-A1490E863A5D\r
MODULE_TYPE = PEIM\r
VERSION_STRING = 1.0\r
--- /dev/null
+/** @file\r
+ Serial Port Lib that thunks back to Emulator services to write to StdErr. \r
+ All read functions are stubed out. \r
+\r
+ Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>\r
+ Portions copyright (c) 2011, Apple Inc. All rights reserved.<BR>\r
+ This program and the accompanying materials\r
+ are licensed and made available under the terms and conditions of the BSD License\r
+ which accompanies this distribution. The full text of the license may be found at\r
+ http://opensource.org/licenses/bsd-license.php.\r
+\r
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+\r
+**/\r
+\r
+\r
+#include <PiDxe.h>\r
+#include <Library/SerialPortLib.h>\r
+#include <Library/EmuThunkLib.h>\r
+\r
+\r
+\r
+\r
+/**\r
+ Initialize the serial device hardware.\r
+ \r
+ If no initialization is required, then return RETURN_SUCCESS.\r
+ If the serial device was successfully initialized, then return RETURN_SUCCESS.\r
+ If the serial device could not be initialized, then return RETURN_DEVICE_ERROR.\r
+ \r
+ @retval RETURN_SUCCESS The serial device was initialized.\r
+ @retval RETURN_DEVICE_ERROR The serial device could not be initialized.\r
+\r
+**/\r
+RETURN_STATUS\r
+EFIAPI\r
+SerialPortInitialize (\r
+ VOID\r
+ )\r
+{\r
+ return RETURN_SUCCESS;\r
+}\r
+\r
+/**\r
+ Write data from buffer to serial device. \r
+ \r
+ Writes NumberOfBytes data bytes from Buffer to the serial device. \r
+ The number of bytes actually written to the serial device is returned.\r
+ If the return value is less than NumberOfBytes, then the write operation failed.\r
+ If Buffer is NULL, then ASSERT(). \r
+ If NumberOfBytes is zero, then return 0.\r
+\r
+ @param Buffer The pointer to the data buffer to be written.\r
+ @param NumberOfBytes The number of bytes to written to the serial device.\r
+\r
+ @retval 0 NumberOfBytes is 0.\r
+ @retval >0 The number of bytes written to the serial device. \r
+ If this value is less than NumberOfBytes, then the read operation failed.\r
+\r
+**/\r
+UINTN\r
+EFIAPI\r
+SerialPortWrite (\r
+ IN UINT8 *Buffer,\r
+ IN UINTN NumberOfBytes\r
+ )\r
+{\r
+ return gEmuThunk->WriteStdErr (Buffer, NumberOfBytes);\r
+}\r
+\r
+\r
+/**\r
+ Read data from serial device and save the datas in buffer.\r
+ \r
+ Reads NumberOfBytes data bytes from a serial device into the buffer\r
+ specified by Buffer. The number of bytes actually read is returned. \r
+ If the return value is less than NumberOfBytes, then the rest operation failed.\r
+ If Buffer is NULL, then ASSERT(). \r
+ If NumberOfBytes is zero, then return 0.\r
+\r
+ @param Buffer The pointer to the data buffer to store the data read from the serial device.\r
+ @param NumberOfBytes The number of bytes which will be read.\r
+\r
+ @retval 0 Read data failed; No data is to be read.\r
+ @retval >0 The actual number of bytes read from serial device.\r
+\r
+**/\r
+UINTN\r
+EFIAPI\r
+SerialPortRead (\r
+ OUT UINT8 *Buffer,\r
+ IN UINTN NumberOfBytes\r
+ )\r
+{\r
+ return 0;\r
+}\r
+\r
+/**\r
+ Polls a serial device to see if there is any data waiting to be read.\r
+\r
+ Polls a serial device to see if there is any data waiting to be read.\r
+ If there is data waiting to be read from the serial device, then TRUE is returned.\r
+ If there is no data waiting to be read from the serial device, then FALSE is returned.\r
+\r
+ @retval TRUE Data is waiting to be read from the serial device.\r
+ @retval FALSE There is no data waiting to be read from the serial device.\r
+\r
+**/\r
+BOOLEAN\r
+EFIAPI\r
+SerialPortPoll (\r
+ VOID\r
+ )\r
+{\r
+ return FALSE;\r
+}\r
+\r
+\r
--- /dev/null
+## @file\r
+# Write only instance of Serial Port Library with empty functions.\r
+#\r
+# Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>\r
+# Portions copyright (c) 2011, Apple Inc. All rights reserved. \r
+#\r
+# This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php.\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+#\r
+##\r
+\r
+[Defines]\r
+ INF_VERSION = 0x00010005\r
+ BASE_NAME = DxeEmuStdErrSerialPortLib\r
+ FILE_GUID = 4EED5138-C512-9E4F-AB13-149B87D40453\r
+ MODULE_TYPE = PEIM\r
+ VERSION_STRING = 1.0\r
+ LIBRARY_CLASS = SerialPortLib| DXE_CORE DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SAL_DRIVER DXE_SMM_DRIVER SMM_CORE UEFI_APPLICATION UEFI_DRIVE\r
+\r
+\r
+[Sources]\r
+ DxeEmuStdErrSerialPortLib.c\r
+\r
+\r
+[Packages]\r
+ MdePkg/MdePkg.dec\r
+ InOsEmuPkg/InOsEmuPkg.dec\r
+ \r
+[LibraryClasses]\r
+ EmuThunkLib\r
+\r
+\r
+\r
+ \r
+\r
{
ssize_t Return;
- Return = write (1, (const void *)Buffer, (size_t)NumberOfBytes);
+ Return = write (STDERR_FILENO, (const void *)Buffer, (size_t)NumberOfBytes);
return (Return == -1) ? 0 : Return;
}
+EFI_STATUS
+SecConfigStdIn (
+ VOID
+ )
+{
+ struct termios tty;
+
+ //
+ // Need to turn off line buffering, ECHO, and make it unbuffered.
+ //
+ tcgetattr (STDIN_FILENO, &tty);
+ tty.c_lflag &= ~(ICANON | ECHO);
+ tcsetattr (STDIN_FILENO, TCSANOW, &tty);
+
+// setvbuf (STDIN_FILENO, NULL, _IONBF, 0);
+
+ // now ioctl FIONREAD will do what we need
+ return EFI_SUCCESS;
+}
+
+UINTN
+SecWriteStdOut (
+ IN UINT8 *Buffer,
+ IN UINTN NumberOfBytes
+ )
+{
+ ssize_t Return;
+
+ Return = write (STDOUT_FILENO, (const void *)Buffer, (size_t)NumberOfBytes);
+
+ return (Return == -1) ? 0 : Return;
+}
+
+UINTN
+SecReadStdIn (
+ IN UINT8 *Buffer,
+ IN UINTN NumberOfBytes
+ )
+{
+ ssize_t Return;
+
+ Return = read (STDIN_FILENO, Buffer, (size_t)NumberOfBytes);
+
+ return (Return == -1) ? 0 : Return;
+}
+
+BOOLEAN
+SecPollStdIn (
+ VOID
+ )
+{
+ int Result;
+ int Bytes;
+
+ Result = ioctl (STDIN_FILENO, FIONREAD, &Bytes);
+ if (Result == -1) {
+ return FALSE;
+ }
+
+ return (BOOLEAN)(Bytes > 0);
+}
+
+
void
settimer_handler (int sig)
EMU_THUNK_PROTOCOL gEmuThunkProtocol = {
GasketSecWriteStdErr,
+ GasketSecConfigStdIn,
+ GasketSecWriteStdOut,
+ GasketSecReadStdIn,
+ GasketSecPollStdIn,
GasketSecPeCoffGetEntryPoint,
GasketSecPeCoffRelocateImageExtraAction,
GasketSecPeCoffUnloadImageExtraAction,
//\r
\r
UINTN\r
+EFIAPI\r
GasketSecWriteStdErr (\r
IN UINT8 *Buffer,\r
IN UINTN NumberOfBytes\r
);\r
\r
+EFI_STATUS\r
+EFIAPI\r
+GasketSecConfigStdIn (\r
+ VOID\r
+ );\r
+\r
+UINTN\r
+EFIAPI\r
+GasketSecWriteStdOut (\r
+ IN UINT8 *Buffer,\r
+ IN UINTN NumberOfBytes\r
+ );\r
+ \r
+UINTN\r
+EFIAPI\r
+GasketSecReadStdIn (\r
+ IN UINT8 *Buffer,\r
+ IN UINTN NumberOfBytes\r
+ );\r
+\r
+BOOLEAN\r
+EFIAPI\r
+GasketSecPollStdIn (\r
+ VOID\r
+ );\r
+\r
+\r
+\r
RETURN_STATUS\r
EFIAPI\r
GasketSecPeCoffGetEntryPoint (\r
VOID *res;
UINTN FileSize;
- fd = open (FileName, O_RDONLY);
+ fd = open (FileName, O_RDWR);
if (fd < 0) {
return EFI_NOT_FOUND;
}
FileSize = lseek (fd, 0, SEEK_END);
- res = MapMemory (fd, FileSize, PROT_READ | PROT_WRITE | PROT_EXEC, MAP_PRIVATE);
+ res = MapMemory (fd, FileSize, PROT_READ | PROT_WRITE | PROT_EXEC, MAP_SHARED);
close (fd);
- if (res == MAP_FAILED) {
+ if (res == NULL) {
+ perror ("MapFile() Failed");
return EFI_DEVICE_ERROR;
}
ret
+ASM_GLOBAL ASM_PFX(GasketSecConfigStdIn)
+ASM_PFX(GasketSecConfigStdIn):
+ pushq %rbp // stack frame is for the debugger
+ movq %rsp, %rbp
+
+ pushq %rsi // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI
+ pushq %rdi
+
+ call ASM_PFX(SecConfigStdIn)
+
+ popq %rdi // restore state
+ popq %rsi
+ popq %rbp
+ ret
+
+ASM_GLOBAL ASM_PFX(GasketSecWriteStdOut)
+ASM_PFX(GasketSecWriteStdOut):
+ pushq %rbp // stack frame is for the debugger
+ movq %rsp, %rbp
+
+ pushq %rsi // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI
+ pushq %rdi
+
+ movq %rcx, %rdi // Swizzle args
+ movq %rdx, %rsi
+
+ call ASM_PFX(SecWriteStdOut)
+
+ popq %rdi // restore state
+ popq %rsi
+ popq %rbp
+ ret
+
+ASM_GLOBAL ASM_PFX(GasketSecReadStdIn)
+ASM_PFX(GasketSecReadStdIn):
+ pushq %rbp // stack frame is for the debugger
+ movq %rsp, %rbp
+
+ pushq %rsi // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI
+ pushq %rdi
+
+ movq %rcx, %rdi // Swizzle args
+ movq %rdx, %rsi
+
+ call ASM_PFX(SecReadStdIn)
+
+ popq %rdi // restore state
+ popq %rsi
+ popq %rbp
+ ret
+
+ASM_GLOBAL ASM_PFX(GasketSecPollStdIn)
+ASM_PFX(GasketSecPollStdIn):
+ pushq %rbp // stack frame is for the debugger
+ movq %rsp, %rbp
+
+ pushq %rsi // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI
+ pushq %rdi
+
+ call ASM_PFX(SecPollStdIn)
+
+ popq %rdi // restore state
+ popq %rsi
+ popq %rbp
+ ret
+
+
ASM_GLOBAL ASM_PFX(GasketSecSetTimer)
ASM_PFX(GasketSecSetTimer):
pushq %rbp // stack frame is for the debugger
DebugAgentLib|MdeModulePkg/Library/DebugAgentLibNull/DebugAgentLibNull.inf\r
DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf\r
\r
+##### DevicePathTextLib|InOsEmuPkg/Library/DevicePathTextLib/DevicePathTextLib.inf\r
\r
[LibraryClasses.common.SEC]\r
PeiServicesLib|InOsEmuPkg/Library/SecPeiServicesLib/SecPeiServicesLib.inf\r
gInOsEmuPkgTokenSpaceGuid.PcdEmuCpuModel|L"Intel(R) Processor Model"\r
gInOsEmuPkgTokenSpaceGuid.PcdEmuCpuSpeed|L"3000"\r
\r
+ # 0-PCANSI, 1-VT100, 2-VT00+, 3-UTF8\r
+ gEfiMdePkgTokenSpaceGuid.PcdDefaultTerminalType|1\r
+\r
################################################################################\r
#\r
# Pcd Dynamic Section - list of all EDK II PCD Entries defined by this Platform\r
MdeModulePkg/Universal/ReportStatusCodeRouter/RuntimeDxe/ReportStatusCodeRouterRuntimeDxe.inf\r
MdeModulePkg/Universal/StatusCodeHandler/RuntimeDxe/StatusCodeHandlerRuntimeDxe.inf {\r
<LibraryClasses>\r
- SerialPortLib|InOsEmuPkg/Library/DxeEmuSerialPortLib/DxeEmuSerialPortLib.inf \r
+ SerialPortLib|InOsEmuPkg/Library/DxeEmuStdErrSerialPortLib/DxeEmuStdErrSerialPortLib.inf \r
}\r
\r
InOsEmuPkg/MetronomeDxe/Metronome.inf\r
MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatformDxe.inf\r
MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterDxe.inf\r
MdeModulePkg/Universal/Console/GraphicsConsoleDxe/GraphicsConsoleDxe.inf\r
+ EmbeddedPkg/SerialDxe/SerialDxe.inf {\r
+ <LibraryClasses>\r
+ DebugLib|MdePkg/Library/BaseDebugLibNull/BaseDebugLibNull.inf\r
+ SerialPortLib|InOsEmuPkg/Library/DxeEmuSerialPortLib/DxeEmuSerialPortLib.inf \r
+ }\r
+ \r
MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf\r
IntelFrameworkModulePkg/Universal/BdsDxe/BdsDxe.inf\r
MdeModulePkg/Universal/DevicePathDxe/DevicePathDxe.inf\r
INF MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatformDxe.inf\r
INF MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterDxe.inf\r
INF MdeModulePkg/Universal/Console/GraphicsConsoleDxe/GraphicsConsoleDxe.inf\r
+\r
+INF EmbeddedPkg/SerialDxe/SerialDxe.inf\r
INF MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf\r
INF MdeModulePkg/Universal/DevicePathDxe/DevicePathDxe.inf\r
INF MdeModulePkg/Universal/Disk/DiskIoDxe/DiskIoDxe.inf\r