diff options
author | Vas Crabb <vas@vastheman.com> | 2018-03-22 19:54:39 +1100 |
---|---|---|
committer | Vas Crabb <vas@vastheman.com> | 2018-03-22 20:05:41 +1100 |
commit | d4b59a799472f9ddc68f86a7dc40c0b392ac1f85 (patch) | |
tree | 549c1c0d0f907ce35ecbbb941eed3c429921877a | |
parent | 53b83781b4a710114a8a211d996429e95d08c9f1 (diff) |
cherry-pick more boilerplate, also missing emu.h inclusions (nw)
-rw-r--r-- | src/devices/cpu/dsp16/dsp16core.cpp | 1 | ||||
-rw-r--r-- | src/devices/cpu/dsp16/dsp16rc.cpp | 32 | ||||
-rw-r--r-- | src/devices/cpu/dsp16/dsp16rc.h | 1 |
3 files changed, 33 insertions, 1 deletions
diff --git a/src/devices/cpu/dsp16/dsp16core.cpp b/src/devices/cpu/dsp16/dsp16core.cpp index 53fb2eca4cd..ddf96e87777 100644 --- a/src/devices/cpu/dsp16/dsp16core.cpp +++ b/src/devices/cpu/dsp16/dsp16core.cpp @@ -6,6 +6,7 @@ ***************************************************************************/ +#include "emu.h" #include "dsp16core.h" diff --git a/src/devices/cpu/dsp16/dsp16rc.cpp b/src/devices/cpu/dsp16/dsp16rc.cpp index 42d174df3e7..ac106b8da14 100644 --- a/src/devices/cpu/dsp16/dsp16rc.cpp +++ b/src/devices/cpu/dsp16/dsp16rc.cpp @@ -17,6 +17,8 @@ calculate them on-demand rather than preemptively. * The same code will rarely be run with different AUC modes, so it's cheaper to make assumptions and recompile if they break. + * The SIO and PIO modes are rarely changed, so we can invalidate the + entire cache when this happens. There are some more complex optimisations that give good gains: * Multiplication is free with F1, so code will sometimes multiply @@ -26,7 +28,9 @@ ***************************************************************************/ +#include "emu.h" #include "dsp16rc.h" +#include "dsp16core.h" #include "cpu/drcumlsh.h" @@ -41,8 +45,34 @@ dsp16_device_base::recompiler::recompiler(dsp16_device_base &host, u32 flags) , m_frontend(host, COMPILE_BACKWARDS_BYTES, COMPILE_FORWARDS_BYTES, COMPILE_MAX_SEQUENCE) , m_uml(host, host.m_drc_cache, flags, 2, 16, 0) { + m_uml.symbol_add(&m_core.xaau_pc, sizeof(m_core.xaau_pc), "pc"); + m_uml.symbol_add(&m_core.xaau_pt, sizeof(m_core.xaau_pt), "pt"); + m_uml.symbol_add(&m_core.xaau_pr, sizeof(m_core.xaau_pr), "pr"); + m_uml.symbol_add(&m_core.xaau_pi, sizeof(m_core.xaau_pi), "pi"); + m_uml.symbol_add(&m_core.xaau_i, sizeof(m_core.xaau_i), "i"); + + m_uml.symbol_add(&m_core.yaau_r[0], sizeof(m_core.yaau_r[0]), "r0"); + m_uml.symbol_add(&m_core.yaau_r[1], sizeof(m_core.yaau_r[1]), "r1"); + m_uml.symbol_add(&m_core.yaau_r[2], sizeof(m_core.yaau_r[2]), "r2"); + m_uml.symbol_add(&m_core.yaau_r[3], sizeof(m_core.yaau_r[3]), "r3"); + m_uml.symbol_add(&m_core.yaau_rb, sizeof(m_core.yaau_rb), "rb"); + m_uml.symbol_add(&m_core.yaau_re, sizeof(m_core.yaau_re), "re"); + m_uml.symbol_add(&m_core.yaau_j, sizeof(m_core.yaau_j), "j"); + m_uml.symbol_add(&m_core.yaau_k, sizeof(m_core.yaau_k), "k"); + + m_uml.symbol_add(&m_core.dau_x, sizeof(m_core.dau_x), "x"); + m_uml.symbol_add(&m_core.dau_y, sizeof(m_core.dau_y), "y"); + m_uml.symbol_add(&m_core.dau_p, sizeof(m_core.dau_p), "p"); + m_uml.symbol_add(&m_core.dau_a[0], sizeof(m_core.dau_a[0]), "a0"); + m_uml.symbol_add(&m_core.dau_a[1], sizeof(m_core.dau_a[1]), "a1"); + m_uml.symbol_add(&m_core.dau_c[0], sizeof(m_core.dau_c[0]), "c0"); + m_uml.symbol_add(&m_core.dau_c[1], sizeof(m_core.dau_c[1]), "c1"); + m_uml.symbol_add(&m_core.dau_c[2], sizeof(m_core.dau_c[2]), "c2"); + m_uml.symbol_add(&m_core.dau_auc, sizeof(m_core.dau_auc), "auc"); + m_uml.symbol_add(&m_core.dau_psw, sizeof(m_core.dau_psw), "psw"); + m_uml.symbol_add(&m_core.dau_temp, sizeof(m_core.dau_temp), "temp"); + (void)m_host; - (void)m_core; } dsp16_device_base::recompiler::~recompiler() diff --git a/src/devices/cpu/dsp16/dsp16rc.h b/src/devices/cpu/dsp16/dsp16rc.h index 76fc921c77e..c3078dc64c3 100644 --- a/src/devices/cpu/dsp16/dsp16rc.h +++ b/src/devices/cpu/dsp16/dsp16rc.h @@ -33,6 +33,7 @@ private: COMPILE_MAX_SEQUENCE = 64 }; + // exit codes for recompiled blocks enum : int { EXEC_OUT_OF_CYCLES, |