diff options
Diffstat (limited to 'dev/boot/modules/BootNet')
| -rw-r--r-- | dev/boot/modules/BootNet/.hgkeep | 0 | ||||
| -rw-r--r-- | dev/boot/modules/BootNet/BootNet.cc | 121 | ||||
| -rw-r--r-- | dev/boot/modules/BootNet/BootNet.h | 12 | ||||
| -rw-r--r-- | dev/boot/modules/BootNet/BootNetStartup.S | 24 | ||||
| -rw-r--r-- | dev/boot/modules/BootNet/amd64.json | 23 |
5 files changed, 0 insertions, 180 deletions
diff --git a/dev/boot/modules/BootNet/.hgkeep b/dev/boot/modules/BootNet/.hgkeep deleted file mode 100644 index e69de29b..00000000 --- a/dev/boot/modules/BootNet/.hgkeep +++ /dev/null diff --git a/dev/boot/modules/BootNet/BootNet.cc b/dev/boot/modules/BootNet/BootNet.cc deleted file mode 100644 index 20d1a6c9..00000000 --- a/dev/boot/modules/BootNet/BootNet.cc +++ /dev/null @@ -1,121 +0,0 @@ -/* - * ======================================================== - * - * BootNet - * Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license. - * - * ======================================================== - */ - -#include <BootKit/BootKit.h> -#include <BootKit/BootThread.h> -#include <FirmwareKit/EFI/API.h> -#include <modules/BootNet/BootNet.h> - -STATIC EFI_GUID kEfiSimpleProtoGUID = EFI_SIMPLE_NETWORK_PROTOCOL_GUID; -STATIC EFI_SIMPLE_NETWORK_PROTOCOL* kEfiProtocol = nullptr; - -STATIC Void bootnet_read_ip_packet(BOOTNET_INTERNET_HEADER inet, - BOOTNET_INTERNET_HEADER** inet_out); - -EXTERN_C Int32 BootNetModuleMain(Kernel::HEL::BootInfoHeader* handover) { - fw_init_efi((EfiSystemTable*) handover->f_FirmwareCustomTables[Kernel::HEL::kHandoverTableST]); - - Boot::BootTextWriter writer; - - writer.Write("BootNet: Init BootNet...\r"); - - if (BS->LocateProtocol(&kEfiSimpleProtoGUID, nullptr, (VoidPtr*) &kEfiProtocol) != kEfiOk) { - writer.Write("BootNet: Not supported by firmware.\r"); - return kEfiFail; - } - - BOOTNET_INTERNET_HEADER inet{}; - BOOTNET_INTERNET_HEADER* inet_out = nullptr; - - SetMem(&inet, 0, sizeof(BOOTNET_INTERNET_HEADER)); - - writer.Write("BootNet: Downloading kernel...\r"); - - bootnet_read_ip_packet(inet, &inet_out); - - if (inet_out->Length < 1) { - writer.Write("BootNet: No executable attached to the packet, aborting.\r"); - return kEfiFail; - } - - if (inet_out->Version != kBootNetVersion) { - writer.Write("BootNet: The version clashes, not good.\r"); - return kEfiFail; - } - - if (!inet_out->ImpliesProgram) { - Boot::BootThread thread(inet_out->Data); - - if (thread.IsValid()) { - writer.Write("BootNet: Running NeKernel...\r"); - return thread.Start(handover, YES); - } - - return kEfiFail; - } else { - constexpr auto kROMSize = 0x200; - - if (inet_out->Length > kROMSize) { - writer.Write("BootNet: Not within 512K, won't flash EEPROM.\r"); - return kEfiFail; - } - - writer.Write("BootNet: Programming the flash...\r"); - - /// TODO: Program new firmware to EEPROM (if crc and size matches) - - const ATTRIBUTE(unused) UIntPtr kEEPROMStartAddress = 0; - const ATTRIBUTE(unused) UInt16 kEEPROMSize = inet_out->Length; - - return kEfiFail; - } - - return kEfiFail; -} - -STATIC Void bootnet_read_ip_packet(BOOTNET_INTERNET_HEADER inet, - BOOTNET_INTERNET_HEADER** inet_out) { - NE_UNUSED(inet); - - kEfiProtocol->Start(kEfiProtocol); - - UInt32 size_inet = sizeof(inet); - - /// Connect to the local BootNet server. - - /// And receive the handshake packet. - if (kEfiProtocol->Receive(kEfiProtocol, &size_inet, (UInt32*) &inet.Length, (VoidPtr) &inet, - nullptr, nullptr, nullptr) == kEfiOk) { - BOOTNET_INTERNET_HEADER* out = nullptr; - - BS->AllocatePool(EfiLoaderData, sizeof(BOOTNET_INTERNET_HEADER) + inet.Length, (VoidPtr*) &out); - - if (out == nullptr) { - kEfiProtocol->Stop(kEfiProtocol); - kEfiProtocol->Shutdown(kEfiProtocol); - return; - } - - SetMem(out, 0, sizeof(BOOTNET_INTERNET_HEADER)); - SetMem(out->Data, 0, inet.Length); - - size_inet = sizeof(BOOTNET_INTERNET_HEADER); - - auto full_size = size_inet + inet.Length; - - /// Ask for it again since we know the full_size variable now. - kEfiProtocol->Receive(kEfiProtocol, &size_inet, (UInt32*) &full_size, (VoidPtr) out, nullptr, - nullptr, nullptr); - - *inet_out = out; - } - - kEfiProtocol->Stop(kEfiProtocol); - kEfiProtocol->Shutdown(kEfiProtocol); -}
\ No newline at end of file diff --git a/dev/boot/modules/BootNet/BootNet.h b/dev/boot/modules/BootNet/BootNet.h deleted file mode 100644 index 9fe1a186..00000000 --- a/dev/boot/modules/BootNet/BootNet.h +++ /dev/null @@ -1,12 +0,0 @@ -/* - * ======================================================== - * - * BootNet - * Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license. - * - * ======================================================== - */ - -#pragma once - -#include <FirmwareKit/NeBoot/BootNet.h> diff --git a/dev/boot/modules/BootNet/BootNetStartup.S b/dev/boot/modules/BootNet/BootNetStartup.S deleted file mode 100644 index a5832ee6..00000000 --- a/dev/boot/modules/BootNet/BootNetStartup.S +++ /dev/null @@ -1,24 +0,0 @@ -;; /* -;; * ======================================================== -;; * -;; * BootZ -;; * Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license. -;; * -;; * ======================================================== -;; */ - -#ifdef __NE_AMD64__ -.code64 -.intel_syntax noprefix -#endif - -#define kTypeDriver 101 -#define kArchAmd64 122 -#define kHandoverMagic 0xBADCC - -.section .ldr - -.quad kHandoverMagic -.word kTypeDriver -.word 0 -.word kArchAmd64
\ No newline at end of file diff --git a/dev/boot/modules/BootNet/amd64.json b/dev/boot/modules/BootNet/amd64.json deleted file mode 100644 index 3d58cbc1..00000000 --- a/dev/boot/modules/BootNet/amd64.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "compiler_path": "x86_64-w64-mingw32-g++", - "compiler_std": "c++20", - "headers_path": ["../", "../../", "../../../kernel", "../../../", "./"], - "sources_path": ["*.cc", "*.S", "../../src/HEL/AMD64/*.cc", "../../src/HEL/AMD64/*.S", "../../src/*.cc"], - "output_name": "net.efi", - "compiler_flags": [ - "-nostdlib", - "-std=c++20", - "-fno-rtti", - "-fno-exceptions", - "-Wl,--subsystem=17,--image-base,0x10000000,-e,BootNetModuleMain" - ], - "cpp_macros": [ - "__NEOSKRNL__", - "__BOOTZ__", - "__BOOTZ_STANDALONE__", - "__NE_AMD64__", - "kBootNetVersionHighest=0x0100", - "kBootNetVersionLowest=0x0100", - "kBootNetEFIVersion=0x0100" - ] -} |
