David Miller
09f119a3ce
removed front end header / class from EmulatedFiles.cpp
2020-04-29 16:39:40 -04:00
David Miller
f916294772
Include unistd.h in EmulatedFiles.cpp as CI doesn't build
2020-04-29 16:04:39 -04:00
David Miller
306cca33d7
Added dup3 syscall, EmulatedFiles : /proc/{self,$PID}/auxv, modified OpenAt() to normalize path to canonical if possible or lexically_normal. Note: canonical will change symlinks, ensure the map keys take this into account.
2020-04-29 16:00:59 -04:00
Ryan Houdek
f3f63251ea
Merge pull request #124 from Sonicadvance1/fix_cache_clear_crash
...
Fixes crashes when code cache is cleared
2020-04-26 18:02:54 -07:00
David Miller
c77a3c0c02
changed default value of FEXCore::Context::Config::UnifiedMemory to proper location
2020-04-25 14:34:34 -04:00
Ryan Houdek
b9002bb790
Merge pull request #135 from dmiller423/master
...
Added include of <llvm/IR/IntrinsicsX86.h> to LLVMCore.cpp
2020-04-24 13:24:09 -07:00
Ryan Houdek
f2f2d9fd0d
Merge pull request #134 from Sonicadvance1/fix_stack_bug
...
Fixes accessing a stack variable post destruction bug
2020-04-24 09:10:36 -07:00
Ryan Houdek
b2beb6ffb1
Merge pull request #132 from Sonicadvance1/RA_print
...
Adds RA printing to the IR dumping function
2020-04-24 09:10:22 -07:00
Ryan Houdek
1ac36e2ddd
Merge pull request #131 from Sonicadvance1/fix_dumb_wait_for_idle
...
Removes the dumb timer wait for idle
2020-04-24 09:10:10 -07:00
Ryan Houdek
f6bdcbbdcf
Merge pull request #129 from Sonicadvance1/more_syscalls2
...
Implements two more syscalls
2020-04-24 09:10:01 -07:00
Ryan Houdek
e0ca2e3126
Merge pull request #128 from Sonicadvance1/removes_ssse3
...
Removes SSSE3 CPUID feature bit
2020-04-24 09:09:51 -07:00
Ryan Houdek
7869a5a40e
Merge pull request #127 from Sonicadvance1/fix_x86_regs
...
Fixes x86 JIT's RA for 16bit and 8bit registers
2020-04-24 09:09:40 -07:00
Ryan Houdek
8cc8472a75
Merge pull request #126 from Sonicadvance1/fix_llvm_logs
...
Disables LLVM debug messages
2020-04-24 09:09:20 -07:00
Ryan Houdek
2e5db1ddc9
Merge pull request #125 from Sonicadvance1/x87_table
...
Ensure FLDENV/FNSTENV has correct flags in the x87 table
2020-04-24 09:09:06 -07:00
David Miller
1daec14a48
added guard on IntrinsicsX86.h inclusion
2020-04-23 20:10:35 -04:00
David Miller
5999e7477f
Added guard around llvm/IR/IntrinsicsX86.h inclusion, seems to only be needed for version 10?\nMore Investigation needed here.\nChanged Debugger/IMGui.{h,cpp} to IMGui_I so it will build in filesystems that aren't case sensitive.\nAdded CMakeSettings.json that has profiles to build from VisualStudio, using env variables to control system specific options. \n Currently only the WSL is tested (and working). \nRemote should work as well, if correct string for preconfigured remote is in env variable fexremote.\nCross compile (to linux) untested, using sysroot in env variable fexsysroot
2020-04-23 16:12:28 -04:00
David Miller
a8d3cd67ad
Added include of <llvm/IR/IntrinsicsX86.h> to LLVMCore.cpp
2020-04-23 11:12:45 -04:00
Ryan Houdek
b5c170be41
Merge pull request #123 from Sonicadvance1/fix_32bit_x86_cvtsi2ss
...
Fixes 32bit Float_FromGPR_S IR op in x86 JIT
2020-04-22 08:37:56 -07:00
Ryan Houdek
11c341f722
Fixes accessing a stack variable post destruction bug
...
This happened to work with clang-9 but is caught in clang-10 now.
We were constructing an iterator temp then pulling a node through it
past the destruction.
Remove the iterator construction entirely and removes the unused lambda
from the AArch64 JIT that had the same problem.
2020-04-21 16:16:50 -07:00
Ryan Houdek
0c1fecb6c2
Merge pull request #113 from Sonicadvance1/redundant_ra_allocation
...
Ensures the JIT constructor's don't reallocate RA
2020-04-20 17:18:51 -07:00
Ryan Houdek
3bf641dd14
Adds RA printing to the IR dumping function
...
If a backend has RA then this'll pass through the RAPass and will dump
the RA alongside the IR. Very useful for debugging.
2020-04-18 13:42:44 -07:00
Ryan Houdek
6642734aa8
Removes the dumb timer wait for idle
...
Turns out my Threadripper stomps these tests so the arbitrary wait time
actually slows down my unit test time.
Don't want to make it shorter since `strace -f` becomes ugly at that
point.
Instead set up a semaphore style waiting structure that waits until
there are no longer any participants in the atomic
2020-04-18 12:37:58 -07:00
Ryan Houdek
56759faff0
Merge pull request #122 from Sonicadvance1/fix_futexes
...
Fixes some bugs with threads and futexes
2020-04-18 12:35:56 -07:00
Ryan Houdek
a901c3cb07
Implements two more syscalls
2020-04-18 11:55:32 -07:00
Ryan Houdek
aa9756bffc
Merge pull request #121 from Sonicadvance1/new_syscalls
...
Implements ~20 new syscalls
2020-04-18 11:43:23 -07:00
Ryan Houdek
d55ce197b6
Removes SSSE3 CPUID feature bit
...
Dolphin uses this in a couple of places, so until it is fully supported
leave it disabled.
2020-04-18 11:32:41 -07:00
Ryan Houdek
7c9dca0de9
Fixes x86 JIT's RA for 16bit and 8bit registers
...
There were four independent arrays for each size of the RA.
Missed the 16bit and 8bit registers when removing a register.
This removes the redundant arrays and just uses one and transforms the
register to the right size depending on what the JIT wants
2020-04-18 11:31:56 -07:00
Ryan Houdek
21cad8f689
Disables LLVM debug messages
2020-04-18 11:27:59 -07:00
Ryan Houdek
4f80a1a3a7
Ensures the JIT constructor's don't reallocate RA
...
Currently RA is shared between threads(!).
If the RA had been previously allocated then don't allocate it again.
Fixes a race condition when multiple threads are spinning up and one is
compiling code
2020-04-18 11:26:10 -07:00
Ryan Houdek
5a89463c2b
Merge pull request #112 from Sonicadvance1/RA_validation
...
Lets the IR validation pass validate RA
2020-04-18 10:49:29 -07:00
Stefanos Kornilios Mitsis Poiitidis
3edaf6e46e
Merge pull request #120 from Sonicadvance1/cpuid_amd
...
Add a compile define for choosing CPUID manufacturer id
2020-04-18 04:12:49 +03:00
Stefanos Kornilios Mitsis Poiitidis
86b13a9ff7
Merge pull request #119 from Sonicadvance1/implement_movbe
...
Implements MOVBE
2020-04-18 04:11:43 +03:00
Stefanos Kornilios Mitsis Poiitidis
8642a64733
Merge pull request #118 from Sonicadvance1/remove_bmi
...
Removes BMI1/BMI2 CPUID bits
2020-04-18 04:10:37 +03:00
Ryan Houdek
36a9388481
Lets the IR validation pass validate RA
...
Adds some additional validation that an IR op is generating RA for ops
that set a destination.
Ensuring correct register class and that there is a physical register
assigned
2020-04-17 18:09:46 -07:00
Ryan Houdek
37e2a2bb6f
Adds validation passes after regular passes
...
This is required for the forthcoming IRValidation pass change that
validates RA is working
2020-04-17 18:09:46 -07:00
Stefanos Kornilios Mitsis Poiitidis
98c00ba6b1
Merge pull request #106 from Sonicadvance1/vector_op_ir
...
Move vector op RegisterSize and ElementSize values in to the header struct
2020-04-18 04:00:52 +03:00
Stefanos Kornilios Mitsis Poiitidis
2bb3543827
Merge pull request #102 from Sonicadvance1/ra_class_in_json
...
Minor IR cleanup
2020-04-18 03:57:46 +03:00
Ryan Houdek
5cdf97e028
Ensure FLDENV/FNSTENV has correct flags in the x87 table
2020-04-17 15:28:48 -07:00
Ryan Houdek
74578d3ef4
Ensure the Interpreter and x86 JIT doesn't crash if DebugData isn't provided
2020-04-17 15:25:18 -07:00
Ryan Houdek
e74c168aa7
Ensures we still get debug data when IR for code already exists
2020-04-17 15:24:20 -07:00
Ryan Houdek
7eb8ceafbe
Ensures IRList doesn't store stale aliased data in cache
2020-04-17 15:23:44 -07:00
Ryan Houdek
2cac41ee1c
Adds a bunch more syscalls
...
Some of these are just there to get us farther in some cases. They can
result in behaviour the app isn't expecting like when signals are setup
but not handled correctly.
Is fine for the cases that the app doesn't actually use them.
2020-04-17 15:19:09 -07:00
Ryan Houdek
d12ac8365d
Fixes 32bit Float_FromGPR_S IR op in x86 JIT
...
x86's cvtsi2ss can take a 32bit or 64bit input and convert it to a 32bit
float.
This ensures the register passed in is 32bit so it uses the 32bit
instruction
2020-04-16 12:09:58 -07:00
Ryan Houdek
902cae7ebc
Fixes some bugs with threads and futexes
...
Fixing some bugs in threading required fixing how the futexes operate.
Instead of the terrible condition variables and atomic values just use
the kernel futex facility directly.
This required fixing some of the threading management since otherwise
there was a issue around the weird mixture of our threads using our
"Futex" class and the kernel expecting real futexes on the values.
Just switch everything over and it ends up being cleaner
Fixes random mutex failures that were happening in various applications
2020-04-15 11:58:26 -07:00
Ryan Houdek
46692d72c0
Adds new syscalls to the jump tables
2020-04-15 11:18:37 -07:00
Ryan Houdek
6471b6e833
Adds two new thread syscall functions
...
Adds getppid and kill
kill signals sent to emulator local threads may or may not behave as
expected until signals are implemented here
2020-04-15 11:16:14 -07:00
Ryan Houdek
565b8a6b54
Adds new FD syscall functions
...
flock, fsync, fdatasync, and fchmod
2020-04-15 11:14:23 -07:00
Ryan Houdek
12e8e63be7
Adds epoll_create syscall function
2020-04-15 11:13:36 -07:00
Ryan Houdek
8c8216584a
Add a compile define for choosing CPUID manufacturer id
...
This can prove useful for applications that change some of their checks
depending what the vendor is
2020-04-15 11:08:32 -07:00
Ryan Houdek
46402e3244
Implements MOVBE in the OpDispatcher
...
This is pretty easy to implement. Kind of flies in the face of why the
instruction implementation exists (icache and frontend issue overhead
savings) but it is easy to implement.
2020-04-13 17:43:33 -07:00