Commit Graph

77 Commits

Author SHA1 Message Date
David Guillen Fandos 5ffd2832e8 Rewrite of the MIPS dynarec stubs
This allows us to emit the handlers directly in a more efficient manner.
At the same time it allows for an easy fix to emit PIC code, which is
necessary for libretro. This also enables more platform specific
optimizations and variations, perhaps even run-time multiplatform
support.
2021-03-16 22:58:58 +01:00
David Guillen Fandos 1e8097ac79 Improve and simplify dynarec JIT area.
Also fix a regression on VITA.
Use gcc/OS cache flushing routines for MIPS32 instead of synci
2021-03-12 18:05:48 +01:00
twinaphex bd36c9c77d Add osx-arm64 target 2021-03-09 22:05:36 +01:00
David Guillen Fandos 56dc6ecb70 Remove libco
This removes libco and all the usages of it (+pthreads).
Rewired all dynarecs and interpreter to return after every frame so that
libretro can process events. This required to make dynarec re-entrant.

Dynarecs were updated to check for new frame on every update (IRQ, cycle
exhaustion, I/O write, etc). The performance impact of doing so should
be minimal (and definitely outweight the libco gains). While at it,
fixed small issues to get a bit more perf: arm dynarec was not idling
correctly, mips was using stack when not needed, etc.

Tested on PSP (mips), OGA (armv7), Linux (x86 and interpreter). Not
tested on Android though.
2021-03-08 18:44:03 +01:00
David Guillen Fandos 3d558413fd Fix x86 dynarec, broken by d10c4afe
The dynarec expects function args to be located in registers instead of
the stack, which is not the default calling convetion in GCC/clang.
2021-03-06 21:15:22 +01:00
twinaphex 23b2a55f0d Update 2020-12-19 23:18:41 +01:00
jdgleaver e4745d32ec Add 3DS target to .gitlab-ci.yml 2020-12-03 14:05:54 +01:00
jdgleaver 2b189fe810 OpenDingux: Fix makefile target 2020-10-23 16:06:15 +01:00
jdgleaver 00406feed9 Add build-time option to run the emulator in a thread instead of libco (fixes OpenDingux target) 2020-10-23 15:37:48 +01:00
twinaphex 9fc166ebb2 Update Makefile 2020-10-08 23:56:18 +02:00
Autechre 6ca90ae963
Update Makefile 2020-10-08 05:16:57 +02:00
twinaphex 856af16ba6 Cleanup 2020-05-27 21:39:17 +02:00
twinaphex b668259a2f Fix OSX PPC build 2020-05-27 21:34:54 +02:00
Justin Weiss 6a50b8a68d [3DS] Fix dynarec prefetch aborts
Similar fix to https://github.com/libretro/pcsx_rearmed/pull/390. The
Nintendo svcBackdoor can cause stack corruption if an interrupt
happens during it, this uses Luma3DS/Rosalina's svcCustomBackdoor instead.
2020-02-29 10:55:58 -08:00
bmaupin f1109b1df4 Use OPTIMIZE for compiling libco too
In case it needs to be debugged
2019-10-24 13:23:28 -04:00
bmaupin a60de42f3a Get dynarec working again for PSP 2019-10-20 14:58:51 -04:00
bmaupin 2e13ee1cfc Fix compiler warning for strict aliasing 2019-10-03 13:53:34 -04:00
bmaupin 7816b42a8c Fix compilation on PSP 2019-09-13 13:44:48 -04:00
Yoshi Sugawara 8acc14cf34 (tvOS) Compile using tvOS SDK 2019-09-02 15:59:57 -10:00
Ryan 'Swingflip' Hamlin 2a8bcc0ae5 Added A7A7 2018-11-01 16:42:06 +00:00
twinaphex 638aad3ad5 Add Switch target 2018-01-10 03:14:18 +01:00
Yoshi Sugawara 0b73fbaa1a support for iOS arm64 build 2017-10-02 15:57:25 -10:00
Gregor Richards 415b5ba67b Report git version with library_version 2016-12-09 18:42:12 -05:00
Francisco José García García 6bfb7e1b47 (VITA) Dynarec working 2016-10-03 20:19:11 +02:00
Francisco José García García 24cbebe2de (VITA) Change libco and some optimizations 2016-09-29 01:03:33 +02:00
twinaphex e700ad7875 Update Makefile 2016-09-07 09:32:02 +02:00
Francisco José García García 5051773104 (VITA) Set thumb mode 2016-08-14 18:30:14 +02:00
twinaphex 70fff8152f (Vita) Try to enable dynarec 2016-08-07 16:34:34 +02:00
vanfanel 9dbea7573e Removed redundant CFLAG and added Rpi3 platform 2016-05-24 17:52:00 +02:00
twinaphex 7a5380ca84 Add gcw0 target 2016-03-04 06:37:04 +01:00
vanfanel 31f9969be1 Add rpi 2 and rpi 1 platform definitions 2016-02-27 04:29:26 +01:00
aliaspider 4b00c74784 (3DS) remove the now unused libkhax. 2016-01-18 01:00:56 +01:00
aliaspider f1d14fbe7c (3ds) dynarec: map the translation caches to specific addresses at
runtime, increases compatibility with loaders that can reloacate each
program section seperately.
move the svc enabling functions to the frontend.
2015-11-04 15:46:27 +01:00
aliaspider 6b8417143a (vita) build fix 2015-10-24 19:48:54 +01:00
twinaphex 98d327daa5 Add iOS 9 rules 2015-10-16 03:04:06 +02:00
aliaspider c52e81510f (CTR/3DS) fix the 'all' target not being the default target. 2015-09-14 04:04:25 +01:00
aliaspider c1d061e204 (3DS) add dynarec support when started from a .cia install
use libkhax for ninjhax 1.0
2015-09-11 22:02:04 +01:00
twinaphex a99c3552a4 (Vita) Add Vita target 2015-08-31 21:50:44 +02:00
twinaphex 317f395b49 (OSX) Lower requirements to 10.1 2015-08-01 23:19:59 +02:00
neville cdca6ac2a9 Get rid of warning flag which is a backwards compatibility hazard 2015-07-20 14:16:01 +02:00
aliaspider 5b6683bb93 (3DS) enable dynarec support, works only with ninjahax. 2015-04-08 10:20:32 +01:00
aliaspider 0fa650d589 force libco to compile with release CFLAGS
-O0 breaks it on some platforms.
2015-04-06 11:29:08 +01:00
aliaspider 33add4bad4 add a ctr(3ds) target. no dynarec for now. 2015-04-06 11:27:02 +01:00
sergiobenrocha2 cc31802c59 [ARM] Enable dynarec, works at least in rpi. 2015-03-14 00:59:39 -03:00
twinaphex d57f89f3f1 Add linux-portable target 2015-03-06 11:28:53 +01:00
Twinaphex 5b28007ceb (iOS) Use xcodebuild instead of xcrun 2015-02-28 03:31:42 +01:00
Sérgio Benjamim fb984fcaef [ARM]Fix build, disable dynarec for now. 2015-02-01 19:05:48 -02:00
twinaphex 9f81da3e2f (OSX) Updates 2015-02-01 06:23:04 +01:00
twinaphex f66824b7e5 (Theos iOS) Add Theos iOS target 2014-12-23 08:58:58 +01:00
twinaphex ee3a885f7c Make QNX target work with dynarec, etc. 2014-12-22 06:52:09 +01:00