int arch_alloc_thread_info(CoreEntry *core) { ThreadInfoPpc64 *ti_ppc64; UserPpc64RegsEntry *regs; ti_ppc64 = xmalloc(sizeof(*ti_ppc64)); if(!ti_ppc64) goto err; thread_info_ppc64__init(ti_ppc64); CORE_THREAD_ARCH_INFO(core) = ti_ppc64; /* user_ppc64_regs_entry */ regs = xmalloc(sizeof(*regs)); if (!regs) goto err; user_ppc64_regs_entry__init(regs); regs->gpr = xmalloc(32*sizeof(uint64_t)); if (!regs->gpr) goto err; regs->n_gpr = 32; ti_ppc64->gpregs = regs; return 0; err: return -1; }
static UserPpc64RegsEntry *allocate_gp_regs(void) { UserPpc64RegsEntry *gpregs; gpregs = xmalloc(sizeof(*gpregs)); if (!gpregs) return NULL; user_ppc64_regs_entry__init(gpregs); gpregs->n_gpr = 32; gpregs->gpr = xmalloc(32 * sizeof(uint64_t)); if (!gpregs->gpr) { xfree(gpregs); return NULL; } return gpregs; }