void SERIAL::initialize()
{
- for(int i = 0; i < 4; i++) {
- sioctrl[i].baud = 0;
- sioctrl[i].ctrl = 0;
- sioctrl[i].rxrdy = false;
- sioctrl[i].txrdy = false;
- sioctrl[i].intstat = 0;
- sioctrl[i].intmask = 0;
- }
+ memset(sioctrl, sizeof(sioctrl), 1);
}
-void SERIAL::write_io8(uint32 addr, uint32 data)
+void SERIAL::write_io8(uint32_t addr, uint32_t data)
{
switch(addr & 0xffff) {
case 0x0a:
}
}
-uint32 SERIAL::read_io8(uint32 addr)
+uint32_t SERIAL::read_io8(uint32_t addr)
{
switch(addr & 0xffff) {
case 0x0a:
return 0xff;
}
-void SERIAL::write_signal(int id, uint32 data, uint32 mask)
+void SERIAL::write_signal(int id, uint32_t data, uint32_t mask)
{
switch(id) {
case SIG_SERIAL_RXRDY_KB:
sioctrl[ch].intstat &= ~4;
}
}
+
+#define STATE_VERSION 1
+
+bool SERIAL::process_state(FILEIO* state_fio, bool loading)
+{
+ if(!state_fio->StateCheckUint32(STATE_VERSION)) {
+ return false;
+ }
+ if(!state_fio->StateCheckInt32(this_device_id)) {
+ return false;
+ }
+ //state_fio->StateBuffer(sioctrl, sizeof(sioctrl), 1);
+ for(int i = 0; i < 4; i++) {
+ state_fio->StateUint8(sioctrl[i].baud);
+ state_fio->StateUint8(sioctrl[i].ctrl);
+ state_fio->StateBool(sioctrl[i].rxrdy);
+ state_fio->StateBool(sioctrl[i].txrdy);
+ state_fio->StateUint8(sioctrl[i].intmask);
+ state_fio->StateUint8(sioctrl[i].intstat);
+ }
+ return true;
+}