From 401212ac94c1e39484478e8c88f7e5470cbc45ad Mon Sep 17 00:00:00 2001 From: John Hodge Date: Wed, 7 Dec 2011 19:30:05 +0800 Subject: [PATCH] Kernel/x86 - Fixing build --- Kernel/arch/x86/lib.c | 9 ++++++--- Kernel/arch/x86/proc.c | 2 +- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/Kernel/arch/x86/lib.c b/Kernel/arch/x86/lib.c index 0471deba..3858eff3 100644 --- a/Kernel/arch/x86/lib.c +++ b/Kernel/arch/x86/lib.c @@ -82,9 +82,12 @@ void SHORTLOCK(struct sShortSpinlock *Lock) __ASM__("cli"); // Wait for another CPU to release - while(v) { - __ASM__("xchgl %%eax, (%%edi)":"=a"(v):"a"(cpu),"D"(&Lock->Lock)); - } + __ASM__( + "1: lock cmpxchgl %2, (%3)\n\t" + "jnz 1b" + : "=a"(v) + : "a"(0), "r"(cpu), "r"(&Lock->Lock) + ); Lock->IF = IF; diff --git a/Kernel/arch/x86/proc.c b/Kernel/arch/x86/proc.c index 9e8aa385..1cd11067 100644 --- a/Kernel/arch/x86/proc.c +++ b/Kernel/arch/x86/proc.c @@ -488,7 +488,7 @@ void Proc_Start(void) #else // Create Idle Task tid = Proc_NewKThread(Proc_IdleThread, &gaCPUs[0]); - gaCPUs[0].IdleThread = Threads_GetThread(tid); +// gaCPUs[0].IdleThread = Threads_GetThread(tid); // Set current task gaCPUs[0].Current = &gThreadZero; -- 2.20.1