When serialize and unserialize an variable, the parameters passed to
SERIALIZE_SCALAR() and UNSERIALIZE_SCALAR() must be the same and should be a
general variable name. If not, the expected item would not be found with
UNSERIALIZE_SCALAR() and a fatal error would be introduced.
This patch fix the bug in class Interrupts of RISCV.
Change-Id: I7dd7ab6805651149304959bdf7ee9f3be9d9eaff
Signed-off-by: Ian Jiang <ianjiang.ict@gmail.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/22643
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Alec Roelke <alec.roelke@gmail.com>
Maintainer: Alec Roelke <alec.roelke@gmail.com>
void
serialize(CheckpointOut &cp) const
{
- SERIALIZE_SCALAR(ip.to_ulong());
- SERIALIZE_SCALAR(ie.to_ulong());
+ unsigned long ip_ulong = ip.to_ulong();
+ unsigned long ie_ulong = ie.to_ulong();
+ SERIALIZE_SCALAR(ip_ulong);
+ SERIALIZE_SCALAR(ie_ulong);
}
void
unserialize(CheckpointIn &cp)
{
- long reg;
- UNSERIALIZE_SCALAR(reg);
- ip = reg;
- UNSERIALIZE_SCALAR(reg);
- ie = reg;
+ unsigned long ip_ulong;
+ unsigned long ie_ulong;
+ UNSERIALIZE_SCALAR(ip_ulong);
+ ip = ip_ulong;
+ UNSERIALIZE_SCALAR(ie_ulong);
+ ie = ie_ulong;
}
};