diff options
| author | Amlal El Mahrouss <amlal@nekernel.org> | 2025-09-10 18:25:14 +0200 |
|---|---|---|
| committer | Amlal El Mahrouss <amlal@nekernel.org> | 2025-09-10 18:25:14 +0200 |
| commit | 2315f84184a0bd03580ba25a59c3832e12bffbc8 (patch) | |
| tree | a27834b9c0ab9dd30fb43b2cef65a98bac431806 /dev/kernel/HALKit/AMD64 | |
| parent | 495ad933c9d0beb8b02b2ad849d429f0d7583a77 (diff) | |
feat: kernel: abi: __cxa_guard inside CxxABI (AMD64)
Signed-off-by: Amlal El Mahrouss <amlal@nekernel.org>
Diffstat (limited to 'dev/kernel/HALKit/AMD64')
| -rw-r--r-- | dev/kernel/HALKit/AMD64/CxxAbi.cc | 15 |
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 |
