From 0f34a00703bf4dd2cd0ff673e343b72ad5bdc5bd Mon Sep 17 00:00:00 2001 From: Ali Saidi Date: Wed, 11 Feb 2004 15:32:30 -0500 Subject: [PATCH] added serializeation code --HG-- extra : convert_revision : 468f3c739707d167af43562695b604fd7dead661 --- dev/tsunami_cchip.cc | 14 ++++++++++++-- dev/tsunami_io.cc | 26 ++++++++++++++++++++++++-- dev/tsunami_pchip.cc | 28 ++++++++++++++++++++++++++-- dev/tsunami_uart.cc | 3 ++- 4 files changed, 64 insertions(+), 7 deletions(-) diff --git a/dev/tsunami_cchip.cc b/dev/tsunami_cchip.cc index 374c50d66..cdef6202e 100644 --- a/dev/tsunami_cchip.cc +++ b/dev/tsunami_cchip.cc @@ -279,13 +279,23 @@ TsunamiCChip::clearDRIR(uint64_t bitvector) void TsunamiCChip::serialize(std::ostream &os) { - // code should be written + SERIALIZE_ARRAY(dim, Tsunami::Max_CPUs); + SERIALIZE_ARRAY(dir, Tsunami::Max_CPUs); + SERIALIZE_ARRAY(dirInterrupting, Tsunami::Max_CPUs); + SERIALIZE_SCALAR(drir); + SERIALIZE_SCALAR(misc); + SERIALIZE_SCALAR(RTCInterrupting); } void TsunamiCChip::unserialize(Checkpoint *cp, const std::string §ion) { - //code should be written + UNSERIALIZE_ARRAY(dim, Tsunami::Max_CPUs); + UNSERIALIZE_ARRAY(dir, Tsunami::Max_CPUs); + UNSERIALIZE_ARRAY(dirInterrupting, Tsunami::Max_CPUs); + UNSERIALIZE_SCALAR(drir); + UNSERIALIZE_SCALAR(misc); + UNSERIALIZE_SCALAR(RTCInterrupting); } BEGIN_DECLARE_SIM_OBJECT_PARAMS(TsunamiCChip) diff --git a/dev/tsunami_io.cc b/dev/tsunami_io.cc index dd2ac3acc..65e411a06 100644 --- a/dev/tsunami_io.cc +++ b/dev/tsunami_io.cc @@ -346,13 +346,35 @@ TsunamiIO::clearPIC(uint8_t bitvector) void TsunamiIO::serialize(std::ostream &os) { - // code should be written + SERIALIZE_SCALAR(timerData); + SERIALIZE_SCALAR(uip); + SERIALIZE_SCALAR(picr); + SERIALIZE_SCALAR(picInterrupting); + Tick time0when = timer0.when(); + Tick time2when = timer2.when(); + Tick rtcwhen = rtc.when(); + SERIALIZE_SCALAR(time0when); + SERIALIZE_SCALAR(time2when); + SERIALIZE_SCALAR(rtcwhen); + } void TsunamiIO::unserialize(Checkpoint *cp, const std::string §ion) { - //code should be written + UNSERIALIZE_SCALAR(timerData); + UNSERIALIZE_SCALAR(uip); + UNSERIALIZE_SCALAR(picr); + UNSERIALIZE_SCALAR(picInterrupting); + Tick time0when; + Tick time2when; + Tick rtcwhen; + UNSERIALIZE_SCALAR(time0when); + UNSERIALIZE_SCALAR(time2when); + UNSERIALIZE_SCALAR(rtcwhen); + timer0.reschedule(time0when); + timer2.reschedule(time2when); + rtc.reschedule(rtcwhen); } BEGIN_DECLARE_SIM_OBJECT_PARAMS(TsunamiIO) diff --git a/dev/tsunami_pchip.cc b/dev/tsunami_pchip.cc index b67bd476d..449f4f0cb 100644 --- a/dev/tsunami_pchip.cc +++ b/dev/tsunami_pchip.cc @@ -227,13 +227,37 @@ TsunamiPChip::write(MemReqPtr &req, const uint8_t *data) void TsunamiPChip::serialize(std::ostream &os) { - // code should be written + SERIALIZE_SCALAR(wsba0); + SERIALIZE_SCALAR(wsba1); + SERIALIZE_SCALAR(wsba2); + SERIALIZE_SCALAR(wsba3); + SERIALIZE_SCALAR(wsm0); + SERIALIZE_SCALAR(wsm1); + SERIALIZE_SCALAR(wsm2); + SERIALIZE_SCALAR(wsm3); + SERIALIZE_SCALAR(tba0); + SERIALIZE_SCALAR(tba1); + SERIALIZE_SCALAR(tba2); + SERIALIZE_SCALAR(tba3); + } void TsunamiPChip::unserialize(Checkpoint *cp, const std::string §ion) { - //code should be written + UNSERIALIZE_SCALAR(wsba0); + UNSERIALIZE_SCALAR(wsba1); + UNSERIALIZE_SCALAR(wsba2); + UNSERIALIZE_SCALAR(wsba3); + UNSERIALIZE_SCALAR(wsm0); + UNSERIALIZE_SCALAR(wsm1); + UNSERIALIZE_SCALAR(wsm2); + UNSERIALIZE_SCALAR(wsm3); + UNSERIALIZE_SCALAR(tba0); + UNSERIALIZE_SCALAR(tba1); + UNSERIALIZE_SCALAR(tba2); + UNSERIALIZE_SCALAR(tba3); + } BEGIN_DECLARE_SIM_OBJECT_PARAMS(TsunamiPChip) diff --git a/dev/tsunami_uart.cc b/dev/tsunami_uart.cc index ab9236081..4b9e7a76b 100644 --- a/dev/tsunami_uart.cc +++ b/dev/tsunami_uart.cc @@ -117,7 +117,6 @@ TsunamiUart::read(MemReqPtr &req, uint8_t *data) *data = 0; return No_Fault; case 0xA: - //*data = 2<<6; // This means a 8250 serial port, do we want a 16550? *data = 0; // This means a 8250 serial port, do we want a 16550? return No_Fault; } @@ -183,6 +182,7 @@ TsunamiUart::serialize(ostream &os) SERIALIZE_SCALAR(status_store); SERIALIZE_SCALAR(next_char); SERIALIZE_SCALAR(valid_char); + SERIALIZE_SCALAR(IER); } void @@ -191,6 +191,7 @@ TsunamiUart::unserialize(Checkpoint *cp, const std::string §ion) UNSERIALIZE_SCALAR(status_store); UNSERIALIZE_SCALAR(next_char); UNSERIALIZE_SCALAR(valid_char); + UNSERIALIZE_SCALAR(IER); } BEGIN_DECLARE_SIM_OBJECT_PARAMS(TsunamiUart)