mirror of
https://github.com/FEX-Emu/FEX.git
synced 2026-10-08 11:00:18 +02:00
This nearly gets FEX's TestHarnessRunner to be self-hosting inside of FEX. The only thing blocking it currently is that our SBRK emulation reserves the whole region, when it should be "soft-reserved" and mmap with MAP_FIXED_NOREPLACE can override it. Plus an assert in OpcodeDispatcher preventing any 32-bit code from running from a 64-bit process. In the most simple terms, gdt and ldt are setup to be unique per thread, and modify_ldt then modifies that thread's ldt entry. On thread creation, these values get inherited as a copy. This allows installation of 32-bit code entries, which with the previous PRs merged allows the code to attempt jumping to that 32-bit code entry. It then will immediately explode with an assert in our OpcodeDispatcher. We can't allow 32-bit code jumping yet until our OpDispatcher/X86Tables allows runtime selection of 64-bit and 32-bit code entries which is still a ways away. With the assert removed and the SBRK code handling hacked out, /technically/ the TestHarnessRunner can run some code, albeit anything that changes behaviour between bitness is completely incorrect.