Merge pull request #1688 from relapids/tricore_leak

Fix memory leaks in TriCore target. (#1681)
This commit is contained in:
lazymio 2022-08-31 22:07:10 +08:00 committed by GitHub
commit a63002872f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -263,6 +263,25 @@ static int tricore_cpus_init(struct uc_struct *uc, const char *cpu_model)
return 0; return 0;
} }
static void tricore_release(void *ctx)
{
int i;
TCGContext *tcg_ctx = (TCGContext *)ctx;
TriCoreCPU *cpu = (TriCoreCPU *)tcg_ctx->uc->cpu;
CPUTLBDesc *d = cpu->neg.tlb.d;
CPUTLBDescFast *f = cpu->neg.tlb.f;
CPUTLBDesc *desc;
CPUTLBDescFast *fast;
release_common(ctx);
for (i = 0; i < NB_MMU_MODES; i++) {
desc = &(d[i]);
fast = &(f[i]);
g_free(desc->iotlb);
g_free(fast->table);
}
}
void tricore_uc_init(struct uc_struct *uc) void tricore_uc_init(struct uc_struct *uc)
{ {
uc->reg_read = tricore_reg_read; uc->reg_read = tricore_reg_read;
@ -271,6 +290,7 @@ void tricore_uc_init(struct uc_struct *uc)
uc->set_pc = tricore_set_pc; uc->set_pc = tricore_set_pc;
uc->get_pc = tricore_get_pc; uc->get_pc = tricore_get_pc;
uc->cpus_init = tricore_cpus_init; uc->cpus_init = tricore_cpus_init;
uc->release = tricore_release;
uc->cpu_context_size = offsetof(CPUTriCoreState, end_reset_fields); uc->cpu_context_size = offsetof(CPUTriCoreState, end_reset_fields);
uc_common_init(uc); uc_common_init(uc);
} }