diff options
Diffstat (limited to 'dev/Boot/Sources')
42 files changed, 0 insertions, 1579 deletions
diff --git a/dev/Boot/Sources/.gitkeep b/dev/Boot/Sources/.gitkeep deleted file mode 100644 index e69de29b..00000000 --- a/dev/Boot/Sources/.gitkeep +++ /dev/null diff --git a/dev/Boot/Sources/BootloaderRsrc.rsrc b/dev/Boot/Sources/BootloaderRsrc.rsrc deleted file mode 100644 index 6aa1d5a5..00000000 --- a/dev/Boot/Sources/BootloaderRsrc.rsrc +++ /dev/null @@ -1,25 +0,0 @@ -#include "../../Kernel/CompilerKit/Version.hxx" - -1 VERSIONINFO -FILEVERSION 1,0,0,0 -PRODUCTVERSION 1,0,0,0 -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "080904E4" - BEGIN - VALUE "CompanyName", "ZKA Technologies" - VALUE "FileDescription", "New OS Loader." - VALUE "FileVersion", BOOTLOADER_VERSION - VALUE "InternalName", "newosldr" - VALUE "LegalCopyright", "Copyright ZKA Technologies., all rights reserved." - VALUE "OriginalFilename", "newosldr.exe" - VALUE "ProductName", "newosldr" - VALUE "ProductVersion", BOOTLOADER_VERSION - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x809, 1252 - END -END diff --git a/dev/Boot/Sources/HEL/64X000/.gitkeep b/dev/Boot/Sources/HEL/64X000/.gitkeep deleted file mode 100644 index e69de29b..00000000 --- a/dev/Boot/Sources/HEL/64X000/.gitkeep +++ /dev/null diff --git a/dev/Boot/Sources/HEL/64X000/Boot64x0.S b/dev/Boot/Sources/HEL/64X000/Boot64x0.S deleted file mode 100644 index 271a3f28..00000000 --- a/dev/Boot/Sources/HEL/64X000/Boot64x0.S +++ /dev/null @@ -1,35 +0,0 @@ -/* ------------------------------------------- - - Copyright ZKA Technologies. - -------------------------------------------- */ - -.section .boot_hdr -.align 4 - -/* NewBoot boot header begin for a 64x000 kernel. */ - -boot_hdr_mag: - .ascii "CB" -boot_hdr_name: - // it has to match ten bytes. - .asciz "newosldr\0\0" -boot_hdr_ver: - .word 0x104 -boot_hdr_proc: - .long bootloader_start - -/* NewBoot boot header end */ - -.extern bootloader_main -.extern bootloader_stack - -.globl bootloader_start -bootloader_start: - psh 4 /* real address of .Laddr */ - ldi 0,(bootloader_stack-bootloader_start)(4) /* stack address location */ - mv 19,0 /* use user defined stack */ - jrl - - bl bootloader_main - blr diff --git a/dev/Boot/Sources/HEL/AMD64/.gitkeep b/dev/Boot/Sources/HEL/AMD64/.gitkeep deleted file mode 100644 index e69de29b..00000000 --- a/dev/Boot/Sources/HEL/AMD64/.gitkeep +++ /dev/null diff --git a/dev/Boot/Sources/HEL/AMD64/BootAHCI.cxx b/dev/Boot/Sources/HEL/AMD64/BootAHCI.cxx deleted file mode 100644 index 776f3f88..00000000 --- a/dev/Boot/Sources/HEL/AMD64/BootAHCI.cxx +++ /dev/null @@ -1,20 +0,0 @@ -/* ------------------------------------------- - - Copyright ZKA Technologies. - -------------------------------------------- */ - -/** - * @file AHCI.cxx - * @author Amlal El Mahrouss (amlalelmahrouss@icloud.com) - * @brief AHCI driver. - * @version 0.1 - * @date 2024-02-02 - * - * @copyright Copyright (c) ZKA Technologies - * - */ - -#include <BootKit/Platform.hxx> -#include <BootKit/Protocol.hxx> -#include <BootKit/HW/SATA.hxx> diff --git a/dev/Boot/Sources/HEL/AMD64/BootATA.cxx b/dev/Boot/Sources/HEL/AMD64/BootATA.cxx deleted file mode 100644 index 4beed241..00000000 --- a/dev/Boot/Sources/HEL/AMD64/BootATA.cxx +++ /dev/null @@ -1,276 +0,0 @@ -/* ------------------------------------------- - - Copyright ZKA Technologies. - -------------------------------------------- */ - -/** - * @file ATA.cxx - * @author Amlal El Mahrouss (amlalelmahrouss@icloud.com) - * @brief ATA driver. - * @version 0.1 - * @date 2024-02-02 - * - * @copyright Copyright (c) ZKA Technologies - * - */ - -#include <FirmwareKit/EFI.hxx> -#include <BootKit/BootKit.hxx> -#include <BootKit/HW/ATA.hxx> - -/// bugs: 0 - -#define kATADataLen 256 - -static Boolean kATADetected = false; -static Int32 kATADeviceType = kATADeviceCount; -static UInt16 kATAData[kATADataLen] = {0}; - -Boolean boot_ata_detected(Void); - -STATIC Boolean boot_ata_wait_io(UInt16 IO) -{ - for (int i = 0; i < 4; i++) - In8(IO + ATA_REG_STATUS); - -ATAWaitForIO_Retry: - auto statRdy = In8(IO + ATA_REG_STATUS); - - if ((statRdy & ATA_SR_BSY)) - goto ATAWaitForIO_Retry; - -ATAWaitForIO_Retry2: - statRdy = In8(IO + ATA_REG_STATUS); - - if (statRdy & ATA_SR_ERR) - return false; - - if (!(statRdy & ATA_SR_DRDY)) - goto ATAWaitForIO_Retry2; - - return true; -} - -Void boot_ata_select(UInt16 Bus) -{ - if (Bus == ATA_PRIMARY_IO) - Out8(Bus + ATA_REG_HDDEVSEL, ATA_PRIMARY_SEL); - else - Out8(Bus + ATA_REG_HDDEVSEL, ATA_SECONDARY_SEL); -} - -Boolean boot_ata_init(UInt16 Bus, UInt8 Drive, UInt16& OutBus, UInt8& OutMaster) -{ - if (boot_ata_detected()) - return true; - - BTextWriter writer; - - UInt16 IO = Bus; - - boot_ata_select(IO); - - // Bus init, NEIN bit. - Out8(IO + ATA_REG_NEIN, 1); - - // identify until it's good. -ATAInit_Retry: - auto statRdy = In8(IO + ATA_REG_STATUS); - - if (statRdy & ATA_SR_ERR) - { - writer.Write( - L"newosldr: ATA: Select error, not an IDE based hard-drive.\r"); - - return false; - } - - if ((statRdy & ATA_SR_BSY)) - goto ATAInit_Retry; - - Out8(IO + ATA_REG_COMMAND, ATA_CMD_IDENTIFY); - - /// fetch serial info - /// model, speed, number of sectors... - - boot_ata_wait_io(IO); - - for (SizeT indexData = 0ul; indexData < kATADataLen; ++indexData) - { - kATAData[indexData] = In16(IO + ATA_REG_DATA); - } - - OutBus = - (Bus == ATA_PRIMARY_IO) ? BootDeviceATA::kPrimary : BootDeviceATA::kSecondary; - - OutMaster = (Bus == ATA_PRIMARY_IO) ? ATA_MASTER : ATA_SLAVE; - - return true; -} - -Void boot_ata_read(UInt64 Lba, UInt16 IO, UInt8 Master, CharacterTypeUTF8* Buf, SizeT SectorSz, SizeT Size) -{ - UInt8 Command = ((!Master) ? 0xE0 : 0xF0); - - boot_ata_wait_io(IO); - boot_ata_select(IO); - - Out8(IO + ATA_REG_HDDEVSEL, (Command) | (((Lba) >> 24) & 0x0F)); - - Out8(IO + ATA_REG_SEC_COUNT0, 2); - - Out8(IO + ATA_REG_LBA0, (Lba)); - Out8(IO + ATA_REG_LBA1, (Lba) >> 8); - Out8(IO + ATA_REG_LBA2, (Lba) >> 16); - Out8(IO + ATA_REG_LBA3, (Lba) >> 24); - - Out8(IO + ATA_REG_COMMAND, ATA_CMD_READ_PIO); - - boot_ata_wait_io(IO); - - for (SizeT IndexOff = 0; IndexOff < Size; ++IndexOff) - { - boot_ata_wait_io(IO); - Buf[IndexOff] = In16(IO + ATA_REG_DATA); - boot_ata_wait_io(IO); - } -} - -Void boot_ata_write(UInt64 Lba, UInt16 IO, UInt8 Master, CharacterTypeUTF8* Buf, SizeT SectorSz, SizeT Size) -{ - UInt8 Command = ((!Master) ? 0xE0 : 0xF0); - - boot_ata_wait_io(IO); - boot_ata_select(IO); - - Out8(IO + ATA_REG_HDDEVSEL, (Command) | (((Lba) >> 24) & 0x0F)); - - Out8(IO + ATA_REG_SEC_COUNT0, 2); - - Out8(IO + ATA_REG_LBA0, (Lba)); - Out8(IO + ATA_REG_LBA1, (Lba) >> 8); - Out8(IO + ATA_REG_LBA2, (Lba) >> 16); - Out8(IO + ATA_REG_LBA3, (Lba) >> 24); - - Out8(IO + ATA_REG_COMMAND, ATA_CMD_WRITE_PIO); - - boot_ata_wait_io(IO); - - for (SizeT IndexOff = 0; IndexOff < Size; ++IndexOff) - { - boot_ata_wait_io(IO); - Out16(IO + ATA_REG_DATA, Buf[IndexOff]); - boot_ata_wait_io(IO); - } -} - -/// @check is ATA detected? -Boolean boot_ata_detected(Void) -{ - return kATADetected; -} - -/*** - * - * - * @brief ATA Device class. - * - * - */ - -/** - * @brief ATA Device constructor. - * @param void none. - */ -BootDeviceATA::BootDeviceATA() noexcept -{ - if (boot_ata_init(ATA_PRIMARY_IO, true, this->Leak().mBus, - this->Leak().mMaster) || - boot_ata_init(ATA_SECONDARY_IO, true, this->Leak().mBus, - this->Leak().mMaster)) - { - kATADetected = true; - } -} -/** - * @brief Is ATA detected? - */ -BootDeviceATA::operator bool() -{ - return boot_ata_detected(); -} - -/** - @brief Read Buf from disk - @param Sz Sector size - @param Buf buffer -*/ -BootDeviceATA& BootDeviceATA::Read(CharacterTypeUTF8* Buf, const SizeT& SectorSz) -{ - if (!boot_ata_detected()) - { - Leak().mErr = true; - return *this; - } - - this->Leak().mErr = false; - - if (!Buf || SectorSz < 1) - return *this; - - auto lba = this->Leak().mBase / SectorSz; - - boot_ata_read(lba, this->Leak().mBus, this->Leak().mMaster, - Buf, SectorSz, this->Leak().mSize); - - return *this; -} - -/** - @brief Write Buf into disk - @param Sz Sector size - @param Buf buffer -*/ -BootDeviceATA& BootDeviceATA::Write(CharacterTypeUTF8* Buf, const SizeT& SectorSz) -{ - if (!boot_ata_detected()) - { - Leak().mErr = true; - return *this; - } - - Leak().mErr = false; - - if (!Buf || SectorSz < 1) - return *this; - - auto lba = this->Leak().mBase / SectorSz; - - boot_ata_write(lba, this->Leak().mBus, this->Leak().mMaster, - Buf, SectorSz, this->Leak().mSize); - - return *this; -} - -/** - * @brief ATA trait getter. - * @return BootDeviceATA::ATATrait& the drive config. - */ -BootDeviceATA::ATATrait& BootDeviceATA::Leak() -{ - return mTrait; -} - -/*** - @brief Getter, gets the number of sectors inside the drive. -*/ -SizeT BootDeviceATA::GetSectorsCount() noexcept -{ - return (kATAData[61] << 16) | kATAData[60]; -} - -SizeT BootDeviceATA::GetDiskSize() noexcept -{ - return this->GetSectorsCount() * BootDeviceATA::kSectorSize; -} diff --git a/dev/Boot/Sources/HEL/AMD64/BootFileReader.cxx b/dev/Boot/Sources/HEL/AMD64/BootFileReader.cxx deleted file mode 100644 index e94c690a..00000000 --- a/dev/Boot/Sources/HEL/AMD64/BootFileReader.cxx +++ /dev/null @@ -1,200 +0,0 @@ -/* ------------------------------------------- - - Copyright ZKA Technologies. - - File: FileReader.cxx - Purpose: New Boot FileReader, - Read complete file and store it in a buffer. - -------------------------------------------- */ - -#include <BootKit/Platform.hxx> -#include <BootKit/Protocol.hxx> -#include <BootKit/BootKit.hxx> -#include <FirmwareKit/Handover.hxx> -#include <FirmwareKit/EFI/API.hxx> - -/// @file BootFileReader -/// @brief Bootloader File reader. -/// BUGS: 0 - -//////////////////////////////////////////////////////////////////////////////////////////////////// -/// -/// -/// @name BFileReader class -/// @brief Reads the file as a blob. -/// -/// -//////////////////////////////////////////////////////////////////////////////////////////////////// - -/*** - @brief File Reader constructor. -*/ -BFileReader::BFileReader(const CharacterTypeUTF16* path, - EfiHandlePtr ImageHandle) -{ - if (path != nullptr) - { - SizeT index = 0UL; - for (; path[index] != L'\0'; ++index) - { - mPath[index] = path[index]; - } - - mPath[index] = 0; - } - - /// Load protocols with their GUIDs. - - EfiGUID guidEfp = EfiGUID(EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_GUID); - - EfiSimpleFilesystemProtocol* efp = nullptr; - - EfiLoadImageProtocol* img = nullptr; - EfiGUID guidImg = EfiGUID(EFI_LOADED_IMAGE_PROTOCOL_GUID); - - if (BS->HandleProtocol(ImageHandle, &guidImg, (void**)&img) != kEfiOk) - { - mWriter.Write(L"newosldr: Handle-Protocol: No-Such-Protocol").Write(L"\r"); - this->mErrorCode = kNotSupported; - } - - if (BS->HandleProtocol(img->DeviceHandle, &guidEfp, (void**)&efp) != kEfiOk) - { - mWriter.Write(L"newosldr: Handle-Protocol: No-Such-Protocol").Write(L"\r"); - this->mErrorCode = kNotSupported; - return; - } - - /// Start doing disk I/O - - if (efp->OpenVolume(efp, &mRootFs) != kEfiOk) - { - mWriter.Write(L"newosldr: Fetch-Protocol: No-Such-Volume").Write(L"\r"); - this->mErrorCode = kNotSupported; - return; - } - - EfiFileProtocol* kernelFile = nullptr; - - if (mRootFs->Open(mRootFs, &kernelFile, mPath, kEFIFileRead, kEFIReadOnly) != - kEfiOk) - { - mWriter.Write(L"newosldr: Fetch-Protocol: No-Such-Path: ") - .Write(mPath) - .Write(L"\r"); - this->mErrorCode = kNotSupported; - - mRootFs->Close(mRootFs); - - return; - } - - mSizeFile = 0; - mFile = kernelFile; - mErrorCode = kOperationOkay; -} - -BFileReader::~BFileReader() -{ - if (this->mFile) - { - this->mFile->Close(this->mFile); - this->mFile = nullptr; - } - - if (this->mRootFs) - { - this->mRootFs->Close(this->mRootFs); - this->mRootFs = nullptr; - } - - if (this->mBlob) - { - BS->FreePool(this->mBlob); - this->mBlob = nullptr; - } - - BSetMem(this->mPath, 0, kPathLen); -} - -/** - @brief Reads all of the file into a buffer. - @param **readUntil** size of file - @param **chunkToRead** chunk to read each time. -*/ -Void BFileReader::ReadAll(SizeT readUntil, SizeT chunkToRead, UIntPtr outAddress) -{ - if (mBlob == nullptr) - { - EfiFileInfo newPtrInfo; - UInt32 szInfo = 0; - - EfiGUID cFileInfoGUID = EFI_FILE_INFO_GUID; - - if (mFile->GetInfo(mFile, &cFileInfoGUID, &szInfo, &newPtrInfo) == kEfiOk) - { - if (newPtrInfo.FileSize < readUntil) - readUntil = newPtrInfo.FileSize; - else if (readUntil < 1) - readUntil = newPtrInfo.FileSize; - - mWriter.Write(L"newosldr: physical size: ").Write(readUntil).Write("\r"); - } - - if (!outAddress) - { - if (auto err = BS->AllocatePool(EfiLoaderCode, readUntil, (VoidPtr*)&mBlob) != - kEfiOk) - { - mWriter.Write(L"*** error: ").Write(err).Write(L" ***\r"); - EFI::ThrowError(L"OutOfMemory", L"Out of memory."); - } - } - else - { - mBlob = (VoidPtr)outAddress; - } - } - - mErrorCode = kNotSupported; - - UInt64 bufSize = chunkToRead; - UInt64 szCnt = 0UL; - - while (szCnt < readUntil) - { - auto res = mFile->Read(mFile, &bufSize, (VoidPtr)(&((Char*)mBlob)[szCnt])); - - szCnt += bufSize; - - if (res == kBufferTooSmall) - { - bufSize = chunkToRead; - } - } - - mSizeFile = szCnt; - mErrorCode = kOperationOkay; -} - -/// @brief error code getter. -/// @return the error code. -Int32& BFileReader::Error() -{ - return mErrorCode; -} - -/// @brief blob getter. -/// @return the blob. -VoidPtr BFileReader::Blob() -{ - return mBlob; -} - -/// @breif Size getter. -/// @return the size of the file. -UInt64& BFileReader::Size() -{ - return mSizeFile; -} diff --git a/dev/Boot/Sources/HEL/AMD64/BootJump.S b/dev/Boot/Sources/HEL/AMD64/BootJump.S deleted file mode 100644 index 7c2fcbc4..00000000 --- a/dev/Boot/Sources/HEL/AMD64/BootJump.S +++ /dev/null @@ -1,21 +0,0 @@ -.global rt_jump_to_address -.text - -.text -.intel_syntax noprefix - -/** - @brief this function setups a stack and then jumps to - a function */ -rt_jump_to_address: - mov rsp, r8 - - push rax - push rdx - mov rbx, rcx - mov rcx, rdx - jmp rbx - pop rdx - pop rax - - ret diff --git a/dev/Boot/Sources/HEL/AMD64/BootMain.cxx b/dev/Boot/Sources/HEL/AMD64/BootMain.cxx deleted file mode 100644 index a1d5ab07..00000000 --- a/dev/Boot/Sources/HEL/AMD64/BootMain.cxx +++ /dev/null @@ -1,259 +0,0 @@ -/* ------------------------------------------- - - Copyright ZKA Technologies. - -------------------------------------------- */ - -#include <BootKit/BootKit.hxx> -#include <BootKit/Rsrc/NewBoot.rsrc> -#include <Modules/CoreCG/FbRenderer.hxx> -#include <Modules/CoreCG/TextRenderer.hxx> -#include <FirmwareKit/EFI.hxx> -#include <FirmwareKit/EFI/API.hxx> -#include <FirmwareKit/Handover.hxx> -#include <KernelKit/MSDOS.hxx> -#include <KernelKit/PE.hxx> -#include <KernelKit/PEF.hxx> -#include <NewKit/Macros.hxx> -#include <NewKit/Ref.hxx> -#include <BootKit/Thread.hxx> -#include <cstring> - -// make the compiler shut up. -#ifndef kMachineModel -#define kMachineModel "ZKA SSD" -#endif // !kMachineModel - -#ifndef cExpectedWidth -#define cExpectedWidth 1280 -#endif - -#ifndef cExpectedHeight -#define cExpectedHeight 720 -#endif - -/** Graphics related. */ - -STATIC EfiGraphicsOutputProtocol* kGop = nullptr; -STATIC UInt16 kStride = 0U; -STATIC EfiGUID kGopGuid; - -EXTERN_C Void hal_init_platform(HEL::HandoverInformationHeader* HIH); - -/** - @brief Finds and stores the GOP. -*/ - -STATIC Void InitVideoFB() noexcept -{ - kGopGuid = EfiGUID(EFI_GRAPHICS_OUTPUT_PROTOCOL_GUID); - kGop = nullptr; - - extern EfiBootServices* BS; - - BS->LocateProtocol(&kGopGuid, nullptr, (VoidPtr*)&kGop); - - kStride = 4; - - for (SizeT i = 0; i < kGop->Mode->MaxMode; ++i) - { - EfiGraphicsOutputProtocolModeInformation* infoPtr = nullptr; - UInt32 sz = 0U; - - kGop->QueryMode(kGop, i, &sz, &infoPtr); - - if (infoPtr->HorizontalResolution == cExpectedWidth && - infoPtr->VerticalResolution == cExpectedHeight) - { - kGop->SetMode(kGop, i); - break; - } - } -} - -/// @brief check the BootDevice if suitable. -STATIC Bool CheckBootDevice(BootDeviceATA& ataDev) -{ - if (ataDev.Leak().mErr) - return false; - return true; -} - -/// @brief Main EFI entrypoint. -/// @param ImageHandle Handle of this image. -/// @param SystemTable The system table of it. -/// @return nothing, never returns. -EFI_EXTERN_C EFI_API Int Main(EfiHandlePtr ImageHandle, - EfiSystemTable* SystemTable) -{ - InitEFI(SystemTable); ///! Init the EFI library. - InitVideoFB(); ///! Init the GOP. - - BTextWriter writer; - - /// Splash screen stuff - - writer.Write(L"ZKA Technologies (R) newosldr: ") - .Write(BVersionString::The()) - .Write("\r"); - - UInt32 MapKey = 0; - UInt32 SizePtr = sizeof(EfiMemoryDescriptor); - EfiMemoryDescriptor* Descriptor = nullptr; - UInt32 SzDesc = sizeof(EfiMemoryDescriptor); - UInt32 RevDesc = 0; - - HEL::HandoverInformationHeader* handoverHdrPtr = - new HEL::HandoverInformationHeader(); - - for (SizeT indexVT = 0; indexVT < SystemTable->NumberOfTableEntries; - ++indexVT) - { - Char* vendorTable = reinterpret_cast<Char*>( - SystemTable->ConfigurationTable[indexVT].VendorTable); - - /// ACPI's 'RSD PTR', which contains hardware tables (MADT, FACP...) - if (vendorTable[0] == 'R' && vendorTable[1] == 'S' && - vendorTable[2] == 'D' && vendorTable[3] == ' ' && - vendorTable[4] == 'P' && vendorTable[5] == 'T' && - vendorTable[6] == 'R' && vendorTable[7] == ' ') - { - writer.Write(L"newosldr: Filling RSD PTR...\r"); - handoverHdrPtr->f_HardwareTables.f_VendorPtr = (VoidPtr)vendorTable; - - break; - } - } - - // Fill handover header now. - - BS->GetMemoryMap(&SizePtr, Descriptor, &MapKey, &SzDesc, &RevDesc); - - Descriptor = new EfiMemoryDescriptor[SzDesc]; - BS->GetMemoryMap(&SizePtr, Descriptor, &MapKey, &SzDesc, &RevDesc); - - auto cDefaultMemoryMap = 0; // The sixth entry. - - //-----------------------------------------------------------// - // A simple loop which finds a usable memory region for us. - //-----------------------------------------------------------// - - SizeT lookIndex = 0UL; - - for (; Descriptor[lookIndex].Kind != EfiMemoryType::EfiConventionalMemory; ++lookIndex) - { - ; - } - - cDefaultMemoryMap = lookIndex; - - //-----------------------------------------------------------// - // Update handover file specific table and phyiscal start field. - //-----------------------------------------------------------// - - handoverHdrPtr->f_PhysicalStart = - (VoidPtr)Descriptor[cDefaultMemoryMap].PhysicalStart; - - handoverHdrPtr->f_FirmwareSpecific[HEL::kHandoverSpecificAttrib] = - Descriptor[cDefaultMemoryMap].Attribute; - handoverHdrPtr->f_FirmwareSpecific[HEL::kHandoverSpecificKind] = - Descriptor[cDefaultMemoryMap].Kind; - handoverHdrPtr->f_FirmwareSpecific[HEL::kHandoverSpecificMemoryEfi] = - (UIntPtr)Descriptor; - - handoverHdrPtr->f_VirtualStart = - (VoidPtr)Descriptor[cDefaultMemoryMap].VirtualStart; - - handoverHdrPtr->f_VirtualSize = - Descriptor[cDefaultMemoryMap].NumberOfPages; /* # of pages */ - - handoverHdrPtr->f_FirmwareVendorLen = BStrLen(SystemTable->FirmwareVendor); - - handoverHdrPtr->f_Magic = kHandoverMagic; - handoverHdrPtr->f_Version = kHandoverVersion; - - // Provide fimware vendor name. - - BCopyMem(handoverHdrPtr->f_FirmwareVendorName, SystemTable->FirmwareVendor, - handoverHdrPtr->f_FirmwareVendorLen); - - handoverHdrPtr->f_GOP.f_The = kGop->Mode->FrameBufferBase; - handoverHdrPtr->f_GOP.f_Width = kGop->Mode->Info->VerticalResolution; - handoverHdrPtr->f_GOP.f_Height = kGop->Mode->Info->HorizontalResolution; - handoverHdrPtr->f_GOP.f_PixelPerLine = kGop->Mode->Info->PixelsPerScanLine; - handoverHdrPtr->f_GOP.f_PixelFormat = kGop->Mode->Info->PixelFormat; - handoverHdrPtr->f_GOP.f_Size = kGop->Mode->FrameBufferSize; - - // Assign to global 'kHandoverHeader'. - - kHandoverHeader = handoverHdrPtr; - - // ------------------------------------------ // - // draw background color. - // ------------------------------------------ // - - CGInit(); - CGDrawInRegion(CGColor(0xFF, 0xFF, 0xFF), handoverHdrPtr->f_GOP.f_Height, handoverHdrPtr->f_GOP.f_Width, 0, 0); - CGFini(); - - BDiskFormatFactory<BootDeviceATA> checkPart; - - if (!checkPart.IsPartitionValid()) - { - writer.Write("newosldr: Warning, partition isn't valid! repaired it.\rPlease restart the computer now.\r"); - - BDiskFormatFactory<BootDeviceATA>::BFileDescriptor root; - root.fFileName[0] = kNewFSRoot[0]; - root.fFileName[1] = 0; - - root.fKind = kNewFSCatalogKindDir; - - checkPart.Format("ZKA (C:)", &root, 1); - - EFI::Stop(); - } - - // ---------------------------------------------------- // - // The following checks for an exisiting partition - // inside the disk, if it doesn't have one, - // format the disk. - // ---------------------------------------------------- // - - BFileReader readerKernel(L"newoskrnl.dll", ImageHandle); - - readerKernel.ReadAll(0); - - Boot::Thread* loader = nullptr; - - // ------------------------------------------ // - // If we succeed in reading the blob, then execute it. - // ------------------------------------------ // - - if (readerKernel.Blob()) - { - loader = new Boot::Thread(readerKernel.Blob()); - loader->SetName("64-bit Kernel SMP DLL."); - } - - writer.Write("newosldr: Running: ").Write(loader->GetName()).Write("\r"); - - /// TODO: Parse command line from ZKA\cmd.json - // CopyMem(handoverHdrPtr->f_CommandLine[0], "/SMP", StrLen("/SMP")); - - handoverHdrPtr->f_FirmwareVendorLen = BStrLen(SystemTable->FirmwareVendor); - - EFI::ExitBootServices(MapKey, ImageHandle); - - // ---------------------------------------------------- // - // Call kernel. - // ---------------------------------------------------- // - - cg_write_text("NEWOSLDR (C) ZKA TECHNOLOGIES.", 10, 10, RGB(0x00, 0x00, 0x00)); - cg_write_text("LOADING NEWOSKRNL...", 20, 10, RGB(0x00, 0x00, 0x00)); - - loader->Start(handoverHdrPtr); - - EFI::Stop(); - - CANT_REACH(); -} diff --git a/dev/Boot/Sources/HEL/AMD64/BootPlatform.cxx b/dev/Boot/Sources/HEL/AMD64/BootPlatform.cxx deleted file mode 100644 index c5218fe1..00000000 --- a/dev/Boot/Sources/HEL/AMD64/BootPlatform.cxx +++ /dev/null @@ -1,103 +0,0 @@ -/* ------------------------------------------- - - Copyright ZKA Technologies. - -------------------------------------------- */ - -#include <BootKit/Platform.hxx> -#include <BootKit/Protocol.hxx> -#include <BootKit/BootKit.hxx> - -#ifdef __STANDALONE__ - -EXTERN_C void rt_hlt() -{ - asm volatile("hlt"); -} - -EXTERN_C void rt_cli() -{ - asm volatile("cli"); -} - -EXTERN_C void rt_sti() -{ - asm volatile("sti"); -} - -EXTERN_C void rt_cld() -{ - asm volatile("cld"); -} - -EXTERN_C void rt_std() -{ - asm volatile("std"); -} - -EXTERN_C void Out8(UInt16 port, UInt8 value) -{ - asm volatile("outb %%al, %1" - : - : "a"(value), "Nd"(port) - : "memory"); -} - -EXTERN_C void Out16(UInt16 port, UInt16 value) -{ - asm volatile("outw %%ax, %1" - : - : "a"(value), "Nd"(port) - : "memory"); -} - -EXTERN_C void Out32(UInt16 port, UInt32 value) -{ - asm volatile("outl %%eax, %1" - : - : "a"(value), "Nd"(port) - : "memory"); -} - -EXTERN_C UInt8 In8(UInt16 port) -{ - UInt8 value; - asm volatile("inb %1, %%al" - : "=a"(value) - : "Nd"(port) - : "memory"); - - return value; -} - -EXTERN_C UInt16 In16(UInt16 port) -{ - UInt16 value; - asm volatile("inw %%dx, %%ax" - : "=a"(value) - : "d"(port)); - - return value; -} - -EXTERN_C UInt32 In32(UInt16 port) -{ - UInt32 value; - asm volatile("inl %1, %%eax" - : "=a"(value) - : "Nd"(port) - : "memory"); - - return value; -} - -#else - -#include <HALKit/AMD64/Processor.hxx> - -void rt_hlt() -{ - Kernel::HAL::rt_halt(); -} - -#endif // 0 diff --git a/dev/Boot/Sources/HEL/AMD64/BootString.cxx b/dev/Boot/Sources/HEL/AMD64/BootString.cxx deleted file mode 100644 index ad87bce2..00000000 --- a/dev/Boot/Sources/HEL/AMD64/BootString.cxx +++ /dev/null @@ -1,92 +0,0 @@ -/* ------------------------------------------- - - Copyright ZKA Technologies. - - File: String.cxx - Purpose: NewBoot string library - - Revision History: - - - -------------------------------------------- */ - -#include <BootKit/Platform.hxx> -#include <BootKit/Protocol.hxx> -#include <BootKit/BootKit.hxx> - -/// bugs 0 - -///////////////////////////////////////////////////////////////////////////////////////////////////////// - -Kernel::SizeT BCopyMem(CharacterTypeUTF16* dest, CharacterTypeUTF16* src, const Kernel::SizeT len) -{ - if (!dest || !src) - return 0; - - SizeT index = 0UL; - for (; index < len; ++index) - { - dest[index] = src[index]; - } - - return index; -} - -Kernel::SizeT BStrLen(const CharacterTypeUTF16* ptr) -{ - if (!ptr) - return 0; - - Kernel::SizeT cnt = 0; - - while (*ptr != (CharacterTypeUTF16)0) - { - ++ptr; - ++cnt; - } - - return cnt; -} - -Kernel::SizeT BSetMem(CharacterTypeUTF16* src, const CharacterTypeUTF16 byte, const Kernel::SizeT len) -{ - if (!src) - return 0; - - Kernel::SizeT cnt = 0UL; - - while (*src != 0) - { - if (cnt > len) - break; - - *src = byte; - ++src; - - ++cnt; - } - - return cnt; -} - -Kernel::SizeT BSetMem(CharacterTypeUTF8* src, const CharacterTypeUTF8 byte, const Kernel::SizeT len) -{ - if (!src) - return 0; - - Kernel::SizeT cnt = 0UL; - - while (*src != 0) - { - if (cnt > len) - break; - - *src = byte; - ++src; - - ++cnt; - } - - return cnt; -} diff --git a/dev/Boot/Sources/HEL/AMD64/BootTextWriter.cxx b/dev/Boot/Sources/HEL/AMD64/BootTextWriter.cxx deleted file mode 100644 index 467f4303..00000000 --- a/dev/Boot/Sources/HEL/AMD64/BootTextWriter.cxx +++ /dev/null @@ -1,170 +0,0 @@ -/* ------------------------------------------- - - Copyright ZKA Technologies. - - File: String.cxx - Purpose: NewBoot string library - - Revision History: - - - -------------------------------------------- */ - -#include <FirmwareKit/EFI/API.hxx> -#include <BootKit/Platform.hxx> -#include <BootKit/Protocol.hxx> -#include <BootKit/BootKit.hxx> - -/// BUGS: 0 - -///////////////////////////////////////////////////////////////////////////////////////////////////////// - -/** -@brief puts wrapper over EFI ConOut. -*/ -BTextWriter& BTextWriter::Write(const CharacterTypeUTF16* str) -{ -#ifdef __DEBUG__ - if (!str || *str == 0) - return *this; - - CharacterTypeUTF16 strTmp[2]; - strTmp[1] = 0; - - for (size_t i = 0; str[i] != 0; i++) - { - if (str[i] == '\r') - { - strTmp[0] = str[i]; - ST->ConOut->OutputString(ST->ConOut, strTmp); - - strTmp[0] = '\n'; - ST->ConOut->OutputString(ST->ConOut, strTmp); - } - else - { - strTmp[0] = str[i]; - ST->ConOut->OutputString(ST->ConOut, strTmp); - } - } -#endif // ifdef __DEBUG__ - - return *this; -} - -/// @brief UTF-8 equivalent of Write (UTF-16). -/// @param str the input string. -BTextWriter& BTextWriter::Write(const Char* str) -{ -#ifdef __DEBUG__ - if (!str || *str == 0) - return *this; - - CharacterTypeUTF16 strTmp[2]; - strTmp[1] = 0; - - for (size_t i = 0; str[i] != 0; i++) - { - if (str[i] == '\r') - { - strTmp[0] = str[i]; - ST->ConOut->OutputString(ST->ConOut, strTmp); - - strTmp[0] = '\n'; - ST->ConOut->OutputString(ST->ConOut, strTmp); - } - else - { - strTmp[0] = str[i]; - ST->ConOut->OutputString(ST->ConOut, strTmp); - } - } -#endif // ifdef __DEBUG__ - - return *this; -} - -BTextWriter& BTextWriter::Write(const UChar* str) -{ -#ifdef __DEBUG__ - if (!str || *str == 0) - return *this; - - CharacterTypeUTF16 strTmp[2]; - strTmp[1] = 0; - - for (size_t i = 0; str[i] != 0; i++) - { - if (str[i] == '\r') - { - strTmp[0] = str[i]; - ST->ConOut->OutputString(ST->ConOut, strTmp); - - strTmp[0] = '\n'; - ST->ConOut->OutputString(ST->ConOut, strTmp); - } - else - { - strTmp[0] = str[i]; - ST->ConOut->OutputString(ST->ConOut, strTmp); - } - } -#endif // ifdef __DEBUG__ - - return *this; -} - -/** -@brief putc wrapper over EFI ConOut. -*/ -BTextWriter& BTextWriter::WriteCharacter(CharacterTypeUTF16 c) -{ -#ifdef __DEBUG__ - EfiCharType str[2]; - - str[0] = c; - str[1] = 0; - ST->ConOut->OutputString(ST->ConOut, str); -#endif // ifdef __DEBUG__ - - return *this; -} - -BTextWriter& BTextWriter::Write(const Long& x) -{ -#ifdef __DEBUG__ - this->Write(L"0x"); - this->_Write(x); - -#endif // ifdef __DEBUG__ - - return *this; -} - -BTextWriter& BTextWriter::_Write(const Long& x) -{ -#ifdef __DEBUG__ - UInt64 y = (x > 0 ? x : -x) / 16; - UInt64 h = (x > 0 ? x : -x) % 16; - - if (y) - this->_Write(y); - - /* fail if the hex number is not base-16 */ - if (h > 15) - { - this->WriteCharacter('?'); - return *this; - } - - if (y < 0) - y = -y; - - const char cNumbers[17] = "0123456789ABCDEF"; - - this->WriteCharacter(cNumbers[h]); -#endif // ifdef __DEBUG__ - - return *this; -} diff --git a/dev/Boot/Sources/HEL/AMD64/New+Delete.cxx b/dev/Boot/Sources/HEL/AMD64/New+Delete.cxx deleted file mode 100644 index 8b9a41fa..00000000 --- a/dev/Boot/Sources/HEL/AMD64/New+Delete.cxx +++ /dev/null @@ -1,62 +0,0 @@ -/* ------------------------------------------- - - Copyright ZKA Technologies. - -------------------------------------------- */ - -#include <BootKit/Platform.hxx> -#include <BootKit/Protocol.hxx> -#include <BootKit/BootKit.hxx> - -#ifdef __STANDALONE__ -#include <cstddef> /* Since we're using GCC for this EFI program. */ - -EXTERN EfiBootServices* BS; - -/// @brief Allocates a new object. -/// @param sz the size. -/// @return -void* operator new(size_t sz) -{ - void* buf = nullptr; - - while (BS->AllocatePool(EfiMemoryType::EfiLoaderData, sz, &buf) == kBufferTooSmall) - BS->FreePool(buf); - - return buf; -} - -/// @brief Allocates a new object. -/// @param sz the size. -/// @return -void* operator new[](size_t sz) -{ - void* buf = nullptr; - BS->AllocatePool(EfiMemoryType::EfiLoaderData, sz, &buf); - - return buf; -} - -/// @brief Deletes the object. -/// @param buf the object. -void operator delete(void* buf) -{ - BS->FreePool(buf); -} - -/// @brief Deletes the object. -/// @param buf the object. -void operator delete[](void* buf) -{ - BS->FreePool(buf); -} - -/// @brief Deletes the object (array specific). -/// @param buf the object. -/// @param size it's size. -void operator delete(void* buf, size_t size) -{ - BS->FreePool(buf); -} - -#endif // Inactive diff --git a/dev/Boot/Sources/HEL/AMD64/Support.cxx b/dev/Boot/Sources/HEL/AMD64/Support.cxx deleted file mode 100644 index 667bbfda..00000000 --- a/dev/Boot/Sources/HEL/AMD64/Support.cxx +++ /dev/null @@ -1,82 +0,0 @@ -/* ------------------------------------------- - - Copyright ZKA Technologies. - -------------------------------------------- */ - -#include <BootKit/BootKit.hxx> -#include <FirmwareKit/EFI/API.hxx> -#include <FirmwareKit/EFI/EFI.hxx> -#include <FirmwareKit/Handover.hxx> -#include <BootKit/Support.hxx> -#include <KernelKit/MSDOS.hxx> -#include <KernelKit/PE.hxx> - -#ifdef __STANDALONE__ - -/// @brief memset definition in C++. -/// @param dst destination pointer. -/// @param byte value to fill in. -/// @param len length of of src. -EXTERN_C VoidPtr memset(void* dst, int byte, long long unsigned int len) -{ - for (size_t i = 0UL; i < len; ++i) - { - ((int*)dst)[i] = byte; - } - - return dst; -} - -/// @brief memcpy definition in C++. -/// @param dst destination pointer. -/// @param src source pointer. -/// @param len length of of src. -EXTERN_C VoidPtr memcpy(void* dst, const void* src, long long unsigned int len) -{ - for (size_t i = 0UL; i < len; ++i) - { - ((int*)dst)[i] = ((int*)src)[i]; - } - - return dst; -} - -/// @brief strlen definition in C++. -EXTERN_C size_t strlen(const char* whatToCheck) -{ - SizeT len = 0; - - while (whatToCheck[len] != 0) - { - ++len; - } - - return len; -} - -/// @brief strcmp definition in C++. -EXTERN_C int strcmp(const char* whatToCheck, const char* whatToCheckRight) -{ - if (!whatToCheck || *whatToCheck == 0) - return 0; - - SizeT len = 0; - - while (whatToCheck[len] == whatToCheckRight[len]) - { - if (whatToCheck[len] == 0) - return 0; - - ++len; - } - - return whatToCheck[len] == whatToCheckRight[len] ? 0 : len; -} - -/// @brief somthing specific to the Microsoft's ABI, When the stack grows too big. -EXTERN_C void ___chkstk_ms(void) -{ -} - -#endif diff --git a/dev/Boot/Sources/HEL/AMD64/compile_flags.txt b/dev/Boot/Sources/HEL/AMD64/compile_flags.txt deleted file mode 100644 index c24c4b09..00000000 --- a/dev/Boot/Sources/HEL/AMD64/compile_flags.txt +++ /dev/null @@ -1,7 +0,0 @@ --std=c++20 --I../../../ --I../../../../Kernel --D__NEWOS_AMD64__ --std=c++20 --D__x86_64__ --D__NEWOS_OTA__ diff --git a/dev/Boot/Sources/HEL/ARM64/.gitkeep b/dev/Boot/Sources/HEL/ARM64/.gitkeep deleted file mode 100644 index e69de29b..00000000 --- a/dev/Boot/Sources/HEL/ARM64/.gitkeep +++ /dev/null diff --git a/dev/Boot/Sources/HEL/POWER/.gitkeep b/dev/Boot/Sources/HEL/POWER/.gitkeep deleted file mode 100644 index e69de29b..00000000 --- a/dev/Boot/Sources/HEL/POWER/.gitkeep +++ /dev/null diff --git a/dev/Boot/Sources/HEL/POWER/CoreBootStartup.S b/dev/Boot/Sources/HEL/POWER/CoreBootStartup.S deleted file mode 100644 index 502f415c..00000000 --- a/dev/Boot/Sources/HEL/POWER/CoreBootStartup.S +++ /dev/null @@ -1,34 +0,0 @@ -/* ------------------------------------------- - - Copyright ZKA Technologies. - -------------------------------------------- */ - -.section .boot_hdr -.align 4 - -/* NewBoot boot header begin */ - -boot_hdr_mag: - .ascii "CB" -boot_hdr_name: - // it has to match ten bytes. - .asciz "newosldr\0\0" -boot_hdr_ver: - .word 0x104 -boot_hdr_proc: - .long bootloader_start - -/* NewBoot boot header end */ - -.extern bootloader_main -.extern bootloader_stack - -.globl bootloader_start -bootloader_start: - mflr 4 /* real address of .Laddr */ - lwz 0,(bootloader_stack-bootloader_start)(4) /* stack address location */ - mr 1,0 /* use user defined stack */ - - bl bootloader_main - blr diff --git a/dev/Boot/Sources/Root/EFI/STARTUP.NSH b/dev/Boot/Sources/Root/EFI/STARTUP.NSH deleted file mode 100644 index d29ba8fd..00000000 --- a/dev/Boot/Sources/Root/EFI/STARTUP.NSH +++ /dev/null @@ -1,2 +0,0 @@ -fs0: -BOOT\BOOTX64.EFI diff --git a/dev/Boot/Sources/Root/ZKA/Urbanist-Black.ttf b/dev/Boot/Sources/Root/ZKA/Urbanist-Black.ttf Binary files differdeleted file mode 100644 index e1ec32b3..00000000 --- a/dev/Boot/Sources/Root/ZKA/Urbanist-Black.ttf +++ /dev/null diff --git a/dev/Boot/Sources/Root/ZKA/Urbanist-BlackItalic.ttf b/dev/Boot/Sources/Root/ZKA/Urbanist-BlackItalic.ttf Binary files differdeleted file mode 100644 index 85323c97..00000000 --- a/dev/Boot/Sources/Root/ZKA/Urbanist-BlackItalic.ttf +++ /dev/null diff --git a/dev/Boot/Sources/Root/ZKA/Urbanist-Bold.ttf b/dev/Boot/Sources/Root/ZKA/Urbanist-Bold.ttf Binary files differdeleted file mode 100644 index 330e84f9..00000000 --- a/dev/Boot/Sources/Root/ZKA/Urbanist-Bold.ttf +++ /dev/null diff --git a/dev/Boot/Sources/Root/ZKA/Urbanist-BoldItalic.ttf b/dev/Boot/Sources/Root/ZKA/Urbanist-BoldItalic.ttf Binary files differdeleted file mode 100644 index 08d47a8a..00000000 --- a/dev/Boot/Sources/Root/ZKA/Urbanist-BoldItalic.ttf +++ /dev/null diff --git a/dev/Boot/Sources/Root/ZKA/Urbanist-ExtraBold.ttf b/dev/Boot/Sources/Root/ZKA/Urbanist-ExtraBold.ttf Binary files differdeleted file mode 100644 index 7971b6db..00000000 --- a/dev/Boot/Sources/Root/ZKA/Urbanist-ExtraBold.ttf +++ /dev/null diff --git a/dev/Boot/Sources/Root/ZKA/Urbanist-ExtraBoldItalic.ttf b/dev/Boot/Sources/Root/ZKA/Urbanist-ExtraBoldItalic.ttf Binary files differdeleted file mode 100644 index 050297e2..00000000 --- a/dev/Boot/Sources/Root/ZKA/Urbanist-ExtraBoldItalic.ttf +++ /dev/null diff --git a/dev/Boot/Sources/Root/ZKA/Urbanist-ExtraLight.ttf b/dev/Boot/Sources/Root/ZKA/Urbanist-ExtraLight.ttf Binary files differdeleted file mode 100644 index a20a0bf9..00000000 --- a/dev/Boot/Sources/Root/ZKA/Urbanist-ExtraLight.ttf +++ /dev/null diff --git a/dev/Boot/Sources/Root/ZKA/Urbanist-ExtraLightItalic.ttf b/dev/Boot/Sources/Root/ZKA/Urbanist-ExtraLightItalic.ttf Binary files differdeleted file mode 100644 index 68968472..00000000 --- a/dev/Boot/Sources/Root/ZKA/Urbanist-ExtraLightItalic.ttf +++ /dev/null diff --git a/dev/Boot/Sources/Root/ZKA/Urbanist-Italic.ttf b/dev/Boot/Sources/Root/ZKA/Urbanist-Italic.ttf Binary files differdeleted file mode 100644 index 79688a6c..00000000 --- a/dev/Boot/Sources/Root/ZKA/Urbanist-Italic.ttf +++ /dev/null diff --git a/dev/Boot/Sources/Root/ZKA/Urbanist-Light.ttf b/dev/Boot/Sources/Root/ZKA/Urbanist-Light.ttf Binary files differdeleted file mode 100644 index 59034000..00000000 --- a/dev/Boot/Sources/Root/ZKA/Urbanist-Light.ttf +++ /dev/null diff --git a/dev/Boot/Sources/Root/ZKA/Urbanist-LightItalic.ttf b/dev/Boot/Sources/Root/ZKA/Urbanist-LightItalic.ttf Binary files differdeleted file mode 100644 index 1a455ce2..00000000 --- a/dev/Boot/Sources/Root/ZKA/Urbanist-LightItalic.ttf +++ /dev/null diff --git a/dev/Boot/Sources/Root/ZKA/Urbanist-Medium.ttf b/dev/Boot/Sources/Root/ZKA/Urbanist-Medium.ttf Binary files differdeleted file mode 100644 index e9a6dbb0..00000000 --- a/dev/Boot/Sources/Root/ZKA/Urbanist-Medium.ttf +++ /dev/null diff --git a/dev/Boot/Sources/Root/ZKA/Urbanist-MediumItalic.ttf b/dev/Boot/Sources/Root/ZKA/Urbanist-MediumItalic.ttf Binary files differdeleted file mode 100644 index 44a9c897..00000000 --- a/dev/Boot/Sources/Root/ZKA/Urbanist-MediumItalic.ttf +++ /dev/null diff --git a/dev/Boot/Sources/Root/ZKA/Urbanist-Regular.ttf b/dev/Boot/Sources/Root/ZKA/Urbanist-Regular.ttf Binary files differdeleted file mode 100644 index 2a794b27..00000000 --- a/dev/Boot/Sources/Root/ZKA/Urbanist-Regular.ttf +++ /dev/null diff --git a/dev/Boot/Sources/Root/ZKA/Urbanist-SemiBold.ttf b/dev/Boot/Sources/Root/ZKA/Urbanist-SemiBold.ttf Binary files differdeleted file mode 100644 index 6d393d1c..00000000 --- a/dev/Boot/Sources/Root/ZKA/Urbanist-SemiBold.ttf +++ /dev/null diff --git a/dev/Boot/Sources/Root/ZKA/Urbanist-SemiBoldItalic.ttf b/dev/Boot/Sources/Root/ZKA/Urbanist-SemiBoldItalic.ttf Binary files differdeleted file mode 100644 index 327aa044..00000000 --- a/dev/Boot/Sources/Root/ZKA/Urbanist-SemiBoldItalic.ttf +++ /dev/null diff --git a/dev/Boot/Sources/Root/ZKA/Urbanist-Thin.ttf b/dev/Boot/Sources/Root/ZKA/Urbanist-Thin.ttf Binary files differdeleted file mode 100644 index 9e272162..00000000 --- a/dev/Boot/Sources/Root/ZKA/Urbanist-Thin.ttf +++ /dev/null diff --git a/dev/Boot/Sources/Root/ZKA/Urbanist-ThinItalic.ttf b/dev/Boot/Sources/Root/ZKA/Urbanist-ThinItalic.ttf Binary files differdeleted file mode 100644 index 5cf054f1..00000000 --- a/dev/Boot/Sources/Root/ZKA/Urbanist-ThinItalic.ttf +++ /dev/null diff --git a/dev/Boot/Sources/Root/ZKA/boot-scr.bmp b/dev/Boot/Sources/Root/ZKA/boot-scr.bmp Binary files differdeleted file mode 100644 index f901bb28..00000000 --- a/dev/Boot/Sources/Root/ZKA/boot-scr.bmp +++ /dev/null diff --git a/dev/Boot/Sources/Root/ZKA/fonts.json b/dev/Boot/Sources/Root/ZKA/fonts.json deleted file mode 100644 index 05487cec..00000000 --- a/dev/Boot/Sources/Root/ZKA/fonts.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "font_pkg_src": "*.ttf", - "font_pkg_name": "ZKA Standard Fonts." -} diff --git a/dev/Boot/Sources/Thread.cxx b/dev/Boot/Sources/Thread.cxx deleted file mode 100644 index 5bd18b19..00000000 --- a/dev/Boot/Sources/Thread.cxx +++ /dev/null @@ -1,179 +0,0 @@ -/* ------------------------------------------- - - Copyright ZKA Technologies. - -------------------------------------------- */ - -#include <BootKit/Thread.hxx> -#include <BootKit/Support.hxx> -#include <BootKit/BootKit.hxx> -#include <FirmwareKit/EFI/API.hxx> - -#include <KernelKit/PEF.hxx> -#include <KernelKit/PE.hxx> -#include <KernelKit/MSDOS.hxx> -#include <Modules/CoreCG/TextRenderer.hxx> -#include <CFKit/LoaderUtils.hxx> - -EXTERN_C -{ -#include <string.h> -} - -#define kHOTypeKernel 100 - -EXTERN EfiBootServices* BS; - -namespace Boot -{ - Thread::Thread(VoidPtr blob) - : fBlob(blob), fStartAddress(nullptr) - { - // detect the format. - const Char* firstBytes = reinterpret_cast<char*>(fBlob); - - BTextWriter writer; - - if (!firstBytes) - { - // failed to provide a valid pointer. - return; - } - - if (firstBytes[0] == kMagMz0 && - firstBytes[1] == kMagMz1) - { - ExecHeaderPtr hdrPtr = ldr_find_exec_header(firstBytes); - ExecOptionalHeaderPtr optHdr = ldr_find_opt_exec_header(firstBytes); - - if (hdrPtr->mMachine != kPeMachineAMD64 || - hdrPtr->mSignature != kPeMagic) - { - writer.Write("newosldr: Not a PE32+ executable.\r"); - return; - } - - if (optHdr->mSubsystem != kNewOSSubsystem) - { - writer.Write("newosldr: Not a New OS executable.\r"); - return; - } - - writer.Write("newosldr: PE32+ executable detected (New OS Subsystem).\r"); - - auto numSecs = hdrPtr->mNumberOfSections; - - writer.Write("newosldr: Major Linker Ver: ").Write(optHdr->mMajorLinkerVersion).Write("\r"); - writer.Write("newosldr: Minor Linker Ver: ").Write(optHdr->mMinorLinkerVersion).Write("\r"); - writer.Write("newosldr: Major Subsystem Ver: ").Write(optHdr->mMajorSubsystemVersion).Write("\r"); - writer.Write("newosldr: Minor Subsystem Ver: ").Write(optHdr->mMinorSubsystemVersion).Write("\r"); - writer.Write("newosldr: Magic: ").Write(hdrPtr->mSignature).Write("\r"); - - constexpr auto cPageSize = 512; - - EfiPhysicalAddress loadStartAddress = optHdr->mImageBase; - loadStartAddress += optHdr->mBaseOfData; - - writer.Write("newosldr: ImageBase: ").Write(loadStartAddress).Write("\r"); - - auto numPages = optHdr->mSizeOfImage / cPageSize; - BS->AllocatePages(AllocateAddress, EfiLoaderData, numPages, &loadStartAddress); - - ExecSectionHeaderPtr sectPtr = (ExecSectionHeaderPtr)(((Char*)optHdr) + hdrPtr->mSizeOfOptionalHeader); - - constexpr auto sectionForCode = ".text"; - constexpr auto sectionForNewLdr = ".ldr"; - constexpr auto sectionForBSS = ".bss"; - - for (SizeT sectIndex = 0; sectIndex < numSecs; ++sectIndex) - { - ExecSectionHeaderPtr sect = §Ptr[sectIndex]; - - if (StrCmp(sectionForCode, sect->mName) == 0) - { - fStartAddress = (VoidPtr)((UIntPtr)loadStartAddress + optHdr->mAddressOfEntryPoint); - writer.Write("newosldr: Start Address: ").Write((UIntPtr)fStartAddress).Write("\r"); - } - else if (StrCmp(sectionForBSS, sect->mName) == 0) - { - SetMem((VoidPtr)(loadStartAddress + sect->mVirtualAddress), 0, sect->mSizeOfRawData); - } - else if (StrCmp(sectionForNewLdr, sect->mName) == 0) - { - struct HANDOVER_INFORMATION_STUB - { - UInt64 HandoverMagic; - UInt32 HandoverType; - }* structHandover = (struct HANDOVER_INFORMATION_STUB*)((UIntPtr)fBlob + sect->mPointerToRawData); - - if (structHandover->HandoverMagic != kHandoverMagic || - structHandover->HandoverType != kHOTypeKernel) - { - cg_write_text("NEWOSLDR: INVALID HANDOVER IMAGE! ABORTING...", 40, 10, RGB(0x00, 0x00, 0x00)); - EFI::Stop(); - } - } - - writer.Write("newosldr: offset ").Write(sect->mPointerToRawData).Write(" of ").Write(sect->mName).Write("\r"); - - CopyMem((VoidPtr)(loadStartAddress + sect->mVirtualAddress), (VoidPtr)((UIntPtr)fBlob + sect->mPointerToRawData), sect->mSizeOfRawData); - } - } - else if (firstBytes[0] == kPefMagic[0] && - firstBytes[1] == kPefMagic[1] && - firstBytes[2] == kPefMagic[2] && - firstBytes[3] == kPefMagic[3]) - { - // ========================================= // - // PEF executable detected. - // ========================================= // - - fStartAddress = nullptr; - writer.Write("newosldr: PEF executable detected.\r"); - } - else - { - writer.Write("newosldr: Invalid executable.\r"); - } - } - - /// @note handover header has to be valid! - Void Thread::Start(HEL::HandoverInformationHeader* handover) - { - BTextWriter writer; - - if (!handover) - { - writer.Write("newosldr: Exec format error.\r"); - return; - } - - HEL::HandoverProc err_fn = [](HEL::HandoverInformationHeader* rcx) -> void { - cg_write_text("NEWOSLDR: INVALID IMAGE! ABORTING...", 40, 10, RGB(0x00, 0x00, 0x00)); - EFI::Stop(); - }; - - if (!fStartAddress) - { - err_fn(handover); - } - - reinterpret_cast<HEL::HandoverProc>(fStartAddress)(handover); - err_fn(handover); - } - - const Char* Thread::GetName() - { - return fBlobName; - } - - Void Thread::SetName(const Char* name) - { - CopyMem(fBlobName, name, StrLen(name)); - } - - bool Thread::IsValid() - { - return fStartAddress != nullptr; - } -} // namespace Boot diff --git a/dev/Boot/Sources/compile_flags.txt b/dev/Boot/Sources/compile_flags.txt deleted file mode 100644 index f9ca281f..00000000 --- a/dev/Boot/Sources/compile_flags.txt +++ /dev/null @@ -1,8 +0,0 @@ --std=c++20 --I../ --I../../ --I../../Kernel --D__NEWOS_AMD64__ --std=c++20 --D__x86_64__ --D__NEWOS_OTA__ |
