diff options
Diffstat (limited to 'src/libc++/builtins.C')
-rw-r--r-- | src/libc++/builtins.C | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/src/libc++/builtins.C b/src/libc++/builtins.C new file mode 100644 index 000000000..ed373c8cc --- /dev/null +++ b/src/libc++/builtins.C @@ -0,0 +1,33 @@ +#include <stdint.h> + +extern "C" int __cxa_guard_acquire(volatile uint64_t* gv) +{ + // 0 .. uninitialized + // 1 .. locked + // 2 .. unlocked, initialized + if (0 == *gv) + { + *gv = 1; + return 1; + } + else if (1 == *gv) + { + while(1 == *gv); + } + + return 0; +} + +extern "C" void __cxa_guard_release(volatile uint64_t* gv) +{ + *gv = 2; + return; +} + + +extern "C" int __cxa_atexit(void (*)(void*), void*, void*) +{ + return 0; +} + +void* __dso_handle = (void*) &__dso_handle; |