mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-04 00:03:54 -06:00
ppc/pnv: add a PnvICPState object
This provides a new ICPState object for the PowerNV machine (POWER8). Access to the Interrupt Management area is done though a memory region. It contains the registers of the Interrupt Control Presenters of each thread which are used to accept, return, forward interrupts in the system. Signed-off-by: Cédric Le Goater <clg@kaod.org> Reviewed-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
This commit is contained in:
parent
439071a92d
commit
99285aae16
3 changed files with 205 additions and 0 deletions
|
@ -41,10 +41,12 @@
|
|||
*/
|
||||
typedef struct ICPStateClass ICPStateClass;
|
||||
typedef struct ICPState ICPState;
|
||||
typedef struct PnvICPState PnvICPState;
|
||||
typedef struct ICSStateClass ICSStateClass;
|
||||
typedef struct ICSState ICSState;
|
||||
typedef struct ICSIRQState ICSIRQState;
|
||||
typedef struct XICSFabric XICSFabric;
|
||||
typedef struct PowerPCCPU PowerPCCPU;
|
||||
|
||||
#define TYPE_ICP "icp"
|
||||
#define ICP(obj) OBJECT_CHECK(ICPState, (obj), TYPE_ICP)
|
||||
|
@ -52,6 +54,9 @@ typedef struct XICSFabric XICSFabric;
|
|||
#define TYPE_KVM_ICP "icp-kvm"
|
||||
#define KVM_ICP(obj) OBJECT_CHECK(ICPState, (obj), TYPE_KVM_ICP)
|
||||
|
||||
#define TYPE_PNV_ICP "pnv-icp"
|
||||
#define PNV_ICP(obj) OBJECT_CHECK(PnvICPState, (obj), TYPE_PNV_ICP)
|
||||
|
||||
#define ICP_CLASS(klass) \
|
||||
OBJECT_CLASS_CHECK(ICPStateClass, (klass), TYPE_ICP)
|
||||
#define ICP_GET_CLASS(obj) \
|
||||
|
@ -81,6 +86,13 @@ struct ICPState {
|
|||
XICSFabric *xics;
|
||||
};
|
||||
|
||||
struct PnvICPState {
|
||||
ICPState parent_obj;
|
||||
|
||||
MemoryRegion mmio;
|
||||
uint32_t links[3];
|
||||
};
|
||||
|
||||
#define TYPE_ICS_BASE "ics-base"
|
||||
#define ICS_BASE(obj) OBJECT_CHECK(ICSState, (obj), TYPE_ICS_BASE)
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue