From ac6c4682f3df6e5069f5c0aed02a7e60eea834f8 Mon Sep 17 00:00:00 2001 From: Christian Prochaska Date: Tue, 18 Nov 2014 14:51:54 +0100 Subject: [PATCH] okl4: declare read-write-lock as volatile GCC 4.7.4 and newer seems to optimize the lock-variable accesses more radically, which uncovered the missing volatile qualifier and resulted in: Assertion "(int)locked >= 0" failed in file '.../okl4_x86/kernel/include/kernel/read_write_lock.h', line 151 (fn=f0104771) --- "KD# assert" --- --- .../patches/read_write_lock_volatile.patch | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 repos/base-okl4/patches/read_write_lock_volatile.patch diff --git a/repos/base-okl4/patches/read_write_lock_volatile.patch b/repos/base-okl4/patches/read_write_lock_volatile.patch new file mode 100644 index 000000000..c4dde6180 --- /dev/null +++ b/repos/base-okl4/patches/read_write_lock_volatile.patch @@ -0,0 +1,13 @@ +diff --git a/pistachio/include/read_write_lock.h b/pistachio/include/read_write_lock.h +index d667451..49f7f30 100644 +--- a/pistachio/include/read_write_lock.h ++++ b/pistachio/include/read_write_lock.h +@@ -123,7 +123,7 @@ struct read_write_lock_t + bool is_locked(void); + + #if defined(CONFIG_DEBUG) +- word_t locked; ++ word_t volatile locked; + #endif + }; +