cpu-exec: add a new CF_USE_ICOUNT cflag
Signed-off-by: Pavel Dovgalyuk <pavel.dovgaluk@ispras.ru> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
69b058c881
commit
0266359e57
|
@ -142,10 +142,12 @@ struct TranslationBlock {
|
||||||
uint64_t flags; /* flags defining in which context the code was generated */
|
uint64_t flags; /* flags defining in which context the code was generated */
|
||||||
uint16_t size; /* size of target code for this block (1 <=
|
uint16_t size; /* size of target code for this block (1 <=
|
||||||
size <= TARGET_PAGE_SIZE) */
|
size <= TARGET_PAGE_SIZE) */
|
||||||
uint16_t cflags; /* compile flags */
|
uint16_t icount;
|
||||||
|
uint32_t cflags; /* compile flags */
|
||||||
#define CF_COUNT_MASK 0x7fff
|
#define CF_COUNT_MASK 0x7fff
|
||||||
#define CF_LAST_IO 0x8000 /* Last insn may be an IO access. */
|
#define CF_LAST_IO 0x8000 /* Last insn may be an IO access. */
|
||||||
#define CF_NOCACHE 0x10000 /* To be freed after execution */
|
#define CF_NOCACHE 0x10000 /* To be freed after execution */
|
||||||
|
#define CF_USE_ICOUNT 0x20000
|
||||||
|
|
||||||
void *tc_ptr; /* pointer to the translated code */
|
void *tc_ptr; /* pointer to the translated code */
|
||||||
/* next matching tb for physical address. */
|
/* next matching tb for physical address. */
|
||||||
|
@ -169,7 +171,6 @@ struct TranslationBlock {
|
||||||
jmp_first */
|
jmp_first */
|
||||||
struct TranslationBlock *jmp_next[2];
|
struct TranslationBlock *jmp_next[2];
|
||||||
struct TranslationBlock *jmp_first;
|
struct TranslationBlock *jmp_first;
|
||||||
uint32_t icount;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#include "exec/spinlock.h"
|
#include "exec/spinlock.h"
|
||||||
|
|
|
@ -1045,6 +1045,9 @@ TranslationBlock *tb_gen_code(CPUState *cpu,
|
||||||
int code_gen_size;
|
int code_gen_size;
|
||||||
|
|
||||||
phys_pc = get_page_addr_code(env, pc);
|
phys_pc = get_page_addr_code(env, pc);
|
||||||
|
if (use_icount) {
|
||||||
|
cflags |= CF_USE_ICOUNT;
|
||||||
|
}
|
||||||
tb = tb_alloc(pc);
|
tb = tb_alloc(pc);
|
||||||
if (!tb) {
|
if (!tb) {
|
||||||
/* flush must be done */
|
/* flush must be done */
|
||||||
|
|
Loading…
Reference in a new issue