summaryrefslogtreecommitdiffstats
path: root/src/kernel/spinlock.C
diff options
context:
space:
mode:
authorPatrick Williams <iawillia@us.ibm.com>2011-03-05 10:01:45 -0600
committerPatrick Williams <iawillia@us.ibm.com>2011-03-05 10:01:45 -0600
commit706243ac48cf646d503a3f1ec9e6a28c916694bd (patch)
tree5d583486a145a9646eccb9d3c4bce4dad45a2a84 /src/kernel/spinlock.C
parent5c20d316d21e231daee6455f0a78d5940d59cf23 (diff)
downloadtalos-hostboot-706243ac48cf646d503a3f1ec9e6a28c916694bd.tar.gz
talos-hostboot-706243ac48cf646d503a3f1ec9e6a28c916694bd.zip
Merge of PowerHAL project up to commit:
dd45c30bd53d8e6c123165b83842d08117558a3c
Diffstat (limited to 'src/kernel/spinlock.C')
-rw-r--r--src/kernel/spinlock.C11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/kernel/spinlock.C b/src/kernel/spinlock.C
index bfada05c4..5c67d8ad9 100644
--- a/src/kernel/spinlock.C
+++ b/src/kernel/spinlock.C
@@ -1,9 +1,18 @@
#include <kernel/spinlock.H>
+#include <arch/ppc.H>
void Spinlock::lock()
{
uint64_t reservation = __sync_fetch_and_add(&iv_reserve, 1);
- while(iv_ready != reservation);
+ if (iv_ready != reservation)
+ {
+ do
+ {
+ setThreadPriorityLow();
+ }
+ while(iv_ready != reservation);
+ setThreadPriorityHigh();
+ }
}
void Spinlock::unlock()
OpenPOWER on IntegriCloud