Files
qemu-xteink/tcg/wasm32.h
T

92 lines
2.3 KiB
C

#ifndef TCG_WASM32_H
#define TCG_WASM32_H
struct wasmContext {
// 0
CPUArchState *env;
// 4
uint64_t *stack;
// 8
uint32_t *tb_ptr;
// 12
uint32_t *tci_tb_ptr;
// 16
uint32_t do_init;
// 20
uint32_t done_flag;
// 24
uint64_t *stack128;
// 28
uint32_t unwinding;
// 32
uint32_t tlb_guard_lo;
// 36
uint32_t tlb_guard_hi;
// 40
uint32_t tlb_guard_on;
};
#define ENV_OFF 0
#define STACK_OFF 4
#define TB_PTR_OFF 8
#define HELPER_RET_TB_PTR_OFF 12
#define DO_INIT_OFF 16
#define DONE_FLAG_OFF 20
#define STACK128_OFF 24
#define UNWINDING_OFF 28
#define TLB_GUARD_LO_OFF 32
#define TLB_GUARD_HI_OFF 36
#define TLB_GUARD_ON_OFF 40
void set_done_flag();
void set_unwinding_flag();
int get_core_nums();
void remove_tb(void *tb_ptr);
void flush_tb_instances(void);
void init_wasm32();
void wasm_dump_module(const uint8_t *p, int len, const char *name);
/* TCG compiled-vs-TCI differential (debug, opt-in via wasm_diff_enable()).
* wasm_cur_tb_pc is the guest PC of the TB about to run, set by cpu_tb_exec. */
extern __thread uint64_t wasm_cur_tb_pc;
extern int wasm_diff_mode;
extern int wasm_store_tci_disabled;
extern int wasm_store_tci_hash;
extern int wasm_store_helper_tci;
extern int wasm_store_bisect_on;
extern int wasm_store_bisect_width;
extern uint64_t wasm_store_pc_lo;
extern uint64_t wasm_store_pc_hi;
extern uint64_t wasm_dump_pc_lo;
extern uint64_t wasm_dump_pc_hi;
extern uint32_t wasm_store_bisect_mask;
extern uint32_t wasm_store_bisect_val;
void wasm_disable_store_tci(void);
void wasm_set_store_tci_hash(int mode);
void wasm_set_store_helper_tci(void);
void wasm_set_store_bisect(int width, uint32_t mask, uint32_t val);
void wasm_set_store_pc_window(uint32_t lo, uint32_t hi);
void wasm_set_dump_pc_window(uint32_t lo, uint32_t hi);
void wasm_diff_enable(void);
void wasm_diff_enable2(void);
int wasm_diff_on(void);
int wasm_diff_needs_nochain(void);
int wasm_diff_needs_nochain_at(uint64_t pc);
void wasm_diff_register_tb(const void *rw_ptr, const void *rx_ptr, uint64_t pc,
bool has_store, bool safe_shadow);
bool wasm_diff_lookup_store_tb(const void *tb_ptr, uint64_t *pc);
bool wasm_diff_lookup_safe_tb(const void *tb_ptr);
extern __thread bool wasm_tci_only_tb;
#define INSTANTIATE_NUM 1500
#define WASM_TCI_ONLY_ENTRY (-2147483647 - 1)
#endif