static void spapr_cpu_init(sPAPRMachineState *spapr, PowerPCCPU *cpu,

                           Error **errp)

{

    CPUPPCState *env = &cpu->env;

    CPUState *cs = CPU(cpu);

    int i;



    

    cpu_ppc_tb_init(env, SPAPR_TIMEBASE_FREQ);



    


    cpu_ppc_set_papr(cpu);



    if (cpu->max_compat) {

        Error *local_err = NULL;



        ppc_set_compat(cpu, cpu->max_compat, &local_err);

        if (local_err) {

            error_propagate(errp, local_err);

            return;

        }

    }



    

    i = numa_get_node_for_cpu(cs->cpu_index);

    if (i < nb_numa_nodes) {

            cs->numa_node = i;

    }



    xics_cpu_setup(spapr->xics, cpu);



    qemu_register_reset(spapr_cpu_reset, cpu);

    spapr_cpu_reset(cpu);

}