diff options
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; } |
