diff options
Diffstat (limited to 'src/sim')
-rw-r--r-- | src/sim/tlb.cc | 6 | ||||
-rw-r--r-- | src/sim/tlb.hh | 17 |
2 files changed, 23 insertions, 0 deletions
diff --git a/src/sim/tlb.cc b/src/sim/tlb.cc index 86428f168..00a51dbe3 100644 --- a/src/sim/tlb.cc +++ b/src/sim/tlb.cc @@ -58,6 +58,12 @@ GenericTLB::translateTiming(RequestPtr req, ThreadContext *tc, translation->finish(translateAtomic(req, tc, mode), req, tc, mode); } +Fault +GenericTLB::finalizePhysical(RequestPtr req, ThreadContext *tc, Mode mode) const +{ + return NoFault; +} + void GenericTLB::demapPage(Addr vaddr, uint64_t asn) { diff --git a/src/sim/tlb.hh b/src/sim/tlb.hh index 95a252e16..f46c2d856 100644 --- a/src/sim/tlb.hh +++ b/src/sim/tlb.hh @@ -124,6 +124,23 @@ class GenericTLB : public BaseTLB Fault translateAtomic(RequestPtr req, ThreadContext *tc, Mode mode); void translateTiming(RequestPtr req, ThreadContext *tc, Translation *translation, Mode mode); + + + /** + * Do post-translation physical address finalization. + * + * This method is used by some architectures that need + * post-translation massaging of physical addresses. For example, + * X86 uses this to remap physical addresses in the APIC range to + * a range of physical memory not normally available to real x86 + * implementations. + * + * @param req Request to updated in-place. + * @param tc Thread context that created the request. + * @param mode Request type (read/write/execute). + * @return A fault on failure, NoFault otherwise. + */ + Fault finalizePhysical(RequestPtr req, ThreadContext *tc, Mode mode) const; }; #endif // __ARCH_SPARC_TLB_HH__ |