diff mbox

[01/28] mips: cpu: move mmu/fpu/mvp_init to realize time

Message ID 1500040339-119465-2-git-send-email-imammedo@redhat.com
State New
Headers show

Commit Message

Igor Mammedov July 14, 2017, 1:51 p.m. UTC
it will help to replace custom cpu_mips_init() with cpu_generic_init().

Signed-off-by: Igor Mammedov <imammedo@redhat.com>
---
CC: Aurelien Jarno <aurelien@aurel32.net>
CC: Yongbok Kim <yongbok.kim@imgtec.com>
---
 target/mips/cpu.h            | 3 +++
 target/mips/cpu.c            | 9 +++++++++
 target/mips/translate.c      | 7 -------
 target/mips/translate_init.c | 6 +++---
 4 files changed, 15 insertions(+), 10 deletions(-)

Comments

Philippe Mathieu-Daudé July 15, 2017, 9:48 p.m. UTC | #1
On 07/14/2017 10:51 AM, Igor Mammedov wrote:
> it will help to replace custom cpu_mips_init() with cpu_generic_init().
> 
> Signed-off-by: Igor Mammedov <imammedo@redhat.com>

Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>

> ---
> CC: Aurelien Jarno <aurelien@aurel32.net>
> CC: Yongbok Kim <yongbok.kim@imgtec.com>
> ---
>   target/mips/cpu.h            | 3 +++
>   target/mips/cpu.c            | 9 +++++++++
>   target/mips/translate.c      | 7 -------
>   target/mips/translate_init.c | 6 +++---
>   4 files changed, 15 insertions(+), 10 deletions(-)
> 
> diff --git a/target/mips/cpu.h b/target/mips/cpu.h
> index 4a4747a..9c32228 100644
> --- a/target/mips/cpu.h
> +++ b/target/mips/cpu.h
> @@ -1070,4 +1070,7 @@ static inline void QEMU_NORETURN do_raise_exception(CPUMIPSState *env,
>       do_raise_exception_err(env, exception, 0, pc);
>   }
>   
> +void mips_cpu_mmu_init(CPUMIPSState *env, const mips_def_t *def);
> +void mips_cpu_fpu_init(CPUMIPSState *env, const mips_def_t *def);
> +void mips_cpu_mvp_init(CPUMIPSState *env, const mips_def_t *def);
>   #endif /* MIPS_CPU_H */
> diff --git a/target/mips/cpu.c b/target/mips/cpu.c
> index 1bb66b7..82afdaa 100644
> --- a/target/mips/cpu.c
> +++ b/target/mips/cpu.c
> @@ -122,9 +122,18 @@ static void mips_cpu_disas_set_info(CPUState *s, disassemble_info *info) {
>   static void mips_cpu_realizefn(DeviceState *dev, Error **errp)
>   {
>       CPUState *cs = CPU(dev);
> +    MIPSCPU *cpu = MIPS_CPU(dev);
> +    CPUMIPSState *env = &cpu->env;
>       MIPSCPUClass *mcc = MIPS_CPU_GET_CLASS(dev);
>       Error *local_err = NULL;
>   
> +    env->exception_base = (int32_t)0xBFC00000;
> +#ifndef CONFIG_USER_ONLY
> +    mips_cpu_mmu_init(env, env->cpu_model);
> +#endif
> +    mips_cpu_fpu_init(env, env->cpu_model);
> +    mips_cpu_mvp_init(env, env->cpu_model);
> +
>       cpu_exec_realizefn(cs, &local_err);
>       if (local_err != NULL) {
>           error_propagate(errp, local_err);
> diff --git a/target/mips/translate.c b/target/mips/translate.c
> index 559f8fe..7b3ae81 100644
> --- a/target/mips/translate.c
> +++ b/target/mips/translate.c
> @@ -20203,13 +20203,6 @@ MIPSCPU *cpu_mips_init(const char *cpu_model)
>       cpu = MIPS_CPU(object_new(TYPE_MIPS_CPU));
>       env = &cpu->env;
>       env->cpu_model = def;
> -    env->exception_base = (int32_t)0xBFC00000;
> -
> -#ifndef CONFIG_USER_ONLY
> -    mmu_init(env, def);
> -#endif
> -    fpu_init(env, def);
> -    mvp_init(env, def);
>   
>       object_property_set_bool(OBJECT(cpu), true, "realized", NULL);
>   
> diff --git a/target/mips/translate_init.c b/target/mips/translate_init.c
> index 6ae23e4..c771ff1 100644
> --- a/target/mips/translate_init.c
> +++ b/target/mips/translate_init.c
> @@ -851,7 +851,7 @@ static void r4k_mmu_init (CPUMIPSState *env, const mips_def_t *def)
>       env->tlb->helper_tlbinvf = r4k_helper_tlbinvf;
>   }
>   
> -static void mmu_init (CPUMIPSState *env, const mips_def_t *def)
> +void mips_cpu_mmu_init(CPUMIPSState *env, const mips_def_t *def)
>   {
>       MIPSCPU *cpu = mips_env_get_cpu(env);
>   
> @@ -876,7 +876,7 @@ static void mmu_init (CPUMIPSState *env, const mips_def_t *def)
>   }
>   #endif /* CONFIG_USER_ONLY */
>   
> -static void fpu_init (CPUMIPSState *env, const mips_def_t *def)
> +void mips_cpu_fpu_init(CPUMIPSState *env, const mips_def_t *def)
>   {
>       int i;
>   
> @@ -886,7 +886,7 @@ static void fpu_init (CPUMIPSState *env, const mips_def_t *def)
>       memcpy(&env->active_fpu, &env->fpus[0], sizeof(env->active_fpu));
>   }
>   
> -static void mvp_init (CPUMIPSState *env, const mips_def_t *def)
> +void mips_cpu_mvp_init(CPUMIPSState *env, const mips_def_t *def)
>   {
>       env->mvp = g_malloc0(sizeof(CPUMIPSMVPContext));
>   
>
diff mbox

Patch

diff --git a/target/mips/cpu.h b/target/mips/cpu.h
index 4a4747a..9c32228 100644
--- a/target/mips/cpu.h
+++ b/target/mips/cpu.h
@@ -1070,4 +1070,7 @@  static inline void QEMU_NORETURN do_raise_exception(CPUMIPSState *env,
     do_raise_exception_err(env, exception, 0, pc);
 }
 
+void mips_cpu_mmu_init(CPUMIPSState *env, const mips_def_t *def);
+void mips_cpu_fpu_init(CPUMIPSState *env, const mips_def_t *def);
+void mips_cpu_mvp_init(CPUMIPSState *env, const mips_def_t *def);
 #endif /* MIPS_CPU_H */
diff --git a/target/mips/cpu.c b/target/mips/cpu.c
index 1bb66b7..82afdaa 100644
--- a/target/mips/cpu.c
+++ b/target/mips/cpu.c
@@ -122,9 +122,18 @@  static void mips_cpu_disas_set_info(CPUState *s, disassemble_info *info) {
 static void mips_cpu_realizefn(DeviceState *dev, Error **errp)
 {
     CPUState *cs = CPU(dev);
+    MIPSCPU *cpu = MIPS_CPU(dev);
+    CPUMIPSState *env = &cpu->env;
     MIPSCPUClass *mcc = MIPS_CPU_GET_CLASS(dev);
     Error *local_err = NULL;
 
+    env->exception_base = (int32_t)0xBFC00000;
+#ifndef CONFIG_USER_ONLY
+    mips_cpu_mmu_init(env, env->cpu_model);
+#endif
+    mips_cpu_fpu_init(env, env->cpu_model);
+    mips_cpu_mvp_init(env, env->cpu_model);
+
     cpu_exec_realizefn(cs, &local_err);
     if (local_err != NULL) {
         error_propagate(errp, local_err);
diff --git a/target/mips/translate.c b/target/mips/translate.c
index 559f8fe..7b3ae81 100644
--- a/target/mips/translate.c
+++ b/target/mips/translate.c
@@ -20203,13 +20203,6 @@  MIPSCPU *cpu_mips_init(const char *cpu_model)
     cpu = MIPS_CPU(object_new(TYPE_MIPS_CPU));
     env = &cpu->env;
     env->cpu_model = def;
-    env->exception_base = (int32_t)0xBFC00000;
-
-#ifndef CONFIG_USER_ONLY
-    mmu_init(env, def);
-#endif
-    fpu_init(env, def);
-    mvp_init(env, def);
 
     object_property_set_bool(OBJECT(cpu), true, "realized", NULL);
 
diff --git a/target/mips/translate_init.c b/target/mips/translate_init.c
index 6ae23e4..c771ff1 100644
--- a/target/mips/translate_init.c
+++ b/target/mips/translate_init.c
@@ -851,7 +851,7 @@  static void r4k_mmu_init (CPUMIPSState *env, const mips_def_t *def)
     env->tlb->helper_tlbinvf = r4k_helper_tlbinvf;
 }
 
-static void mmu_init (CPUMIPSState *env, const mips_def_t *def)
+void mips_cpu_mmu_init(CPUMIPSState *env, const mips_def_t *def)
 {
     MIPSCPU *cpu = mips_env_get_cpu(env);
 
@@ -876,7 +876,7 @@  static void mmu_init (CPUMIPSState *env, const mips_def_t *def)
 }
 #endif /* CONFIG_USER_ONLY */
 
-static void fpu_init (CPUMIPSState *env, const mips_def_t *def)
+void mips_cpu_fpu_init(CPUMIPSState *env, const mips_def_t *def)
 {
     int i;
 
@@ -886,7 +886,7 @@  static void fpu_init (CPUMIPSState *env, const mips_def_t *def)
     memcpy(&env->active_fpu, &env->fpus[0], sizeof(env->active_fpu));
 }
 
-static void mvp_init (CPUMIPSState *env, const mips_def_t *def)
+void mips_cpu_mvp_init(CPUMIPSState *env, const mips_def_t *def)
 {
     env->mvp = g_malloc0(sizeof(CPUMIPSMVPContext));