reduce scope of stuff with different definitions across CPUs (nw)

This commit is contained in:
Vas Crabb 2018-03-20 18:05:59 +11:00
parent 1235cf9fd2
commit 2608228e81
2 changed files with 50 additions and 35 deletions

View File

@ -34,18 +34,6 @@
#define MAPVAR_PC M0 #define MAPVAR_PC M0
#define MAPVAR_CYCLES M1 #define MAPVAR_CYCLES M1
/* compilation boundaries -- how far back/forward does the analysis extend? */
#define COMPILE_BACKWARDS_BYTES 128
#define COMPILE_FORWARDS_BYTES 512
#define COMPILE_MAX_INSTRUCTIONS ((COMPILE_BACKWARDS_BYTES/4) + (COMPILE_FORWARDS_BYTES/4))
#define COMPILE_MAX_SEQUENCE 64
/* exit codes */
#define EXECUTE_OUT_OF_CYCLES 0
#define EXECUTE_MISSING_CODE 1
#define EXECUTE_UNMAPPED_CODE 2
#define EXECUTE_RESET_CACHE 3
#define E132XS_STRICT_VERIFY 0x0001 /* verify all instructions */ #define E132XS_STRICT_VERIFY 0x0001 /* verify all instructions */
#define SINGLE_INSTRUCTION_MODE (1) #define SINGLE_INSTRUCTION_MODE (1)
@ -144,7 +132,26 @@ public:
void e132_16k_iram_map(address_map &map); void e132_16k_iram_map(address_map &map);
void e132_4k_iram_map(address_map &map); void e132_4k_iram_map(address_map &map);
void e132_8k_iram_map(address_map &map); void e132_8k_iram_map(address_map &map);
protected: protected:
// compilation boundaries -- how far back/forward does the analysis extend?
enum : u32
{
COMPILE_BACKWARDS_BYTES = 128,
COMPILE_FORWARDS_BYTES = 512,
COMPILE_MAX_INSTRUCTIONS = (COMPILE_BACKWARDS_BYTES / 4) + (COMPILE_FORWARDS_BYTES / 4),
COMPILE_MAX_SEQUENCE = 64
};
// exit codes
enum : int
{
EXECUTE_OUT_OF_CYCLES = 0,
EXECUTE_MISSING_CODE = 1,
EXECUTE_UNMAPPED_CODE = 2,
EXECUTE_RESET_CACHE = 3
};
struct internal_hyperstone_state struct internal_hyperstone_state
{ {
// CPU registers // CPU registers

View File

@ -32,35 +32,20 @@
/* speed up delay loops, bail out of tight loops (can cause timer issues) */ /* speed up delay loops, bail out of tight loops (can cause timer issues) */
#define BUSY_LOOP_HACKS 0 #define BUSY_LOOP_HACKS 0
/* compilation boundaries -- how far back/forward does the analysis extend? */ #define SH2DRC_STRICT_VERIFY 0x0001 /* verify all instructions */
#define COMPILE_BACKWARDS_BYTES 64
#define COMPILE_FORWARDS_BYTES 256
#define COMPILE_MAX_INSTRUCTIONS ((COMPILE_BACKWARDS_BYTES/2) + (COMPILE_FORWARDS_BYTES/2))
#define COMPILE_MAX_SEQUENCE 64
#define SH2DRC_STRICT_VERIFY 0x0001 /* verify all instructions */
#define SH2DRC_FLUSH_PC 0x0002 /* flush the PC value before each memory access */ #define SH2DRC_FLUSH_PC 0x0002 /* flush the PC value before each memory access */
#define SH2DRC_STRICT_PCREL 0x0004 /* do actual loads on MOVLI/MOVWI instead of collapsing to immediates */ #define SH2DRC_STRICT_PCREL 0x0004 /* do actual loads on MOVLI/MOVWI instead of collapsing to immediates */
#define SH2DRC_COMPATIBLE_OPTIONS (SH2DRC_STRICT_VERIFY | SH2DRC_FLUSH_PC | SH2DRC_STRICT_PCREL) #define SH2DRC_COMPATIBLE_OPTIONS (SH2DRC_STRICT_VERIFY | SH2DRC_FLUSH_PC | SH2DRC_STRICT_PCREL)
#define SH2DRC_FASTEST_OPTIONS (0) #define SH2DRC_FASTEST_OPTIONS (0)
/* size of the execution code cache */
#define CACHE_SIZE (32 * 1024 * 1024)
#define SH2_MAX_FASTRAM 4 #define SH2_MAX_FASTRAM 4
/* map variables */ /* map variables */
#define MAPVAR_PC M0 #define MAPVAR_PC M0
#define MAPVAR_CYCLES M1 #define MAPVAR_CYCLES M1
/* exit codes */ #define PROBE_ADDRESS ~0
#define EXECUTE_OUT_OF_CYCLES 0
#define EXECUTE_MISSING_CODE 1
#define EXECUTE_UNMAPPED_CODE 2
#define EXECUTE_RESET_CACHE 3
#define PROBE_ADDRESS ~0
#define CPU_TYPE_SH1 (0) #define CPU_TYPE_SH1 (0)
#define CPU_TYPE_SH2 (1) #define CPU_TYPE_SH2 (1)
@ -79,12 +64,12 @@
#define SH_FLAGS (SH_M|SH_Q|SH_I|SH_S|SH_T) #define SH_FLAGS (SH_M|SH_Q|SH_I|SH_S|SH_T)
#define REGFLAG_R(n) (1 << (n)) #define REGFLAG_R(n) (1 << (n))
/* register flags 1 */ /* register flags 1 */
#define REGFLAG_PR (1 << 0) #define REGFLAG_PR (1 << 0)
#define REGFLAG_MACL (1 << 1) #define REGFLAG_MACL (1 << 1)
#define REGFLAG_MACH (1 << 2) #define REGFLAG_MACH (1 << 2)
#define REGFLAG_GBR (1 << 3) #define REGFLAG_GBR (1 << 3)
#define REGFLAG_VBR (1 << 4) #define REGFLAG_VBR (1 << 4)
#define REGFLAG_SR (1 << 5) #define REGFLAG_SR (1 << 5)
@ -94,8 +79,8 @@
***************************************************************************/ ***************************************************************************/
#define SH2_CODE_XOR(a) ((a) ^ NATIVE_ENDIAN_VALUE_LE_BE(2,0)) // sh2 #define SH2_CODE_XOR(a) ((a) ^ NATIVE_ENDIAN_VALUE_LE_BE(2,0)) // sh2
#define SH34LE_CODE_XOR(a) ((a) ^ NATIVE_ENDIAN_VALUE_LE_BE(0,6)) // naomi #define SH34LE_CODE_XOR(a) ((a) ^ NATIVE_ENDIAN_VALUE_LE_BE(0,6)) // naomi
#define SH34BE_CODE_XOR(a) ((a) ^ NATIVE_ENDIAN_VALUE_LE_BE(6,0)) // cave #define SH34BE_CODE_XOR(a) ((a) ^ NATIVE_ENDIAN_VALUE_LE_BE(6,0)) // cave
#define R32(reg) m_regmap[reg] #define R32(reg) m_regmap[reg]
@ -167,6 +152,29 @@ public:
virtual void WL(offs_t A, uint32_t V) = 0; virtual void WL(offs_t A, uint32_t V) = 0;
protected: protected:
// compilation boundaries -- how far back/forward does the analysis extend?
enum : u32
{
COMPILE_BACKWARDS_BYTES = 64,
COMPILE_FORWARDS_BYTES = 256,
COMPILE_MAX_INSTRUCTIONS = (COMPILE_BACKWARDS_BYTES / 2) + (COMPILE_FORWARDS_BYTES / 2),
COMPILE_MAX_SEQUENCE = 64
};
// size of the execution code cache
enum : size_t
{
CACHE_SIZE = 32 * 1024 * 1024
};
// exit codes
enum : int
{
EXECUTE_OUT_OF_CYCLES = 0,
EXECUTE_MISSING_CODE = 1,
EXECUTE_UNMAPPED_CODE = 2,
EXECUTE_RESET_CACHE = 3
};
void ADD(uint32_t m, uint32_t n); void ADD(uint32_t m, uint32_t n);
void ADDI(uint32_t i, uint32_t n); void ADDI(uint32_t i, uint32_t n);