diff options
| author | Amlal El Mahrouss <amlalelmahrouss@icloud.com> | 2024-02-26 12:16:25 +0100 |
|---|---|---|
| committer | Amlal El Mahrouss <amlalelmahrouss@icloud.com> | 2024-02-26 12:16:25 +0100 |
| commit | bdcc3d84e08a509a766a469a605a97419ec14c35 (patch) | |
| tree | 1b3a365581b37a7f0246629be6256f521daeae4e /Private/NewBoot | |
| parent | 91c88797f7fa9dbb6cce12c14928a6fbd97d51b6 (diff) | |
Kernel/Bootloader: add CompilerKit/Version.hxx
- Rework BTextWriter class.
- Add BVersionString class.
- Worked on interrupts almost working!
Signed-off-by: Amlal El Mahrouss <amlalelmahrouss@icloud.com>
Diffstat (limited to 'Private/NewBoot')
| -rw-r--r-- | Private/NewBoot/BootKit/BootKit.hxx | 11 | ||||
| -rw-r--r-- | Private/NewBoot/Source/BootMain.cxx | 26 | ||||
| -rw-r--r-- | Private/NewBoot/Source/FileReader.cxx | 15 | ||||
| -rw-r--r-- | Private/NewBoot/Source/HEL/AMD64/AMD64-ATA.cxx | 16 | ||||
| -rw-r--r-- | Private/NewBoot/Source/TextWriter.cxx | 6 | ||||
| -rw-r--r-- | Private/NewBoot/Source/makefile | 2 |
6 files changed, 36 insertions, 40 deletions
diff --git a/Private/NewBoot/BootKit/BootKit.hxx b/Private/NewBoot/BootKit/BootKit.hxx index 81624ce5..e9b52bf2 100644 --- a/Private/NewBoot/BootKit/BootKit.hxx +++ b/Private/NewBoot/BootKit/BootKit.hxx @@ -17,8 +17,10 @@ class BTextWriter; class BFileReader; class BFileRunner; +class BVersionString; #include <BootKit/Arch/ATA.hxx> +#include <CompilerKit/Version.hxx> #include <FirmwareKit/EFI.hxx> #include <NewKit/Defines.hpp> @@ -41,8 +43,8 @@ typedef WideChar CharacterType; */ class BTextWriter final { public: - BTextWriter &WriteString(const Long &num); - BTextWriter &WriteString(const CharacterType *str); + BTextWriter &Write(const Long &num); + BTextWriter &Write(const CharacterType *str); BTextWriter &WriteCharacter(CharacterType c); public: @@ -187,3 +189,8 @@ inline Void InitQT() noexcept { kStride = 4; } + +class BVersionString final { + public: + static const CharacterType *Shared() { return BOOTLOADER_VERSION; } +}; diff --git a/Private/NewBoot/Source/BootMain.cxx b/Private/NewBoot/Source/BootMain.cxx index 62639b18..170a7215 100644 --- a/Private/NewBoot/Source/BootMain.cxx +++ b/Private/NewBoot/Source/BootMain.cxx @@ -33,27 +33,19 @@ EFI_EXTERN_C EFI_API Int EfiMain(EfiHandlePtr ImageHandle, BTextWriter writer; - writer.WriteString(L"HCoreLdr: "); + writer.Write(L"HCoreLdr: "); -#ifndef __DEBUG__ - - writer.WriteString(L"Version 1.12 (Release Channel)\r\n"); - -#else - - writer.WriteString(L"Version 1.12 (Insiders Channel)\r\n"); - -#endif + writer.Write(BVersionString::Shared()).Write(L"\r\n"); const char strDate[] = __DATE__; - writer.WriteString(L"HCoreLdr: Build: "); + writer.Write(L"HCoreLdr: Build: "); for (auto& ch : strDate) writer.WriteCharacter(ch); - writer.WriteString(L"\r\nHCoreLdr: Firmware Vendor: ") - .WriteString(SystemTable->FirmwareVendor) - .WriteString(L"\r\n"); + writer.Write(L"\r\nHCoreLdr: Firmware Vendor: ") + .Write(SystemTable->FirmwareVendor) + .Write(L"\r\n"); BFileReader img(L"HCOREKRNL.DLL", ImageHandle); @@ -160,13 +152,13 @@ EFI_EXTERN_C EFI_API Int EfiMain(EfiHandlePtr ImageHandle, return kEfiOk; } else { - writer.WriteString(L"HCoreLdr: Error-Code: HLDR-0001\r\n"); + writer.Write(L"HCoreLdr: Error-Code: HLDR-0001\r\n"); } } else { - writer.WriteString(L"HCoreLdr: Error-Code: HLDR-0002\r\n"); + writer.Write(L"HCoreLdr: Error-Code: HLDR-0002\r\n"); } } else { - writer.WriteString(L"HCoreLdr: Error-Code: HLDR-0003\r\n"); + writer.Write(L"HCoreLdr: Error-Code: HLDR-0003\r\n"); } EFI::Stop(); diff --git a/Private/NewBoot/Source/FileReader.cxx b/Private/NewBoot/Source/FileReader.cxx index 16197164..92b35eff 100644 --- a/Private/NewBoot/Source/FileReader.cxx +++ b/Private/NewBoot/Source/FileReader.cxx @@ -50,14 +50,12 @@ BFileReader::BFileReader(const CharacterType* path, EfiHandlePtr ImageHandle) { EfiGUID guidImg = EfiGUID(EFI_LOADED_IMAGE_PROTOCOL_GUID); if (BS->HandleProtocol(ImageHandle, &guidImg, (void**)&img) != kEfiOk) { - mWriter.WriteString(L"HCoreLdr: Fetch-Protocol: No-Such-Protocol") - .WriteString(L"\r\n"); + mWriter.Write(L"HCoreLdr: Fetch-Protocol: No-Such-Protocol").Write(L"\r\n"); this->mErrorCode = kNotSupported; } if (BS->HandleProtocol(img->DeviceHandle, &guidEfp, (void**)&efp) != kEfiOk) { - mWriter.WriteString(L"HCoreLdr: Fetch-Protocol: No-Such-Protocol") - .WriteString(L"\r\n"); + mWriter.Write(L"HCoreLdr: Fetch-Protocol: No-Such-Protocol").Write(L"\r\n"); this->mErrorCode = kNotSupported; return; } @@ -65,8 +63,7 @@ BFileReader::BFileReader(const CharacterType* path, EfiHandlePtr ImageHandle) { /// Start doing disk I/O if (efp->OpenVolume(efp, &rootFs) != kEfiOk) { - mWriter.WriteString(L"HCoreLdr: Fetch-Protocol: No-Such-Volume") - .WriteString(L"\r\n"); + mWriter.Write(L"HCoreLdr: Fetch-Protocol: No-Such-Volume").Write(L"\r\n"); this->mErrorCode = kNotSupported; return; } @@ -75,9 +72,9 @@ BFileReader::BFileReader(const CharacterType* path, EfiHandlePtr ImageHandle) { if (rootFs->Open(rootFs, &kernelFile, mPath, kEFIFileRead, kEFIReadOnly) != kEfiOk) { - mWriter.WriteString(L"HCoreLdr: Fetch-Protocol: No-Such-Path: ") - .WriteString(mPath) - .WriteString(L"\r\n"); + mWriter.Write(L"HCoreLdr: Fetch-Protocol: No-Such-Path: ") + .Write(mPath) + .Write(L"\r\n"); this->mErrorCode = kNotSupported; return; } diff --git a/Private/NewBoot/Source/HEL/AMD64/AMD64-ATA.cxx b/Private/NewBoot/Source/HEL/AMD64/AMD64-ATA.cxx index 0adf7707..13ee3dbf 100644 --- a/Private/NewBoot/Source/HEL/AMD64/AMD64-ATA.cxx +++ b/Private/NewBoot/Source/HEL/AMD64/AMD64-ATA.cxx @@ -72,7 +72,7 @@ ATAInit_Retry: auto statRdy = In8(IO + ATA_REG_STATUS); if (statRdy & ATA_SR_ERR) { - writer.WriteString( + writer.Write( L"HCoreLdr: ATA: Select error, not an IDE based hard-drive.\r\n"); return false; @@ -91,14 +91,14 @@ ATAInit_Retry: kATAData[indexData] = In16(IO + ATA_REG_DATA); } - writer.WriteString(L"HCoreLdr: Model: "); + writer.Write(L"HCoreLdr: Model: "); for (SizeT indexData = 0; indexData < kATADataLen; indexData += 1) { writer.WriteCharacter(kATAData[indexData + ATA_IDENT_MODEL + 1]) .WriteCharacter(kATAData[indexData + ATA_IDENT_MODEL]); } - writer.WriteString(L"\r\n"); + writer.Write(L"\r\n"); OutBus = (Bus == ATA_PRIMARY) ? BDeviceATA::kPrimary : BDeviceATA::kSecondary; OutMaster = (Bus == ATA_PRIMARY) ? ATA_MASTER : ATA_SLAVE; @@ -115,21 +115,21 @@ ATAInit_Retry: /* differentiate ATA, ATAPI, SATA and SATAPI */ if (cl == 0x14 && ch == 0xEB) { - writer.WriteString(L"HCoreLdr: PATAPI drive detected.\r\n"); + writer.Write(L"HCoreLdr: PATAPI drive detected.\r\n"); kATADeviceType = kATADevicePATA_PI; } if (cl == 0x69 && ch == 0x96) { - writer.WriteString(L"HCoreLdr: SATAPI drive detected.\r\n"); + writer.Write(L"HCoreLdr: SATAPI drive detected.\r\n"); kATADeviceType = kATADeviceSATA_PI; } if (cl == 0 && ch == 0) { - writer.WriteString(L"HCoreLdr: PATA drive detected.\r\n"); + writer.Write(L"HCoreLdr: PATA drive detected.\r\n"); kATADeviceType = kATADevicePATA; } if (cl == 0x3c && ch == 0xc3) { - writer.WriteString(L"HCoreLdr: SATA drive detected.\r\n"); + writer.Write(L"HCoreLdr: SATA drive detected.\r\n"); kATADeviceType = kATADeviceSATA; } @@ -207,7 +207,7 @@ BDeviceATA::BDeviceATA() noexcept { kATADetected = true; BTextWriter writer; - writer.WriteString(L"HCoreLdr: Driver: OnLine.\r\n"); + writer.Write(L"HCoreLdr: Driver: OnLine.\r\n"); } } diff --git a/Private/NewBoot/Source/TextWriter.cxx b/Private/NewBoot/Source/TextWriter.cxx index 1191c288..127b2293 100644 --- a/Private/NewBoot/Source/TextWriter.cxx +++ b/Private/NewBoot/Source/TextWriter.cxx @@ -20,7 +20,7 @@ /** @brief puts wrapper over EFI ConOut. */ -BTextWriter &BTextWriter::WriteString(const CharacterType *str) { +BTextWriter &BTextWriter::Write(const CharacterType *str) { if (*str == 0 || !str) return *this; ST->ConOut->OutputString(ST->ConOut, str); @@ -40,11 +40,11 @@ BTextWriter &BTextWriter::WriteCharacter(CharacterType c) { return *this; } -BTextWriter &BTextWriter::WriteString(const Long &x) { +BTextWriter &BTextWriter::Write(const Long &x) { int y = x / 16; int h = x % 16; - if (y) this->WriteString(y); + if (y) this->Write(y); /* fail if the hex number is not base-16 */ if (h > 15) { diff --git a/Private/NewBoot/Source/makefile b/Private/NewBoot/Source/makefile index 30213e07..28efe7e5 100644 --- a/Private/NewBoot/Source/makefile +++ b/Private/NewBoot/Source/makefile @@ -27,7 +27,7 @@ bootloader-amd64: .PHONY: run-efi-amd64 run-efi-amd64: - qemu-system-x86_64 -net none -smp 2 -m 4G -M q35 -bios OVMF.fd -drive file=fat:rw:CDROM,index=1,format=raw -serial stdio + qemu-system-x86_64 -net none -smp 2 -m 4G -M q35 -bios OVMF.fd -drive file=fat:rw:CDROM,index=1,format=raw -d int .PHONY: download-edk download-edk: |
