sim: Add support for serializing BitUnionXX
BitUnion instances can normally not be used with the SERIALIZE_SCALAR and UNSERIALIZE_SCALAR macros due to the way they are converted between their storage type and their actual type. This changeset adds a set of parm(In|Out) functions specifically for gem5 bit unions to work around the issue.
This commit is contained in:
parent
66df7b7fd4
commit
804ed4b418
1 changed files with 24 additions and 0 deletions
|
@ -43,6 +43,7 @@
|
|||
#include <map>
|
||||
#include <vector>
|
||||
|
||||
#include "base/bitunion.hh"
|
||||
#include "base/types.hh"
|
||||
|
||||
class IniFile;
|
||||
|
@ -63,14 +64,37 @@ static const uint64_t gem5CheckpointVersion = 0x000000000000000d;
|
|||
template <class T>
|
||||
void paramOut(std::ostream &os, const std::string &name, const T ¶m);
|
||||
|
||||
template <typename DataType, typename BitUnion>
|
||||
void paramOut(std::ostream &os, const std::string &name,
|
||||
const BitfieldBackend::BitUnionOperators<DataType, BitUnion> &p)
|
||||
{
|
||||
paramOut(os, name, p.__data);
|
||||
}
|
||||
|
||||
template <class T>
|
||||
void paramIn(Checkpoint *cp, const std::string §ion,
|
||||
const std::string &name, T ¶m);
|
||||
|
||||
template <typename DataType, typename BitUnion>
|
||||
void paramIn(Checkpoint *cp, const std::string §ion,
|
||||
const std::string &name,
|
||||
BitfieldBackend::BitUnionOperators<DataType, BitUnion> &p)
|
||||
{
|
||||
paramIn(cp, section, name, p.__data);
|
||||
}
|
||||
|
||||
template <class T>
|
||||
bool optParamIn(Checkpoint *cp, const std::string §ion,
|
||||
const std::string &name, T ¶m);
|
||||
|
||||
template <typename DataType, typename BitUnion>
|
||||
bool optParamIn(Checkpoint *cp, const std::string §ion,
|
||||
const std::string &name,
|
||||
BitfieldBackend::BitUnionOperators<DataType, BitUnion> &p)
|
||||
{
|
||||
return optParamIn(cp, section, name, p.__data);
|
||||
}
|
||||
|
||||
template <class T>
|
||||
void arrayParamOut(std::ostream &os, const std::string &name,
|
||||
const T *param, unsigned size);
|
||||
|
|
Loading…
Reference in a new issue