summaryrefslogtreecommitdiffstats
path: root/src/core/arm/dyncom/arm_dyncom_trans.h
diff options
context:
space:
mode:
authorarchshift <gh@archshift.com>2016-06-11 04:02:02 +0200
committerarchshift <gh@archshift.com>2016-06-12 10:54:45 +0200
commitca20b1f87d87bd7059c90cfe064b4da4eae33199 (patch)
treed0435a5c4bb74316a6e71ff4ffb79f2d9e7de9e7 /src/core/arm/dyncom/arm_dyncom_trans.h
parentarm_dyncom_interpreter: slightly change AllocBuffer to be intuitive (diff)
downloadyuzu-ca20b1f87d87bd7059c90cfe064b4da4eae33199.tar
yuzu-ca20b1f87d87bd7059c90cfe064b4da4eae33199.tar.gz
yuzu-ca20b1f87d87bd7059c90cfe064b4da4eae33199.tar.bz2
yuzu-ca20b1f87d87bd7059c90cfe064b4da4eae33199.tar.lz
yuzu-ca20b1f87d87bd7059c90cfe064b4da4eae33199.tar.xz
yuzu-ca20b1f87d87bd7059c90cfe064b4da4eae33199.tar.zst
yuzu-ca20b1f87d87bd7059c90cfe064b4da4eae33199.zip
Diffstat (limited to '')
-rw-r--r--src/core/arm/dyncom/arm_dyncom_trans.h (renamed from src/core/arm/dyncom/arm_dyncom_trans_struct.inc)35
1 files changed, 33 insertions, 2 deletions
diff --git a/src/core/arm/dyncom/arm_dyncom_trans_struct.inc b/src/core/arm/dyncom/arm_dyncom_trans.h
index 05139f00f..7af71f4e3 100644
--- a/src/core/arm/dyncom/arm_dyncom_trans_struct.inc
+++ b/src/core/arm/dyncom/arm_dyncom_trans.h
@@ -1,3 +1,18 @@
+struct ARMul_State;
+typedef unsigned int (*shtop_fp_t)(ARMul_State* cpu, unsigned int sht_oper);
+
+enum class TransExtData {
+ COND = (1 << 0),
+ NON_BRANCH = (1 << 1),
+ DIRECT_BRANCH = (1 << 2),
+ INDIRECT_BRANCH = (1 << 3),
+ CALL = (1 << 4),
+ RET = (1 << 5),
+ END_OF_PAGE = (1 << 6),
+ THUMB = (1 << 7),
+ SINGLE_STEP = (1 << 8)
+};
+
struct arm_inst {
unsigned int idx;
unsigned int cond;
@@ -456,7 +471,23 @@ struct pkh_inst {
};
// Floating point VFPv3 structures
-
#define VFP_INTERPRETER_STRUCT
#include "core/arm/skyeye_common/vfp/vfpinstr.cpp"
-#undef VFP_INTERPRETER_STRUCT \ No newline at end of file
+#undef VFP_INTERPRETER_STRUCT
+
+typedef void (*get_addr_fp_t)(ARMul_State *cpu, unsigned int inst, unsigned int &virt_addr);
+
+struct ldst_inst {
+ unsigned int inst;
+ get_addr_fp_t get_addr;
+};
+
+typedef arm_inst* ARM_INST_PTR;
+typedef ARM_INST_PTR (*transop_fp_t)(unsigned int, int);
+
+extern const transop_fp_t arm_instruction_trans[];
+extern const size_t arm_instruction_trans_len;
+
+#define TRANS_CACHE_SIZE (64 * 1024 * 2000)
+extern char trans_cache_buf[TRANS_CACHE_SIZE];
+extern size_t trans_cache_buf_top;