diff options
Diffstat (limited to 'dev')
| -rw-r--r-- | dev/Boot/BootKit/BootKit.h | 2 | ||||
| -rw-r--r-- | dev/Boot/BootKit/Thread.h | 17 | ||||
| -rw-r--r-- | dev/Boot/amd64-desktop.make (renamed from dev/Boot/amd64-efi.make) | 0 | ||||
| -rw-r--r-- | dev/Boot/arm64-desktop.make (renamed from dev/Boot/arm64-efi.make) | 0 | ||||
| -rw-r--r-- | dev/Boot/arm64-mobile.make | 112 | ||||
| -rw-r--r-- | dev/Boot/src/BootThread.cc | 12 | ||||
| -rw-r--r-- | dev/Boot/src/HEL/AMD64/BootMain.cc | 8 | ||||
| -rw-r--r-- | dev/Boot/src/HEL/ARM64/BootMain.cc | 2 | ||||
| -rw-r--r-- | dev/Kernel/KernelKit/PEF.h | 2 | ||||
| -rw-r--r-- | dev/Kernel/SystemKit/SwapDisk.h (renamed from dev/Kernel/SystemKit/Swap.h) | 4 | ||||
| -rw-r--r-- | dev/Kernel/SystemKit/TeamScheduler.h (renamed from dev/Kernel/SystemKit/Scheduler.h) | 2 |
11 files changed, 136 insertions, 25 deletions
diff --git a/dev/Boot/BootKit/BootKit.h b/dev/Boot/BootKit/BootKit.h index ab9f9b8f..095fb0ac 100644 --- a/dev/Boot/BootKit/BootKit.h +++ b/dev/Boot/BootKit/BootKit.h @@ -47,7 +47,7 @@ namespace Boot { class BTextWriter; class BFileReader; - class BThread; + class BootThread; class BVersionString; typedef Char* PEFImagePtr; diff --git a/dev/Boot/BootKit/Thread.h b/dev/Boot/BootKit/Thread.h index 4f6ba413..2f6e5b32 100644 --- a/dev/Boot/BootKit/Thread.h +++ b/dev/Boot/BootKit/Thread.h @@ -14,20 +14,19 @@ namespace Boot { using namespace Kernel; - class BThread; + class BootThread; - /// @brief Program loader class - /// @package nl.zeta.boot.api - class BThread final + /// @brief Bootloader Thread class. + class BootThread final { public: - explicit BThread() = delete; - ~BThread() = default; + explicit BootThread() = delete; + ~BootThread() = default; - explicit BThread(Kernel::VoidPtr blob); + explicit BootThread(Kernel::VoidPtr blob); - BThread& operator=(const BThread&) = default; - BThread(const BThread&) = default; + BootThread& operator=(const BootThread&) = default; + BootThread(const BootThread&) = default; Int32 Start(HEL::BootInfoHeader* handover, BOOL is_own_stack); void SetName(const char* name); diff --git a/dev/Boot/amd64-efi.make b/dev/Boot/amd64-desktop.make index 09ebf890..09ebf890 100644 --- a/dev/Boot/amd64-efi.make +++ b/dev/Boot/amd64-desktop.make diff --git a/dev/Boot/arm64-efi.make b/dev/Boot/arm64-desktop.make index da4fa237..da4fa237 100644 --- a/dev/Boot/arm64-efi.make +++ b/dev/Boot/arm64-desktop.make diff --git a/dev/Boot/arm64-mobile.make b/dev/Boot/arm64-mobile.make new file mode 100644 index 00000000..1fe03766 --- /dev/null +++ b/dev/Boot/arm64-mobile.make @@ -0,0 +1,112 @@ +################################################## +# (c) Theater Quality Corp, all rights reserved. +# This is the bootloader makefile. +################################################## + +CC_GNU = clang++ +LD_GNU = lld-link + +ADD_FILE=touch +COPY=cp +HTTP_GET=wget + +# Select this for Windows. +ifneq ($(findstring CYGWIN_NT-10.0,$(shell uname)), ) +EMU=qemu-system-aarch64w.exe +else +# this for NT distributions +EMU=qemu-system-aarch64 +endif + +ifeq ($(NEWS_MODEL), ) +ZKA_MODEL=-DkMachineModel="\"ZKA\"" +endif + +BIOS=OVMF.fd +IMG=epm-master-1.img +IMG_2=epm-slave.img +IMG_3=epm-master-2.img + +EMU_FLAGS=-net none -smp 4 -m 8G -cpu max -M virt-9.1 \ + -bios $(BIOS) \ + -drive id=disk,file=$(IMG),format=raw,if=none \ + -drive \ + file=fat:rw:src/Root/,index=1,format=raw \ + -device virtio-tablet-pci \ + -d int -no-shutdown -no-reboot -device virtio-gpu-pci,xres=844,yres=390 -serial stdio + +LD_FLAGS=-subsystem:efi_application -entry:Main /nodefaultlib + +STANDALONE_MACRO=-D__BOOTLDR_STANDALONE__ +OBJ=*.o + +REM=rm +REM_FLAG=-f + +FLAG_ASM=-f win64 +FLAG_GNU=-fshort-wchar -c -ffreestanding -MMD -mno-red-zone -D__ZKA_ARM64__ -fno-rtti -fno-exceptions -I./ \ + -target aarch64-unknown-windows \ + -std=c++20 -DkExpectedWidth=320 -DkExpectedHeight=480 -D__FSKIT_USE_NEFS__ -D__BOOTLDR_STANDALONE__ -D__MINOSKRNL__ -D__ZBAOSLDR__ -D__HAVE_ZKA_APIS__ -D__ZKA__ -I../ -I../Kernel + +BOOT_LOADER=zbaosldr.exe +KERNEL=minoskrnl.exe +SYS_CHK=syschk.sys +STARTUP=startup.sys + +.PHONY: invalid-recipe +invalid-recipe: + @echo "invalid-recipe: Use make compile-<arch> instead." + +.PHONY: all +all: compile-amd64 + mkdir -p src/Root/EFI/BOOT + $(LD_GNU) $(OBJ) $(LD_FLAGS) /out:src/$(BOOT_LOADER) + $(COPY) src/$(BOOT_LOADER) src/Root/EFI/BOOT/BOOTAA64.EFI + $(COPY) src/$(BOOT_LOADER) src/Root/EFI/BOOT/BootZ.EFI + $(COPY) ../Kernel/$(KERNEL) src/Root/$(KERNEL) + $(COPY) src/$(BOOT_LOADER) src/Root/$(BOOT_LOADER) + +ifneq ($(DEBUG_SUPPORT), ) +DEBUG = -D__DEBUG__ +endif + +.PHONY: compile-amd64 +compile-amd64: + $(RESCMD) + $(CC_GNU) $(ZKA_MODEL) $(STANDALONE_MACRO) $(FLAG_GNU) $(DEBUG) \ + $(wildcard src/HEL/ARM64/*.cc) \ + $(wildcard src/HEL/ARM64/*.S) \ + $(wildcard src/*.cc) + +.PHONY: run-efi-amd64 +run-efi-amd64: + $(EMU) $(EMU_FLAGS) + +# img_2 is the rescue disk. img is the bootable disk, as provided by the Zeta. +.PHONY: epm-img +epm-img: + qemu-img create -f raw $(IMG) 10G + qemu-img create -f raw $(IMG_2) 4G + qemu-img create -f raw $(IMG_3) 4G + +.PHONY: download-edk +download-edk: + $(HTTP_GET) https://retrage.github.io/edk2-nightly/bin/DEBUGAARCH64_QEMU_EFI.fd -O OVMF.fd + +BINS=*.bin +EXECUTABLES=zbaosldr.exe minoskrnl.exe OVMF.fd + +TARGETS=$(REM_FLAG) $(OBJ) $(BIN) $(IMG) $(IMG_2) $(EXECUTABLES) + +.PHONY: clean +clean: + $(REM) $(TARGETS) + +.PHONY: help +help: + @echo "=== HELP ===" + @echo "epm-img: Format a disk using the Explicit Partition Map." + @echo "gpt-img: Format a disk using the Explicit Partition Map." + @echo "clean: clean bootloader." + @echo "bootloader-amd64: Build bootloader. (PC AMD64)" + @echo "run-efi-amd64: Run bootloader. (PC AMD64)" diff --git a/dev/Boot/src/BootThread.cc b/dev/Boot/src/BootThread.cc index a3bc3500..782483f9 100644 --- a/dev/Boot/src/BootThread.cc +++ b/dev/Boot/src/BootThread.cc @@ -18,13 +18,13 @@ /// @brief External boot services symbol. EXTERN EfiBootServices* BS; -/// @note BThread doesn't parse the symbols so doesn't nullify them, .bss is though. +/// @note BootThread doesn't parse the symbols so doesn't nullify them, .bss is though. namespace Boot { EXTERN_C Void rt_jump_to_address(VoidPtr code, HEL::BootInfoHeader* handover, UInt8* stack); - BThread::BThread(VoidPtr blob) + BootThread::BootThread(VoidPtr blob) : fBlob(blob), fStartAddress(nullptr) { // detect the format. @@ -167,7 +167,7 @@ namespace Boot } /// @note handover header has to be valid! - Int32 BThread::Start(HEL::BootInfoHeader* handover, Bool own_stack) + Int32 BootThread::Start(HEL::BootInfoHeader* handover, Bool own_stack) { HEL::HandoverProc err_fn = [](HEL::BootInfoHeader* rcx) -> Int32 { fb_render_string("BootZ: Invalid Boot Image...", 50, 10, RGB(0xFF, 0xFF, 0xFF)); @@ -196,17 +196,17 @@ namespace Boot return NO; } - const Char* BThread::GetName() + const Char* BootThread::GetName() { return fBlobName; } - Void BThread::SetName(const Char* name) + Void BootThread::SetName(const Char* name) { CopyMem(fBlobName, name, StrLen(name)); } - bool BThread::IsValid() + bool BootThread::IsValid() { return fStartAddress != nullptr; } diff --git a/dev/Boot/src/HEL/AMD64/BootMain.cc b/dev/Boot/src/HEL/AMD64/BootMain.cc index b927b4f1..db370db1 100644 --- a/dev/Boot/src/HEL/AMD64/BootMain.cc +++ b/dev/Boot/src/HEL/AMD64/BootMain.cc @@ -206,7 +206,7 @@ EFI_EXTERN_C EFI_API Int32 Main(EfiHandlePtr image_handle, Boot::BFileReader reader_syschk(L"syschk.sys", image_handle); reader_syschk.ReadAll(0); - Boot::BThread* syschk_thread = nullptr; + Boot::BootThread* syschk_thread = nullptr; // ------------------------------------------ // // If we succeed in reading the blob, then execute it. @@ -214,7 +214,7 @@ EFI_EXTERN_C EFI_API Int32 Main(EfiHandlePtr image_handle, if (reader_syschk.Blob()) { - syschk_thread = new Boot::BThread(reader_syschk.Blob()); + syschk_thread = new Boot::BootThread(reader_syschk.Blob()); syschk_thread->SetName("BootZ: System Recovery Check"); } @@ -265,7 +265,7 @@ EFI_EXTERN_C EFI_API Int32 Main(EfiHandlePtr image_handle, reader_kernel.ReadAll(0); - Boot::BThread* kernel_thread = nullptr; + Boot::BootThread* kernel_thread = nullptr; // ------------------------------------------ // // If we succeed in reading the blob, then execute it. @@ -273,7 +273,7 @@ EFI_EXTERN_C EFI_API Int32 Main(EfiHandlePtr image_handle, if (reader_kernel.Blob()) { - kernel_thread = new Boot::BThread(reader_kernel.Blob()); + kernel_thread = new Boot::BootThread(reader_kernel.Blob()); kernel_thread->SetName("BootZ: ZkaOS Kernel."); handover_hdr->f_KernelImage = reader_kernel.Blob(); diff --git a/dev/Boot/src/HEL/ARM64/BootMain.cc b/dev/Boot/src/HEL/ARM64/BootMain.cc index 1cf72d4b..4d303c33 100644 --- a/dev/Boot/src/HEL/ARM64/BootMain.cc +++ b/dev/Boot/src/HEL/ARM64/BootMain.cc @@ -66,7 +66,7 @@ EFI_EXTERN_C EFI_API Int32 Main(EfiHandlePtr ImageHandle, if (reader_kernel.Blob()) { - auto kernel_thread = Boot::BThread(reader_kernel.Blob()); + auto kernel_thread = Boot::BootThread(reader_kernel.Blob()); if (kernel_thread.IsValid()) kernel_thread.Start(nullptr, YES); diff --git a/dev/Kernel/KernelKit/PEF.h b/dev/Kernel/KernelKit/PEF.h index 7e452fb3..ee2cc713 100644 --- a/dev/Kernel/KernelKit/PEF.h +++ b/dev/Kernel/KernelKit/PEF.h @@ -70,7 +70,7 @@ namespace Kernel enum { - kPefKindExec = 1, /* .exe */ + kPefKindExec = 1, /* .o */ kPefKindDylib = 2, /* .dylib */ kPefKindObject = 4, /* .obj */ kPefKindDebug = 5, /* .dbg */ diff --git a/dev/Kernel/SystemKit/Swap.h b/dev/Kernel/SystemKit/SwapDisk.h index 4ba59bcb..d2db77b6 100644 --- a/dev/Kernel/SystemKit/Swap.h +++ b/dev/Kernel/SystemKit/SwapDisk.h @@ -13,8 +13,8 @@ #define kSwapMgrBlockMaxSize (mib_cast(16)) #define kSwapMgrPageFile "/System/pagefile.sys" -/// @file Swap.h -/// @brief Virtual memory swap API. +/// @file SwapDisk.h +/// @brief Virtual memory swap disk. namespace Kernel { diff --git a/dev/Kernel/SystemKit/Scheduler.h b/dev/Kernel/SystemKit/TeamScheduler.h index 5b6c8719..34011300 100644 --- a/dev/Kernel/SystemKit/Scheduler.h +++ b/dev/Kernel/SystemKit/TeamScheduler.h @@ -9,7 +9,7 @@ #include <NewKit/Defines.h> -/// @file Scheduler.h +/// @file TeamScheduler.h /// @brief This file takes care of creating processes/threads from a subsystem context. namespace Kernel |
