Flyinghead
8cb86de026
Make SMCCheck=Fast work on arm64
...
The issue is that flushing the dynarec cache makes rewriting fail for
the currently executing block. So this avoids flushing the cache too
often but the problem remains.
2019-05-28 19:40:30 +02:00
Flyinghead
51cf6cf271
regalloc: handle mem ops differently in wince mode
...
Flush all current writeback spans before the op
Flush instead of killing spans in case the mem access throws an
exception
Some optimizations
2019-05-28 19:37:24 +02:00
Flyinghead
c6e92028f2
regalloc: cleanup. no functional change
2019-05-27 22:44:51 +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
e7e387b443
wince: enable/disable vmem32 based on mmu state
2019-05-24 18:19:33 +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
5b7d07315b
wince: clean up unused stuff
2019-05-22 15:15:53 +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
flyinghead
66cbc0acf6
wince: dynarec boost 1.2 -> 1.5
2019-05-15 15:26:08 +02:00
Flyinghead
2434d0183e
wince: better sh4 instr cycle counting. Don't hash blocks if mmu on
...
Use actual instr latency cycles, including fp instr
Decrease the WinCE boost ratio to 1.2
Don't hash blocks when mmu on
2019-05-14 12:38:56 +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
David Guillen Fandos
3b760f9869
Add FEAT_NO_RWX_PAGES and implement it for x64 CPU (Win and Linux)
...
Tested: Both with and without the feature, works only for x64 CPUs for
now, but supported in both windows and linux (see vmem implementation
for it, using mem-mapped files).
2019-05-12 22:02:57 +02:00
David Guillen Fandos
1a2b1c8672
Remove traces of memory manager from Jit driver.
...
Still stuff to be removed in the Naomi file handler and the ARM
AREC, which need to get ported to the new vmem interface.
2019-05-12 19:47:11 +02:00
David Guillen Fandos
b74db6ef53
Moving vmem to separate files with a proper interface.
...
Works so far for Linux and Android, need to do some testing on Windows.
2019-05-11 22:09:52 +02:00
David Guillen Fandos
be1ecbaa8b
Fix TARGET_NO_NVMEM and deprecate TARGET_NO_EXCEPTIONS
...
Linked them both toghether since you can't really define one and
not the other (plus Linux honors one windows the other in some
cases).
More refactoring on this area to follow.
2019-05-10 18:57:28 +02:00
Flyinghead
810b8a59da
wince: 32-bit virtual mem space
...
use fast mem read/write for x64 and arm64 dynarecs
2019-04-29 18:23:00 +02:00
Flyinghead
6b78e1f879
fix dynarec regression
2019-04-28 20:41:39 +02:00
Flyinghead
553f6054ce
NO_MMU build fixes
2019-04-19 11:56:11 +02:00
Flyinghead
9920880987
dynarec: reserve code cache space for frequently changing blocks
...
detect frequent SMC check failures and use a specific code cache area
for these blocks.
flush the temp area when full but keep the main code cache area
2019-04-19 11:45:05 +02:00
Flyinghead
76348b13ce
wince: use cpu ratio of 2 in dynarec
2019-04-19 09:58:25 +02:00
Flyinghead
d82e5e2017
don't use mmu for dma
2019-04-18 22:48:37 +02:00
Flyinghead
0f34d776f6
wince: delete sr.FD hack, restore FD block check in x64 rec
...
use longjmp for interpreter fallback exceptions
2019-04-18 14:15:01 +02:00
Flyinghead
d68da6bdd4
wince: let fp disable exception run before compiling a block
2019-04-18 13:55:10 +02:00
Flyinghead
a25918839b
save fpu regs when sr.FD is set, and restore them when unset
2019-04-15 19:02:10 +02:00
Flyinghead
5d6e96463c
x64 and win32 build fixes
2019-04-15 18:31:15 +02:00
Flyinghead
dece3fc13e
wince: use setjmp/longjmp instead of try/catch for dynarecs
...
WinCE fast mmu implementation
WIP arm64 dynarec
2019-04-15 18:02:34 +02:00
david miller
cc9d5ec55b
CMake/Master working, tested on windows with Clang && MSC (x86,x64)
2019-04-12 16:59:39 -04:00
David Miller
3d1b82854e
Merge branch 'master' into fh/win32-winresize
2019-04-12 13:03:30 -04:00
Flyinghead
1b04ef4cb1
Get rid of RTC in settings
2019-04-08 22:09:22 +02:00
flyinghead
7f0489ff28
visual studio compatibility
...
no modem support
no zip or 7z support so no naomi for now
hacked a .asm file as vs doesn't support inline assembly -> code dup
2019-03-30 19:26:05 +01:00
Flyinghead
505c5b6c4d
dynarec: FullCheck was being ignored and FastCheck used instead
...
Fix crash on arm32
Fix infinite loop on x64
2019-03-30 10:06:19 +01:00
Stefanos Kornilios Mitsis Poiitidis
af6993a819
dynarec: Refactor smc-option a bit
2019-03-30 07:16:44 +01:00
Flyinghead
6438a402df
dynarec: add option to control smc code checks: none, fast, full
2019-03-29 19:23:37 +01:00
Flyinghead
c809c6c56f
Merge branch 'fh/mymaster' into fh/master-merge
2019-03-25 16:47:47 +01:00
Flyinghead
ba00da2420
dynarec: don't throw exceptions if NO_MMU
2019-03-25 13:53:49 +01:00
Flyinghead
cb6acab40f
missing file from previous commit
2019-03-25 11:56:41 +01:00
Flyinghead
ef43883fb5
dynarec: WinCE support WIP
...
Only for the x64 dynarec atm
Bugs remaining
2019-03-25 11:53:13 +01:00
Flyinghead
8564f497d4
sh4 interp: add IsFloatingPoint() to op desc. Add delay slot 0 hack
...
Add UsesFPU flag to floating point ops. Use flag instead of specific
test cases in op handlers.
Adjust thrown exception in delay slot (slot illegal exception and slot
fpu disable)
Re-add delay slot 0 hack (Looney Tunes Space Race)
2019-03-20 13:45:35 +01:00
Flyinghead
d0f65b19d3
mmu: templatize mmu_full_lookup
2019-03-20 10:58:59 +01:00
Flyinghead
a21eedc88a
implement fpu disable exception and other interp and mmu fixes
...
implement sh4 fpu disable exception
implement assistance/PTEA MMU registers
fix some sh4 ops with side effect in interpreter
account for delay slot op cycles
avoid any side effect when using wince tracer
extract SH4_TIMESLICE to single header file (still not used by arm and
x86 recs)
2019-03-19 21:35:55 +01:00
Flyinghead
9e2938dff4
mmu: state change wasn't detected. WinCE syscalls tracing
2019-03-17 23:46:39 +01:00
Flyinghead
73d50486d5
mmu: dynamic switching with read/write mem function pointers
2019-03-17 22:59:18 +01:00
Flyinghead
e5b18cd8a0
wince: implement pref SQ to YUV converter and 32bit vram
...
implement incremental YUV conversion with pref SQ
implement access to 32bit VRAM with pref SQ
init YUV converter when TA_YUV_TEX_CTRL is set
set FIFO available space to 256 through SB_TFREM reg
fake FIFO status through SB_FFST reg
2019-03-14 21:35:33 +01:00
Flyinghead
89c2fd54a9
fix function name typo
2019-03-13 20:04:14 +01:00
Flyinghead
f4568ace3c
backport disassembler missing piece from nulldc
2019-03-13 17:48:21 +01:00
Flyinghead
e6d67baf02
sh4 sched: avoid error when jitter is high and delta becomes negative
2019-03-13 17:21:52 +01:00
Flyinghead
6305df9dab
ignore fldi0/fldi1 in double precision instead of dying
2019-03-13 17:19:41 +01:00
Flyinghead
6d6492ddc1
mmu: flush tables when MMUCR.TI is written
2019-03-13 17:17:08 +01:00