Flyinghead
62085539a7
dynarec: reg alloc 64-bit regs. avoid some interpreter fallbacks
...
Option to reg alloc 64-bit regs in two host regs. Used when FPSCR.SZ ==
1 (64-bit reg and memory transfers.) Enabled for arm, arm64 and x64
(windows only) dynarecs.
Don't fallback to interpreter when FPSCR.PR==1 (double precision) for
FMOV, FLDS and FLTS.
2022-12-23 16:06:54 +01:00
Flyinghead
599bc8a823
arm64 dynarec: need up to 5 ops for mem accesses
...
Issue #837
2022-12-22 14:55:42 +01:00
Flyinghead
2800927fa1
arm64 dynarec: can't rely on faultAddress with 512 MB vmem
...
Use x0 instead
2022-12-16 20:40:23 +01:00
Flyinghead
32e3e7d9c5
vmem: no more 4GB vmem mode. only map elan RAM in naomi2 mode
...
Do not attempt to reserve 4GM of virtual space on 64-bit hosts. Use
512MB everywhere.
Don't map elan RAM if not needed and dont protect/unprotect it in
memwatch.
2022-12-09 17:37:49 +01:00
scribam
f6532ca27a
fix some warnings
2022-11-19 12:52:26 +01:00
Flyinghead
bc3be1029c
fix sh4 scheduler. use common cycle counter in sh4 context
...
scheduler reset and unregister
schedule requests during reset(), not init()
preserve cntx.sh4_sched_next on sh4 reset
Use cntx.cycle_counter in dynarecs and interpreter
Fixes Confidential Mission hang at boot with HLE
2021-10-07 16:18:32 +02:00
Flyinghead
77e7c25e9c
iOS support. Work in progress
2021-08-06 10:30:30 +02:00
Flyinghead
6bb4575c95
Merge remote-tracking branch 'origin/master' into libretro
2021-08-05 18:17:30 +02:00
Flyinghead
9d6c548730
naomi: close cart on reset. sh4: replace some verify by throw
...
Close naomi/aw cart on reset. Reset input mapping/button names
Get rid of ngen_GetFeatures()
throw exception instead of failing verify if not internal error
catch sh4 exceptions in dynarecs and throw fatal error
2021-08-03 09:47:13 +02:00
Flyinghead
7561ce753a
unwind info for arm64. use static c++ lib for android
...
include oboe static libs
get rid of old regalloc
2021-07-29 17:46:46 +02:00
vkedwardli
3c483c61e7
Support Apple Silicon (macOS ARM Universal Binary) ( #253 )
...
* Add audio arm64 cpp into Xcode project
* Build universal binary for SDL2 also
* Add vixl aarch64 dependency + build arm64 in cmake
* hardcode pagesize for M1 CPU
* Use `MAP_JIT` and toggle between RX and RW
* add pthread.h for cmake
* Disable audio dynarec temporary
* Enable aica arm dynarec
* Supports `br` with condition
* Dynamic linker flag for libSDL2.a since Homebrew path is different on arm (for xcodeproj)
* Fallback path for Intel
* de-dup for arm64, allow cross compilation on both Intel and Apple Silicon Mac
* Rename WriteProtect() to JITWriteProtect(), Move JITWriteProtect from arm7_rec to arm7_rec_arm64
* Remove CodeCache memset
* Remove keyboard_device.cpp from xcodeproj
* Use hard tab
* Update libchdr to support compiling on M1 (thanks @scribam)
2021-07-23 22:34:12 +02:00
Flyinghead
de060d66ab
don't save flash if no game started. libretro: fix notifications
...
compilation warnings, non-functional changes
2021-07-20 19:21:11 +02:00
Flyinghead
8dee648d01
arm64 rec: put ngen_FailedToFindBlock at a fixed address
...
transitioning to MMU will fail it this function's address changes
happens if vmem is disabled (switch)
2021-07-14 21:03:02 +02:00
scribam
d6545b253b
Misc cleanup
2021-06-06 11:15:06 +02:00
Flyinghead
373dffc65a
wince: ditch vmem32. use address LUT in dynarec. finer grained flush
2021-05-17 11:59:34 +02:00
Flyinghead
025b447a9c
arm32: replace old arm emitter with vixl
2021-05-15 11:41:00 +02:00
Flyinghead
1464c02903
mmu: add address cache to mem slow path. better fastmmu hashtable.
...
mmu: add address cache to Read/WriteMemNoEx
fastmmu: ignore 1k pages. optimize hashtable
get rid of NO_MMU
2021-05-14 19:03:57 +02:00
Flyinghead
e2f309b5cc
arm64: store queue write dynarec optimization
2021-03-29 14:26:55 +02:00
Flyinghead
5e619a70d4
arm64: fix crash with HLE bios. Set nav bar to tranparent (android 10)
...
arm64 dynarec main loop and handlers were generated twice
Fix nav bar background leftover on android 10
2021-03-14 17:54:57 +01:00
C.W. Betts
3c8a2f2372
Don't compile rec_arm64 on non ARM64 machines.
...
Include header in posix_vmem that makes calls to sys_cache_control compile on Mac ARM64.
Replaces flyinghead#184
2021-03-03 00:57:53 -07:00
Flyinghead
424736961b
arm64: get rid of inline assembler
2021-03-02 20:35:59 +01:00
Flyinghead
0c8815549c
Merge branch 'fh/x64-arm-jit'
...
# Conflicts:
# core/hw/aica/aica.cpp
# core/nullDC.cpp
2021-03-02 19:42:15 +01:00
Flyinghead
bbcfc8354a
arm64: dynarec crash with wince games using temp blocks
...
Issue #185
2021-02-25 10:50:31 +01:00
Flyinghead
8e22116a17
arm64 rec: get rid of setjmp()
2021-01-31 11:55:22 +01:00
Flyinghead
80782475da
x64 rec: get rid of setjmp. standardize ngen_Rewrite/HandleException
...
move rewrite code from exception handlers to x86/x64 dynarecs
use same host context info on linux/win
x64: stack alignment issue in mem handlers
2021-01-30 16:14:44 +01:00
Flyinghead
882e14f13f
aica: x64 jit for arm
...
aica arm x86: use pc-relative addressing to access arm registers
OSX project fix
arm7: add simple ldm/stm handling. optimize arm32 and x64 recs
update CMakeLists.txt and Makefile. finish rebase
2021-01-26 21:32:43 +01:00
flyinghead
c344903a23
new x86 dynarec. Enable for android
...
refactor common code between x64 and x86 dynarecs.
x86 rewrite based on the x64 one
some discarded dyna blocks weren't fully unlinked
2021-01-26 13:16:48 +01:00
flyinghead
e5b3c5268b
wince: attempt immediate read/write when address isn't translated
2021-01-07 19:18:53 +01:00
Flyinghead
2c54dfd132
arm64: check CpuRunning at end of each timeslice. clean up
...
fixes hang when exiting service menu in kofnw
2020-04-24 19:56:38 +02:00
scribam
e99aac3575
Remove "using namespace std;"
2020-03-30 23:00:43 +02:00
Flyinghead
4fa18dbaea
arm64: fix xtrct dynarec implementation
...
Fixes Speed Devils issues
2020-01-09 13:25:31 +01:00
Flyinghead
9d3ee3b57f
dyna: get rid of SmcCheckLevel options. Fix rec-cpp
...
Block check is now full or off depending on block protection
rec-cpp: Add missing opcode call classes and allow for immediate args
2019-09-29 18:18:46 +02:00
Flyinghead
106dfc3f71
Add Discord link. non-functional changes
2019-09-27 22:00:52 +02:00
Flyinghead
419785b929
arm64: support for 64b immediate memory reads
2019-09-27 14:40:47 +02:00
Flyinghead
91a753f224
Fix naked functions for GCC
2019-07-30 12:40:34 +02:00
Flyinghead
be5aca66e1
cfg,dynarecs,reios: use new logging
2019-07-01 18:23:10 +02:00
Flyinghead
871260cfcf
naomi: better error handling when loading a gdrom
...
x64 and arm64 dynarecs: Support 64-bit immediate readm (ninjaslt)
2019-06-26 19:06:30 +02:00
Flyinghead
0b8a312fea
rec-arm64: simplify read/write mem rewrite logic
...
pass exception pc in x2 reg for both slow/fast paths
infer the op type and size from the armv8 op encoding
rewrite doesn't need access to the block anymore
add support for some imm args
2019-06-18 15:07:32 +02:00
Flyinghead
8819c9d536
arm64: handle pref with imm arg. some refactoring
2019-06-10 14:35:27 +02:00
Flyinghead
3dd16e80d2
arm64 and x64 recs use ssa regalloc
2019-06-10 13:57:10 +02:00
Flyinghead
b8a00b9c7d
rec-arm64/x64: only do regalloc on rewrite when needed
2019-05-28 20:03:08 +02:00
Flyinghead
cafd1c3c49
rec-arm64: do a full regalloc when rewriting mem access in mmu mode
2019-05-28 19:43:17 +02:00
Flyinghead
5b2cef3fdd
dynarec: add negc and xtrct op codes
...
native implementation of negc and xtrct for x64 and arm64
rec-arm64: pass exception pc in w27 instead of sh4 context
inline mmu_intruction_translation() and clean up
2019-05-26 13:30:05 +02:00
Flyinghead
2c91ca96fc
rec-arm64: fix transitions to/from mmu
...
exit mainloop() before regenerating it
make sure dynarec cache is cleared between runs
when deserializing, clear dynarec cache after setting mmu state
2019-05-25 18:03:18 +02:00
Flyinghead
cc4b59f5fa
rec-arm64: generate main loop dynamically
...
different code for mmu vs. !mmu
Switching mmu state not yet supported
2019-05-24 18:18:32 +02:00
Flyinghead
e3d95f2258
wince: unify _vmem and vmem32. Use 4GB virtual space on 64-bit arch
...
On 64-bit architectures, _vmem first tries to allocate 4GB then falls
back to 512 MB.
The same virtual space is now used by _vmem and vmem32 (mmu)
2019-05-23 11:40:33 +02:00
Flyinghead
c2c0215e1b
Merge remote-tracking branch 'origin/master' into fh/wince-dynarec
2019-05-22 14:13:00 +02:00
Flyinghead
fb76efb08d
Standard functions for virtual mem alloc/protect/map/...
2019-05-22 11:41:12 +02:00
David Guillen Fandos
3463872fdf
Fix small clang build issue.
2019-05-13 01:35:40 +02:00
David Guillen Fandos
65e2218792
Fix ARM64 rewrites with NO_RWX_PAGES
...
Tested on nvidia jetson and Android, so far works great.
2019-05-13 00:23:18 +02:00