* [Qemu-devel] [PATCH 0/10] Factorize code in translate.c
@ 2008-04-25 3:23 Glauber Costa
2008-04-25 3:23 ` [Qemu-devel] [PATCH 01/10] i386: replace code inside ifdef with generic function Glauber Costa
0 siblings, 1 reply; 11+ messages in thread
From: Glauber Costa @ 2008-04-25 3:23 UTC (permalink / raw)
To: qemu-devel; +Cc: kvm-devel
Hi,
This series is an (initial) attempt to make qemu code a little bit
more modular. In this patch series specifically, I'm removing
some #ifdef TARGET_* from the general-purpose translate.c,
and rather, replacing them with a common function implemented in
architecture specific files.
Any rants and complaints, let me know
Hope you like it
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Qemu-devel] [PATCH 01/10] i386: replace code inside ifdef with generic function
2008-04-25 3:23 [Qemu-devel] [PATCH 0/10] Factorize code in translate.c Glauber Costa
@ 2008-04-25 3:23 ` Glauber Costa
2008-04-25 3:23 ` [Qemu-devel] [PATCH 02/10] arm: " Glauber Costa
0 siblings, 1 reply; 11+ messages in thread
From: Glauber Costa @ 2008-04-25 3:23 UTC (permalink / raw)
To: qemu-devel; +Cc: kvm-devel
this patch replaced code inside specific ifdef in translate-all.c
with a generic architecture-implemented function. This leads to a
cleaner and more modular code in the generic part.
---
exec-all.h | 3 +++
target-i386/translate.c | 23 +++++++++++++++++++++++
translate-all.c | 22 +---------------------
3 files changed, 27 insertions(+), 21 deletions(-)
diff --git a/exec-all.h b/exec-all.h
index 62b8191..3ce8242 100644
--- a/exec-all.h
+++ b/exec-all.h
@@ -61,6 +61,9 @@ extern int loglevel;
int gen_intermediate_code(CPUState *env, struct TranslationBlock *tb);
int gen_intermediate_code_pc(CPUState *env, struct TranslationBlock *tb);
+void gen_pc_load(CPUState *env, struct TranslationBlock *tb,
+ unsigned long searched_pc, int pc_pos, void *puc);
+
unsigned long code_gen_max_block_size(void);
void cpu_gen_init(void);
int cpu_gen_code(CPUState *env, struct TranslationBlock *tb,
diff --git a/target-i386/translate.c b/target-i386/translate.c
index 356ceff..895d14b 100644
--- a/target-i386/translate.c
+++ b/target-i386/translate.c
@@ -6832,3 +6832,26 @@ int gen_intermediate_code_pc(CPUState *env, TranslationBlock *tb)
return gen_intermediate_code_internal(env, tb, 1);
}
+void gen_pc_load(CPUState *env, TranslationBlock *tb,
+ unsigned long searched_pc, int pc_pos, void *puc)
+{
+ int cc_op;
+#ifdef DEBUG_DISAS
+ if (loglevel & CPU_LOG_TB_OP) {
+ int i;
+ fprintf(logfile, "RESTORE:\n");
+ for(i = 0;i <= pc_pos; i++) {
+ if (gen_opc_instr_start[i]) {
+ fprintf(logfile, "0x%04x: " TARGET_FMT_lx "\n", i, gen_opc_pc[i]);
+ }
+ }
+ fprintf(logfile, "spc=0x%08lx pc_pos=0x%x eip=" TARGET_FMT_lx " cs_base=%x\n",
+ searched_pc, pc_pos, gen_opc_pc[pc_pos] - tb->cs_base,
+ (uint32_t)tb->cs_base);
+ }
+#endif
+ env->eip = gen_opc_pc[pc_pos] - tb->cs_base;
+ cc_op = gen_opc_cc_op[pc_pos];
+ if (cc_op != CC_OP_DYNAMIC)
+ env->cc_op = cc_op;
+}
diff --git a/translate-all.c b/translate-all.c
index 6a273a8..73e1d67 100644
--- a/translate-all.c
+++ b/translate-all.c
@@ -194,27 +194,7 @@ int cpu_restore_state(TranslationBlock *tb,
while (gen_opc_instr_start[j] == 0)
j--;
#if defined(TARGET_I386)
- {
- int cc_op;
-#ifdef DEBUG_DISAS
- if (loglevel & CPU_LOG_TB_OP) {
- int i;
- fprintf(logfile, "RESTORE:\n");
- for(i=0;i<=j; i++) {
- if (gen_opc_instr_start[i]) {
- fprintf(logfile, "0x%04x: " TARGET_FMT_lx "\n", i, gen_opc_pc[i]);
- }
- }
- fprintf(logfile, "spc=0x%08lx j=0x%x eip=" TARGET_FMT_lx " cs_base=%x\n",
- searched_pc, j, gen_opc_pc[j] - tb->cs_base,
- (uint32_t)tb->cs_base);
- }
-#endif
- env->eip = gen_opc_pc[j] - tb->cs_base;
- cc_op = gen_opc_cc_op[j];
- if (cc_op != CC_OP_DYNAMIC)
- env->cc_op = cc_op;
- }
+ gen_pc_load(env, tb, searched_pc, j, puc);
#elif defined(TARGET_ARM)
env->regs[15] = gen_opc_pc[j];
#elif defined(TARGET_SPARC)
--
1.5.0.6
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [Qemu-devel] [PATCH 02/10] arm: replace code inside ifdef with generic function
2008-04-25 3:23 ` [Qemu-devel] [PATCH 01/10] i386: replace code inside ifdef with generic function Glauber Costa
@ 2008-04-25 3:23 ` Glauber Costa
2008-04-25 3:23 ` [Qemu-devel] [PATCH 03/10] sparc: " Glauber Costa
0 siblings, 1 reply; 11+ messages in thread
From: Glauber Costa @ 2008-04-25 3:23 UTC (permalink / raw)
To: qemu-devel; +Cc: kvm-devel
this patch replaced code inside specific ifdef in translate-all.c
with a generic architecture-implemented function. This leads to a
cleaner and more modular code in the generic part.
---
target-arm/translate.c | 5 +++++
translate-all.c | 2 +-
2 files changed, 6 insertions(+), 1 deletions(-)
diff --git a/target-arm/translate.c b/target-arm/translate.c
index 6de78f8..8966996 100644
--- a/target-arm/translate.c
+++ b/target-arm/translate.c
@@ -7706,3 +7706,8 @@ void cpu_dump_state(CPUState *env, FILE *f,
cpu_fprintf(f, "FPSCR: %08x\n", (int)env->vfp.xregs[ARM_VFP_FPSCR]);
}
+void gen_pc_load(CPUState *env, TranslationBlock *tb,
+ unsigned long searched_pc, int pc_pos, void *puc)
+{
+ env->regs[15] = gen_opc_pc[pc_pos];
+}
diff --git a/translate-all.c b/translate-all.c
index 73e1d67..e688318 100644
--- a/translate-all.c
+++ b/translate-all.c
@@ -196,7 +196,7 @@ int cpu_restore_state(TranslationBlock *tb,
#if defined(TARGET_I386)
gen_pc_load(env, tb, searched_pc, j, puc);
#elif defined(TARGET_ARM)
- env->regs[15] = gen_opc_pc[j];
+ gen_pc_load(env, tb, searched_pc, j, puc);
#elif defined(TARGET_SPARC)
{
target_ulong npc;
--
1.5.0.6
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [Qemu-devel] [PATCH 03/10] sparc: replace code inside ifdef with generic function
2008-04-25 3:23 ` [Qemu-devel] [PATCH 02/10] arm: " Glauber Costa
@ 2008-04-25 3:23 ` Glauber Costa
2008-04-25 3:23 ` [Qemu-devel] [PATCH 04/10] ppc: " Glauber Costa
0 siblings, 1 reply; 11+ messages in thread
From: Glauber Costa @ 2008-04-25 3:23 UTC (permalink / raw)
To: qemu-devel; +Cc: kvm-devel
this patch replaced code inside specific ifdef in translate-all.c
with a generic architecture-implemented function. This leads to a
cleaner and more modular code in the generic part.
---
target-sparc/translate.c | 20 ++++++++++++++++++++
translate-all.c | 18 +-----------------
2 files changed, 21 insertions(+), 17 deletions(-)
diff --git a/target-sparc/translate.c b/target-sparc/translate.c
index 90d9278..6edf64d 100644
--- a/target-sparc/translate.c
+++ b/target-sparc/translate.c
@@ -4659,3 +4659,23 @@ void gen_intermediate_code_init(CPUSPARCState *env)
gregnames[i]);
}
}
+
+void gen_pc_load(CPUState *env, TranslationBlock *tb,
+ unsigned long searched_pc, int pc_pos, void *puc)
+{
+ target_ulong npc;
+ env->pc = gen_opc_pc[pc_pos];
+ npc = gen_opc_npc[pc_pos];
+ if (npc == 1) {
+ /* dynamic NPC: already stored */
+ } else if (npc == 2) {
+ target_ulong t2 = (target_ulong)(unsigned long)puc;
+ /* jump PC: use T2 and the jump targets of the translation */
+ if (t2)
+ env->npc = gen_opc_jump_pc[0];
+ else
+ env->npc = gen_opc_jump_pc[1];
+ } else {
+ env->npc = npc;
+ }
+}
diff --git a/translate-all.c b/translate-all.c
index e688318..92c8f1c 100644
--- a/translate-all.c
+++ b/translate-all.c
@@ -198,23 +198,7 @@ int cpu_restore_state(TranslationBlock *tb,
#elif defined(TARGET_ARM)
gen_pc_load(env, tb, searched_pc, j, puc);
#elif defined(TARGET_SPARC)
- {
- target_ulong npc;
- env->pc = gen_opc_pc[j];
- npc = gen_opc_npc[j];
- if (npc == 1) {
- /* dynamic NPC: already stored */
- } else if (npc == 2) {
- target_ulong t2 = (target_ulong)(unsigned long)puc;
- /* jump PC: use T2 and the jump targets of the translation */
- if (t2)
- env->npc = gen_opc_jump_pc[0];
- else
- env->npc = gen_opc_jump_pc[1];
- } else {
- env->npc = npc;
- }
- }
+ gen_pc_load(env, tb, searched_pc, j, puc);
#elif defined(TARGET_PPC)
{
int type, c;
--
1.5.0.6
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [Qemu-devel] [PATCH 04/10] ppc: replace code inside ifdef with generic function
2008-04-25 3:23 ` [Qemu-devel] [PATCH 03/10] sparc: " Glauber Costa
@ 2008-04-25 3:23 ` Glauber Costa
2008-04-25 3:23 ` [Qemu-devel] [PATCH 05/10] m68k: " Glauber Costa
0 siblings, 1 reply; 11+ messages in thread
From: Glauber Costa @ 2008-04-25 3:23 UTC (permalink / raw)
To: qemu-devel; +Cc: kvm-devel
this patch replaced code inside specific ifdef in translate-all.c
with a generic architecture-implemented function. This leads to a
cleaner and more modular code in the generic part.
---
target-ppc/translate.c | 42 ++++++++++++++++++++++++++++++++++++++++++
translate-all.c | 40 +---------------------------------------
2 files changed, 43 insertions(+), 39 deletions(-)
diff --git a/target-ppc/translate.c b/target-ppc/translate.c
index c9530eb..6f7d16c 100644
--- a/target-ppc/translate.c
+++ b/target-ppc/translate.c
@@ -6344,3 +6344,45 @@ int gen_intermediate_code_pc (CPUState *env, struct TranslationBlock *tb)
{
return gen_intermediate_code_internal(env, tb, 1);
}
+
+void gen_pc_load(CPUState *env, TranslationBlock *tb,
+ unsigned long searched_pc, int pc_pos, void *puc)
+{
+ int type, c;
+ /* for PPC, we need to look at the micro operation to get the
+ * access type */
+ env->nip = gen_opc_pc[pc_pos];
+ c = gen_opc_buf[pc_pos];
+ switch(c) {
+#if defined(CONFIG_USER_ONLY)
+#define CASE3(op)\
+ case INDEX_op_ ## op ## _raw
+#else
+#define CASE3(op)\
+ case INDEX_op_ ## op ## _user:\
+ case INDEX_op_ ## op ## _kernel:\
+ case INDEX_op_ ## op ## _hypv
+#endif
+
+ CASE3(stfd):
+ CASE3(stfs):
+ CASE3(lfd):
+ CASE3(lfs):
+ type = ACCESS_FLOAT;
+ break;
+ CASE3(lwarx):
+ type = ACCESS_RES;
+ break;
+ CASE3(stwcx):
+ type = ACCESS_RES;
+ break;
+ CASE3(eciwx):
+ CASE3(ecowx):
+ type = ACCESS_EXT;
+ break;
+ default:
+ type = ACCESS_INT;
+ break;
+ }
+ env->access_type = type;
+}
diff --git a/translate-all.c b/translate-all.c
index 92c8f1c..66f03e1 100644
--- a/translate-all.c
+++ b/translate-all.c
@@ -200,45 +200,7 @@ int cpu_restore_state(TranslationBlock *tb,
#elif defined(TARGET_SPARC)
gen_pc_load(env, tb, searched_pc, j, puc);
#elif defined(TARGET_PPC)
- {
- int type, c;
- /* for PPC, we need to look at the micro operation to get the
- access type */
- env->nip = gen_opc_pc[j];
- c = gen_opc_buf[j];
- switch(c) {
-#if defined(CONFIG_USER_ONLY)
-#define CASE3(op)\
- case INDEX_op_ ## op ## _raw
-#else
-#define CASE3(op)\
- case INDEX_op_ ## op ## _user:\
- case INDEX_op_ ## op ## _kernel:\
- case INDEX_op_ ## op ## _hypv
-#endif
-
- CASE3(stfd):
- CASE3(stfs):
- CASE3(lfd):
- CASE3(lfs):
- type = ACCESS_FLOAT;
- break;
- CASE3(lwarx):
- type = ACCESS_RES;
- break;
- CASE3(stwcx):
- type = ACCESS_RES;
- break;
- CASE3(eciwx):
- CASE3(ecowx):
- type = ACCESS_EXT;
- break;
- default:
- type = ACCESS_INT;
- break;
- }
- env->access_type = type;
- }
+ gen_pc_load(env, tb, searched_pc, j, puc);
#elif defined(TARGET_M68K)
env->pc = gen_opc_pc[j];
#elif defined(TARGET_MIPS)
--
1.5.0.6
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [Qemu-devel] [PATCH 05/10] m68k: replace code inside ifdef with generic function
2008-04-25 3:23 ` [Qemu-devel] [PATCH 04/10] ppc: " Glauber Costa
@ 2008-04-25 3:23 ` Glauber Costa
2008-04-25 3:23 ` [Qemu-devel] [PATCH 06/10] mips: " Glauber Costa
0 siblings, 1 reply; 11+ messages in thread
From: Glauber Costa @ 2008-04-25 3:23 UTC (permalink / raw)
To: qemu-devel; +Cc: kvm-devel
this patch replaced code inside specific ifdef in translate-all.c
with a generic architecture-implemented function. This leads to a
cleaner and more modular code in the generic part.
---
target-m68k/translate.c | 5 +++++
translate-all.c | 2 +-
2 files changed, 6 insertions(+), 1 deletions(-)
diff --git a/target-m68k/translate.c b/target-m68k/translate.c
index 39816f4..36e27a1 100644
--- a/target-m68k/translate.c
+++ b/target-m68k/translate.c
@@ -3280,3 +3280,8 @@ void cpu_dump_state(CPUState *env, FILE *f,
cpu_fprintf (f, "FPRESULT = %12g\n", *(double *)&env->fp_result);
}
+void gen_pc_load(CPUState *env, TranslationBlock *tb,
+ unsigned long searched_pc, int pc_pos, void *puc)
+{
+ env->pc = gen_opc_pc[pc_pos];
+}
diff --git a/translate-all.c b/translate-all.c
index 66f03e1..5e63978 100644
--- a/translate-all.c
+++ b/translate-all.c
@@ -202,7 +202,7 @@ int cpu_restore_state(TranslationBlock *tb,
#elif defined(TARGET_PPC)
gen_pc_load(env, tb, searched_pc, j, puc);
#elif defined(TARGET_M68K)
- env->pc = gen_opc_pc[j];
+ gen_pc_load(env, tb, searched_pc, j, puc);
#elif defined(TARGET_MIPS)
env->PC[env->current_tc] = gen_opc_pc[j];
env->hflags &= ~MIPS_HFLAG_BMASK;
--
1.5.0.6
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [Qemu-devel] [PATCH 06/10] mips: replace code inside ifdef with generic function
2008-04-25 3:23 ` [Qemu-devel] [PATCH 05/10] m68k: " Glauber Costa
@ 2008-04-25 3:23 ` Glauber Costa
2008-04-25 3:23 ` [Qemu-devel] [PATCH 07/10] alpha: " Glauber Costa
0 siblings, 1 reply; 11+ messages in thread
From: Glauber Costa @ 2008-04-25 3:23 UTC (permalink / raw)
To: qemu-devel; +Cc: kvm-devel
this patch replaced code inside specific ifdef in translate-all.c
with a generic architecture-implemented function. This leads to a
cleaner and more modular code in the generic part.
---
target-mips/translate.c | 8 ++++++++
translate-all.c | 4 +---
2 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/target-mips/translate.c b/target-mips/translate.c
index 65f0ba9..46b917e 100644
--- a/target-mips/translate.c
+++ b/target-mips/translate.c
@@ -6942,3 +6942,11 @@ void cpu_reset (CPUMIPSState *env)
#endif
cpu_mips_register(env, env->cpu_model);
}
+
+void gen_pc_load(CPUState *env, TranslationBlock *tb,
+ unsigned long searched_pc, int pc_pos, void *puc)
+{
+ env->PC[env->current_tc] = gen_opc_pc[pc_pos];
+ env->hflags &= ~MIPS_HFLAG_BMASK;
+ env->hflags |= gen_opc_hflags[pc_pos];
+}
diff --git a/translate-all.c b/translate-all.c
index 5e63978..d2408f6 100644
--- a/translate-all.c
+++ b/translate-all.c
@@ -204,9 +204,7 @@ int cpu_restore_state(TranslationBlock *tb,
#elif defined(TARGET_M68K)
gen_pc_load(env, tb, searched_pc, j, puc);
#elif defined(TARGET_MIPS)
- env->PC[env->current_tc] = gen_opc_pc[j];
- env->hflags &= ~MIPS_HFLAG_BMASK;
- env->hflags |= gen_opc_hflags[j];
+ gen_pc_load(env, tb, searched_pc, j, puc);
#elif defined(TARGET_ALPHA)
env->pc = gen_opc_pc[j];
#elif defined(TARGET_SH4)
--
1.5.0.6
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [Qemu-devel] [PATCH 07/10] alpha: replace code inside ifdef with generic function
2008-04-25 3:23 ` [Qemu-devel] [PATCH 06/10] mips: " Glauber Costa
@ 2008-04-25 3:23 ` Glauber Costa
2008-04-25 3:23 ` [Qemu-devel] [PATCH 08/10] sh4: " Glauber Costa
0 siblings, 1 reply; 11+ messages in thread
From: Glauber Costa @ 2008-04-25 3:23 UTC (permalink / raw)
To: qemu-devel; +Cc: kvm-devel
this patch replaced code inside specific ifdef in translate-all.c
with a generic architecture-implemented function. This leads to a
cleaner and more modular code in the generic part.
---
target-alpha/translate.c | 5 +++++
translate-all.c | 2 +-
2 files changed, 6 insertions(+), 1 deletions(-)
diff --git a/target-alpha/translate.c b/target-alpha/translate.c
index 1c8587d..c7bb207 100644
--- a/target-alpha/translate.c
+++ b/target-alpha/translate.c
@@ -2108,3 +2108,8 @@ CPUAlphaState * cpu_alpha_init (const char *cpu_model)
return env;
}
+void gen_pc_load(CPUState *env, TranslationBlock *tb,
+ unsigned long searched_pc, int pc_pos, void *puc)
+{
+ env->pc = gen_opc_pc[pc_pos];
+}
diff --git a/translate-all.c b/translate-all.c
index d2408f6..bcad1f4 100644
--- a/translate-all.c
+++ b/translate-all.c
@@ -206,7 +206,7 @@ int cpu_restore_state(TranslationBlock *tb,
#elif defined(TARGET_MIPS)
gen_pc_load(env, tb, searched_pc, j, puc);
#elif defined(TARGET_ALPHA)
- env->pc = gen_opc_pc[j];
+ gen_pc_load(env, tb, searched_pc, j, puc);
#elif defined(TARGET_SH4)
env->pc = gen_opc_pc[j];
env->flags = gen_opc_hflags[j];
--
1.5.0.6
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [Qemu-devel] [PATCH 08/10] sh4: replace code inside ifdef with generic function
2008-04-25 3:23 ` [Qemu-devel] [PATCH 07/10] alpha: " Glauber Costa
@ 2008-04-25 3:23 ` Glauber Costa
2008-04-25 3:23 ` [Qemu-devel] [PATCH 09/10] cris: " Glauber Costa
0 siblings, 1 reply; 11+ messages in thread
From: Glauber Costa @ 2008-04-25 3:23 UTC (permalink / raw)
To: qemu-devel; +Cc: kvm-devel
this patch replaced code inside specific ifdef in translate-all.c
with a generic architecture-implemented function. This leads to a
cleaner and more modular code in the generic part.
---
target-sh4/translate.c | 7 +++++++
translate-all.c | 3 +--
2 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/target-sh4/translate.c b/target-sh4/translate.c
index b7c5f8d..1468e7a 100644
--- a/target-sh4/translate.c
+++ b/target-sh4/translate.c
@@ -1302,3 +1302,10 @@ int gen_intermediate_code_pc(CPUState * env, struct TranslationBlock *tb)
{
return gen_intermediate_code_internal(env, tb, 1);
}
+
+void gen_pc_load(CPUState *env, TranslationBlock *tb,
+ unsigned long searched_pc, int pc_pos, void *puc)
+{
+ env->pc = gen_opc_pc[pc_pos];
+ env->flags = gen_opc_hflags[pc_pos];
+}
diff --git a/translate-all.c b/translate-all.c
index bcad1f4..401969c 100644
--- a/translate-all.c
+++ b/translate-all.c
@@ -208,8 +208,7 @@ int cpu_restore_state(TranslationBlock *tb,
#elif defined(TARGET_ALPHA)
gen_pc_load(env, tb, searched_pc, j, puc);
#elif defined(TARGET_SH4)
- env->pc = gen_opc_pc[j];
- env->flags = gen_opc_hflags[j];
+ gen_pc_load(env, tb, searched_pc, j, puc);
#elif defined(TARGET_CRIS)
env->pregs[PR_ERP] = gen_opc_pc[j];
#endif
--
1.5.0.6
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [Qemu-devel] [PATCH 09/10] cris: replace code inside ifdef with generic function
2008-04-25 3:23 ` [Qemu-devel] [PATCH 08/10] sh4: " Glauber Costa
@ 2008-04-25 3:23 ` Glauber Costa
2008-04-25 3:23 ` [Qemu-devel] [PATCH 10/10] remove arch-specific ifdefs from translate-all.c Glauber Costa
0 siblings, 1 reply; 11+ messages in thread
From: Glauber Costa @ 2008-04-25 3:23 UTC (permalink / raw)
To: qemu-devel; +Cc: kvm-devel
this patch replaced code inside specific ifdef in translate-all.c
with a generic architecture-implemented function. This leads to a
cleaner and more modular code in the generic part.
---
target-cris/translate.c | 6 ++++++
translate-all.c | 2 +-
2 files changed, 7 insertions(+), 1 deletions(-)
diff --git a/target-cris/translate.c b/target-cris/translate.c
index 5769175..e522678 100644
--- a/target-cris/translate.c
+++ b/target-cris/translate.c
@@ -2701,3 +2701,9 @@ void cpu_reset (CPUCRISState *env)
memset(env, 0, offsetof(CPUCRISState, breakpoints));
tlb_flush(env, 1);
}
+
+void gen_pc_load(CPUState *env, struct TranslationBlock *tb,
+ unsigned long searched_pc, int pc_pos, void *puc)
+{
+ env->pregs[PR_ERP] = gen_opc_pc[pc_pos];
+}
diff --git a/translate-all.c b/translate-all.c
index 401969c..3afb656 100644
--- a/translate-all.c
+++ b/translate-all.c
@@ -210,7 +210,7 @@ int cpu_restore_state(TranslationBlock *tb,
#elif defined(TARGET_SH4)
gen_pc_load(env, tb, searched_pc, j, puc);
#elif defined(TARGET_CRIS)
- env->pregs[PR_ERP] = gen_opc_pc[j];
+ gen_pc_load(env, tb, searched_pc, j, puc);
#endif
#ifdef CONFIG_PROFILER
--
1.5.0.6
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [Qemu-devel] [PATCH 10/10] remove arch-specific ifdefs from translate-all.c
2008-04-25 3:23 ` [Qemu-devel] [PATCH 09/10] cris: " Glauber Costa
@ 2008-04-25 3:23 ` Glauber Costa
0 siblings, 0 replies; 11+ messages in thread
From: Glauber Costa @ 2008-04-25 3:23 UTC (permalink / raw)
To: qemu-devel; +Cc: kvm-devel
As the current state of matters, all architectures call a function
with the same name and signature for updating the pc. Remove the ifdefs,
leading to a cleaner code
---
translate-all.c | 19 +------------------
1 files changed, 1 insertions(+), 18 deletions(-)
diff --git a/translate-all.c b/translate-all.c
index 3afb656..83056d5 100644
--- a/translate-all.c
+++ b/translate-all.c
@@ -193,25 +193,8 @@ int cpu_restore_state(TranslationBlock *tb,
/* now find start of instruction before */
while (gen_opc_instr_start[j] == 0)
j--;
-#if defined(TARGET_I386)
+
gen_pc_load(env, tb, searched_pc, j, puc);
-#elif defined(TARGET_ARM)
- gen_pc_load(env, tb, searched_pc, j, puc);
-#elif defined(TARGET_SPARC)
- gen_pc_load(env, tb, searched_pc, j, puc);
-#elif defined(TARGET_PPC)
- gen_pc_load(env, tb, searched_pc, j, puc);
-#elif defined(TARGET_M68K)
- gen_pc_load(env, tb, searched_pc, j, puc);
-#elif defined(TARGET_MIPS)
- gen_pc_load(env, tb, searched_pc, j, puc);
-#elif defined(TARGET_ALPHA)
- gen_pc_load(env, tb, searched_pc, j, puc);
-#elif defined(TARGET_SH4)
- gen_pc_load(env, tb, searched_pc, j, puc);
-#elif defined(TARGET_CRIS)
- gen_pc_load(env, tb, searched_pc, j, puc);
-#endif
#ifdef CONFIG_PROFILER
dyngen_restore_time += profile_getclock() - ti;
--
1.5.0.6
^ permalink raw reply related [flat|nested] 11+ messages in thread
end of thread, other threads:[~2008-04-25 3:29 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-04-25 3:23 [Qemu-devel] [PATCH 0/10] Factorize code in translate.c Glauber Costa
2008-04-25 3:23 ` [Qemu-devel] [PATCH 01/10] i386: replace code inside ifdef with generic function Glauber Costa
2008-04-25 3:23 ` [Qemu-devel] [PATCH 02/10] arm: " Glauber Costa
2008-04-25 3:23 ` [Qemu-devel] [PATCH 03/10] sparc: " Glauber Costa
2008-04-25 3:23 ` [Qemu-devel] [PATCH 04/10] ppc: " Glauber Costa
2008-04-25 3:23 ` [Qemu-devel] [PATCH 05/10] m68k: " Glauber Costa
2008-04-25 3:23 ` [Qemu-devel] [PATCH 06/10] mips: " Glauber Costa
2008-04-25 3:23 ` [Qemu-devel] [PATCH 07/10] alpha: " Glauber Costa
2008-04-25 3:23 ` [Qemu-devel] [PATCH 08/10] sh4: " Glauber Costa
2008-04-25 3:23 ` [Qemu-devel] [PATCH 09/10] cris: " Glauber Costa
2008-04-25 3:23 ` [Qemu-devel] [PATCH 10/10] remove arch-specific ifdefs from translate-all.c Glauber Costa
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).