diff -r 9091c978b84e -r ecacded99f44 src/mem/abstract_mem.hh --- a/src/mem/abstract_mem.hh Fri Nov 02 13:15:10 2012 -0400 +++ b/src/mem/abstract_mem.hh Fri Nov 02 13:15:11 2012 -0400 @@ -304,6 +304,18 @@ void functionalAccess(PacketPtr pkt); /** + * Get a pointer to the backing store of this memory. + * + * @note Memory should normally be accessed using access() or + * functionalAccess(). This interface is primarily intended + * for CPU models using hardware virtualization. + * + * @return Pointer to the memory allocation backing this memory or + * NULL if the memory is a read-as-zero memory. + */ + uint8_t* getBackingStore() { return pmemAddr; } + + /** * Register Statistics */ virtual void regStats(); diff -r 9091c978b84e -r ecacded99f44 src/mem/physical.hh --- a/src/mem/physical.hh Fri Nov 02 13:15:10 2012 -0400 +++ b/src/mem/physical.hh Fri Nov 02 13:15:11 2012 -0400 @@ -183,6 +183,17 @@ void functionalAccess(PacketPtr pkt); /** + * Get a list of all memories in the system. + * + * @note Memory should normally be accessed using access() or + * functionalAccess(). This interface is primarily intended + * for CPU models using hardware virtualization. + * + * @return A constant list of abstract memories + */ + const std::vector& getMemories() { return memories; } + + /** * Serialize all the memories in the system. This is independent * of the logical memory layout, and the serialization only sees * the contigous backing store, independent of how this maps to