Ryan Houdek 633ea045e5 Handles unaligned cmpxchg/cmpxchg8b in SIGBUS handler
cmpxchg/cmpxchg8b doesn't have alignment requirements on x86, which means
applications rely on unaligned behaviour support with it.

Steam relies on this to work for a linked list array of jobs in some
internal job queueing system. It will end up always aligning by offsets
of 4 since it stores a couple of pointers.

Doesn't currently support the case of unaligned cmpxchg8b crossing a
cacheline, which ends up being semi-broken depending on which x86
behaviour the application is expected.
Intel CPUs do the "Big ring lock" or "split locks". Which means accesses
across cachelines are atomic.
AMD CPUs will tear the value across the cacheline, which is expected x86
behaviour by spec.

If they are expecting Intel behaviour, then that application is just
broken on non-Intel platforms unless they are fine with a tear.
2021-01-20 16:07:50 -08:00
2021-01-09 04:17:35 +02:00
2020-11-29 00:30:28 -08:00
2020-08-21 01:29:37 +12:00
2021-01-09 04:17:35 +02:00
2020-12-25 01:57:09 -08:00
2020-11-29 00:30:28 -08:00
2020-03-06 09:08:13 +02:00
2020-11-29 00:30:28 -08:00

FEX - Fast x86 emulation frontend

This is the frontend application and tooling used for development and debugging of the FEXCore library.

Dependencies

  • FEXCore
  • cpp-optparse
  • imgui
  • json-maker
  • tiny-json
  • boost interprocess (sadly)
  • A C++17 compliant compiler (There are assumptions made about using Clang and LTO)
  • clang-tidy if you want the code cleaned up
  • cmake

FEX diagram

S
Description
GitHub pull mirror of FEX-Emu/FEX. GitHub repository ID: 245352386. Gitea import mode: github-full.
https://github.com/FEX-Emu/FEX Readme MIT
58 MiB
0 Stars 1 Watchers 0 Forks
2026-10-07 22:00:17 +02:00
Languages
C++ 56%
Assembly 37.8%
C 3.8%
Python 1.2%
CMake 0.9%
Other 0.2%