cpu-exec: add a new CF_USE_ICOUNT cflag

Backports commit 0266359e57987d6be53fbcb885f2dd39c1dae940 from qemu
This commit is contained in:
Paolo Bonzini 2018-02-16 08:42:01 -05:00 committed by Lioncash
parent ac46898b3c
commit cab4c979f0
No known key found for this signature in database
GPG key ID: 4E3C3CC1031BA9C7
2 changed files with 7 additions and 2 deletions

View file

@ -190,10 +190,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. */
@ -217,7 +219,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;
}; };
typedef struct TBContext TBContext; typedef struct TBContext TBContext;

View file

@ -1100,6 +1100,10 @@ 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);
/* UNICORN: Commented out
if (use_icount) {
cflags |= CF_USE_ICOUNT;
}*/
tb = tb_alloc(env->uc, pc); tb = tb_alloc(env->uc, pc);
if (!tb) { if (!tb) {
/* flush must be done */ /* flush must be done */