#ifndef __ARCH_SPARC_TLB_MAP_HH__
#define __ARCH_SPARC_TLB_MAP_HH__
-#include "arch/sparc/pagetable.hh"
#include <map>
+#include "arch/sparc/pagetable.hh"
+
namespace SparcISA
{
public:
typedef RangeMap::iterator iterator;
- iterator find(const TlbRange &r)
+ iterator
+ find(const TlbRange &r)
{
iterator i;
i = tree.upper_bound(r);
- if (i == tree.begin())
+ if (i == tree.begin()) {
if (r.real == i->first.real &&
r.partitionId == i->first.partitionId &&
i->first.va < r.va + r.size &&
else
// Nothing could match, so return end()
return tree.end();
+ }
i--;
return tree.end();
}
- bool intersect(const TlbRange &r)
+ bool
+ intersect(const TlbRange &r)
{
iterator i;
i = find(r);
}
- iterator insert(TlbRange &r, TlbEntry *d)
+ iterator
+ insert(TlbRange &r, TlbEntry *d)
{
if (intersect(r))
return tree.end();
- return tree.insert(std::make_pair<TlbRange,TlbEntry*>(r, d)).first;
+ return tree.insert(std::make_pair(r, d)).first;
}
- size_t erase(TlbRange k)
+ size_t
+ erase(TlbRange k)
{
return tree.erase(k);
}
- void erase(iterator p)
+ void
+ erase(iterator p)
{
tree.erase(p);
}
- void erase(iterator p, iterator q)
+ void
+ erase(iterator p, iterator q)
{
tree.erase(p,q);
}
- void clear()
+ void
+ clear()
{
tree.erase(tree.begin(), tree.end());
}
- iterator begin()
+ iterator
+ begin()
{
return tree.begin();
}
- iterator end()
+ iterator
+ end()
{
return tree.end();
}
- size_t size()
+ size_t
+ size()
{
return tree.size();
}
- bool empty()
+ bool
+ empty()
{
return tree.empty();
}
+
+ void
+ print()
+ {
+ iterator i;
+ i = tree.begin();
+ while (i != tree.end()) {
+ std::cout << std::hex << i->first.va << " " << i->first.size << " " <<
+ i->first.contextId << " " << i->first.partitionId << " " <<
+ i->first.real << " " << i->second << std::endl;
+ i++;
+ }
+ }
+
};
};