diff options
author | Patrick Williams <iawillia@us.ibm.com> | 2011-03-05 10:01:45 -0600 |
---|---|---|
committer | Patrick Williams <iawillia@us.ibm.com> | 2011-03-05 10:01:45 -0600 |
commit | 706243ac48cf646d503a3f1ec9e6a28c916694bd (patch) | |
tree | 5d583486a145a9646eccb9d3c4bce4dad45a2a84 /src/kernel/spinlock.C | |
parent | 5c20d316d21e231daee6455f0a78d5940d59cf23 (diff) | |
download | talos-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.C | 11 |
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() |