Revision 4a1b0f1c
b/hw/lsi53c895a.c | ||
---|---|---|
1959 | 1959 |
cpu_register_physical_memory(addr + 0, 0x400, s->mmio_io_addr); |
1960 | 1960 |
} |
1961 | 1961 |
|
1962 |
static void lsi_scsi_save(QEMUFile *f, void *opaque)
|
|
1962 |
static void lsi_pre_save(void *opaque)
|
|
1963 | 1963 |
{ |
1964 | 1964 |
LSIState *s = opaque; |
1965 | 1965 |
|
1966 | 1966 |
assert(s->dma_buf == NULL); |
1967 | 1967 |
assert(s->current_dma_len == 0); |
1968 | 1968 |
assert(s->active_commands == 0); |
1969 |
|
|
1970 |
pci_device_save(&s->dev, f); |
|
1971 |
|
|
1972 |
qemu_put_sbe32s(f, &s->carry); |
|
1973 |
qemu_put_sbe32s(f, &s->sense); |
|
1974 |
qemu_put_sbe32s(f, &s->msg_action); |
|
1975 |
qemu_put_sbe32s(f, &s->msg_len); |
|
1976 |
qemu_put_buffer(f, s->msg, sizeof (s->msg)); |
|
1977 |
qemu_put_sbe32s(f, &s->waiting); |
|
1978 |
|
|
1979 |
qemu_put_be32s(f, &s->dsa); |
|
1980 |
qemu_put_be32s(f, &s->temp); |
|
1981 |
qemu_put_be32s(f, &s->dnad); |
|
1982 |
qemu_put_be32s(f, &s->dbc); |
|
1983 |
qemu_put_8s(f, &s->istat0); |
|
1984 |
qemu_put_8s(f, &s->istat1); |
|
1985 |
qemu_put_8s(f, &s->dcmd); |
|
1986 |
qemu_put_8s(f, &s->dstat); |
|
1987 |
qemu_put_8s(f, &s->dien); |
|
1988 |
qemu_put_8s(f, &s->sist0); |
|
1989 |
qemu_put_8s(f, &s->sist1); |
|
1990 |
qemu_put_8s(f, &s->sien0); |
|
1991 |
qemu_put_8s(f, &s->sien1); |
|
1992 |
qemu_put_8s(f, &s->mbox0); |
|
1993 |
qemu_put_8s(f, &s->mbox1); |
|
1994 |
qemu_put_8s(f, &s->dfifo); |
|
1995 |
qemu_put_8s(f, &s->ctest2); |
|
1996 |
qemu_put_8s(f, &s->ctest3); |
|
1997 |
qemu_put_8s(f, &s->ctest4); |
|
1998 |
qemu_put_8s(f, &s->ctest5); |
|
1999 |
qemu_put_8s(f, &s->ccntl0); |
|
2000 |
qemu_put_8s(f, &s->ccntl1); |
|
2001 |
qemu_put_be32s(f, &s->dsp); |
|
2002 |
qemu_put_be32s(f, &s->dsps); |
|
2003 |
qemu_put_8s(f, &s->dmode); |
|
2004 |
qemu_put_8s(f, &s->dcntl); |
|
2005 |
qemu_put_8s(f, &s->scntl0); |
|
2006 |
qemu_put_8s(f, &s->scntl1); |
|
2007 |
qemu_put_8s(f, &s->scntl2); |
|
2008 |
qemu_put_8s(f, &s->scntl3); |
|
2009 |
qemu_put_8s(f, &s->sstat0); |
|
2010 |
qemu_put_8s(f, &s->sstat1); |
|
2011 |
qemu_put_8s(f, &s->scid); |
|
2012 |
qemu_put_8s(f, &s->sxfer); |
|
2013 |
qemu_put_8s(f, &s->socl); |
|
2014 |
qemu_put_8s(f, &s->sdid); |
|
2015 |
qemu_put_8s(f, &s->ssid); |
|
2016 |
qemu_put_8s(f, &s->sfbr); |
|
2017 |
qemu_put_8s(f, &s->stest1); |
|
2018 |
qemu_put_8s(f, &s->stest2); |
|
2019 |
qemu_put_8s(f, &s->stest3); |
|
2020 |
qemu_put_8s(f, &s->sidl); |
|
2021 |
qemu_put_8s(f, &s->stime0); |
|
2022 |
qemu_put_8s(f, &s->respid0); |
|
2023 |
qemu_put_8s(f, &s->respid1); |
|
2024 |
qemu_put_be32s(f, &s->mmrs); |
|
2025 |
qemu_put_be32s(f, &s->mmws); |
|
2026 |
qemu_put_be32s(f, &s->sfs); |
|
2027 |
qemu_put_be32s(f, &s->drs); |
|
2028 |
qemu_put_be32s(f, &s->sbms); |
|
2029 |
qemu_put_be32s(f, &s->dbms); |
|
2030 |
qemu_put_be32s(f, &s->dnad64); |
|
2031 |
qemu_put_be32s(f, &s->pmjad1); |
|
2032 |
qemu_put_be32s(f, &s->pmjad2); |
|
2033 |
qemu_put_be32s(f, &s->rbc); |
|
2034 |
qemu_put_be32s(f, &s->ua); |
|
2035 |
qemu_put_be32s(f, &s->ia); |
|
2036 |
qemu_put_be32s(f, &s->sbc); |
|
2037 |
qemu_put_be32s(f, &s->csbc); |
|
2038 |
qemu_put_buffer(f, (uint8_t *)s->scratch, sizeof (s->scratch)); |
|
2039 |
qemu_put_8s(f, &s->sbr); |
|
2040 |
|
|
2041 |
qemu_put_buffer(f, (uint8_t *)s->script_ram, sizeof (s->script_ram)); |
|
2042 | 1969 |
} |
2043 | 1970 |
|
2044 |
static int lsi_scsi_load(QEMUFile *f, void *opaque, int version_id) |
|
2045 |
{ |
|
2046 |
LSIState *s = opaque; |
|
2047 |
int ret; |
|
2048 |
|
|
2049 |
if (version_id > 0) { |
|
2050 |
return -EINVAL; |
|
1971 |
static const VMStateDescription vmstate_lsi_scsi = { |
|
1972 |
.name = "lsiscsi", |
|
1973 |
.version_id = 0, |
|
1974 |
.minimum_version_id = 0, |
|
1975 |
.minimum_version_id_old = 0, |
|
1976 |
.pre_save = lsi_pre_save, |
|
1977 |
.fields = (VMStateField []) { |
|
1978 |
VMSTATE_PCI_DEVICE(dev, LSIState), |
|
1979 |
|
|
1980 |
VMSTATE_INT32(carry, LSIState), |
|
1981 |
VMSTATE_INT32(sense, LSIState), |
|
1982 |
VMSTATE_INT32(msg_action, LSIState), |
|
1983 |
VMSTATE_INT32(msg_len, LSIState), |
|
1984 |
VMSTATE_BUFFER(msg, LSIState), |
|
1985 |
VMSTATE_INT32(waiting, LSIState), |
|
1986 |
|
|
1987 |
VMSTATE_UINT32(dsa, LSIState), |
|
1988 |
VMSTATE_UINT32(temp, LSIState), |
|
1989 |
VMSTATE_UINT32(dnad, LSIState), |
|
1990 |
VMSTATE_UINT32(dbc, LSIState), |
|
1991 |
VMSTATE_UINT8(istat0, LSIState), |
|
1992 |
VMSTATE_UINT8(istat1, LSIState), |
|
1993 |
VMSTATE_UINT8(dcmd, LSIState), |
|
1994 |
VMSTATE_UINT8(dstat, LSIState), |
|
1995 |
VMSTATE_UINT8(dien, LSIState), |
|
1996 |
VMSTATE_UINT8(sist0, LSIState), |
|
1997 |
VMSTATE_UINT8(sist1, LSIState), |
|
1998 |
VMSTATE_UINT8(sien0, LSIState), |
|
1999 |
VMSTATE_UINT8(sien1, LSIState), |
|
2000 |
VMSTATE_UINT8(mbox0, LSIState), |
|
2001 |
VMSTATE_UINT8(mbox1, LSIState), |
|
2002 |
VMSTATE_UINT8(dfifo, LSIState), |
|
2003 |
VMSTATE_UINT8(ctest2, LSIState), |
|
2004 |
VMSTATE_UINT8(ctest3, LSIState), |
|
2005 |
VMSTATE_UINT8(ctest4, LSIState), |
|
2006 |
VMSTATE_UINT8(ctest5, LSIState), |
|
2007 |
VMSTATE_UINT8(ccntl0, LSIState), |
|
2008 |
VMSTATE_UINT8(ccntl1, LSIState), |
|
2009 |
VMSTATE_UINT32(dsp, LSIState), |
|
2010 |
VMSTATE_UINT32(dsps, LSIState), |
|
2011 |
VMSTATE_UINT8(dmode, LSIState), |
|
2012 |
VMSTATE_UINT8(dcntl, LSIState), |
|
2013 |
VMSTATE_UINT8(scntl0, LSIState), |
|
2014 |
VMSTATE_UINT8(scntl1, LSIState), |
|
2015 |
VMSTATE_UINT8(scntl2, LSIState), |
|
2016 |
VMSTATE_UINT8(scntl3, LSIState), |
|
2017 |
VMSTATE_UINT8(sstat0, LSIState), |
|
2018 |
VMSTATE_UINT8(sstat1, LSIState), |
|
2019 |
VMSTATE_UINT8(scid, LSIState), |
|
2020 |
VMSTATE_UINT8(sxfer, LSIState), |
|
2021 |
VMSTATE_UINT8(socl, LSIState), |
|
2022 |
VMSTATE_UINT8(sdid, LSIState), |
|
2023 |
VMSTATE_UINT8(ssid, LSIState), |
|
2024 |
VMSTATE_UINT8(sfbr, LSIState), |
|
2025 |
VMSTATE_UINT8(stest1, LSIState), |
|
2026 |
VMSTATE_UINT8(stest2, LSIState), |
|
2027 |
VMSTATE_UINT8(stest3, LSIState), |
|
2028 |
VMSTATE_UINT8(sidl, LSIState), |
|
2029 |
VMSTATE_UINT8(stime0, LSIState), |
|
2030 |
VMSTATE_UINT8(respid0, LSIState), |
|
2031 |
VMSTATE_UINT8(respid1, LSIState), |
|
2032 |
VMSTATE_UINT32(mmrs, LSIState), |
|
2033 |
VMSTATE_UINT32(mmws, LSIState), |
|
2034 |
VMSTATE_UINT32(sfs, LSIState), |
|
2035 |
VMSTATE_UINT32(drs, LSIState), |
|
2036 |
VMSTATE_UINT32(sbms, LSIState), |
|
2037 |
VMSTATE_UINT32(dbms, LSIState), |
|
2038 |
VMSTATE_UINT32(dnad64, LSIState), |
|
2039 |
VMSTATE_UINT32(pmjad1, LSIState), |
|
2040 |
VMSTATE_UINT32(pmjad2, LSIState), |
|
2041 |
VMSTATE_UINT32(rbc, LSIState), |
|
2042 |
VMSTATE_UINT32(ua, LSIState), |
|
2043 |
VMSTATE_UINT32(ia, LSIState), |
|
2044 |
VMSTATE_UINT32(sbc, LSIState), |
|
2045 |
VMSTATE_UINT32(csbc, LSIState), |
|
2046 |
VMSTATE_BUFFER_UNSAFE(scratch, LSIState, 0, 18 * sizeof(uint32_t)), |
|
2047 |
VMSTATE_UINT8(sbr, LSIState), |
|
2048 |
|
|
2049 |
VMSTATE_BUFFER_UNSAFE(script_ram, LSIState, 0, 2048 * sizeof(uint32_t)), |
|
2050 |
VMSTATE_END_OF_LIST() |
|
2051 | 2051 |
} |
2052 |
|
|
2053 |
if ((ret = pci_device_load(&s->dev, f)) < 0) |
|
2054 |
return ret; |
|
2055 |
|
|
2056 |
qemu_get_sbe32s(f, &s->carry); |
|
2057 |
qemu_get_sbe32s(f, &s->sense); |
|
2058 |
qemu_get_sbe32s(f, &s->msg_action); |
|
2059 |
qemu_get_sbe32s(f, &s->msg_len); |
|
2060 |
qemu_get_buffer(f, s->msg, sizeof (s->msg)); |
|
2061 |
qemu_get_sbe32s(f, &s->waiting); |
|
2062 |
|
|
2063 |
qemu_get_be32s(f, &s->dsa); |
|
2064 |
qemu_get_be32s(f, &s->temp); |
|
2065 |
qemu_get_be32s(f, &s->dnad); |
|
2066 |
qemu_get_be32s(f, &s->dbc); |
|
2067 |
qemu_get_8s(f, &s->istat0); |
|
2068 |
qemu_get_8s(f, &s->istat1); |
|
2069 |
qemu_get_8s(f, &s->dcmd); |
|
2070 |
qemu_get_8s(f, &s->dstat); |
|
2071 |
qemu_get_8s(f, &s->dien); |
|
2072 |
qemu_get_8s(f, &s->sist0); |
|
2073 |
qemu_get_8s(f, &s->sist1); |
|
2074 |
qemu_get_8s(f, &s->sien0); |
|
2075 |
qemu_get_8s(f, &s->sien1); |
|
2076 |
qemu_get_8s(f, &s->mbox0); |
|
2077 |
qemu_get_8s(f, &s->mbox1); |
|
2078 |
qemu_get_8s(f, &s->dfifo); |
|
2079 |
qemu_get_8s(f, &s->ctest2); |
|
2080 |
qemu_get_8s(f, &s->ctest3); |
|
2081 |
qemu_get_8s(f, &s->ctest4); |
|
2082 |
qemu_get_8s(f, &s->ctest5); |
|
2083 |
qemu_get_8s(f, &s->ccntl0); |
|
2084 |
qemu_get_8s(f, &s->ccntl1); |
|
2085 |
qemu_get_be32s(f, &s->dsp); |
|
2086 |
qemu_get_be32s(f, &s->dsps); |
|
2087 |
qemu_get_8s(f, &s->dmode); |
|
2088 |
qemu_get_8s(f, &s->dcntl); |
|
2089 |
qemu_get_8s(f, &s->scntl0); |
|
2090 |
qemu_get_8s(f, &s->scntl1); |
|
2091 |
qemu_get_8s(f, &s->scntl2); |
|
2092 |
qemu_get_8s(f, &s->scntl3); |
|
2093 |
qemu_get_8s(f, &s->sstat0); |
|
2094 |
qemu_get_8s(f, &s->sstat1); |
|
2095 |
qemu_get_8s(f, &s->scid); |
|
2096 |
qemu_get_8s(f, &s->sxfer); |
|
2097 |
qemu_get_8s(f, &s->socl); |
|
2098 |
qemu_get_8s(f, &s->sdid); |
|
2099 |
qemu_get_8s(f, &s->ssid); |
|
2100 |
qemu_get_8s(f, &s->sfbr); |
|
2101 |
qemu_get_8s(f, &s->stest1); |
|
2102 |
qemu_get_8s(f, &s->stest2); |
|
2103 |
qemu_get_8s(f, &s->stest3); |
|
2104 |
qemu_get_8s(f, &s->sidl); |
|
2105 |
qemu_get_8s(f, &s->stime0); |
|
2106 |
qemu_get_8s(f, &s->respid0); |
|
2107 |
qemu_get_8s(f, &s->respid1); |
|
2108 |
qemu_get_be32s(f, &s->mmrs); |
|
2109 |
qemu_get_be32s(f, &s->mmws); |
|
2110 |
qemu_get_be32s(f, &s->sfs); |
|
2111 |
qemu_get_be32s(f, &s->drs); |
|
2112 |
qemu_get_be32s(f, &s->sbms); |
|
2113 |
qemu_get_be32s(f, &s->dbms); |
|
2114 |
qemu_get_be32s(f, &s->dnad64); |
|
2115 |
qemu_get_be32s(f, &s->pmjad1); |
|
2116 |
qemu_get_be32s(f, &s->pmjad2); |
|
2117 |
qemu_get_be32s(f, &s->rbc); |
|
2118 |
qemu_get_be32s(f, &s->ua); |
|
2119 |
qemu_get_be32s(f, &s->ia); |
|
2120 |
qemu_get_be32s(f, &s->sbc); |
|
2121 |
qemu_get_be32s(f, &s->csbc); |
|
2122 |
qemu_get_buffer(f, (uint8_t *)s->scratch, sizeof (s->scratch)); |
|
2123 |
qemu_get_8s(f, &s->sbr); |
|
2124 |
|
|
2125 |
qemu_get_buffer(f, (uint8_t *)s->script_ram, sizeof (s->script_ram)); |
|
2126 |
|
|
2127 |
return 0; |
|
2128 |
} |
|
2052 |
}; |
|
2129 | 2053 |
|
2130 | 2054 |
static int lsi_scsi_uninit(PCIDevice *d) |
2131 | 2055 |
{ |
... | ... | |
2181 | 2105 |
if (!dev->qdev.hotplugged) { |
2182 | 2106 |
scsi_bus_legacy_handle_cmdline(&s->bus); |
2183 | 2107 |
} |
2184 |
register_savevm("lsiscsi", -1, 0, lsi_scsi_save, lsi_scsi_load, s);
|
|
2108 |
vmstate_register(-1, &vmstate_lsi_scsi, s);
|
|
2185 | 2109 |
return 0; |
2186 | 2110 |
} |
2187 | 2111 |
|
Also available in: Unified diff