From c1c1c7cb8ec2518b746804ecc2be9e0613fe685f Mon Sep 17 00:00:00 2001 From: Amlal El Mahrouss Date: Sun, 24 Mar 2024 09:36:47 +0100 Subject: Kernel: Add CRC32 check inside the kernel's heap, Handover: Rename f_VendorTable to f_RsdPtr and f_SmBios. Signed-off-by: Amlal El Mahrouss --- Private/Builtins/ACPI/ACPI.hpp | 66 -------- Private/Builtins/ACPI/ACPI.hxx | 67 ++++++++ Private/Builtins/ACPI/ACPIFactoryInterface.hxx | 2 +- Private/Builtins/PS2/PS2MouseInterface.hxx | 4 - Private/FirmwareKit/Handover.hxx | 5 +- Private/HALKit/AMD64/HalInterruptAPI.asm | 193 +++++++++++++++++++++++ Private/HALKit/AMD64/HalInterruptRouting.asm | 203 ------------------------- Private/HALKit/AMD64/HalKernelMain.cxx | 21 ++- Private/KernelKit/KernelHeap.hpp | 3 +- Private/KernelKit/Rsrc/Util.hxx | 2 +- Private/NewBoot/Source/HEL/AMD64/BootMain.cxx | 2 +- Private/Source/Crc32.cxx | 10 +- Private/Source/KernelCheck.cxx | 2 +- Private/Source/KernelHeap.cxx | 40 +++-- Private/makefile | 2 +- 15 files changed, 320 insertions(+), 302 deletions(-) delete mode 100644 Private/Builtins/ACPI/ACPI.hpp create mode 100644 Private/Builtins/ACPI/ACPI.hxx create mode 100644 Private/HALKit/AMD64/HalInterruptAPI.asm delete mode 100644 Private/HALKit/AMD64/HalInterruptRouting.asm diff --git a/Private/Builtins/ACPI/ACPI.hpp b/Private/Builtins/ACPI/ACPI.hpp deleted file mode 100644 index c17acac9..00000000 --- a/Private/Builtins/ACPI/ACPI.hpp +++ /dev/null @@ -1,66 +0,0 @@ -/* ------------------------------------------- - - Copyright Mahrouss Logic - -------------------------------------------- */ - -#ifndef __ACPI__ -#define __ACPI__ - -/** - https://uefi.org/specs/ACPI/6.5/05_ACPI_Software_Programming_Model.html -*/ - -#include - -namespace HCore { -class SDT { - public: - Char Signature[4]; - UInt32 Length; - UInt8 Revision; - Char Checksum; - Char OemId[6]; - Char OemTableId[8]; - UInt32 OemRev; - UInt32 CreatorID; - UInt32 CreatorRevision; -}; - -class RSDP : public SDT { - public: - UInt32 RsdtAddress; - UIntPtr XsdtAddress; - UInt8 ExtendedChecksum; - UInt8 Reserved0[3]; -}; - -class ConfigHeader { - public: - UInt64 BaseAddress; - UInt16 PciSegGroup; - UInt8 StartBus; - UInt8 EndBus; - UInt32 Reserved; -}; - -enum class AddressSpace : UInt8 { - SystemMemory = 0, - SystemIO = 1, - Pci = 2, - Controller = 3, - SmBus = 4, - Invalid = 0xFF, -}; - -class Address { - public: - AddressSpace AddressSpaceId; - UInt8 RegisterBitWidth; - UInt8 RegisterBitOffset; - UInt8 Reserved; - UIntPtr Address; -}; -} // namespace HCore - -#endif // !__ACPI__ diff --git a/Private/Builtins/ACPI/ACPI.hxx b/Private/Builtins/ACPI/ACPI.hxx new file mode 100644 index 00000000..c0076c5e --- /dev/null +++ b/Private/Builtins/ACPI/ACPI.hxx @@ -0,0 +1,67 @@ +/* ------------------------------------------- + + Copyright Mahrouss Logic + +------------------------------------------- */ + +#ifndef __ACPI__ +#define __ACPI__ + +/** + https://uefi.org/specs/ACPI/6.5/05_ACPI_Software_Programming_Model.html +*/ + +#include + +namespace HCore { +class SDT { + public: + Char Signature[4]; + UInt32 Length; + UInt8 Revision; + Char Checksum; + Char OemId[6]; + Char OemTableId[8]; + UInt32 OemRev; + UInt32 CreatorID; + UInt32 CreatorRevision; +}; + +class RSDP : public SDT { + public: + UInt32 RsdtAddress; + UIntPtr XsdtAddress; + UInt8 ExtendedChecksum; + UInt8 Reserved0[3]; +}; + +class ConfigHeader { + public: + UInt64 BaseAddress; + UInt16 PciSegGroup; + UInt8 StartBus; + UInt8 EndBus; + UInt32 Reserved; +}; + +enum class AddressSpace : UInt8 { + SystemMemory = 0, + SystemIO = 1, + Pci = 2, + Controller = 3, + SmBus = 4, + Count = 5, + Invalid = 0xFF, +}; + +class Address { + public: + AddressSpace AddressSpaceId; + UInt8 RegisterBitWidth; + UInt8 RegisterBitOffset; + UInt8 Reserved; + UIntPtr Address; +}; +} // namespace HCore + +#endif // !__ACPI__ diff --git a/Private/Builtins/ACPI/ACPIFactoryInterface.hxx b/Private/Builtins/ACPI/ACPIFactoryInterface.hxx index 21cd026e..b81a8dde 100644 --- a/Private/Builtins/ACPI/ACPIFactoryInterface.hxx +++ b/Private/Builtins/ACPI/ACPIFactoryInterface.hxx @@ -7,7 +7,7 @@ #ifndef __ACPI_MANAGER__ #define __ACPI_MANAGER__ -#include +#include #include #include #include diff --git a/Private/Builtins/PS2/PS2MouseInterface.hxx b/Private/Builtins/PS2/PS2MouseInterface.hxx index 5e964962..2be85af1 100644 --- a/Private/Builtins/PS2/PS2MouseInterface.hxx +++ b/Private/Builtins/PS2/PS2MouseInterface.hxx @@ -61,14 +61,12 @@ class PS2MouseInterface final { while (timeout) { if ((HAL::In8(0x64) & 0x1)) { - HCore::kcout << "NewKernel.exe: Wait: OK\r\n"; return true; } --timeout; } // wait until we can read - HCore::kcout << "NewKernel.exe: Wait: Timeout\r\n"; // return the ack bit. return false; } @@ -78,14 +76,12 @@ class PS2MouseInterface final { while (timeout) { if ((HAL::In8(0x64) & 0b10) == 0) { - HCore::kcout << "NewKernel.exe: Wait: OK\r\n"; return true; } --timeout; } // wait until we can read - HCore::kcout << "NewKernel.exe: Wait: Timeout\r\n"; // return the ack bit. return false; } diff --git a/Private/FirmwareKit/Handover.hxx b/Private/FirmwareKit/Handover.hxx index be308e13..03242c04 100644 --- a/Private/FirmwareKit/Handover.hxx +++ b/Private/FirmwareKit/Handover.hxx @@ -8,7 +8,7 @@ * @file Handover.hxx * @author Amlal El Mahrouss (amlalelmahrouss@icloud.com) * @brief The handover boot protocol. - * @version 0.2 + * @version 0.3 * @date 2024-02-23 * * @copyright Copyright (c) 2024, Mahrouss Logic @@ -68,7 +68,8 @@ struct HandoverInformationHeader { WideChar f_FirmwareVendorName[32]; SizeT f_FirmwareVendorLen; struct { - VoidPtr f_VendorTable; + VoidPtr f_SmBios; + VoidPtr f_RsdPtr; } f_HardwareTables; struct { UIntPtr f_The; diff --git a/Private/HALKit/AMD64/HalInterruptAPI.asm b/Private/HALKit/AMD64/HalInterruptAPI.asm new file mode 100644 index 00000000..b62d2151 --- /dev/null +++ b/Private/HALKit/AMD64/HalInterruptAPI.asm @@ -0,0 +1,193 @@ +;; /* +;; * --------------------------------------------------- +;; * +;; * Copyright Mahrouss Logic, all rights reserved. +;; * +;; * File: HalInterruptAPI.asm +;; * Purpose: Interrupt routing, redirect raw interrupts into their handlers. +;; * +;; * --------------------------------------------------- +;; */ + +[bits 64] + +%define kInterruptId 0x21 + +%macro IntExp 1 +global __HCR_INT_%1 +__HCR_INT_%1: + cld + + iretq +%endmacro + +%macro IntNormal 1 +global __HCR_INT_%1 +__HCR_INT_%1: + cld + + iretq +%endmacro + +; This file handles the core interrupt table +; Last edited 31/01/24 + +global _ke_power_on_self_test +global ke_handle_irq +global kInterruptVectorTable + +extern _hal_handle_mouse +extern idt_handle_gpf +extern idt_handle_pf +extern ke_io_print + +section .text + +IntNormal 0 +IntNormal 1 + +IntNormal 2 + +IntNormal 3 +IntNormal 4 +IntNormal 5 +IntNormal 6 +IntNormal 7 +IntExp 8 +IntNormal 9 +IntExp 10 +IntExp 11 + +IntExp 12 + +__HCR_INT_13: + cli + + push rax + + mov rcx, rsp + call idt_handle_gpf + + pop rax + + sti + iretq + +__HCR_INT_14: + cli + + push rax + + mov rcx, rsp + call idt_handle_pf + + pop rax + + sti + iretq + +IntNormal 15 +IntNormal 16 +IntExp 17 +IntNormal 18 +IntNormal 19 +IntNormal 20 +IntNormal 21 +IntNormal 22 +IntNormal 23 +IntNormal 24 +IntNormal 25 +IntNormal 26 +IntNormal 27 +IntNormal 28 +IntNormal 29 +IntExp 30 + +IntNormal 31 + +IntNormal 32 + +IntNormal 33 + +IntNormal 34 +IntNormal 35 +IntNormal 36 +IntNormal 37 +IntNormal 38 +IntNormal 39 +IntNormal 40 +IntNormal 41 +IntNormal 42 +IntNormal 43 +IntNormal 44 +IntNormal 45 +IntNormal 46 +IntNormal 47 +IntNormal 48 +IntNormal 49 + +__HCR_INT_50: + cli + + sti + iretq + +IntNormal 51 +IntNormal 52 +IntNormal 53 +IntNormal 54 +IntNormal 55 +IntNormal 56 +IntNormal 57 +IntNormal 58 +IntNormal 59 +IntNormal 60 + +%assign i 61 +%rep 195 + IntNormal i +%assign i i+1 +%endrep + +;; this one is doing a POST for us. +;; testing interrupts. +_ke_power_on_self_test: + int 0x32 + int 0x32 + int 0x32 + int 0x32 + + ret + +[global hal_load_gdt] + +hal_load_gdt: + lgdt [rcx] + push 0x08 + lea rax, [rel rt_reload_segments] + push rax + retfq +rt_reload_segments: + mov ax, 0x10 + mov ds, ax + mov es, ax + mov fs, ax + mov gs, ax + mov ss, ax + ret + +global hal_load_idt + +hal_load_idt: + lidt [rcx] + sti + ret + +section .data + +kInterruptVectorTable: + %assign i 0 + %rep 256 + dq __HCR_INT_%+i + %assign i i+1 + %endrep diff --git a/Private/HALKit/AMD64/HalInterruptRouting.asm b/Private/HALKit/AMD64/HalInterruptRouting.asm deleted file mode 100644 index c00ce375..00000000 --- a/Private/HALKit/AMD64/HalInterruptRouting.asm +++ /dev/null @@ -1,203 +0,0 @@ -;; /* -;; * --------------------------------------------------- -;; * -;; * Copyright Mahrouss Logic, all rights reserved. -;; * -;; * File: HalInterruptRouting.asm -;; * Purpose: Interrupt routing, redirect raw interrupts into their handlers. -;; * -;; * --------------------------------------------------- -;; */ - -[bits 64] - -%define kInterruptId 0x21 - -%macro IntExp 1 -global __HCR_INT_%1 -__HCR_INT_%1: - cld - - iretq -%endmacro - -%macro IntNormal 1 -global __HCR_INT_%1 -__HCR_INT_%1: - cld - - iretq -%endmacro - -; This file handles the core interrupt table -; Last edited 31/01/24 - -global _ke_power_on_self_test -global ke_handle_irq -global kInterruptVectorTable - -extern _hal_handle_mouse -extern idt_handle_gpf -extern idt_handle_pf -extern ke_io_print - -section .text - -IntNormal 0 -IntNormal 1 - -IntNormal 2 - -IntNormal 3 -IntNormal 4 -IntNormal 5 -IntNormal 6 -IntNormal 7 -IntExp 8 -IntNormal 9 -IntExp 10 -IntExp 11 - -IntExp 12 - -__HCR_INT_13: - cli - - push rax - - mov rcx, rsp - call idt_handle_gpf - - pop rax - - sti - iretq - -__HCR_INT_14: - cli - - push rax - - mov rcx, rsp - call idt_handle_pf - - pop rax - - sti - iretq - -IntNormal 15 -IntNormal 16 -IntExp 17 -IntNormal 18 -IntNormal 19 -IntNormal 20 -IntNormal 21 -IntNormal 22 -IntNormal 23 -IntNormal 24 -IntNormal 25 -IntNormal 26 -IntNormal 27 -IntNormal 28 -IntNormal 29 -IntExp 30 - -IntNormal 31 - -IntNormal 32 - -IntNormal 33 - -IntNormal 34 -IntNormal 35 -IntNormal 36 -IntNormal 37 -IntNormal 38 -IntNormal 39 -IntNormal 40 -IntNormal 41 -IntNormal 42 -IntNormal 43 -IntNormal 44 -IntNormal 45 -IntNormal 46 -IntNormal 47 -IntNormal 48 -IntNormal 49 - -__HCR_INT_50: - cli - - push rax - - mov rcx, kSystemCallLabel - call ke_io_print - - pop rax - - sti - iretq - -IntNormal 51 -IntNormal 52 -IntNormal 53 -IntNormal 54 -IntNormal 55 -IntNormal 56 -IntNormal 57 -IntNormal 58 -IntNormal 59 -IntNormal 60 - -%assign i 61 -%rep 195 - IntNormal i -%assign i i+1 -%endrep - -;; this one is doing a POST for us. -;; testing interrupts. -_ke_power_on_self_test: - int 0x32 - int 0x32 - int 0x32 - int 0x32 - - ret - -[global hal_load_gdt] - -hal_load_gdt: - lgdt [rcx] - push 0x08 - lea rax, [rel rt_reload_segments] - push rax - retfq -rt_reload_segments: - mov ax, 0x10 - mov ds, ax - mov es, ax - mov fs, ax - mov gs, ax - mov ss, ax - ret - -global hal_load_idt - -hal_load_idt: - lidt [rcx] - sti - ret - -section .data - -kInterruptVectorTable: - %assign i 0 - %rep 256 - dq __HCR_INT_%+i - %assign i i+1 - %endrep - -kSystemCallLabel: - db "NewKernel.exe: SystemCall: Enter SCM.", 0xa, 0xd, 0 \ No newline at end of file diff --git a/Private/HALKit/AMD64/HalKernelMain.cxx b/Private/HALKit/AMD64/HalKernelMain.cxx index 90a09556..10a0fe09 100644 --- a/Private/HALKit/AMD64/HalKernelMain.cxx +++ b/Private/HALKit/AMD64/HalKernelMain.cxx @@ -17,7 +17,7 @@ #include #include -///! @brief Disk contains HCore files. +///! @brief Disk already contains an installation. #define kInstalledMedia 0xDD EXTERN_C HCore::VoidPtr kInterruptVectorTable[]; @@ -70,26 +70,33 @@ EXTERN_C void RuntimeMain( /// END POST /// Mounts a NewFS block. - HCore::FilesystemManagerInterface::Mount(new HCore::NewFilesystemManager()); - HCore::ke_delete_ke_heap(HCore::FilesystemManagerInterface::Unmount()); + HCore::NewFilesystemManager* newFS = new HCore::NewFilesystemManager(); + HCore::ke_protect_ke_heap(newFS); + + HCore::FilesystemManagerInterface::Mount(newFS); /// We already have an install of HCore. if (HandoverHeader->f_Bootloader == kInstalledMedia) { ToolboxInitRsrc(); - ToolboxDrawRsrc(MahroussLogic, MAHROUSSLOGIC_HEIGHT, MAHROUSSLOGIC_WIDTH, - ((kHandoverHeader->f_GOP.f_Width - MAHROUSSLOGIC_WIDTH) / 2), - ((kHandoverHeader->f_GOP.f_Height - MAHROUSSLOGIC_HEIGHT) / 2)); + ToolboxDrawRsrc( + MahroussLogic, MAHROUSSLOGIC_HEIGHT, MAHROUSSLOGIC_WIDTH, + ((kHandoverHeader->f_GOP.f_Width - MAHROUSSLOGIC_WIDTH) / 2), + ((kHandoverHeader->f_GOP.f_Height - MAHROUSSLOGIC_HEIGHT) / 2)); ToolboxClearRsrc(); + + TOOLBOX_LOOP() {} } else { /// TODO: Install hcore on host. _hal_init_mouse(); - ToolboxDrawZone(kClearClr, kHandoverHeader->f_GOP.f_Height, kHandoverHeader->f_GOP.f_Width, 0, 0); + ToolboxDrawZone(kClearClr, kHandoverHeader->f_GOP.f_Height, + kHandoverHeader->f_GOP.f_Width, 0, 0); TOOLBOX_LOOP() { _hal_draw_mouse(); } } + HCore::ke_delete_ke_heap(newFS); HCore::ke_stop(RUNTIME_CHECK_BOOTSTRAP); } diff --git a/Private/KernelKit/KernelHeap.hpp b/Private/KernelKit/KernelHeap.hpp index 974cf0f3..f8c1c9c3 100644 --- a/Private/KernelKit/KernelHeap.hpp +++ b/Private/KernelKit/KernelHeap.hpp @@ -14,6 +14,7 @@ namespace HCore { Int32 ke_delete_ke_heap(voidPtr allocatedPtr); -Boolean ke_is_valid_ptr(VoidPtr ptr); +Boolean ke_is_valid_heap(VoidPtr ptr); voidPtr ke_new_ke_heap(SizeT sz, const bool rw, const bool user); +Boolean ke_protect_ke_heap(VoidPtr heapPtr); } // namespace HCore diff --git a/Private/KernelKit/Rsrc/Util.hxx b/Private/KernelKit/Rsrc/Util.hxx index ccca0c97..2be185e1 100644 --- a/Private/KernelKit/Rsrc/Util.hxx +++ b/Private/KernelKit/Rsrc/Util.hxx @@ -6,7 +6,7 @@ #define ToolboxInitRsrc() HCore::SizeT uA = 0 -#define kClearClr RGB(26, 67, B3) +#define kClearClr RGB(00, 00, 00) #define ToolboxClearRsrc() uA = 0 diff --git a/Private/NewBoot/Source/HEL/AMD64/BootMain.cxx b/Private/NewBoot/Source/HEL/AMD64/BootMain.cxx index ffe7af73..663c33d9 100644 --- a/Private/NewBoot/Source/HEL/AMD64/BootMain.cxx +++ b/Private/NewBoot/Source/HEL/AMD64/BootMain.cxx @@ -145,7 +145,7 @@ EFI_EXTERN_C EFI_API Int EfiMain(EfiHandlePtr ImageHandle, vendorTable[5] == 'T' && vendorTable[6] == 'R' && vendorTable[7] == ' ') { - handoverHdrPtr->f_HardwareTables.f_VendorTable = (VoidPtr)vendorTable; + handoverHdrPtr->f_HardwareTables.f_RsdPtr = (VoidPtr)vendorTable; writer.Write(L"NewBoot.exe: Found ACPI's 'RSD PTR' table on this machine.").Write(L"\r\n"); break; diff --git a/Private/Source/Crc32.cxx b/Private/Source/Crc32.cxx index 53de6d13..eab12c37 100644 --- a/Private/Source/Crc32.cxx +++ b/Private/Source/Crc32.cxx @@ -7,9 +7,10 @@ #include // @file CRC32.cpp -// @brief Checksum implementation. +// @brief Check sequence implementation. namespace HCore { +/// @brief The CRC32 table. UInt kCrcTbl[kCrcCnt] = { 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, @@ -55,13 +56,16 @@ UInt kCrcTbl[kCrcCnt] = { 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d}; -/// @brief calculate CRC32 of pointer. +/// @brief Calculate CRC32 of p +/// @param p the data to compute. +/// @param len the length of the data. +/// @return the CRC32. UInt ke_calculate_crc32(const Char *p, UInt len) noexcept { UInt crc = 0xffffffff; while (len-- != 0) crc = kCrcTbl[((UInt8)crc ^ *(p++))] ^ (crc >> 8); - // return (~crc); also works + // return (~crc); also works, does the same thing. return (crc ^ 0xffffffff); } } // namespace HCore diff --git a/Private/Source/KernelCheck.cxx b/Private/Source/KernelCheck.cxx index bf7ac939..dcf8a06d 100644 --- a/Private/Source/KernelCheck.cxx +++ b/Private/Source/KernelCheck.cxx @@ -37,7 +37,7 @@ void ke_stop(const HCore::Int &id) { } case RUNTIME_CHECK_POINTER: { kcout << "*** CAUSE: RUNTIME_CHECK_POINTER *** \r\n"; - kcout << "*** WHAT: HEAP ERROR, UNSTABLE STATE. *** \r\n"; + kcout << "*** WHAT: HEAP CRC32 ERROR, UNSTABLE STATE. *** \r\n"; break; } case RUNTIME_CHECK_BAD_BEHAVIOR: { diff --git a/Private/Source/KernelHeap.cxx b/Private/Source/KernelHeap.cxx index 03e5f250..09f62004 100644 --- a/Private/Source/KernelHeap.cxx +++ b/Private/Source/KernelHeap.cxx @@ -5,10 +5,10 @@ ------------------------------------------- */ #include -#include -#include #include +#include #include +#include //! @file KernelHeap.cxx //! @brief Kernel allocator. @@ -60,14 +60,14 @@ VoidPtr ke_new_ke_heap(SizeT sz, const bool rw, const bool user) { } /// @brief Declare pointer as free. -/// @param ptr the pointer. +/// @param heapPtr the pointer. /// @return -Int32 ke_delete_ke_heap(VoidPtr ptr) { +Int32 ke_delete_ke_heap(VoidPtr heapPtr) { if (kHeapCount < 1) return -kErrorInternal; Detail::HeapInformationBlockPtr virtualAddress = - reinterpret_cast((UIntPtr)ptr - - sizeof(Detail::HeapInformationBlock)); + reinterpret_cast( + (UIntPtr)heapPtr - sizeof(Detail::HeapInformationBlock)); if (virtualAddress && virtualAddress->hMagic == kHeapMagic) { if (virtualAddress->hCRC32 != 0) { @@ -91,17 +91,35 @@ Int32 ke_delete_ke_heap(VoidPtr ptr) { } /// @brief Check if pointer is a valid kernel pointer. -/// @param ptr the pointer +/// @param heapPtr the pointer /// @return if it exists. -Boolean ke_is_valid_ptr(VoidPtr ptr) { +Boolean ke_is_valid_heap(VoidPtr heapPtr) { if (kHeapCount < 1) return false; - if (ptr) { + if (heapPtr) { + Detail::HeapInformationBlockPtr virtualAddress = + reinterpret_cast( + (UIntPtr)heapPtr - sizeof(Detail::HeapInformationBlock)); + + if (virtualAddress->hPresent && virtualAddress->hMagic == kHeapMagic) { + return true; + } + } + + return false; +} + +/// @brief Protect the heap pointer with a CRC32. +/// @param heapPtr +/// @return +Boolean ke_protect_ke_heap(VoidPtr heapPtr) { + if (heapPtr) { Detail::HeapInformationBlockPtr virtualAddress = - reinterpret_cast((UIntPtr)ptr - - sizeof(Detail::HeapInformationBlock)); + reinterpret_cast( + (UIntPtr)heapPtr - sizeof(Detail::HeapInformationBlock)); if (virtualAddress->hPresent && virtualAddress->hMagic == kHeapMagic) { + virtualAddress->hCRC32 = ke_calculate_crc32((Char*)heapPtr, virtualAddress->hSizeAddress); return true; } } diff --git a/Private/makefile b/Private/makefile index f1971238..b7e99049 100644 --- a/Private/makefile +++ b/Private/makefile @@ -29,7 +29,7 @@ MOVEALL=./MoveAll.sh h-core-amd64-pc: clean $(CC) $(CCFLAGS) $(DEBUG) Source/*.cxx HALKit/AMD64/Storage/*.cxx HALKit/AMD64/PCI/*.cxx Source/Network/*.cxx\ Source/Storage/*.cxx HALKit/AMD64/*.cxx HALKit/AMD64/*.cpp HALKit/AMD64/*.s - $(ASM) $(ASMFLAGS) HALKit/AMD64/HalInterruptRouting.asm + $(ASM) $(ASMFLAGS) HALKit/AMD64/HalInterruptAPI.asm $(ASM) $(ASMFLAGS) HALKit/AMD64/HalSMPCoreManager.asm $(ASM) $(ASMFLAGS) HALKit/AMD64/HalNewBoot.asm $(ASM) $(ASMFLAGS) HALKit/AMD64/HalInstallTIB.asm -- cgit v1.2.3