#define __PAGE_TABLE__
#include <string>
-#include <map>
+#include "sim/faults.hh"
#include "arch/isa_traits.hh"
+#include "base/hashmap.hh"
#include "base/trace.hh"
#include "mem/request.hh"
#include "mem/packet.hh"
class System;
/**
- * Page Table Decleration.
+ * Page Table Declaration.
*/
class PageTable
{
protected:
- std::map<Addr,Addr> pTable;
+ m5::hash_map<Addr,Addr> pTable;
+
+ struct cacheElement {
+ Addr paddr;
+ Addr vaddr;
+ } ;
+
+ struct cacheElement pTableCache[3];
const Addr pageSize;
const Addr offsetMask;
Addr pageAlign(Addr a) { return (a & ~offsetMask); }
Addr pageOffset(Addr a) { return (a & offsetMask); }
- Fault page_check(Addr addr, int size) const;
+ Fault page_check(Addr addr, int64_t size) const;
- void allocate(Addr vaddr, int size);
+ void allocate(Addr vaddr, int64_t size);
/**
* Translate function
*/
Fault translate(RequestPtr &req);
+ void serialize(std::ostream &os);
+ void unserialize(Checkpoint *cp, const std::string §ion);
};
#endif