Make tb_alloc static

This function is only used within exec.c, so no need to make it public.

Signed-off-by: Tristan Gingold <gingold@adacore.com>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
This commit is contained in:
Tristan Gingold 2011-02-10 10:04:57 +01:00 committed by Aurelien Jarno
parent 6c5f738dae
commit d1a1eb7472
2 changed files with 26 additions and 27 deletions

View File

@ -180,7 +180,6 @@ static inline unsigned int tb_phys_hash_func(tb_page_addr_t pc)
return (pc >> 2) & (CODE_GEN_PHYS_HASH_SIZE - 1); return (pc >> 2) & (CODE_GEN_PHYS_HASH_SIZE - 1);
} }
TranslationBlock *tb_alloc(target_ulong pc);
void tb_free(TranslationBlock *tb); void tb_free(TranslationBlock *tb);
void tb_flush(CPUState *env); void tb_flush(CPUState *env);
void tb_link_page(TranslationBlock *tb, void tb_link_page(TranslationBlock *tb,

52
exec.c
View File

@ -649,6 +649,32 @@ void cpu_exec_init(CPUState *env)
#endif #endif
} }
/* Allocate a new translation block. Flush the translation buffer if
too many translation blocks or too much generated code. */
static TranslationBlock *tb_alloc(target_ulong pc)
{
TranslationBlock *tb;
if (nb_tbs >= code_gen_max_blocks ||
(code_gen_ptr - code_gen_buffer) >= code_gen_buffer_max_size)
return NULL;
tb = &tbs[nb_tbs++];
tb->pc = pc;
tb->cflags = 0;
return tb;
}
void tb_free(TranslationBlock *tb)
{
/* In practice this is mostly used for single use temporary TB
Ignore the hard cases and just back up if this TB happens to
be the last one generated. */
if (nb_tbs > 0 && tb == &tbs[nb_tbs - 1]) {
code_gen_ptr = tb->tc_ptr;
nb_tbs--;
}
}
static inline void invalidate_page_bitmap(PageDesc *p) static inline void invalidate_page_bitmap(PageDesc *p)
{ {
if (p->code_bitmap) { if (p->code_bitmap) {
@ -1226,32 +1252,6 @@ static inline void tb_alloc_page(TranslationBlock *tb,
#endif /* TARGET_HAS_SMC */ #endif /* TARGET_HAS_SMC */
} }
/* Allocate a new translation block. Flush the translation buffer if
too many translation blocks or too much generated code. */
TranslationBlock *tb_alloc(target_ulong pc)
{
TranslationBlock *tb;
if (nb_tbs >= code_gen_max_blocks ||
(code_gen_ptr - code_gen_buffer) >= code_gen_buffer_max_size)
return NULL;
tb = &tbs[nb_tbs++];
tb->pc = pc;
tb->cflags = 0;
return tb;
}
void tb_free(TranslationBlock *tb)
{
/* In practice this is mostly used for single use temporary TB
Ignore the hard cases and just back up if this TB happens to
be the last one generated. */
if (nb_tbs > 0 && tb == &tbs[nb_tbs - 1]) {
code_gen_ptr = tb->tc_ptr;
nb_tbs--;
}
}
/* add a new TB and link it to the physical page tables. phys_page2 is /* add a new TB and link it to the physical page tables. phys_page2 is
(-1) to indicate that only one page contains the TB. */ (-1) to indicate that only one page contains the TB. */
void tb_link_page(TranslationBlock *tb, void tb_link_page(TranslationBlock *tb,