@ -53,6 +53,26 @@ static uint8_t integrator_spd[128] = {
0xe , 4 , 0x1c , 1 , 2 , 0x20 , 0xc0 , 0 , 0 , 0 , 0 , 0x30 , 0x28 , 0x30 , 0x28 , 0x40
} ;
static const VMStateDescription vmstate_integratorcm = {
. name = " integratorcm " ,
. version_id = 1 ,
. minimum_version_id = 1 ,
. fields = ( VMStateField [ ] ) {
VMSTATE_UINT32 ( cm_osc , IntegratorCMState ) ,
VMSTATE_UINT32 ( cm_ctrl , IntegratorCMState ) ,
VMSTATE_UINT32 ( cm_lock , IntegratorCMState ) ,
VMSTATE_UINT32 ( cm_auxosc , IntegratorCMState ) ,
VMSTATE_UINT32 ( cm_sdram , IntegratorCMState ) ,
VMSTATE_UINT32 ( cm_init , IntegratorCMState ) ,
VMSTATE_UINT32 ( cm_flags , IntegratorCMState ) ,
VMSTATE_UINT32 ( cm_nvflags , IntegratorCMState ) ,
VMSTATE_UINT32 ( int_level , IntegratorCMState ) ,
VMSTATE_UINT32 ( irq_enabled , IntegratorCMState ) ,
VMSTATE_UINT32 ( fiq_enabled , IntegratorCMState ) ,
VMSTATE_END_OF_LIST ( )
}
} ;
static uint64_t integratorcm_read ( void * opaque , hwaddr offset ,
unsigned size )
{
@ -309,6 +329,18 @@ typedef struct icp_pic_state {
qemu_irq parent_fiq ;
} icp_pic_state ;
static const VMStateDescription vmstate_icp_pic = {
. name = " icp_pic " ,
. version_id = 1 ,
. minimum_version_id = 1 ,
. fields = ( VMStateField [ ] ) {
VMSTATE_UINT32 ( level , icp_pic_state ) ,
VMSTATE_UINT32 ( irq_enabled , icp_pic_state ) ,
VMSTATE_UINT32 ( fiq_enabled , icp_pic_state ) ,
VMSTATE_END_OF_LIST ( )
}
} ;
static void icp_pic_update ( icp_pic_state * s )
{
uint32_t flags ;
@ -438,6 +470,16 @@ typedef struct ICPCtrlRegsState {
# define ICP_INTREG_WPROT (1 << 0)
# define ICP_INTREG_CARDIN (1 << 3)
static const VMStateDescription vmstate_icp_control = {
. name = " icp_control " ,
. version_id = 1 ,
. minimum_version_id = 1 ,
. fields = ( VMStateField [ ] ) {
VMSTATE_UINT32 ( intreg_state , ICPCtrlRegsState ) ,
VMSTATE_END_OF_LIST ( )
}
} ;
static uint64_t icp_control_read ( void * opaque , hwaddr offset ,
unsigned size )
{
@ -640,6 +682,21 @@ static void core_class_init(ObjectClass *klass, void *data)
dc - > props = core_properties ;
dc - > realize = integratorcm_realize ;
dc - > vmsd = & vmstate_integratorcm ;
}
static void icp_pic_class_init ( ObjectClass * klass , void * data )
{
DeviceClass * dc = DEVICE_CLASS ( klass ) ;
dc - > vmsd = & vmstate_icp_pic ;
}
static void icp_control_class_init ( ObjectClass * klass , void * data )
{
DeviceClass * dc = DEVICE_CLASS ( klass ) ;
dc - > vmsd = & vmstate_icp_control ;
}
static const TypeInfo core_info = {
@ -655,6 +712,7 @@ static const TypeInfo icp_pic_info = {
. parent = TYPE_SYS_BUS_DEVICE ,
. instance_size = sizeof ( icp_pic_state ) ,
. instance_init = icp_pic_init ,
. class_init = icp_pic_class_init ,
} ;
static const TypeInfo icp_ctrl_regs_info = {
@ -662,6 +720,7 @@ static const TypeInfo icp_ctrl_regs_info = {
. parent = TYPE_SYS_BUS_DEVICE ,
. instance_size = sizeof ( ICPCtrlRegsState ) ,
. instance_init = icp_control_init ,
. class_init = icp_control_class_init ,
} ;
static void integratorcp_register_types ( void )