diff options
| author | Amlal El Mahrouss <amlal.elmahrouss@icloud.com> | 2024-10-13 15:29:55 +0200 |
|---|---|---|
| committer | Amlal El Mahrouss <amlal.elmahrouss@icloud.com> | 2024-10-13 15:29:55 +0200 |
| commit | 7477a0f942c374b652da4f80cdb36d4661aac3c8 (patch) | |
| tree | d06627de4689b5661f4b95c4fa15f932b004ad13 /dev/zba | |
| parent | 182f2baa4d38a286d3453cc0da90ebec5fb25266 (diff) | |
IMP: Delete the memory list when exiting process.
IMP: Add Allocation (and delete) of MemoryList.
IMP: BitMap allocator must now allocate directories as well.
IMP: Add Handover arch to check if executable is an AMD64 executable or
ARM64 executable.
FIX: Add ::EFI::Stop, when a thread doesn't load correctly.
Signed-off-by: Amlal El Mahrouss <amlal.elmahrouss@icloud.com>
Diffstat (limited to 'dev/zba')
| -rw-r--r-- | dev/zba/amd64-efi.make | 8 | ||||
| -rw-r--r-- | dev/zba/arm64-efi.make | 8 | ||||
| -rw-r--r-- | dev/zba/src/Thread.cxx | 39 |
3 files changed, 40 insertions, 15 deletions
diff --git a/dev/zba/amd64-efi.make b/dev/zba/amd64-efi.make index efe528e7..f2121f85 100644 --- a/dev/zba/amd64-efi.make +++ b/dev/zba/amd64-efi.make @@ -54,8 +54,8 @@ FLAG_GNU=-fshort-wchar -D__EFI_x86_64__ -mno-red-zone -D__NEWOSKRNL__ -D__NEWOSL BOOT_LOADER=newosldr.exe KERNEL=minoskrnl.exe DDK=ddk.dll -SCI=zka-sci-cxx.dll -CRT=zka-crt-cxx.dll +SCI=sci.dll +CRT=crt.dll SYS_CHK=syschk.sys STARTUP=startup.sys @@ -72,8 +72,8 @@ all: compile-amd64 $(COPY) ../zka/$(KERNEL) src/Root/$(KERNEL) $(COPY) ../sci/$(SCI) src/Root/$(SCI) $(COPY) ../ddk/$(DDK) src/Root/$(DDK) - $(COPY) ./modules/SysChk/$(SYS_CHK) src/Root/$(SYS_CHK) - $(COPY) ./modules/SysChk/$(SYS_CHK) src/Root/zka/$(STARTUP) + $(COPY) ./Modules/SysChk/$(SYS_CHK) src/Root/$(SYS_CHK) + $(COPY) ./Modules/SysChk/$(SYS_CHK) src/Root/zka/$(STARTUP) $(COPY) ../crt/$(CRT) src/Root/$(CRT) $(COPY) src/$(BOOT_LOADER) src/Root/$(BOOT_LOADER) diff --git a/dev/zba/arm64-efi.make b/dev/zba/arm64-efi.make index aae20a2b..9ea31d83 100644 --- a/dev/zba/arm64-efi.make +++ b/dev/zba/arm64-efi.make @@ -50,8 +50,8 @@ FLAG_GNU=-fshort-wchar -c -ffreestanding -MMD -mno-red-zone -D__ZKA_ARM64__ -fno BOOT_LOADER=newosldr.exe KERNEL=minoskrnl.exe DDK=ddk.dll -SCI=zka-sci-cxx.dll -CRT=zka-crt-cxx.dll +SCI=sci.dll +CRT=crt.dll SYS_CHK=syschk.sys STARTUP=startup.sys @@ -68,8 +68,8 @@ all: compile-amd64 $(COPY) ../zka/$(KERNEL) src/Root/$(KERNEL) $(COPY) ../sci/$(SCI) src/Root/$(SCI) $(COPY) ../ddk/$(DDK) src/Root/$(DDK) - $(COPY) ./modules/SysChk/$(SYS_CHK) src/Root/$(SYS_CHK) - $(COPY) ./modules/SysChk/$(SYS_CHK) src/Root/zka/$(STARTUP) + $(COPY) ./Modules/SysChk/$(SYS_CHK) src/Root/$(SYS_CHK) + $(COPY) ./Modules/SysChk/$(SYS_CHK) src/Root/zka/$(STARTUP) $(COPY) ../crt/$(CRT) src/Root/$(CRT) $(COPY) src/$(BOOT_LOADER) src/Root/$(BOOT_LOADER) diff --git a/dev/zba/src/Thread.cxx b/dev/zba/src/Thread.cxx index 2383d675..2c1ee173 100644 --- a/dev/zba/src/Thread.cxx +++ b/dev/zba/src/Thread.cxx @@ -90,7 +90,7 @@ namespace Boot if (StrCmp(sectionForCode, sect->mName) == 0) { fStartAddress = (VoidPtr)((UIntPtr)loadStartAddress + optHdr->mAddressOfEntryPoint); - writer.Write("NEWOSLDR: Entrypoint of DLL: ").Write((UIntPtr)fStartAddress).Write("\r"); + writer.Write("NEWOSLDR: ENTRY OF EXE: ").Write((UIntPtr)fStartAddress).Write("\r"); } else if (StrCmp(sectionForNewLdr, sect->mName) == 0) { @@ -98,17 +98,42 @@ namespace Boot { UInt64 HandoverMagic; UInt32 HandoverType; - }* structHandover = (struct HANDOVER_INFORMATION_STUB*)((UIntPtr)fBlob + sect->mPointerToRawData); + UInt32 HandoverPad; + UInt32 HandoverArch; + }* handover_struc = (struct HANDOVER_INFORMATION_STUB*)((UIntPtr)fBlob + sect->mPointerToRawData); - if (structHandover->HandoverMagic != kHandoverMagic && - structHandover->HandoverType != HEL::kTypeKernel) + if (handover_struc->HandoverMagic != kHandoverMagic && + handover_struc->HandoverType != HEL::kTypeKernel) { - writer.Write("NEWOSLDR: Entrypoint of EXE: ").Write((UIntPtr)fStartAddress).Write("\r"); +#ifdef __ZKA_AMD64__ + if (handover_struc->HandoverArch != HEL::kArchAMD64) + { + writer.Write("NEWOSLDR: ARCH OF EXE: ").Write(handover_struc->HandoverArch).Write("\r"); + writer.Write("NEWOSLDR: ENTRY OF EXE: ").Write((UIntPtr)fStartAddress).Write("\r"); + CGDrawString("NEWOSLDR: NOT AN HANDOVER IMAGE, BAD ARCHITECTURE...", 40, 10, RGB(0xFF, 0xFF, 0xFF)); + + ::EFI::Stop(); + } +#endif + +#ifdef __ZKA_ARM64__ + if (handover_struc->HandoverArch != HEL::kArchARM64) + { + writer.Write("NEWOSLDR: ARCH OF EXE: ").Write(handover_struc->HandoverArch).Write("\r"); + writer.Write("NEWOSLDR: ENTRY OF EXE: ").Write((UIntPtr)fStartAddress).Write("\r"); + CGDrawString("NEWOSLDR: NOT AN HANDOVER IMAGE, BAD ARCHITECTURE...", 40, 10, RGB(0xFF, 0xFF, 0xFF)); + + ::EFI::Stop(); + } +#endif + writer.Write("NEWOSLDR: ENTRY OF EXE: ").Write((UIntPtr)fStartAddress).Write("\r"); CGDrawString("NEWOSLDR: NOT AN HANDOVER IMAGE...", 40, 10, RGB(0xFF, 0xFF, 0xFF)); + + ::EFI::Stop(); } } - writer.Write("NEWOSLDR: offset ").Write(sect->mPointerToRawData).Write(" of ").Write(sect->mName).Write("\r"); + 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); } @@ -139,7 +164,7 @@ namespace Boot if (!handover) { - writer.Write("NEWOSLDR: Exec format error.\r"); + writer.Write("NEWOSLDR: EXEC FORMAT ERROR.\r"); return; } |
