@@ -15,33 +15,37 @@ tags: LinuxSyscalls|syscalls-x86-32
1515#include < unistd.h>
1616
1717namespace FEX ::HLE ::x32 {
18+
19+ auto umount (FEXCore::Core::CpuStateFrame* Frame, const char * target) -> uint64_t {
20+ uint64_t Result = ::umount (target);
21+ SYSCALL_ERRNO ();
22+ }
23+
24+ auto truncate64 (FEXCore::Core::CpuStateFrame* Frame, const char * path, uint32_t offset_low, uint32_t offset_high) -> uint64_t {
25+ uint64_t Offset = offset_high;
26+ Offset <<= 32 ;
27+ Offset |= offset_low;
28+ uint64_t Result = ::truncate (path, Offset);
29+ SYSCALL_ERRNO ();
30+ }
31+
32+ auto ftruncate64 (FEXCore::Core::CpuStateFrame* Frame, int fd, uint32_t offset_low, uint32_t offset_high) -> uint64_t {
33+ uint64_t Offset = offset_high;
34+ Offset <<= 32 ;
35+ Offset |= offset_low;
36+ uint64_t Result = ::ftruncate (fd, Offset);
37+ SYSCALL_ERRNO ();
38+ }
39+
40+ auto sigprocmask (FEXCore::Core::CpuStateFrame* Frame, int how, const uint64_t * set, uint64_t * oldset, size_t sigsetsize) -> uint64_t {
41+ return FEX ::HLE ::_SyscallHandler->GetSignalDelegator ()->GuestSigProcMask (FEX::HLE::ThreadManager::GetStateObjectFromCPUState (Frame), how,
42+ set, oldset);
43+ }
44+
1845void RegisterFS (FEX ::HLE ::SyscallHandler* Handler) {
19- REGISTER_SYSCALL_IMPL_X32 (umount, [](FEXCore::Core::CpuStateFrame* Frame, const char * target) -> uint64_t {
20- uint64_t Result = ::umount (target);
21- SYSCALL_ERRNO ();
22- });
23-
24- REGISTER_SYSCALL_IMPL_X32 (
25- truncate64, [](FEXCore::Core::CpuStateFrame* Frame, const char * path, uint32_t offset_low, uint32_t offset_high) -> uint64_t {
26- uint64_t Offset = offset_high;
27- Offset <<= 32 ;
28- Offset |= offset_low;
29- uint64_t Result = ::truncate (path, Offset);
30- SYSCALL_ERRNO ();
31- });
32-
33- REGISTER_SYSCALL_IMPL_X32 (ftruncate64, [](FEXCore::Core::CpuStateFrame* Frame, int fd, uint32_t offset_low, uint32_t offset_high) -> uint64_t {
34- uint64_t Offset = offset_high;
35- Offset <<= 32 ;
36- Offset |= offset_low;
37- uint64_t Result = ::ftruncate (fd, Offset);
38- SYSCALL_ERRNO ();
39- });
40-
41- REGISTER_SYSCALL_IMPL_X32 (
42- sigprocmask, [](FEXCore::Core::CpuStateFrame* Frame, int how, const uint64_t * set, uint64_t * oldset, size_t sigsetsize) -> uint64_t {
43- return FEX ::HLE ::_SyscallHandler->GetSignalDelegator ()->GuestSigProcMask (FEX::HLE::ThreadManager::GetStateObjectFromCPUState (Frame),
44- how, set, oldset);
45- });
46+ REGISTER_SYSCALL_IMPL_X32 (umount, umount);
47+ REGISTER_SYSCALL_IMPL_X32 (truncate64, truncate64);
48+ REGISTER_SYSCALL_IMPL_X32 (ftruncate64, ftruncate64);
49+ REGISTER_SYSCALL_IMPL_X32 (sigprocmask, sigprocmask);
4650}
4751} // namespace FEX::HLE::x32
0 commit comments