Ryan Houdek
956f97efd4
Merge pull request #5124 from bylaws/wfnamec
...
Windows: Switch GetSection/ExecutableFilePath to returning full paths
2025-12-15 10:33:39 -08:00
Ryan Houdek
ebdbf58474
Merge pull request #5121 from bylaws/wheiwofjsddsjkkjdsalkjkjd
...
Windows: Split out CRT/WinAPI reimplementation
2025-12-15 10:30:29 -08:00
Billy Laws
cd934b73ca
Windows: Switch GetSection/ExecutableFilePath to returning full paths
2025-12-15 17:23:23 +00:00
Billy Laws
f6dab33190
Windows: Split out CRT/WinAPI reimplementation
...
We can use the system CRT for the offline compiler, but still want to
pull in e.g. InvalidationTracker and other helpers.
2025-12-15 15:32:26 +00:00
Billy Laws
7c8fdc1651
WinAPI: Implement Sleep
...
Used by std::this_thread::sleep.
2025-12-15 15:30:00 +00:00
Tony Wasserka
9fb83ea56a
Windows/CRT: Implement lseek
2025-12-04 19:16:51 +01:00
esullivan
8cc967fa22
HostFeatures: Disable SupportsTSOImm9 for some CPUs
...
This change avoids using the LDAPUR instruction with CPUs that are know to be
impacted by an ARM CPU errata that results in poor performance.
2025-11-26 21:42:29 -06:00
Ryan Houdek
6772581c53
Arm64ec: Print a log when kernel unaligned atomics are used
...
Not having this in FEXInterpreter as it is too spammy in the general
case.
2025-11-20 12:05:55 -08:00
Ryan Houdek
387201815b
Config: Add option to enable or disable kernel backpatchin on unaligned atomic
...
Default to enabled because this is the config we expect by default.
In the future will get some benchmarking in various games like
Assassin's Creed, and Call of Duty.
2025-11-20 12:04:59 -08:00
Billy Laws
24d61e1125
Windows: Enable downstream kernel-side unaligned atomic handling
2025-11-20 12:04:59 -08:00
Billy Laws
9a7285dca4
Windows: Support new two-stage invalidation model
2025-11-20 00:38:03 +00:00
Ryan Houdek
686c04ea93
Win32: IMplement Wake/Wait by address
2025-11-10 17:43:40 -08:00
Ryan Houdek
e862c904a9
FEX: Implements support for JIT CodeBuffer guard page restart
...
When the JIT CodeBuffer overflows, we will now catch accesses to the
guard page and longjump while restarting the JIT with a larger buffer
request.
Fixes #4877
2025-11-10 11:55:21 -08:00
Ryan Houdek
438501e49c
Merge pull request #4998 from Sonicadvance1/i_like_my_writes_quick_and_monitored
...
LookupCache: Convert mutex to new WritePriorityMutex
2025-11-04 16:02:44 -08:00
Ryan Houdek
8d20d1dae3
Wow64: Disable AVX
...
It's unsupported.
2025-11-04 11:29:04 -08:00
Ryan Houdek
6ed15a6fd6
Windows: Implement support for SRWLock shared
...
Exclusive was already implemented.
2025-11-01 13:58:21 -07:00
Tony Wasserka
5a002ad08d
Revert "Merge pull request #4969 from Sonicadvance1/rpmalloc"
...
This reverts commit e1a45a2720 , reversing
changes made to bd7edd8651 .
The change rendered pressure-vessel non-functional on muvm-based setups
like Fedora Asahi Remix.
2025-10-30 15:22:17 +01:00
Ryan Houdek
63304a1d88
Windows: rpmalloc
2025-10-27 12:05:08 -07:00
Ryan Houdek
985bdf2b6c
Switch over to rpmalloc instead of jemalloc.
...
rpmalloc is currently very aggressively configured which causes
significant reductions in resident memory over jemalloc.
In Bayonetta's title screen it went from 963MB down to 834MB resident.
2025-10-27 11:23:13 -07:00
LC
3c554cd787
Merge pull request #4992 from Sonicadvance1/Remove_the_paranoia
...
FEXCore: Remove Paranoid TSO mode.
2025-10-22 10:05:48 -04:00
LC
9e5f2269d9
Merge pull request #4990 from Sonicadvance1/gettls
...
wow64/arm64ec: Call GetTLS less frequently
2025-10-21 23:53:36 -04:00
Ryan Houdek
81fc502c6c
FEXCore: Remove Paranoid TSO mode.
...
This mode has been broken for a long time because it's mostly untested.
Barriers, and backpatching while slow have proven that they work.
Maintain the one TSO path, at least until all ARM hardware gains support for
x86-TSO memory model mode.
2025-10-21 10:53:34 -07:00
Ryan Houdek
643dd56b74
FEX: Removes sone hardcoded 4096 constants
...
Use our defined variable instead.
2025-10-21 09:18:07 -07:00
Ryan Houdek
b40e707771
wow64/arm64ec: Call GetTLS less frequently
...
If called back-to-back, the compiler can't optimize the object creation
resulting in multiple indirections. Save the creation and pass it
around, allowing the compiler to merge loadstores, and remove redundant
loads.
NFC
2025-10-20 15:45:31 -07:00
Jacek Caban
5fd3852fd3
ARM64EC: Emulate unaligned atomic access in non-JIT EC code
2025-10-10 00:13:56 +02:00
Ryan Houdek
673e826e46
FEX: Remove InlineSyscall and related flags
...
FEXCore no longer optimizes syscalls to be inline.
NFC, just avoids passing around a bunch of data structures for no
reason.
2025-10-08 19:33:58 -07:00
Billy Laws
70cffce5eb
Windows: Avoid redeclaring strtoll as unimplemented
...
Included as part of the musl code we pull in. Fixes ARM64EC/WOW64 FEX.
2025-10-03 16:30:41 +02:00
LC
18d0dec416
Merge pull request #4911 from Sonicadvance1/evmd_linux
...
Linux: Implement support for extended volatile metadata
2025-09-30 20:01:26 -04:00
Ryan Houdek
1758648f56
Common: Move ApplyFEXExtendedVolatileMetadata to Common
...
It is going to be used by Linux.
Also adds support for file offset handling, which is required on Linux
but not on win32.
2025-09-29 14:36:50 -07:00
Ryan Houdek
418ce0aed9
Wow64: Ensure extended volatile metadata is removed
...
Was missing this, matches the arm64ec side.
2025-09-29 14:13:44 -07:00
Ryan Houdek
7273041314
FEXInterpreter: Remove FEXLoader
...
Doesn't /quite/ remove the ArgumentLoader because it is intertwined with
LinuxEmulation in an annoying way that will take another step to remove.
2025-09-12 10:24:58 -07:00
Ryan Houdek
61719115e5
Merge pull request #4817 from neobrain/refactor_code_cache_new_interfaces
...
CodeCache: Introduce new interfaces
2025-09-11 12:59:33 -07:00
Ryan Houdek
0eedd55dfd
Merge pull request #4866 from neobrain/refactor_reformat
...
Update code formatting
2025-09-11 10:13:42 -07:00
Tony Wasserka
0749477eb9
CodeCache: Introduce revamped interfaces
2025-09-11 17:03:50 +02:00
Tony Wasserka
9fdd96af61
Update code formatting
2025-09-11 10:40:29 +02:00
Tony Wasserka
0c0a1d8f12
CMake: Use consistent component naming
2025-09-11 10:31:06 +02:00
Tony Wasserka
fee9e91c4f
Core: Drop support for TSO auto migration
2025-09-10 15:36:23 +02:00
Billy Laws
782952d55d
WOW64: Fix CsSeg initialization
2025-09-09 19:10:07 +01:00
Ryan Houdek
80cacc462e
X86Tables: Move x87 tables to be constexpr
2025-08-27 12:24:25 -07:00
Ryan Houdek
f050571696
Implement support for additional provided volatile metadata
...
Only wired up for wow64 and arm64ec. Gives more granular control over
TSO enabling and disabling. Matches arm64ec volatile metadata except
with one more additional feature that whole modules can be disabled at a
time.
Once we know the mapped size of files in Linux then we'll be able to do
the same thing there, but there's not a full mechanism wired up for that
yet.
2025-08-22 15:03:56 -07:00
LC
4f84c281ef
Merge pull request #4791 from bylaws/norace
...
ARM64EC: Cooperatively suspend if needed when leaving the JIT
2025-08-22 12:21:09 -04:00
Billy Laws
827015a8e3
ARM64EC: Cooperatively suspend if needed when leaving the JIT
2025-08-21 17:24:56 +01:00
Billy Laws
a379818386
WinAPI: Force WOW64 allocations to start >4GB
...
Avoids stealing address space from the guest.
2025-08-21 17:19:46 +01:00
Ryan Houdek
83e44961fc
Merge pull request #4784 from Sonicadvance1/more_ldt_gdt
...
FEXCore: Move LDT/GDT management to the frontend
2025-08-20 13:22:08 -07:00
Ryan Houdek
25a0752e58
FEXCore: Move LDT/GDT management to the frontend
...
This will allow the frontend to manage LDT and GDT so that Linux will be
able to install 32-bit code segments.
2025-08-18 14:03:51 -07:00
Paulo Matos
3bf323aa2b
Clear IE flag on fninit
2025-08-18 15:40:46 +02:00
Ryan Houdek
26b4195f1f
Merge pull request #4779 from asLody/environ
...
Windows: Support EnvLoader via _environ
2025-08-14 11:22:23 -07:00
Lody
cd31a79f41
Windows: Support EnvLoader via _environ
2025-08-14 10:41:11 +08:00
LC
c8810557c1
Merge pull request #4777 from Sonicadvance1/move_gdt_up
...
FEXCore: Split GDT and LDT prep work
2025-08-13 12:06:41 -04:00
Ryan Houdek
3f9df49e3e
FEXCore: Split GDT and LDT prep work
...
Taking this very slowly because this is very fickle code. The frontend
needs to manage GDT and LDT, but before we get there, we need to
actually add support for LDT in the backend. Split the segments to two
arrays so the JIT can actually update their cached values correctly.
Still treats GDT and LDT as mirrors like how the JIT previously did (By
it ignoring the selector's TI bit).
2025-08-11 20:45:51 -07:00