3 #define MAXBLOCK 2048 // in mips instructions
5 #define NDHACK_NO_SMC_CHECK (1<<0)
6 #define NDHACK_GTE_UNNEEDED (1<<1)
7 #define NDHACK_GTE_NO_FLAGS (1<<2)
8 #define NDHACK_OVERRIDE_CYCLE_M (1<<3)
9 #define NDHACK_NO_STALLS (1<<4)
10 #define NDHACK_NO_COMPAT_HACKS (1<<5)
11 #define NDHACK_THREAD_FORCE (1<<6)
12 #define NDHACK_THREAD_FORCE_ON (1<<7)
20 int cycle_multiplier_old;
27 unsigned int busy_addr; // 0 is valid, ~0 == none
31 extern struct ndrc_globals ndrc_g;
33 void new_dynarec_init(void);
34 void new_dynarec_cleanup(void);
35 void new_dynarec_clear_full(void);
36 int new_dynarec_save_blocks(void *save, int size);
37 void new_dynarec_load_blocks(const void *save, int size);
38 void new_dynarec_print_stats(void);
40 int new_dynarec_quick_check_range(unsigned int start, unsigned int end);
41 void new_dynarec_invalidate_range(unsigned int start, unsigned int end);
42 void new_dynarec_invalidate_all_pages(void);
43 void new_dyna_clear_cache(void *start, void *end);
45 void new_dyna_start(void *context);
46 void new_dyna_start_at(void *context, void *compiled_code);
49 enum ndrc_compile_mode {
50 ndrc_cm_no_compile = 0,
51 ndrc_cm_compile_live, // from executing code, vaddr is the current pc
52 ndrc_cm_compile_offline,
53 ndrc_cm_compile_in_thread,
55 void *ndrc_get_addr_ht_param(struct ht_entry *ht, unsigned int vaddr,
56 enum ndrc_compile_mode compile_mode);
58 extern unsigned int ndrc_smrv_regs[32];