Implement BlDbgPrint() for printing debug messages to the serial console and rename loader entry point
All checks were successful
ci/woodpecker/push/build Pipeline was successful
All checks were successful
ci/woodpecker/push/build Pipeline was successful
This commit is contained in:
parent
fa8fa99d6f
commit
a961ac1e69
@ -4,6 +4,7 @@ PROJECT(XTLDR)
|
||||
# Specify include directories
|
||||
include_directories(
|
||||
${EXECTOS_SOURCE_DIR}/sdk/xtdk
|
||||
${EXECTOS_SOURCE_DIR}/sdk/xtklib/includes
|
||||
${XTLDR_SOURCE_DIR}/includes)
|
||||
|
||||
# Specify list of source code files
|
||||
@ -16,6 +17,9 @@ list(APPEND XTLDR_SOURCE
|
||||
# Add executable
|
||||
add_executable(xtldr ${XTLDR_SOURCE})
|
||||
|
||||
# Add linker libraries
|
||||
target_link_libraries(xtldr xtklib)
|
||||
|
||||
# Set proper binary name and install target
|
||||
if(ARCH STREQUAL "i686")
|
||||
set(BINARY_NAME "bootia32")
|
||||
@ -26,5 +30,5 @@ set_target_properties(xtldr PROPERTIES OUTPUT_NAME ${BINARY_NAME} SUFFIX .efi)
|
||||
set_install_target(xtldr efi/boot)
|
||||
|
||||
# Set loader entrypoint, imagebase address, ordinals and subsystem
|
||||
set_entrypoint(xtldr "XtLoaderStartup")
|
||||
set_entrypoint(xtldr "BlStartXtLoader")
|
||||
set_subsystem(xtldr efi_application)
|
||||
|
@ -9,6 +9,35 @@
|
||||
#include <xtbl.h>
|
||||
|
||||
|
||||
/**
|
||||
* This routine formats the input string and prints it out to the serial console.
|
||||
*
|
||||
* @param Format
|
||||
* The formatted string that is to be written to the output.
|
||||
*
|
||||
* @param ...
|
||||
* Depending on the format string, this routine might expect a sequence of additional arguments.
|
||||
*
|
||||
* @return This routine does not return any value.
|
||||
*
|
||||
* @since XT 1.0
|
||||
*/
|
||||
VOID
|
||||
BlDbgPrint(IN PUINT16 Format,
|
||||
IN ...)
|
||||
{
|
||||
VA_LIST Arguments;
|
||||
|
||||
/* Initialise the va_list */
|
||||
VA_START(Arguments, Format);
|
||||
|
||||
/* Format and print the string to the serial console */
|
||||
BlStringPrint(BlComPortPutChar, Format, Arguments);
|
||||
|
||||
/* Clean up the va_list */
|
||||
VA_END(Arguments);
|
||||
}
|
||||
|
||||
/**
|
||||
* This routine formats the input string and prints it out to the stdout and serial console.
|
||||
*
|
||||
@ -22,7 +51,7 @@
|
||||
*
|
||||
* @since XT 1.0
|
||||
*
|
||||
* @todo Check if GOP is active and use it instead of default conout protocol; duplicate output to serial console.
|
||||
* @todo Check if GOP is active and use it instead of default conout protocol
|
||||
*/
|
||||
VOID
|
||||
BlEfiPrint(IN PUINT16 Format,
|
||||
@ -36,6 +65,9 @@ BlEfiPrint(IN PUINT16 Format,
|
||||
/* Format and print the string to the stdout */
|
||||
BlStringPrint(BlConsolePutChar, Format, Arguments);
|
||||
|
||||
/* Format and print the string to the serial console */
|
||||
BlStringPrint(BlComPortPutChar, Format, Arguments);
|
||||
|
||||
/* Clean up the va_list */
|
||||
VA_END(Arguments);
|
||||
}
|
||||
|
@ -10,6 +10,7 @@
|
||||
#define __XTLDR_XTBL_H
|
||||
|
||||
#include <xtkmapi.h>
|
||||
#include <xtklib.h>
|
||||
|
||||
|
||||
/* EFI Image Handle */
|
||||
@ -18,6 +19,12 @@ EXTERN EFI_HANDLE EfiImageHandle;
|
||||
/* EFI System Table */
|
||||
EXTERN EFI_SYSTEM_TABLE *EfiSystemTable;
|
||||
|
||||
/* Serial port configuration */
|
||||
EXTERN CPPORT EfiSerialPort;
|
||||
|
||||
VOID
|
||||
BlComPortPutChar(IN USHORT Character);
|
||||
|
||||
VOID
|
||||
BlConsoleClearScreen();
|
||||
|
||||
@ -27,10 +34,18 @@ BlConsoleInitialize();
|
||||
VOID
|
||||
BlConsolePutChar(IN USHORT Character);
|
||||
|
||||
VOID
|
||||
BlDbgPrint(IN PUINT16 Format,
|
||||
IN ...);
|
||||
|
||||
VOID
|
||||
BlEfiPrint(IN PUINT16 Format,
|
||||
IN ...);
|
||||
|
||||
EFI_STATUS
|
||||
BlStartXtLoader(IN EFI_HANDLE ImageHandle,
|
||||
IN PEFI_SYSTEM_TABLE SystemTable);
|
||||
|
||||
VOID
|
||||
BlStringPrint(IN VOID PutChar(IN USHORT Character),
|
||||
IN PUINT16 Format,
|
||||
@ -66,8 +81,4 @@ BlpStringPrintUnsigned64(IN VOID PutChar(IN USHORT Character),
|
||||
UINT64
|
||||
BlpStringReadPadding(IN PUINT16 *Format);
|
||||
|
||||
EFI_STATUS
|
||||
XtLoaderStartup(IN EFI_HANDLE ImageHandle,
|
||||
IN PEFI_SYSTEM_TABLE SystemTable);
|
||||
|
||||
#endif /* __XTLDR_XTBL_H */
|
||||
|
@ -15,6 +15,31 @@ EFI_HANDLE EfiImageHandle;
|
||||
/* EFI System Table */
|
||||
PEFI_SYSTEM_TABLE EfiSystemTable;
|
||||
|
||||
/* Serial port configuration */
|
||||
CPPORT EfiSerialPort;
|
||||
|
||||
/**
|
||||
* Writes a character to the serial console.
|
||||
*
|
||||
* @param Character
|
||||
* The integer promotion of the character to be written.
|
||||
*
|
||||
* @return This routine does not return any value.
|
||||
*
|
||||
* @since XT 1.0
|
||||
*/
|
||||
VOID
|
||||
BlComPortPutChar(IN USHORT Character)
|
||||
{
|
||||
USHORT Buffer[2];
|
||||
|
||||
/* Write character to the serial console */
|
||||
Buffer[0] = Character;
|
||||
Buffer[1] = 0;
|
||||
|
||||
HlComPortPutByte(&EfiSerialPort, Buffer[0]);
|
||||
}
|
||||
|
||||
/**
|
||||
* This routine is the entry point of the XT EFI boot loader.
|
||||
*
|
||||
@ -27,10 +52,9 @@ PEFI_SYSTEM_TABLE EfiSystemTable;
|
||||
* @return This routine returns status code.
|
||||
*
|
||||
* @since XT 1.0
|
||||
*
|
||||
*/
|
||||
EFI_STATUS
|
||||
XtLoaderStartup(IN EFI_HANDLE ImageHandle,
|
||||
BlStartXtLoader(IN EFI_HANDLE ImageHandle,
|
||||
IN PEFI_SYSTEM_TABLE SystemTable)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
@ -39,6 +63,12 @@ XtLoaderStartup(IN EFI_HANDLE ImageHandle,
|
||||
EfiImageHandle = ImageHandle;
|
||||
EfiSystemTable = SystemTable;
|
||||
|
||||
Status = HlInitializeComPort(&EfiSerialPort, 1, 0);
|
||||
if(Status != STATUS_SUCCESS)
|
||||
{
|
||||
BlEfiPrint(L"Failed to initialize serial console");
|
||||
}
|
||||
|
||||
/* Initialize EFI console */
|
||||
Status = BlConsoleInitialize();
|
||||
if(Status != STATUS_EFI_SUCCESS) {
|
||||
|
Loading…
Reference in New Issue
Block a user