From 55eb3047e3deafac8495b3ade52acd73c102af1c Mon Sep 17 00:00:00 2001 From: Aiken Harris Date: Tue, 16 Jun 2026 12:25:26 +0200 Subject: [PATCH] Implement i686 RunThread with inline assembly --- xtoskrnl/ke/i686/kthread.cc | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/xtoskrnl/ke/i686/kthread.cc b/xtoskrnl/ke/i686/kthread.cc index 20fa4f8..ba6ff35 100644 --- a/xtoskrnl/ke/i686/kthread.cc +++ b/xtoskrnl/ke/i686/kthread.cc @@ -142,8 +142,28 @@ KE::KThread::InitializeThreadContext(IN PKTHREAD Thread, * * @since XT 1.0 */ +XTASSEMBLY XTAPI VOID KE::KThread::RunThread(VOID) { + /* Initialize execution context, adjust runlevel and dispatch the thread */ + __asm__ volatile("xorl %%ebx, %%ebx\n" + "xorl %%ebp, %%ebp\n" + "xorl %%edi, %%edi\n" + "xorl %%esi, %%esi\n" + "movl $%c[RunLevel], %%ecx\n" + "call %P[LowerRunLevel]\n" + "movl 0(%%esp), %%esi\n" + "movl 4(%%esp), %%ebx\n" + "movl 8(%%esp), %%edi\n" + "pushl %%esi\n" + "pushl %%ebx\n" + "call *%%edi\n" + "addl $16, %%esp\n" + "ret\n" + : + : [RunLevel] "i" (APC_LEVEL), + [LowerRunLevel] "i" (KE::RunLevel::LowerRunLevel) + : "memory"); }