xref: /qemu/include/hw/ppc/pnv_core.h (revision 7fd544d8a754129b1a09281535a16daffc781f92)
1d2fd9612SCédric Le Goater /*
2d2fd9612SCédric Le Goater  * QEMU PowerPC PowerNV CPU Core model
3d2fd9612SCédric Le Goater  *
4d2fd9612SCédric Le Goater  * Copyright (c) 2016, IBM Corporation.
5d2fd9612SCédric Le Goater  *
6d2fd9612SCédric Le Goater  * This library is free software; you can redistribute it and/or
7d2fd9612SCédric Le Goater  * modify it under the terms of the GNU Lesser General Public License
8d2fd9612SCédric Le Goater  * as published by the Free Software Foundation; either version 2 of
9d2fd9612SCédric Le Goater  * the License, or (at your option) any later version.
10d2fd9612SCédric Le Goater  *
11d2fd9612SCédric Le Goater  * This library is distributed in the hope that it will be useful, but
12d2fd9612SCédric Le Goater  * WITHOUT ANY WARRANTY; without even the implied warranty of
13d2fd9612SCédric Le Goater  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14d2fd9612SCédric Le Goater  * Lesser General Public License for more details.
15d2fd9612SCédric Le Goater  *
16d2fd9612SCédric Le Goater  * You should have received a copy of the GNU Lesser General Public
17d2fd9612SCédric Le Goater  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
18d2fd9612SCédric Le Goater  */
19d2fd9612SCédric Le Goater #ifndef _PPC_PNV_CORE_H
20d2fd9612SCédric Le Goater #define _PPC_PNV_CORE_H
21d2fd9612SCédric Le Goater 
22d2fd9612SCédric Le Goater #include "hw/cpu/core.h"
23d2fd9612SCédric Le Goater 
24d2fd9612SCédric Le Goater #define TYPE_PNV_CORE "powernv-cpu-core"
25d2fd9612SCédric Le Goater #define PNV_CORE(obj) \
26d2fd9612SCédric Le Goater     OBJECT_CHECK(PnvCore, (obj), TYPE_PNV_CORE)
27d2fd9612SCédric Le Goater #define PNV_CORE_CLASS(klass) \
28d2fd9612SCédric Le Goater      OBJECT_CLASS_CHECK(PnvCoreClass, (klass), TYPE_PNV_CORE)
29d2fd9612SCédric Le Goater #define PNV_CORE_GET_CLASS(obj) \
30d2fd9612SCédric Le Goater      OBJECT_GET_CLASS(PnvCoreClass, (obj), TYPE_PNV_CORE)
31d2fd9612SCédric Le Goater 
32d2fd9612SCédric Le Goater typedef struct PnvCore {
33d2fd9612SCédric Le Goater     /*< private >*/
34d2fd9612SCédric Le Goater     CPUCore parent_obj;
35d2fd9612SCédric Le Goater 
36d2fd9612SCédric Le Goater     /*< public >*/
37d2fd9612SCédric Le Goater     void *threads;
38d2fd9612SCédric Le Goater     uint32_t pir;
3924ece072SCédric Le Goater 
4024ece072SCédric Le Goater     MemoryRegion xscom_regs;
41d2fd9612SCédric Le Goater } PnvCore;
42d2fd9612SCédric Le Goater 
43d2fd9612SCédric Le Goater typedef struct PnvCoreClass {
44d2fd9612SCédric Le Goater     DeviceClass parent_class;
45d2fd9612SCédric Le Goater     ObjectClass *cpu_oc;
46d2fd9612SCédric Le Goater } PnvCoreClass;
47d2fd9612SCédric Le Goater 
48*7fd544d8SIgor Mammedov #define PNV_CORE_TYPE_SUFFIX "-" TYPE_PNV_CORE
49*7fd544d8SIgor Mammedov #define PNV_CORE_TYPE_NAME(cpu_model) cpu_model PNV_CORE_TYPE_SUFFIX
50d2fd9612SCédric Le Goater extern char *pnv_core_typename(const char *model);
51d2fd9612SCédric Le Goater 
52d2fd9612SCédric Le Goater #endif /* _PPC_PNV_CORE_H */
53