]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Nt32Pkg/Sec/SecMain.c
Move SmmLib from IntelFrameworkPkg to MdePkg because this library is useful to both...
[mirror_edk2.git] / Nt32Pkg / Sec / SecMain.c
index 7eac24ad915754a4d43b491a273efea832880184..21cca57d5dfdb344229709608a7c28e190b77300 100644 (file)
@@ -106,6 +106,31 @@ EFI_STATUS
 SecNt32PeCoffRelocateImage (\r
   IN OUT PE_COFF_LOADER_IMAGE_CONTEXT         *ImageContext\r
   );\r
+\r
+VOID\r
+SecPrint (\r
+  CHAR8  *Format,\r
+  ...\r
+  )\r
+{\r
+  va_list  Marker;\r
+  UINTN    CharCount;\r
+  CHAR8    Buffer[EFI_STATUS_CODE_DATA_MAX_SIZE];\r
+\r
+  va_start (Marker, Format);\r
+  \r
+  _vsnprintf (Buffer, sizeof (Buffer), Format, Marker);\r
+\r
+  CharCount = strlen (Buffer);\r
+  WriteFile (\r
+    GetStdHandle (STD_OUTPUT_HANDLE), \r
+    Buffer,\r
+    CharCount,\r
+    (LPDWORD)&CharCount,\r
+    NULL\r
+    );\r
+}\r
+\r
 INTN\r
 EFIAPI\r
 main (\r
@@ -146,7 +171,7 @@ Returns:
   MemorySizeStr      = (CHAR16 *) FixedPcdGetPtr (PcdWinNtMemorySizeForSecMain);\r
   FirmwareVolumesStr = (CHAR16 *) FixedPcdGetPtr (PcdWinNtFirmwareVolume);\r
 \r
-  printf ("\nEDK SEC Main NT Emulation Environment from www.TianoCore.org\n");\r
+  SecPrint ("\nEDK II SEC Main NT Emulation Environment from www.TianoCore.org\n");\r
 \r
   //\r
   // Make some Windows calls to Set the process to the highest priority in the\r
@@ -161,7 +186,7 @@ Returns:
   gSystemMemoryCount  = CountSeperatorsInString (MemorySizeStr, '!') + 1;\r
   gSystemMemory       = calloc (gSystemMemoryCount, sizeof (NT_SYSTEM_MEMORY));\r
   if (gSystemMemory == NULL) {\r
-    wprintf (L"ERROR : Can not allocate memory for %s.  Exiting.\n", MemorySizeStr);\r
+    SecPrint ("ERROR : Can not allocate memory for %S.  Exiting.\n", MemorySizeStr);\r
     exit (1);\r
   }\r
   //\r
@@ -170,13 +195,13 @@ Returns:
   gFdInfoCount  = CountSeperatorsInString (FirmwareVolumesStr, '!') + 1;\r
   gFdInfo       = calloc (gFdInfoCount, sizeof (NT_FD_INFO));\r
   if (gFdInfo == NULL) {\r
-    wprintf (L"ERROR : Can not allocate memory for %s.  Exiting.\n", FirmwareVolumesStr);\r
+    SecPrint ("ERROR : Can not allocate memory for %S.  Exiting.\n", FirmwareVolumesStr);\r
     exit (1);\r
   }\r
   //\r
   // Setup Boot Mode. If BootModeStr == "" then BootMode = 0 (BOOT_WITH_FULL_CONFIGURATION)\r
   //\r
-  printf ("  BootMode 0x%02x\n", FixedPcdGet32 (PcdWinNtBootMode));\r
+  SecPrint ("  BootMode 0x%02x\n", FixedPcdGet32 (PcdWinNtBootMode));\r
 \r
   //\r
   //  Allocate 128K memory to emulate temp memory for PEI.\r
@@ -186,7 +211,7 @@ Returns:
   InitialStackMemorySize  = STACK_SIZE;\r
   InitialStackMemory = (EFI_PHYSICAL_ADDRESS) (UINTN) VirtualAlloc (NULL, (SIZE_T) (InitialStackMemorySize), MEM_COMMIT, PAGE_EXECUTE_READWRITE);\r
   if (InitialStackMemory == 0) {\r
-    printf ("ERROR : Can not allocate enough space for SecStack\n");\r
+    SecPrint ("ERROR : Can not allocate enough space for SecStack\n");\r
     exit (1);\r
   }\r
 \r
@@ -196,14 +221,14 @@ Returns:
     *StackPointer = 0x5AA55AA5;\r
   }\r
   \r
-  wprintf (L"  SEC passing in %d bytes of temp RAM to PEI\n", InitialStackMemorySize);\r
+  SecPrint ("  SEC passing in %d bytes of temp RAM to PEI\n", InitialStackMemorySize);\r
 \r
   //\r
   // Open All the firmware volumes and remember the info in the gFdInfo global\r
   //\r
   FileNamePtr = (CHAR16 *)malloc (StrLen ((CHAR16 *)FirmwareVolumesStr) * sizeof(CHAR16));\r
   if (FileNamePtr == NULL) {\r
-    printf ("ERROR : Can not allocate memory for firmware volume string\n");\r
+    SecPrint ("ERROR : Can not allocate memory for firmware volume string\n");\r
     exit (1);\r
   }\r
 \r
@@ -231,17 +256,17 @@ Returns:
               &gFdInfo[Index].Size\r
               );\r
     if (EFI_ERROR (Status)) {\r
-      printf ("ERROR : Can not open Firmware Device File %S (0x%X).  Exiting.\n", FileName, Status);\r
+      SecPrint ("ERROR : Can not open Firmware Device File %S (0x%X).  Exiting.\n", FileName, Status);\r
       exit (1);\r
     }\r
 \r
-    printf ("  FD loaded from");\r
+    SecPrint ("  FD loaded from");\r
     //\r
     // printf can't print filenames directly as the \ gets interperted as an\r
     //  escape character.\r
     //\r
     for (Index2 = 0; FileName[Index2] != '\0'; Index2++) {\r
-      printf ("%c", FileName[Index2]);\r
+      SecPrint ("%c", FileName[Index2]);\r
     }\r
 \r
     if (PeiCoreFile == NULL) {\r
@@ -251,11 +276,11 @@ Returns:
       //\r
       Status = SecFfsFindPeiCore ((EFI_FIRMWARE_VOLUME_HEADER *) (UINTN) gFdInfo[Index].Address, &PeiCoreFile);\r
       if (!EFI_ERROR (Status)) {\r
-        printf (" contains SEC Core");\r
+        SecPrint (" contains SEC Core");\r
       }\r
     }\r
 \r
-    printf ("\n");\r
+    SecPrint ("\n");\r
   }\r
   //\r
   // Calculate memory regions and store the information in the gSystemMemory\r
@@ -280,7 +305,7 @@ Returns:
     MemorySizeStr = MemorySizeStr + Index1 + 1;\r
   }\r
 \r
-  printf ("\n");\r
+  SecPrint ("\n");\r
 \r
   //\r
   // Hand off to PEI Core\r
@@ -291,7 +316,7 @@ Returns:
   // If we get here, then the PEI Core returned. This is an error as PEI should\r
   //  always hand off to DXE.\r
   //\r
-  printf ("ERROR : PEI Core returned\n");\r
+  SecPrint ("ERROR : PEI Core returned\n");\r
   exit (1);\r
 }\r
 \r
@@ -438,7 +463,7 @@ Returns:
 // TODO:    Data - add argument and description to function comment\r
 {\r
   CHAR8           *Format;\r
-  VA_LIST         Marker;\r
+  BASE_LIST       Marker;\r
   CHAR8           PrintBuffer[BYTES_PER_RECORD * 2];\r
   CHAR8           *Filename;\r
   CHAR8           *Description;\r
@@ -451,14 +476,14 @@ Returns:
     //\r
     // Processes ASSERT ()\r
     //\r
-    printf ("ASSERT %s(%d): %s\n", Filename, (int)LineNumber, Description);\r
+    SecPrint ("ASSERT %s(%d): %s\n", Filename, (int)LineNumber, Description);\r
 \r
   } else if (ReportStatusCodeExtractDebugInfo (Data, &ErrorLevel, &Marker, &Format)) {\r
     //\r
     // Process DEBUG () macro \r
     //\r
-    AsciiVSPrint (PrintBuffer, BYTES_PER_RECORD, Format, Marker);\r
-    printf (PrintBuffer);\r
+    AsciiBSPrint (PrintBuffer, BYTES_PER_RECORD, Format, Marker);\r
+    SecPrint (PrintBuffer);\r
   }\r
 \r
   return EFI_SUCCESS;\r
@@ -737,7 +762,7 @@ Returns:
   //\r
   // Align buffer on section boundry\r
   //\r
-  ImageContext.ImageAddress += ImageContext.SectionAlignment;\r
+  ImageContext.ImageAddress += ImageContext.SectionAlignment - 1;\r
   ImageContext.ImageAddress &= ~(ImageContext.SectionAlignment - 1);\r
 \r
   Status = PeCoffLoaderLoadImage (&ImageContext);\r
@@ -995,9 +1020,9 @@ SecNt32PeCoffRelocateImage (
 \r
     if ((Library != NULL) && (DllEntryPoint != NULL)) {\r
       ImageContext->EntryPoint  = (EFI_PHYSICAL_ADDRESS) (UINTN) DllEntryPoint;\r
-      wprintf (L"LoadLibraryEx (%s,\n               NULL, DONT_RESOLVE_DLL_REFERENCES)\n", DllFileName);\r
+      SecPrint ("LoadLibraryEx (%S,\n               NULL, DONT_RESOLVE_DLL_REFERENCES)\n", DllFileName);\r
     } else {\r
-      wprintf (L"WARNING: No source level debug %s. \n", DllFileName);\r
+      SecPrint ("WARNING: No source level debug %S. \n", DllFileName);\r
     }\r
 \r
     free (DllFileName);\r