From 401212ac94c1e39484478e8c88f7e5470cbc45ad Mon Sep 17 00:00:00 2001
From: John Hodge <tpg@mutabah.net>
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;
-- 
GitLab