Ryan Houdek
c8bb0e2d51
Declare missing template specialization for GetListIfExists
...
Clang 12 picks up that this was missing
2021-04-16 18:54:16 -07:00
Stefanos Kornilios Mitsis Poiitidis
22f1cf0e2a
More wip
2021-04-15 10:05:59 +03:00
Stefanos Kornilios Mitsis Poiitidis
80493487db
ELF Loading: Cleanups all around
2021-04-14 10:59:23 +03:00
Stefanos Kornilios Mitsis Poiitidis
59ce750af6
Elf: Add ELFCodeLoader2, with simplified loading logic
2021-04-13 15:59:36 +03:00
Stefanos Kornilios Mitsis Poiitidis
a0a382cc5c
Clear up file naming a big
2021-04-13 15:59:36 +03:00
Ryan Houdek
6cc7d065aa
Merge pull request #964 from Sonicadvance1/paranoid_tso
...
First step in paranoid TSO mode
2021-04-12 23:34:54 -07:00
Ryan Houdek
66c8dd2013
First step in paranoid TSO mode
...
This moves vector ops down the GPR atomic backpatch path.
Next step after this is to add SIGBUS based handlers for these rather than backpatching.
Needs more work to treat aligned versus unaligned vector loadstores differently
2021-04-06 18:48:36 -07:00
Ryan Houdek
91ac4ccdd8
Adds LDAXP and STLXP backpatch handlers
...
This will be used in the next commit
2021-04-06 18:47:50 -07:00
Ryan Houdek
849b83bd02
Adds new ParanoidTSO option
2021-04-06 18:46:52 -07:00
Ryan Houdek
235f6fbe39
Strip symbols and dead sections
...
These are unnecessary and just add some file bloat. Strip them out
2021-04-06 00:39:03 -07:00
Ryan Houdek
b43db294ec
Change our compilation visibility to hidden
...
This bloats our compilation with symbols that don't need to be visible
2021-04-06 00:39:03 -07:00
Stefanos Kornilios Mitsis Poiitidis
50c3ee047c
Merge pull request #961 from Sonicadvance1/fix_segment_override
...
Fixes segment register override on string instructions.
2021-04-06 09:24:23 +03:00
Stefanos Kornilios Mitsis Poiitidis
c0ef6da6a8
Merge pull request #960 from Sonicadvance1/more_cpuid
...
Adds some more CPUID functions
2021-04-06 09:23:13 +03:00
Stefanos Kornilios Mitsis Poiitidis
4a5eefec25
Merge pull request #958 from Sonicadvance1/fix_atomic_zext
...
Fixes Zext semantics on atomic ops with x64 JIT
2021-04-06 09:21:44 +03:00
Stefanos Kornilios Mitsis Poiitidis
62406a45be
Merge pull request #953 from Sonicadvance1/env_var_override
...
Allows overriding FEX folder locations with environment variables
2021-04-06 09:16:12 +03:00
Stefanos Kornilios Mitsis Poiitidis
c26f19ed4d
Merge pull request #950 from Sonicadvance1/fix_gcc_tests
...
Fixes GCC tests
2021-04-06 09:05:45 +03:00
Stefanos Kornilios Mitsis Poiitidis
9619cea097
Merge pull request #949 from Sonicadvance1/arm64_print
...
Adds support for Arm64 JIT to Print
2021-04-06 08:58:13 +03:00
Stefanos Kornilios Mitsis Poiitidis
44dbecc2ac
Merge pull request #948 from Sonicadvance1/fix_leak
...
Fixes memory leak in CPU backends
2021-04-06 08:56:00 +03:00
Ryan Houdek
b7e81e867d
Fixes segment register override on string instructions.
...
The segment prefix only overrides one side of the string instruction.
Passing in the flags was causing the instruction to have the segment override on both sides of the copy.
So something like `movsb es:[rdi], fs:[rsi]` was being interpreted as `movsb fs:[rdi], fs:[rsi]`
Same for all the string ops which is now fixed.
We can't unit test these currently since we can't set host segment register for confirmed host behaviour.
2021-04-05 21:28:31 -07:00
Ryan Houdek
4f276aae82
Adds comment for LEA and segment registers
...
LEA doesn't give you the result with segment register applied to it.
Adds a comment to OpDispatcher to make it more clear
2021-04-05 21:28:25 -07:00
Ryan Houdek
c80254f6f4
Adds some more CPUID functions
...
Noticed a game poking at these
2021-04-05 18:37:05 -07:00
Ryan Houdek
0dd1959d65
Fixes Zext semantics on atomic ops with x64 JIT
...
Fixes Factorio 1.1.30 on x86-64 hosts
Fixes #957
2021-04-05 18:19:15 -07:00
Ryan Houdek
8cc799ab65
Allows overriding FEX folder locations with environment variables
...
Introduces three new environment variables that need to live outside of the scope
of the regular argument loader path.
This will allow external applications to adjust FEX parameters in interesting ways.
FEX_APP_CONFIG: Allows you to override where Config.json lives
FEX_APP_CONFIG_LOCATION: Allows you to provide an entire folder of app profiles
FEX_APP_DATA_LOCATION: Allows you to override where the data gets stored and loaded from
Fixes #572
2021-04-05 04:09:41 -07:00
Ryan Houdek
3020e39428
Remove DestSize from Print IR Op
2021-04-04 22:07:03 -07:00
Ryan Houdek
f8eabb4f33
Implements 64bit scalar VUMin on x86 JIT
2021-04-04 22:05:55 -07:00
Ryan Houdek
4da492d361
Fixes vector integer min and max on AArch64
...
These instructions don't have a 64bit element variant.
Switch the 64bit element variant over to a coded variant similar to float min/max
2021-04-04 22:05:55 -07:00
Ryan Houdek
a200d2c91c
Fixes packed shift ops
...
In the case of a shift value larger than the element size then the shift will zero the element.
Incoming shift amount is always a 64bit value which means that the value can become quite large on shifts.
Checks the incoming source and sets the maximum to be the element size, which works for AArch64's vector shifts
Which only operate on 8bit incoming shift amounts
2021-04-04 22:05:55 -07:00
Ryan Houdek
af205e9f5f
Fixes PEXTRW
...
In the case of 16bit PEXTRW it will zext to 32bits which wasn't being done
2021-04-04 21:32:12 -07:00
Ryan Houdek
032d1fbba2
Fixes VFMIN/VFMax NaN behaviour
...
In a world with NaNs we were hitting some undefined behaviour with fmin/fmax
Needed to change these over to something more complex to handle the NaN case.
ARMv8.7 alternative FP mode would solve this for the scalar case, but it still doesn't work for the vecto case sadly.
2021-04-04 21:29:46 -07:00
Ryan Houdek
313c4bb784
Fixes bug in VectorImm
...
If passing in a 64bit immediate then movi doesn't behaviour how you would expect.
Instead to a tmp move + dup to implement it the way we want
2021-04-04 20:24:23 -07:00
Ryan Houdek
ceb484fd3a
Adds support for Arm64 JIT to Print
...
Useful for debugging, supports both vector and GPR
2021-04-04 20:22:44 -07:00
Ryan Houdek
b98c7bd853
Moves AArch64's GetPhys to be a class function
...
No need for it to be static
2021-04-04 20:21:06 -07:00
Ryan Houdek
4c045148b6
Fixes memory leak in CPU backends
...
Dispatcher wasn't ever getting cleaned up.
Also ensures sharing it with the CompileService otherwise it crashes on use.
2021-04-04 20:19:35 -07:00
Ryan Houdek
9f29bba4aa
Fixes missing virtual destructor on Dispatcher class
2021-04-04 20:10:58 -07:00
Ryan Houdek
2c592bd8a8
Implements a minimal siginfo_t in the dispatcher's signal handler
...
This lets Carrion get farther in game.
Seems like one of its threads hits sigsegv and it just...lets it die after checking siginfo?
2021-04-03 17:03:19 -07:00
Ryan Houdek
fb94e62df1
Fixes FEXConfig filling in unnamed options
...
These aren't meant to be set by the user
2021-04-02 20:28:12 -07:00
Ryan Houdek
5d0c080a9d
Fixes Thunk Guest libs short arg. C&P error made it not be j
2021-04-01 19:08:00 -07:00
Ryan Houdek
5f49b57948
Merge pull request #928 from Sonicadvance1/pthreads_threading
...
Switches FEXCore over to pthreads implementation
2021-04-01 01:15:43 -07:00
Ryan Houdek
21a364c2ad
Switches FEXCore over to pthreads implementation
...
This defaults to a pthread implementation but it can be switched over to a custom thread
handler if the frontend desires.
2021-04-01 00:31:45 -07:00
Ryan Houdek
8cf47f8221
Adds support for named rootfs configurations
...
If the relative or absolute folder doesn't exist then FEX will search in the data folder for a rootFS named the same thing
If the path exists then it is used.
For example if my data folder contains `$HOME/.fex-emu/RootFS/Ubuntu_main/` and I set the RootFS option to `Ubuntu_main`
Then this rootfs will be used. Allows you to easily select a rootfs in that folder without having the full file path.
2021-03-31 23:46:07 -07:00
Ryan Houdek
43b6cc1cb9
Adds GetDataDirectory config helper
...
This ends up in either $HOME/.fex-emu/ or $XDG_DATA_HOME/.fex-emu/
2021-03-31 23:46:07 -07:00
Ryan Houdek
1ab6726498
Moves Config directory finding to FEXCore
...
This will be necessary in the next commit
2021-03-31 23:46:07 -07:00
Ryan Houdek
b2825bd848
Adds handler in ELFLoader to determine ELF type.
2021-03-31 23:37:56 -07:00
Ryan Houdek
61cd3eb3ce
Fix crash in ELFDB if it tried loading something that wasn't an ELF
2021-03-31 23:37:56 -07:00
Lioncache
4b11dcb72a
Config: Make lookup map assignment match behavior of comment
...
emplace() only performs an insertion or assignment if the key doesn't
already exist within the map, which is at odds with what the comment
above the line indicates should happen.
insert_or_assign() better models what the comment indicates.
2021-03-30 11:51:52 -04:00
Lioncache
dd7c78dcd7
Config: Perform lookups by character overloads where applicable
...
These are marginally better to perform than the string equivalents
2021-03-30 11:41:57 -04:00
Lioncache
a20ef403c1
Config: std::move strings within MergeEnvironmentVariables()
...
Same behavior, minus potential heap duplicate allocations
2021-03-30 11:40:42 -04:00
Stefanos Kornilios Mitsis Poiitidis
b7a60337e8
Build: Fix for ubuntu 20.04
2021-03-30 13:08:19 +03:00
Stefanos Kornilios Mitsis Poiitidis
315b8e9c1e
Merge pull request #917 from FEX-Emu/skmp/lightweight-docs-3
...
Docs: Add tags, unittest Readme.md, generated SourceOutline.md
2021-03-30 12:52:18 +03:00
Stefanos Kornilios Mitsis Poiitidis
942b8549c6
Docs: Add tags to the source code
2021-03-30 12:21:18 +03:00