free() opcode tables. They are being malloc()'ed in create_new_table(). Resolves Jocelyn's TODO in former cpu_ppc_close().
Signed-off-by: Andreas Färber <afaer...@suse.de> --- target-ppc/translate_init.c | 14 ++++++++++++++ 1 files changed, 14 insertions(+), 0 deletions(-) diff --git a/target-ppc/translate_init.c b/target-ppc/translate_init.c index bb81bbc..5365229 100644 --- a/target-ppc/translate_init.c +++ b/target-ppc/translate_init.c @@ -10261,6 +10261,19 @@ static void ppc_cpu_initfn(Object *obj) #endif /* !CONFIG_USER_ONLY */ } +static void ppc_cpu_uninitfn(Object *obj) +{ + PowerPCCPU *cpu = POWERPC_CPU(obj); + CPUPPCState *env = &cpu->env; + int i; + + for (i = 0; i < 0x40; i++) { + if (env->opcodes[i] != &invalid_handler) { + free(env->opcodes[i]); + } + } +} + static void ppc_cpu_class_init(ObjectClass *oc, void *data) { PowerPCCPUClass *pcc = POWERPC_CPU_CLASS(oc); @@ -10275,6 +10288,7 @@ static const TypeInfo ppc_cpu_type_info = { .parent = TYPE_CPU, .instance_size = sizeof(PowerPCCPU), .instance_init = ppc_cpu_initfn, + .instance_finalize = ppc_cpu_uninitfn, .abstract = false, .class_size = sizeof(PowerPCCPUClass), .class_init = ppc_cpu_class_init, -- 1.7.7