From: Peter Crosthwaite <crosthwaitepeter@gmail.com>
To: qemu-devel@nongnu.org
Cc: peter.maydell@linaro.org,
Peter Crosthwaite <crosthwaite.peter@gmail.com>,
pbonzini@redhat.com, edgar.iglesias@gmail.com, afaerber@suse.de,
rth@twiddle.net
Subject: [Qemu-devel] [RFC v2 02/34] cpu-exec: Purge all uses of CPU_GET_ENV
Date: Sat, 30 May 2015 23:11:35 -0700 [thread overview]
Message-ID: <ec6b5d43c6c33c22a0706541930b1d6eabeb173a.1433052532.git.crosthwaite.peter@gmail.com> (raw)
In-Reply-To: <cover.1433052532.git.crosthwaite.peter@gmail.com>
In-Reply-To: <cover.1433052532.git.crosthwaite.peter@gmail.com>
Remove un-needed usages of CPU_GET_ENV by converting the APIs to use
CPUState pointers and retrieving the env_ptr as minimally needed.
FIXME: apply target-foo change pattern to all archs.
Signed-off-by: Peter Crosthwaite <crosthwaite.peter@gmail.com>
---
cpu-exec.c | 28 +++++++++++++---------------
cpus.c | 3 +--
target-arm/cpu.h | 2 +-
target-microblaze/cpu.h | 2 +-
4 files changed, 16 insertions(+), 19 deletions(-)
diff --git a/cpu-exec.c b/cpu-exec.c
index 2ffeb6e..0266609 100644
--- a/cpu-exec.c
+++ b/cpu-exec.c
@@ -226,10 +226,9 @@ static inline tcg_target_ulong cpu_tb_exec(CPUState *cpu, uint8_t *tb_ptr)
/* Execute the code without caching the generated code. An interpreter
could be used if available. */
-static void cpu_exec_nocache(CPUArchState *env, int max_cycles,
+static void cpu_exec_nocache(CPUState *cpu, int max_cycles,
TranslationBlock *orig_tb)
{
- CPUState *cpu = ENV_GET_CPU(env);
TranslationBlock *tb;
target_ulong pc = orig_tb->pc;
target_ulong cs_base = orig_tb->cs_base;
@@ -253,12 +252,12 @@ static void cpu_exec_nocache(CPUArchState *env, int max_cycles,
tb_free(tb);
}
-static TranslationBlock *tb_find_slow(CPUArchState *env,
+static TranslationBlock *tb_find_slow(CPUState *cpu,
target_ulong pc,
target_ulong cs_base,
uint64_t flags)
{
- CPUState *cpu = ENV_GET_CPU(env);
+ CPUArchState *env = (CPUArchState *)cpu->env_ptr;
TranslationBlock *tb, **ptb1;
unsigned int h;
tb_page_addr_t phys_pc, phys_page1;
@@ -310,9 +309,9 @@ static TranslationBlock *tb_find_slow(CPUArchState *env,
return tb;
}
-static inline TranslationBlock *tb_find_fast(CPUArchState *env)
+static inline TranslationBlock *tb_find_fast(CPUState *cpu)
{
- CPUState *cpu = ENV_GET_CPU(env);
+ CPUArchState *env = (CPUArchState *)cpu->env_ptr;
TranslationBlock *tb;
target_ulong cs_base, pc;
int flags;
@@ -324,14 +323,13 @@ static inline TranslationBlock *tb_find_fast(CPUArchState *env)
tb = cpu->tb_jmp_cache[tb_jmp_cache_hash_func(pc)];
if (unlikely(!tb || tb->pc != pc || tb->cs_base != cs_base ||
tb->flags != flags)) {
- tb = tb_find_slow(env, pc, cs_base, flags);
+ tb = tb_find_slow(cpu, pc, cs_base, flags);
}
return tb;
}
-static void cpu_handle_debug_exception(CPUArchState *env)
+static void cpu_handle_debug_exception(CPUState *cpu)
{
- CPUState *cpu = ENV_GET_CPU(env);
CPUClass *cc = CPU_GET_CLASS(cpu);
CPUWatchpoint *wp;
@@ -348,12 +346,12 @@ static void cpu_handle_debug_exception(CPUArchState *env)
volatile sig_atomic_t exit_request;
-int cpu_exec(CPUArchState *env)
+int cpu_exec(CPUState *cpu)
{
- CPUState *cpu = ENV_GET_CPU(env);
CPUClass *cc = CPU_GET_CLASS(cpu);
#ifdef TARGET_I386
X86CPU *x86_cpu = X86_CPU(cpu);
+ CPUArchState *env = (CPUArchState *)cpu->env_ptr;
#endif
int ret, interrupt_request;
TranslationBlock *tb;
@@ -406,7 +404,7 @@ int cpu_exec(CPUArchState *env)
/* exit request from the cpu execution loop */
ret = cpu->exception_index;
if (ret == EXCP_DEBUG) {
- cpu_handle_debug_exception(env);
+ cpu_handle_debug_exception(cpu);
}
cpu->exception_index = -1;
break;
@@ -482,7 +480,7 @@ int cpu_exec(CPUArchState *env)
}
spin_lock(&tcg_ctx.tb_ctx.tb_lock);
have_tb_lock = true;
- tb = tb_find_fast(env);
+ tb = tb_find_fast(cpu);
/* Note: we do it here to avoid a gcc bug on Mac OS X when
doing it in tb_find_slow */
if (tcg_ctx.tb_ctx.tb_invalidated_flag) {
@@ -542,7 +540,7 @@ int cpu_exec(CPUArchState *env)
if (insns_left > 0) {
/* Execute remaining instructions. */
tb = (TranslationBlock *)(next_tb & ~TB_EXIT_MASK);
- cpu_exec_nocache(env, insns_left, tb);
+ cpu_exec_nocache(cpu, insns_left, tb);
align_clocks(&sc, cpu);
}
cpu->exception_index = EXCP_INTERRUPT;
@@ -566,10 +564,10 @@ int cpu_exec(CPUArchState *env)
/* Reload env after longjmp - the compiler may have smashed all
* local variables as longjmp is marked 'noreturn'. */
cpu = current_cpu;
- env = cpu->env_ptr;
cc = CPU_GET_CLASS(cpu);
cpu->can_do_io = 1;
#ifdef TARGET_I386
+ env = cpu->env_ptr;
x86_cpu = X86_CPU(cpu);
#endif
if (have_tb_lock) {
diff --git a/cpus.c b/cpus.c
index 1b8f05a..c8a2911 100644
--- a/cpus.c
+++ b/cpus.c
@@ -1316,7 +1316,6 @@ int vm_stop_force_state(RunState state)
static int tcg_cpu_exec(CPUState *cpu)
{
- CPUArchState *env = cpu->env_ptr;
int ret;
#ifdef CONFIG_PROFILER
int64_t ti;
@@ -1351,7 +1350,7 @@ static int tcg_cpu_exec(CPUState *cpu)
cpu->icount_decr.u16.low = decr;
cpu->icount_extra = count;
}
- ret = cpu_exec(env);
+ ret = cpu_exec(cpu);
#ifdef CONFIG_PROFILER
tcg_time += profile_getclock() - ti;
#endif
diff --git a/target-arm/cpu.h b/target-arm/cpu.h
index d4a5899..5a4cd84 100644
--- a/target-arm/cpu.h
+++ b/target-arm/cpu.h
@@ -488,7 +488,7 @@ typedef struct CPUARMState {
#include "cpu-qom.h"
ARMCPU *cpu_arm_init(const char *cpu_model);
-int cpu_arm_exec(CPUARMState *s);
+int cpu_arm_exec(CPUState *cpu);
uint32_t do_arm_semihosting(CPUARMState *env);
void aarch64_sync_32_to_64(CPUARMState *env);
void aarch64_sync_64_to_32(CPUARMState *env);
diff --git a/target-microblaze/cpu.h b/target-microblaze/cpu.h
index 4ea04ac..d2dfeb4 100644
--- a/target-microblaze/cpu.h
+++ b/target-microblaze/cpu.h
@@ -276,7 +276,7 @@ struct CPUMBState {
void mb_tcg_init(void);
MicroBlazeCPU *cpu_mb_init(const char *cpu_model);
-int cpu_mb_exec(CPUMBState *s);
+int cpu_mb_exec(CPUState *cpu);
/* you can call this signal handler from your SIGBUS and SIGSEGV
signal handlers to inform the virtual CPU of exceptions. non zero
is returned if the signal was handled by the virtual CPU. */
--
1.9.1
next prev parent reply other threads:[~2015-05-31 6:12 UTC|newest]
Thread overview: 99+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-05-31 6:11 [Qemu-devel] [RFC v2 00/34] Multi Architecture System Emulation Peter Crosthwaite
2015-05-31 6:11 ` [Qemu-devel] [RFC v2 01/34] cpu-defs: Move CPU_TEMP_BUF_NLONGS to tcg Peter Crosthwaite
2015-06-01 18:57 ` Richard Henderson
2015-05-31 6:11 ` Peter Crosthwaite [this message]
2015-06-01 19:03 ` [Qemu-devel] [RFC v2 02/34] cpu-exec: Purge all uses of CPU_GET_ENV Richard Henderson
2015-06-07 22:57 ` Peter Crosthwaite
2015-05-31 6:11 ` [Qemu-devel] [RFC v2 03/34] Makefile.target: Introduce arch-obj Peter Crosthwaite
2015-06-01 19:10 ` Richard Henderson
2015-06-02 9:40 ` Peter Crosthwaite
2015-06-02 10:34 ` Paolo Bonzini
2015-05-31 6:11 ` [Qemu-devel] [RFC v2 04/34] cpu-exec: Migrate some generic fns to cpus.c Peter Crosthwaite
2015-06-01 7:45 ` Paolo Bonzini
2015-07-10 6:37 ` Peter Crosthwaite
2015-06-01 19:12 ` Richard Henderson
2015-05-31 6:11 ` [Qemu-devel] [RFC v2 05/34] translate: Listify tcg_exec_init Peter Crosthwaite
2015-06-01 19:17 ` Richard Henderson
2015-07-10 10:15 ` Peter Crosthwaite
2015-07-11 9:16 ` Peter Crosthwaite
2015-05-31 6:11 ` [Qemu-devel] [RFC v2 06/34] cpu-common: Define tb_page_addr_t for everyone Peter Crosthwaite
2015-06-01 7:51 ` Paolo Bonzini
2015-06-07 23:06 ` Peter Crosthwaite
2015-06-24 9:48 ` Paolo Bonzini
2015-05-31 6:11 ` [Qemu-devel] [RFC v2 07/34] exec-all: Move cpu_can_do_io to qom/cpu.h Peter Crosthwaite
2015-06-01 19:18 ` Richard Henderson
2015-06-24 9:11 ` Paolo Bonzini
2015-06-24 11:40 ` Pavel Dovgaluk
2015-06-24 11:41 ` Paolo Bonzini
2015-06-24 11:59 ` Pavel Dovgaluk
2015-05-31 6:11 ` [Qemu-devel] [RFC v2 08/34] translate-all: Move tcg_handle_interrupt to -common Peter Crosthwaite
2015-06-01 19:20 ` Richard Henderson
2015-05-31 6:11 ` [Qemu-devel] [RFC v2 09/34] include/exec: Move standard exceptions to cpu-all.h Peter Crosthwaite
2015-06-01 19:20 ` Richard Henderson
2015-05-31 6:11 ` [Qemu-devel] [RFC v2 10/34] include/exec: Split target_long def to new header Peter Crosthwaite
2015-06-01 19:24 ` Richard Henderson
2015-06-01 19:51 ` Paolo Bonzini
2015-06-01 20:25 ` Peter Maydell
2015-06-01 20:27 ` Paolo Bonzini
2015-06-01 20:32 ` Richard Henderson
2015-06-01 20:39 ` Paolo Bonzini
2015-06-02 10:14 ` Peter Crosthwaite
2015-06-03 10:01 ` Paolo Bonzini
2015-05-31 6:11 ` [Qemu-devel] [RFC v2 11/34] include/exec: Move cputlb exec.c defs out Peter Crosthwaite
2015-06-01 7:56 ` Paolo Bonzini
2015-06-02 9:44 ` Peter Crosthwaite
2015-06-02 10:38 ` Paolo Bonzini
2015-06-01 19:25 ` Richard Henderson
2015-06-24 9:25 ` Paolo Bonzini
2015-05-31 6:11 ` [Qemu-devel] [RFC v2 12/34] include/exec: Move tb hash functions out Peter Crosthwaite
2015-06-01 7:56 ` Paolo Bonzini
2015-06-01 19:25 ` Richard Henderson
2015-06-24 9:05 ` Paolo Bonzini
2015-05-31 6:11 ` [Qemu-devel] [RFC v2 13/34] cpu-defs: Move out TB_JMP defines Peter Crosthwaite
2015-06-01 19:25 ` Richard Henderson
2015-05-31 6:11 ` [Qemu-devel] [RFC v2 14/34] cpu-defs: Allow multiple inclusions Peter Crosthwaite
2015-06-01 7:59 ` Paolo Bonzini
2015-06-01 19:29 ` Richard Henderson
2015-05-31 6:11 ` [Qemu-devel] [RFC v2 15/34] HACK: monitor: Comment out TCG profile ops Peter Crosthwaite
2015-06-01 8:03 ` Paolo Bonzini
2015-06-01 18:49 ` Richard Henderson
2015-07-11 20:26 ` Peter Crosthwaite
2015-05-31 6:11 ` [Qemu-devel] [RFC v2 16/34] HACK: Disable list_cpus Peter Crosthwaite
2015-06-01 8:04 ` Paolo Bonzini
2015-05-31 6:11 ` [Qemu-devel] [RFC v2 17/34] HACK: globalise TCG page size variables Peter Crosthwaite
2015-06-01 18:52 ` Richard Henderson
2015-06-01 18:58 ` Peter Crosthwaite
2015-05-31 6:11 ` [Qemu-devel] [RFC v2 18/34] HACK: monitor: uninclude cpu_ldst Peter Crosthwaite
2015-07-09 3:08 ` Peter Crosthwaite
2015-05-31 6:11 ` [Qemu-devel] [RFC v2 19/34] HACK: disas: Defeature print_target_address Peter Crosthwaite
2015-06-01 8:08 ` Paolo Bonzini
2015-06-01 18:55 ` Richard Henderson
2015-06-08 0:21 ` Peter Crosthwaite
2015-05-31 6:11 ` [Qemu-devel] [RFC v2 20/34] HACK: exec: comment out use of cpu_get_tb_cpu_from_state Peter Crosthwaite
2015-06-01 8:09 ` Paolo Bonzini
2015-06-08 0:22 ` Peter Crosthwaite
2015-05-31 6:11 ` [Qemu-devel] [RFC v2 21/34] core: virtualise CPU interfaces completely Peter Crosthwaite
2015-06-01 8:11 ` Paolo Bonzini
2015-06-02 9:52 ` Peter Crosthwaite
2015-06-02 10:38 ` Paolo Bonzini
2015-06-01 19:53 ` Richard Henderson
2015-06-02 9:56 ` Peter Crosthwaite
2015-05-31 6:11 ` [Qemu-devel] [RFC v2 22/34] microblaze: enable multi-arch Peter Crosthwaite
2015-06-01 8:16 ` Paolo Bonzini
2015-05-31 6:11 ` [Qemu-devel] [RFC v2 23/34] arm: cpu: static inline cpu_arm_init Peter Crosthwaite
2015-06-01 8:18 ` Paolo Bonzini
2015-05-31 6:11 ` [Qemu-devel] [RFC v2 24/34] target-arm: Split cp helper API to new C file Peter Crosthwaite
2015-05-31 6:11 ` [Qemu-devel] [RFC v2 25/34] arm: enable multi-arch Peter Crosthwaite
2015-06-01 8:22 ` Paolo Bonzini
2015-05-31 6:11 ` [Qemu-devel] [RFC v2 26/34] core: Introduce multi-arch build Peter Crosthwaite
2015-06-01 8:26 ` Paolo Bonzini
2015-05-31 6:12 ` [Qemu-devel] [RFC v2 27/34] hw: arm: Explicitly include cpu.h for consumers Peter Crosthwaite
2015-05-31 6:12 ` [Qemu-devel] [RFC v2 28/34] arm: Remove ELF_MACHINE from cpu.h Peter Crosthwaite
2015-06-01 8:39 ` Paolo Bonzini
2015-05-31 6:12 ` [Qemu-devel] [RFC v2 29/34] hw: mb: Explicitly include cpu.h for consumers Peter Crosthwaite
2015-05-31 6:12 ` [Qemu-devel] [RFC v2 30/34] mb: Remove ELF_MACHINE from cpu.h Peter Crosthwaite
2015-05-31 6:12 ` [Qemu-devel] [RFC v2 31/34] arm: boot: Don't assume all CPUs are ARM Peter Crosthwaite
2015-05-31 6:12 ` [Qemu-devel] [RFC v2 32/34] arm: xilinx_zynq: Add a Microblaze Peter Crosthwaite
2015-05-31 6:12 ` [Qemu-devel] [RFC v2 33/34] HACK: mb: boot: Assume using -firmware for mb software Peter Crosthwaite
2015-05-31 6:12 ` [Qemu-devel] [RFC v2 34/34] HACK: mb: boot: Disable dtb load in multi-arch Peter Crosthwaite
2015-06-01 8:44 ` [Qemu-devel] [RFC v2 00/34] Multi Architecture System Emulation Paolo Bonzini
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ec6b5d43c6c33c22a0706541930b1d6eabeb173a.1433052532.git.crosthwaite.peter@gmail.com \
--to=crosthwaitepeter@gmail.com \
--cc=afaerber@suse.de \
--cc=crosthwaite.peter@gmail.com \
--cc=edgar.iglesias@gmail.com \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=rth@twiddle.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).