summaryrefslogtreecommitdiffhomepage
path: root/Boot
diff options
context:
space:
mode:
authorAmlal EL Mahrouss <amlalelmahrouss@icloud.com>2024-08-09 19:55:54 +0200
committerAmlal EL Mahrouss <amlalelmahrouss@icloud.com>2024-08-09 19:56:35 +0200
commit1c217ed09c6c4b13ec09b897270a208439f0db55 (patch)
tree43c93aef6ee233fafcd7ca07a5700dd76d5ecdf5 /Boot
parentacd8297fe927e601a7173cec7ca5445fd4a9c74a (diff)
[FIX] Fix bootloop on serial write, fixing more bugs now, still have to
fix allocation. Signed-off-by: Amlal EL Mahrouss <amlalelmahrouss@icloud.com>
Diffstat (limited to 'Boot')
-rw-r--r--Boot/BootKit/BootKit.hxx13
-rw-r--r--Boot/BootKit/Rsrc/NewBoot.rsrc4
-rw-r--r--Boot/BootKit/Rsrc/NewBootFatal.rsrc4
-rw-r--r--Boot/Sources/HEL/AMD64/BootATA.cxx5
-rw-r--r--Boot/Sources/HEL/AMD64/Support.cxx3
-rw-r--r--Boot/amd64-efi.make2
6 files changed, 13 insertions, 18 deletions
diff --git a/Boot/BootKit/BootKit.hxx b/Boot/BootKit/BootKit.hxx
index 680c9863..f716890a 100644
--- a/Boot/BootKit/BootKit.hxx
+++ b/Boot/BootKit/BootKit.hxx
@@ -243,11 +243,11 @@ public:
blockPart->SectorSize != BootDev::kSectorSize ||
blockPart->Version != kNewFSVersionInteger)
{
- EFI::ThrowError(L"Invalid-Disk-Geometry", L"Invalid disk.");
+ return false;
}
else if (blockPart->PartitionName[0] == 0)
{
- EFI::ThrowError(L"Invalid-Partition-Name", L"Invalid disk partition.");
+ return false;
}
writer.Write(L"newosldr: partition name: ").Write(blockPart->PartitionName).Write(L" is healthy.\r");
@@ -281,19 +281,12 @@ private:
catalogKind->Kind = blob->fKind;
catalogKind->Flags = kNewFSFlagCreated;
- /// before going to forks, we must check for the catalog name first.
- if (blob->fKind == kNewFSCatalogKindDir &&
- blob->fFileName[strlen(blob->fFileName) - 1] != kNewFSSeparator)
- {
- EFI::ThrowError(L"Developer-Error", L"This is caused by the developer of the bootloader.");
- }
-
--partBlock.FreeCatalog;
--partBlock.FreeSectors;
writer.Write(L"newosldr: root directory: ").Write(blob->fFileName).Write(L"\r");
- memcpy(catalogKind->Name, blob->fFileName, strlen(blob->fFileName));
+ CopyMem(catalogKind->Name, blob->fFileName, StrLen(blob->fFileName));
fDiskDev.Leak().mBase = startLba;
fDiskDev.Leak().mSize = sizeof(NFS_CATALOG_STRUCT);
diff --git a/Boot/BootKit/Rsrc/NewBoot.rsrc b/Boot/BootKit/Rsrc/NewBoot.rsrc
index 15da3029..68b6cba1 100644
--- a/Boot/BootKit/Rsrc/NewBoot.rsrc
+++ b/Boot/BootKit/Rsrc/NewBoot.rsrc
@@ -1,5 +1,5 @@
-#define NEWBOOT_HEIGHT 239
-#define NEWBOOT_WIDTH 402
+#define NEWOSLDR_HEIGHT 239
+#define NEWOSLDR_WIDTH 402
// array size is 288234
static const unsigned int NewBoot[] = {
diff --git a/Boot/BootKit/Rsrc/NewBootFatal.rsrc b/Boot/BootKit/Rsrc/NewBootFatal.rsrc
index bad1ccd1..7422c8ec 100644
--- a/Boot/BootKit/Rsrc/NewBootFatal.rsrc
+++ b/Boot/BootKit/Rsrc/NewBootFatal.rsrc
@@ -1,5 +1,5 @@
-#define NEWBOOTFATAL_HEIGHT 239
-#define NEWBOOTFATAL_WIDTH 402
+#define NEWOSLDRFATAL_HEIGHT 239
+#define NEWOSLDRFATAL_WIDTH 402
// array size is 288234
static const unsigned int NewBootFatal[] = {
diff --git a/Boot/Sources/HEL/AMD64/BootATA.cxx b/Boot/Sources/HEL/AMD64/BootATA.cxx
index 1a59ce5c..63956520 100644
--- a/Boot/Sources/HEL/AMD64/BootATA.cxx
+++ b/Boot/Sources/HEL/AMD64/BootATA.cxx
@@ -190,6 +190,8 @@ BootDeviceATA::BootDeviceATA() noexcept
boot_ata_init(ATA_SECONDARY_IO, true, this->Leak().mBus,
this->Leak().mMaster))
{
+ BTextWriter writer;
+ writer.Write("ATA: Has been detected.\r");
kATADetected = true;
}
}
@@ -250,6 +252,9 @@ BootDeviceATA& BootDeviceATA::Write(CharacterTypeUTF8* Buf, const SizeT& SectorS
boot_ata_write(lba, this->Leak().mBus, this->Leak().mMaster,
Buf, SectorSz, this->Leak().mSize);
+ BTextWriter writer;
+ writer.Write("OK\r");
+
return *this;
}
diff --git a/Boot/Sources/HEL/AMD64/Support.cxx b/Boot/Sources/HEL/AMD64/Support.cxx
index 8c82f78a..08e7dd65 100644
--- a/Boot/Sources/HEL/AMD64/Support.cxx
+++ b/Boot/Sources/HEL/AMD64/Support.cxx
@@ -45,9 +45,6 @@ EXTERN_C VoidPtr memcpy(void* dst, const void* src, long long unsigned int len)
/// @brief strlen definition in C++.
EXTERN_C size_t strlen(const char* whatToCheck)
{
- if (!whatToCheck || *whatToCheck == 0)
- return 0;
-
SizeT len = 0;
while (whatToCheck[len] != 0)
diff --git a/Boot/amd64-efi.make b/Boot/amd64-efi.make
index 650b1992..9f0d2966 100644
--- a/Boot/amd64-efi.make
+++ b/Boot/amd64-efi.make
@@ -64,7 +64,7 @@ all: compile-amd64
mkdir -p Sources/Root/EFI/BOOT
$(LD_GNU) $(OBJ) $(LD_FLAGS) -o Sources/$(BOOT_LOADER)
$(COPY) Sources/$(BOOT_LOADER) Sources/Root/EFI/BOOT/BOOTX64.EFI
- $(COPY) Sources/$(BOOT_LOADER) Sources/Root/EFI/BOOT/NEWBOOT.EFI
+ $(COPY) Sources/$(BOOT_LOADER) Sources/Root/EFI/BOOT/NEWOSLDR.EFI
$(COPY) ../Kernel/$(KERNEL) Sources/Root/$(KERNEL)
$(COPY) ../SCIKit/$(SCI) Sources/Root/$(SCI)
$(COPY) ../DDKit/$(DDK) Sources/Root/$(DDK)