* Authors: Gabe Black
*/
+#include <cmath>
#include "arch/x86/isa_traits.hh"
#include "arch/x86/pagetable.hh"
#include "sim/serialize.hh"
namespace X86ISA
{
-TlbEntry::TlbEntry(Addr asn, Addr _vaddr, Addr _paddr) :
- paddr(_paddr), vaddr(_vaddr), size(PageBytes), writable(true), user(true),
- uncacheable(false), global(false), patBit(0), noExec(false)
+TlbEntry::TlbEntry(Addr asn, Addr _vaddr, Addr _paddr,
+ bool uncacheable, bool read_only) :
+ paddr(_paddr), vaddr(_vaddr), logBytes(PageShift), writable(!read_only),
+ user(true), uncacheable(uncacheable), global(false), patBit(0),
+ noExec(false)
{}
void
TlbEntry::serialize(std::ostream &os)
{
+ SERIALIZE_SCALAR(paddr);
+ SERIALIZE_SCALAR(vaddr);
+ SERIALIZE_SCALAR(logBytes);
+ SERIALIZE_SCALAR(writable);
+ SERIALIZE_SCALAR(user);
+ SERIALIZE_SCALAR(uncacheable);
+ SERIALIZE_SCALAR(global);
+ SERIALIZE_SCALAR(patBit);
+ SERIALIZE_SCALAR(noExec);
+ SERIALIZE_SCALAR(lruSeq);
}
void
TlbEntry::unserialize(Checkpoint *cp, const std::string §ion)
{
+ UNSERIALIZE_SCALAR(paddr);
+ UNSERIALIZE_SCALAR(vaddr);
+ UNSERIALIZE_SCALAR(logBytes);
+ UNSERIALIZE_SCALAR(writable);
+ UNSERIALIZE_SCALAR(user);
+ UNSERIALIZE_SCALAR(uncacheable);
+ UNSERIALIZE_SCALAR(global);
+ UNSERIALIZE_SCALAR(patBit);
+ UNSERIALIZE_SCALAR(noExec);
+ UNSERIALIZE_SCALAR(lruSeq);
}
}