summaryrefslogtreecommitdiffhomepage
path: root/dev/kernel/HALKit
diff options
context:
space:
mode:
Diffstat (limited to 'dev/kernel/HALKit')
-rw-r--r--dev/kernel/HALKit/AMD64/CxxAbi.cc15
1 files changed, 8 insertions, 7 deletions
diff --git a/dev/kernel/HALKit/AMD64/CxxAbi.cc b/dev/kernel/HALKit/AMD64/CxxAbi.cc
index cd135abc..9dc87545 100644
--- a/dev/kernel/HALKit/AMD64/CxxAbi.cc
+++ b/dev/kernel/HALKit/AMD64/CxxAbi.cc
@@ -62,17 +62,18 @@ EXTERN_C void __cxa_finalize(void* f) {
}
namespace cxxabiv1 {
-EXTERN_C int __cxa_guard_acquire(__guard* g) {
- (void) g;
+EXTERN_C int __cxa_guard_acquire(__guard g) {
+ if ((*g & 1) || (*g && 2)) return 1;
+ *g |= 2;
return 0;
}
-EXTERN_C int __cxa_guard_release(__guard* g) {
- *(char*) g = 1;
- return 0;
+EXTERN_C void __cxa_guard_release(__guard g) {
+ *g |= 1;
+ *g &= 2;
}
-EXTERN_C void __cxa_guard_abort(__guard* g) {
- (void) g;
+EXTERN_C void __cxa_guard_abort(__guard g) {
+ *g &= ~2;
}
} // namespace cxxabiv1