From b98a81f4f26b4da98f2ac760763af656f95f392b Mon Sep 17 00:00:00 2001 From: Amlal El Mahrouss Date: Sun, 25 Aug 2024 22:19:40 +0200 Subject: [REFACTOR] Better source name and labels. Signed-off-by: Amlal El Mahrouss --- dev/ZKA/HALKit/AMD64/HalMPContextSwitch.asm | 81 +++++++++++++++++++++++++++++ dev/ZKA/HALKit/AMD64/HalRoutineWait.s | 9 ++++ dev/ZKA/HALKit/AMD64/HalRoutines.s | 9 ---- dev/ZKA/HALKit/AMD64/HalSMPCoreManager.asm | 81 ----------------------------- dev/ZKA/HALKit/AMD64/HalScheduler.cxx | 30 ----------- dev/ZKA/HALKit/AMD64/HalSchedulerCore.cxx | 31 +++++++++++ dev/ZKA/HALKit/AMD64/Storage/ATA-PIO.cxx | 6 +-- dev/ZKA/Sources/FS/NewFS.cxx | 4 +- dev/ZKA/amd64-efi.make | 2 +- 9 files changed, 127 insertions(+), 126 deletions(-) create mode 100644 dev/ZKA/HALKit/AMD64/HalMPContextSwitch.asm create mode 100644 dev/ZKA/HALKit/AMD64/HalRoutineWait.s delete mode 100644 dev/ZKA/HALKit/AMD64/HalRoutines.s delete mode 100644 dev/ZKA/HALKit/AMD64/HalSMPCoreManager.asm delete mode 100644 dev/ZKA/HALKit/AMD64/HalScheduler.cxx create mode 100644 dev/ZKA/HALKit/AMD64/HalSchedulerCore.cxx (limited to 'dev') diff --git a/dev/ZKA/HALKit/AMD64/HalMPContextSwitch.asm b/dev/ZKA/HALKit/AMD64/HalMPContextSwitch.asm new file mode 100644 index 00000000..70ee1205 --- /dev/null +++ b/dev/ZKA/HALKit/AMD64/HalMPContextSwitch.asm @@ -0,0 +1,81 @@ +;; /* +;; * ======================================================== +;; * +;; * ZKA +;; * Copyright ZKA Technologies., all rights reserved. +;; * +;; * ======================================================== +;; */ + +[bits 64] + +[global rt_get_current_context] +[global rt_do_context_switch] +[global _hal_spin_core] +[extern _hal_switch_context] +[extern _hal_leak_current_context] + +section .text + +;; writes to rdx the stackframe inside rcx. +;; rcx: Stack Pointer +;; rdx: SMP core address. +rt_do_context_switch: + push rax + call _hal_switch_context + pop rax + + ;; Now grab newly allocated process's stack frame. + + push rax + call _hal_leak_current_context + mov rax, r9 + pop rax + + ;; Take care of context switching within AP. + + mov r9, rax + + mov rbp, [r9 + (8 * 5)] + mov rsp, [r9 + (8 * 6)] + + mov gs, [r9 + (8 * 19)] + mov fs, [r9 + (8 * 20)] + + mov rcx, [r9 + (8 * 3)] + mov rdx, [r9 + (8 * 4)] + mov rbx, [r9 + (8 * 7)] + mov rax, [r9 + (8 * 8)] + movq xmm0, [r9 + (8 * 9)] + movq xmm1, [r9 + (8 * 10)] + + mov r8, [r9 + (8 * 11)] + mov r10, [r9 + (8 * 13)] + mov r11, [r9 + (8 * 14)] + mov r12, [r9 + (8 * 15)] + mov r13, [r9 + (8 * 16)] + mov r14, [r9 + (8 * 17)] + mov r15, [r9 + (8 * 18)] + + fldcw word [r9 + (8 * 21)] + + mov r9, [r9 + (8 * 12)] + + retfq + +;; gets the current stack frame. +rt_get_current_context: + push rax + + call _hal_leak_current_context + + mov rax, r9 + pop rax + + mov r9, rax + + retfq + +_hal_spin_core: + jmp $ + ret diff --git a/dev/ZKA/HALKit/AMD64/HalRoutineWait.s b/dev/ZKA/HALKit/AMD64/HalRoutineWait.s new file mode 100644 index 00000000..d794882d --- /dev/null +++ b/dev/ZKA/HALKit/AMD64/HalRoutineWait.s @@ -0,0 +1,9 @@ +.globl rt_wait_400ns + +.section .text +rt_wait_400ns: + jmp .loop + .loop: + jmp .loop2 + .loop2: + ret diff --git a/dev/ZKA/HALKit/AMD64/HalRoutines.s b/dev/ZKA/HALKit/AMD64/HalRoutines.s deleted file mode 100644 index d794882d..00000000 --- a/dev/ZKA/HALKit/AMD64/HalRoutines.s +++ /dev/null @@ -1,9 +0,0 @@ -.globl rt_wait_400ns - -.section .text -rt_wait_400ns: - jmp .loop - .loop: - jmp .loop2 - .loop2: - ret diff --git a/dev/ZKA/HALKit/AMD64/HalSMPCoreManager.asm b/dev/ZKA/HALKit/AMD64/HalSMPCoreManager.asm deleted file mode 100644 index 70ee1205..00000000 --- a/dev/ZKA/HALKit/AMD64/HalSMPCoreManager.asm +++ /dev/null @@ -1,81 +0,0 @@ -;; /* -;; * ======================================================== -;; * -;; * ZKA -;; * Copyright ZKA Technologies., all rights reserved. -;; * -;; * ======================================================== -;; */ - -[bits 64] - -[global rt_get_current_context] -[global rt_do_context_switch] -[global _hal_spin_core] -[extern _hal_switch_context] -[extern _hal_leak_current_context] - -section .text - -;; writes to rdx the stackframe inside rcx. -;; rcx: Stack Pointer -;; rdx: SMP core address. -rt_do_context_switch: - push rax - call _hal_switch_context - pop rax - - ;; Now grab newly allocated process's stack frame. - - push rax - call _hal_leak_current_context - mov rax, r9 - pop rax - - ;; Take care of context switching within AP. - - mov r9, rax - - mov rbp, [r9 + (8 * 5)] - mov rsp, [r9 + (8 * 6)] - - mov gs, [r9 + (8 * 19)] - mov fs, [r9 + (8 * 20)] - - mov rcx, [r9 + (8 * 3)] - mov rdx, [r9 + (8 * 4)] - mov rbx, [r9 + (8 * 7)] - mov rax, [r9 + (8 * 8)] - movq xmm0, [r9 + (8 * 9)] - movq xmm1, [r9 + (8 * 10)] - - mov r8, [r9 + (8 * 11)] - mov r10, [r9 + (8 * 13)] - mov r11, [r9 + (8 * 14)] - mov r12, [r9 + (8 * 15)] - mov r13, [r9 + (8 * 16)] - mov r14, [r9 + (8 * 17)] - mov r15, [r9 + (8 * 18)] - - fldcw word [r9 + (8 * 21)] - - mov r9, [r9 + (8 * 12)] - - retfq - -;; gets the current stack frame. -rt_get_current_context: - push rax - - call _hal_leak_current_context - - mov rax, r9 - pop rax - - mov r9, rax - - retfq - -_hal_spin_core: - jmp $ - ret diff --git a/dev/ZKA/HALKit/AMD64/HalScheduler.cxx b/dev/ZKA/HALKit/AMD64/HalScheduler.cxx deleted file mode 100644 index d3094c4b..00000000 --- a/dev/ZKA/HALKit/AMD64/HalScheduler.cxx +++ /dev/null @@ -1,30 +0,0 @@ -/* ------------------------------------------- - - Copyright ZKA Technologies. - -------------------------------------------- */ - -#include - -using namespace Kernel; -Void PROCESS_HEADER_BLOCK::SetEntrypoint(UIntPtr& imageStart) noexcept -{ - if (imageStart == 0) - this->Crash(); - - this->StackFrame->BP = imageStart; - this->StackFrame->SP = this->StackFrame->BP; -} - -namespace Kernel -{ - bool rt_check_stack(HAL::StackFramePtr stackPtr) - { - if (!stackPtr) - return false; - if (stackPtr->BP == 0 || stackPtr->SP == 0) - return false; - - return true; - } -} // namespace Kernel diff --git a/dev/ZKA/HALKit/AMD64/HalSchedulerCore.cxx b/dev/ZKA/HALKit/AMD64/HalSchedulerCore.cxx new file mode 100644 index 00000000..51cbfe4b --- /dev/null +++ b/dev/ZKA/HALKit/AMD64/HalSchedulerCore.cxx @@ -0,0 +1,31 @@ +/* ------------------------------------------- + + Copyright ZKA Technologies. + +------------------------------------------- */ + +#include + +using namespace Kernel; + +Void PROCESS_HEADER_BLOCK::SetEntrypoint(UIntPtr& imageStart) noexcept +{ + if (imageStart == 0) + this->Crash(); + + this->StackFrame->BP = imageStart; + this->StackFrame->SP = this->StackFrame->BP; +} + +namespace Kernel +{ + bool rt_check_stack(HAL::StackFramePtr stackPtr) + { + if (!stackPtr) + return false; + if (stackPtr->BP == 0 || stackPtr->SP == 0) + return false; + + return true; + } +} // namespace Kernel diff --git a/dev/ZKA/HALKit/AMD64/Storage/ATA-PIO.cxx b/dev/ZKA/HALKit/AMD64/Storage/ATA-PIO.cxx index 8ab97940..cf739cb8 100644 --- a/dev/ZKA/HALKit/AMD64/Storage/ATA-PIO.cxx +++ b/dev/ZKA/HALKit/AMD64/Storage/ATA-PIO.cxx @@ -27,9 +27,9 @@ using namespace Kernel::HAL; #define kATADataLen 256 -static Boolean kATADetected = false; -static Int32 kATADeviceType = kATADeviceCount; -static Char kATAData[kATADataLen] = {0}; +STATIC Boolean kATADetected = false; +STATIC Int32 kATADeviceType = kATADeviceCount; +STATIC Char kATAData[kATADataLen] = {0}; Boolean drv_std_wait_io(UInt16 IO) { diff --git a/dev/ZKA/Sources/FS/NewFS.cxx b/dev/ZKA/Sources/FS/NewFS.cxx index 87006502..e55939f7 100644 --- a/dev/ZKA/Sources/FS/NewFS.cxx +++ b/dev/ZKA/Sources/FS/NewFS.cxx @@ -803,7 +803,7 @@ _Output NFS_CATALOG_STRUCT* NewFSParser::FindCatalog(_Input const Char* catalogN kcout << "newoskrnl: fetching catalog...\r"; -_NewFSSearchThroughCatalogList: +NewFSSearchThroughCatalogList: while (drive.fPacket.fPacketGood) { drive.fPacket.fLba = startCatalogList; @@ -844,7 +844,7 @@ _NewFSSearchThroughCatalogList: localSearchFirst = false; startCatalogList = cCtartCatalogList; - goto _NewFSSearchThroughCatalogList; + goto NewFSSearchThroughCatalogList; } out_lba = 0UL; diff --git a/dev/ZKA/amd64-efi.make b/dev/ZKA/amd64-efi.make index 5766b7b5..9e95c601 100644 --- a/dev/ZKA/amd64-efi.make +++ b/dev/ZKA/amd64-efi.make @@ -58,7 +58,7 @@ newos-amd64-epm: clean $(wildcard HALKit/AMD64/*.cxx) $(wildcard HALKit/AMD64/*.cpp) \ $(wildcard HALKit/AMD64/*.s) $(ASM) $(ASMFLAGS) HALKit/AMD64/HalInterruptAPI.asm - $(ASM) $(ASMFLAGS) HALKit/AMD64/HalSMPCoreManager.asm + $(ASM) $(ASMFLAGS) HALKit/AMD64/HalMPContextSwitch.asm $(ASM) $(ASMFLAGS) HALKit/AMD64/HalBoot.asm $(ASM) $(ASMFLAGS) HALKit/AMD64/HalUtils.asm $(MOVEALL) -- cgit v1.2.3