diff --git a/headers/build/BeOSBuildCompatibility.h b/headers/build/BeOSBuildCompatibility.h index ff9e3f4e5c..78aa03a2a9 100644 --- a/headers/build/BeOSBuildCompatibility.h +++ b/headers/build/BeOSBuildCompatibility.h @@ -8,6 +8,10 @@ typedef unsigned long haiku_build_addr_t; #include #include +#ifdef __x86_64__ +#define HAIKU_HOST_PLATFORM_64_BIT +#endif + #ifdef __cplusplus extern "C" { #endif diff --git a/src/tools/fs_shell/vfs.cpp b/src/tools/fs_shell/vfs.cpp index 28be34c9c5..b7e2e7cf93 100644 --- a/src/tools/fs_shell/vfs.cpp +++ b/src/tools/fs_shell/vfs.cpp @@ -3199,8 +3199,13 @@ common_lock_node(int fd, bool kernel) // We need to set the locking atomically - someone // else might set one at the same time +#ifdef HAIKU_HOST_PLATFORM_64_BIT + if (fssh_atomic_test_and_set64((vint64_t *)&vnode->mandatory_locked_by, + (fssh_addr_t)descriptor, 0) != 0) +#else if (fssh_atomic_test_and_set((vint32_t *)&vnode->mandatory_locked_by, (fssh_addr_t)descriptor, 0) != 0) +#endif status = FSSH_B_BUSY; put_fd(descriptor); @@ -3222,7 +3227,7 @@ common_unlock_node(int fd, bool kernel) // We need to set the locking atomically - someone // else might set one at the same time -#ifdef __x86_64__ +#ifdef HAIKU_HOST_PLATFORM_64_BIT if (fssh_atomic_test_and_set64((vint64_t *)&vnode->mandatory_locked_by, 0, (fssh_addr_t)descriptor) != (int64_t)descriptor) #else