[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 13/26] accel/tcg: Merge tcg_exec_init into tcg_init_machine
From: |
Richard Henderson |
Subject: |
[PATCH 13/26] accel/tcg: Merge tcg_exec_init into tcg_init_machine |
Date: |
Wed, 10 Mar 2021 18:21:43 -0600 |
There is only one caller, and shortly we will need access
to the MachineState, which tcg_init_machine already has.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
accel/tcg/internal.h | 2 ++
include/sysemu/tcg.h | 2 --
accel/tcg/tcg-all.c | 14 +++++++++++++-
accel/tcg/translate-all.c | 21 ++-------------------
4 files changed, 17 insertions(+), 22 deletions(-)
diff --git a/accel/tcg/internal.h b/accel/tcg/internal.h
index e9c145e0fb..881bc1ede0 100644
--- a/accel/tcg/internal.h
+++ b/accel/tcg/internal.h
@@ -16,5 +16,7 @@ TranslationBlock *tb_gen_code(CPUState *cpu, target_ulong pc,
int cflags);
void QEMU_NORETURN cpu_io_recompile(CPUState *cpu, uintptr_t retaddr);
+void page_init(void);
+void tb_htable_init(void);
#endif /* ACCEL_TCG_INTERNAL_H */
diff --git a/include/sysemu/tcg.h b/include/sysemu/tcg.h
index 00349fb18a..53352450ff 100644
--- a/include/sysemu/tcg.h
+++ b/include/sysemu/tcg.h
@@ -8,8 +8,6 @@
#ifndef SYSEMU_TCG_H
#define SYSEMU_TCG_H
-void tcg_exec_init(unsigned long tb_size, int splitwx);
-
#ifdef CONFIG_TCG
extern bool tcg_allowed;
#define tcg_enabled() (tcg_allowed)
diff --git a/accel/tcg/tcg-all.c b/accel/tcg/tcg-all.c
index 30d81ff7f5..0e83acbfe5 100644
--- a/accel/tcg/tcg-all.c
+++ b/accel/tcg/tcg-all.c
@@ -32,6 +32,7 @@
#include "qemu/error-report.h"
#include "qemu/accel.h"
#include "qapi/qapi-builtin-visit.h"
+#include "internal.h"
struct TCGState {
AccelState parent_obj;
@@ -109,8 +110,19 @@ static int tcg_init_machine(MachineState *ms)
{
TCGState *s = TCG_STATE(current_accel());
- tcg_exec_init(s->tb_size * 1024 * 1024, s->splitwx_enabled);
+ tcg_allowed = true;
mttcg_enabled = s->mttcg_enabled;
+
+ page_init();
+ tb_htable_init();
+ tcg_init(s->tb_size * 1024 * 1024, s->splitwx_enabled);
+
+#if defined(CONFIG_SOFTMMU)
+ /* There's no guest base to take into account, so go ahead and
+ initialize the prologue now. */
+ tcg_prologue_init(tcg_ctx);
+#endif
+
return 0;
}
diff --git a/accel/tcg/translate-all.c b/accel/tcg/translate-all.c
index 050b4bff46..40aeecf611 100644
--- a/accel/tcg/translate-all.c
+++ b/accel/tcg/translate-all.c
@@ -408,7 +408,7 @@ bool cpu_restore_state(CPUState *cpu, uintptr_t host_pc,
bool will_exit)
return false;
}
-static void page_init(void)
+void page_init(void)
{
page_size_init();
page_table_config_init();
@@ -907,30 +907,13 @@ static bool tb_cmp(const void *ap, const void *bp)
a->page_addr[1] == b->page_addr[1];
}
-static void tb_htable_init(void)
+void tb_htable_init(void)
{
unsigned int mode = QHT_MODE_AUTO_RESIZE;
qht_init(&tb_ctx.htable, tb_cmp, CODE_GEN_HTABLE_SIZE, mode);
}
-/* Must be called before using the QEMU cpus. 'tb_size' is the size
- (in bytes) allocated to the translation buffer. Zero means default
- size. */
-void tcg_exec_init(unsigned long tb_size, int splitwx)
-{
- tcg_allowed = true;
- page_init();
- tb_htable_init();
- tcg_init(tb_size, splitwx);
-
-#if defined(CONFIG_SOFTMMU)
- /* There's no guest base to take into account, so go ahead and
- initialize the prologue now. */
- tcg_prologue_init(tcg_ctx);
-#endif
-}
-
/* call with @p->lock held */
static inline void invalidate_page_bitmap(PageDesc *p)
{
--
2.25.1
- [PATCH 12/26] tcg: Create tcg_init, (continued)
- [PATCH 12/26] tcg: Create tcg_init, Richard Henderson, 2021/03/10
- [PATCH 14/26] accel/tcg: Pass down max_cpus to tcg_init, Richard Henderson, 2021/03/10
- [PATCH 10/26] accel/tcg: Move alloc_code_gen_buffer to tcg/region.c, Richard Henderson, 2021/03/10
- [PATCH 18/26] tcg: Tidy tcg_n_regions, Richard Henderson, 2021/03/10
- [PATCH 17/26] tcg: Replace region.end with region.total_size, Richard Henderson, 2021/03/10
- [PATCH 19/26] tcg: Tidy split_cross_256mb, Richard Henderson, 2021/03/10
- [PATCH 16/26] tcg: Move MAX_CODE_GEN_BUFFER_SIZE to tcg-target.h, Richard Henderson, 2021/03/10
- [PATCH 13/26] accel/tcg: Merge tcg_exec_init into tcg_init_machine,
Richard Henderson <=
- [PATCH 23/26] tcg: Do not set guard pages in the rx buffer, Richard Henderson, 2021/03/10
- [PATCH 21/26] tcg: Return the map protection from alloc_code_gen_buffer, Richard Henderson, 2021/03/10
- [PATCH 20/26] tcg: Allocate code_gen_buffer into struct tcg_region_state, Richard Henderson, 2021/03/10
- [PATCH 22/26] tcg: Sink qemu_madvise call to common code, Richard Henderson, 2021/03/10
- [PATCH 15/26] tcg: Introduce tcg_max_ctxs, Richard Henderson, 2021/03/10
- [PATCH 25/26] tcg: Merge buffer protection and guard page protection, Richard Henderson, 2021/03/10
- [PATCH 24/26] util/osdep: Add qemu_mprotect_rw, Richard Henderson, 2021/03/10
- [PATCH 26/26] tcg: When allocating for !splitwx, begin with PROT_NONE, Richard Henderson, 2021/03/10