84369f639e
Under PAPR, only the boot CPU is active when the system starts. Other cpus must be explicitly activated using an RTAS call. The entry state for the boot and secondary cpus isn't identical, but it has some things in common. We're going to add a bit more common setup later, too, so to simplify make a helper which sets up the common entry state for both boot and secondary cpu threads. Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Cédric Le Goater <clg@kaod.org> Tested-by: Cédric Le Goater <clg@kaod.org> Reviewed-by: Greg Kurz <groug@kaod.org>
45 lines
1.2 KiB
C
45 lines
1.2 KiB
C
/*
|
|
* sPAPR CPU core device.
|
|
*
|
|
* Copyright (C) 2016 Bharata B Rao <bharata@linux.vnet.ibm.com>
|
|
*
|
|
* This work is licensed under the terms of the GNU GPL, version 2 or later.
|
|
* See the COPYING file in the top-level directory.
|
|
*/
|
|
#ifndef HW_SPAPR_CPU_CORE_H
|
|
#define HW_SPAPR_CPU_CORE_H
|
|
|
|
#include "hw/qdev.h"
|
|
#include "hw/cpu/core.h"
|
|
#include "target/ppc/cpu-qom.h"
|
|
#include "target/ppc/cpu.h"
|
|
|
|
#define TYPE_SPAPR_CPU_CORE "spapr-cpu-core"
|
|
#define SPAPR_CPU_CORE(obj) \
|
|
OBJECT_CHECK(sPAPRCPUCore, (obj), TYPE_SPAPR_CPU_CORE)
|
|
#define SPAPR_CPU_CORE_CLASS(klass) \
|
|
OBJECT_CLASS_CHECK(sPAPRCPUCoreClass, (klass), TYPE_SPAPR_CPU_CORE)
|
|
#define SPAPR_CPU_CORE_GET_CLASS(obj) \
|
|
OBJECT_GET_CLASS(sPAPRCPUCoreClass, (obj), TYPE_SPAPR_CPU_CORE)
|
|
|
|
#define SPAPR_CPU_CORE_TYPE_NAME(model) model "-" TYPE_SPAPR_CPU_CORE
|
|
|
|
typedef struct sPAPRCPUCore {
|
|
/*< private >*/
|
|
CPUCore parent_obj;
|
|
|
|
/*< public >*/
|
|
PowerPCCPU **threads;
|
|
int node_id;
|
|
} sPAPRCPUCore;
|
|
|
|
typedef struct sPAPRCPUCoreClass {
|
|
DeviceClass parent_class;
|
|
const char *cpu_type;
|
|
} sPAPRCPUCoreClass;
|
|
|
|
const char *spapr_get_cpu_core_type(const char *cpu_type);
|
|
void spapr_cpu_set_entry_state(PowerPCCPU *cpu, target_ulong nip, target_ulong r3);
|
|
|
|
#endif
|