diff options
Diffstat (limited to 'Boot')
| -rw-r--r-- | Boot/BootKit/BootKit.hxx | 10 | ||||
| -rw-r--r-- | Boot/BootKit/HW/SATA.hxx | 2 | ||||
| -rw-r--r-- | Boot/Sources/HEL/AMD64/BootFileReader.cxx | 9 | ||||
| -rw-r--r-- | Boot/Sources/HEL/AMD64/BootJump.S | 2 | ||||
| -rw-r--r-- | Boot/Sources/HEL/AMD64/BootMain.cxx | 84 | ||||
| -rw-r--r-- | Boot/Sources/HEL/AMD64/BootPlatform.cxx | 3 | ||||
| -rw-r--r-- | Boot/Sources/HEL/AMD64/New+Delete.cxx | 2 | ||||
| -rw-r--r-- | Boot/Sources/HEL/AMD64/Support.cxx | 6 | ||||
| -rw-r--r-- | Boot/Sources/Root/splash.text (renamed from Boot/Sources/Root/SplashScreen.fmt) | 0 |
9 files changed, 46 insertions, 72 deletions
diff --git a/Boot/BootKit/BootKit.hxx b/Boot/BootKit/BootKit.hxx index 309755df..c83b3c63 100644 --- a/Boot/BootKit/BootKit.hxx +++ b/Boot/BootKit/BootKit.hxx @@ -39,19 +39,19 @@ class BFileReader; class BFileRunner; class BVersionString; -using namespace Kernel; - typedef Char* PEFImagePtr; typedef Char* PEImagePtr; typedef WideChar CharacterTypeUTF16; typedef Char CharacterTypeUTF8; +using namespace Kernel; + namespace EFI { - extern void ThrowError(const CharacterTypeUTF16* ErrorCode, - const CharacterTypeUTF16* Reason) noexcept; -} + extern void ThrowError(const CharacterTypeUTF16* errorCode, + const CharacterTypeUTF16* reason) noexcept; +} // namespace EFI /** * @brief BootKit Text Writer class diff --git a/Boot/BootKit/HW/SATA.hxx b/Boot/BootKit/HW/SATA.hxx index bf6c7e82..6d523fcd 100644 --- a/Boot/BootKit/HW/SATA.hxx +++ b/Boot/BootKit/HW/SATA.hxx @@ -19,7 +19,7 @@ public: struct SATATrait final { - Kernel::SizeT mBase{1024}; + Kernel::SizeT mBase{1024}; Kernel::Boolean mErr{false}; Kernel::Boolean mDetected{false}; diff --git a/Boot/Sources/HEL/AMD64/BootFileReader.cxx b/Boot/Sources/HEL/AMD64/BootFileReader.cxx index b5498cf9..46d4f2ab 100644 --- a/Boot/Sources/HEL/AMD64/BootFileReader.cxx +++ b/Boot/Sources/HEL/AMD64/BootFileReader.cxx @@ -13,7 +13,7 @@ #include <BootKit/BootKit.hxx> #include <FirmwareKit/Handover.hxx> #include <FirmwareKit/EFI/API.hxx> -#include <cstddef> +#include <climits> /// @file BootFileReader /// @brief Bootloader File reader. @@ -111,8 +111,9 @@ BFileReader::~BFileReader() } /** - @brief this reads all of the buffer. - @param until read until size is reached. + @brief Reads all of the file into a buffer. + @param **until** size of file + @param **chunk** chunk to read each time. */ Void BFileReader::ReadAll(SizeT until, SizeT chunk) { @@ -121,7 +122,7 @@ Void BFileReader::ReadAll(SizeT until, SizeT chunk) if (auto err = BS->AllocatePool(EfiLoaderCode, until, (VoidPtr*)&mBlob) != kEfiOk) { - mWriter.Write(L"*** EFI-Code: ").Write(err).Write(L" ***\r"); + mWriter.Write(L"*** error: ").Write(err).Write(L" ***\r"); EFI::ThrowError(L"OutOfMemory", L"Out of memory."); } } diff --git a/Boot/Sources/HEL/AMD64/BootJump.S b/Boot/Sources/HEL/AMD64/BootJump.S index c2f03921..e807ab52 100644 --- a/Boot/Sources/HEL/AMD64/BootJump.S +++ b/Boot/Sources/HEL/AMD64/BootJump.S @@ -12,7 +12,7 @@ rt_jump_to_address: mov rdi, rcx mov rdx, rbp push rax - mov r8, rcx + mov r8, rcx call rdi pop rax ret diff --git a/Boot/Sources/HEL/AMD64/BootMain.cxx b/Boot/Sources/HEL/AMD64/BootMain.cxx index c786c16d..e98be361 100644 --- a/Boot/Sources/HEL/AMD64/BootMain.cxx +++ b/Boot/Sources/HEL/AMD64/BootMain.cxx @@ -10,7 +10,7 @@ #include <FirmwareKit/EFI.hxx> #include <FirmwareKit/EFI/API.hxx> #include <FirmwareKit/Handover.hxx> -#include <KernelKit/MSDOS.hpp> +#include <KernelKit/MSDOS.hxx> #include <KernelKit/PE.hxx> #include <KernelKit/PEF.hpp> #include <NewKit/Macros.hpp> @@ -166,36 +166,24 @@ EFI_EXTERN_C EFI_API Int Main(EfiHandlePtr ImageHandle, Descriptor = new EfiMemoryDescriptor[*SzDesc]; BS->GetMemoryMap(SizePtr, Descriptor, MapKey, SzDesc, RevDesc); - writer.Write(L"Kernel-Desc-Count: "); - writer.Write(*SzDesc); - writer.Write(L"\r"); + auto cDefaultMemoryMap = 0; // The sixth entry. - auto cDefaultMemoryMap = 0; /// The sixth entry. + //-----------------------------------------------------------// + // A simple loop which finds a usable memory region for us. + //-----------------------------------------------------------// - /// A simple loop which finds a usable memory region for us. - SizeT i = 0UL; - for (; Descriptor[i].Kind != EfiMemoryType::EfiConventionalMemory; ++i) + SizeT lookIndex = 0UL; + + for (; Descriptor[lookIndex].Kind != EfiMemoryType::EfiConventionalMemory; ++lookIndex) { ; } - cDefaultMemoryMap = i; - - writer.Write(L"Number-Of-Pages: ") - .Write(Descriptor[cDefaultMemoryMap].NumberOfPages) - .Write(L"\r"); - writer.Write(L"Virtual-Address: ") - .Write(Descriptor[cDefaultMemoryMap].VirtualStart) - .Write(L"\r"); - writer.Write(L"Phyiscal-Address: ") - .Write(Descriptor[cDefaultMemoryMap].PhysicalStart) - .Write(L"\r"); - writer.Write(L"Page-Kind: ") - .Write(Descriptor[cDefaultMemoryMap].Kind) - .Write(L"\r"); - writer.Write(L"Page-Attribute: ") - .Write(Descriptor[cDefaultMemoryMap].Attribute) - .Write(L"\r"); + cDefaultMemoryMap = lookIndex; + + //-----------------------------------------------------------// + // Update handover file specific table and phyiscal start field. + //-----------------------------------------------------------// handoverHdrPtr->f_PhysicalStart = (VoidPtr)Descriptor[cDefaultMemoryMap].PhysicalStart; @@ -214,41 +202,18 @@ EFI_EXTERN_C EFI_API Int Main(EfiHandlePtr ImageHandle, handoverHdrPtr->f_FirmwareVendorLen = BStrLen(SystemTable->FirmwareVendor); - BFileReader reader(L"SplashScreen.fmt", ImageHandle); - reader.ReadAll(512, 16); - - if (reader.Blob()) - { - Char* buf = (Char*)reader.Blob(); - - for (SizeT i = 0; i < reader.Size(); ++i) - { - if (buf[i] != '\n' && buf[i] != '\r') - { - if (buf[i] == '*') - { - writer.WriteCharacter('\t'); - } - else - { - writer.WriteCharacter(buf[i]); - } - } - else - writer.Write(L"\r"); - } - } - - /// - /// The following checks for an exisiting partition - /// inside the disk, if it doesn't have one, - /// format the disk. - // + // ---------------------------------------------------- // + // The following checks for an exisiting partition + // inside the disk, if it doesn't have one, + // format the disk. + // ---------------------------------------------------- // BDiskFormatFactory<BootDeviceATA> diskFormatter; - /// if not formated yet, then format it with the following folders: - /// /, /Boot, /Applications. + // ---------------------------------------------------- // + // if not formated yet, then format it with the following folders: + // /, /Boot, /Applications. + // ---------------------------------------------------- // if (!diskFormatter.IsPartitionValid()) { BDiskFormatFactory<BootDeviceATA>::BFileDescriptor rootDesc{0}; @@ -261,7 +226,10 @@ EFI_EXTERN_C EFI_API Int Main(EfiHandlePtr ImageHandle, EFI::ExitBootServices(*MapKey, ImageHandle); - /// Fallback to builtin kernel. + // ---------------------------------------------------- // + // Fallback to builtin kernel. + // ---------------------------------------------------- // + hal_init_platform(handoverHdrPtr); EFI::Stop(); diff --git a/Boot/Sources/HEL/AMD64/BootPlatform.cxx b/Boot/Sources/HEL/AMD64/BootPlatform.cxx index e700a8de..3db0bb6b 100644 --- a/Boot/Sources/HEL/AMD64/BootPlatform.cxx +++ b/Boot/Sources/HEL/AMD64/BootPlatform.cxx @@ -7,7 +7,6 @@ #include <BootKit/Platform.hxx> #include <BootKit/Protocol.hxx> #include <BootKit/BootKit.hxx> -#include "HALKit/AMD64/Processor.hpp" #ifdef __STANDALONE__ @@ -94,6 +93,8 @@ EXTERN_C UInt32 In32(UInt16 port) #else +#include <HALKit/AMD64/Processor.hpp> + void rt_hlt() { Kernel::HAL::rt_halt(); diff --git a/Boot/Sources/HEL/AMD64/New+Delete.cxx b/Boot/Sources/HEL/AMD64/New+Delete.cxx index 647cddb1..7a90285b 100644 --- a/Boot/Sources/HEL/AMD64/New+Delete.cxx +++ b/Boot/Sources/HEL/AMD64/New+Delete.cxx @@ -7,9 +7,9 @@ #include <BootKit/Platform.hxx> #include <BootKit/Protocol.hxx> #include <BootKit/BootKit.hxx> -#include <cstddef> /* Since we're using GCC for this EFI program. */ #ifdef __STANDALONE__ +#include <cstddef> /* Since we're using GCC for this EFI program. */ /// @brief Allocates a new object. /// @param sz the size. diff --git a/Boot/Sources/HEL/AMD64/Support.cxx b/Boot/Sources/HEL/AMD64/Support.cxx index 8ebfb2ff..393c18b4 100644 --- a/Boot/Sources/HEL/AMD64/Support.cxx +++ b/Boot/Sources/HEL/AMD64/Support.cxx @@ -4,9 +4,13 @@ ------------------------------------------- */ +#include <BootKit/BootKit.hxx> +#include <FirmwareKit/EFI/API.hxx> #include <FirmwareKit/EFI/EFI.hxx> #include <FirmwareKit/Handover.hxx> #include <BootKit/Vendor/Support.hxx> +#include <KernelKit/MSDOS.hxx> +#include <KernelKit/PE.hxx> #ifdef __STANDALONE__ @@ -54,7 +58,7 @@ EXTERN_C size_t strlen(const char* whatToCheck) return len; } -/// @brief somthing specific to the microsoft ABI, regarding checking the stack. +/// @brief somthing specific to the Microsoft's ABI, When the stack grows too big. EXTERN_C void ___chkstk_ms(void) { } diff --git a/Boot/Sources/Root/SplashScreen.fmt b/Boot/Sources/Root/splash.text index 4a851dc1..4a851dc1 100644 --- a/Boot/Sources/Root/SplashScreen.fmt +++ b/Boot/Sources/Root/splash.text |
