diff options
Diffstat (limited to 'util/m5')
-rw-r--r-- | util/m5/Makefile | 3 | ||||
-rw-r--r-- | util/m5/m5.c | 17 | ||||
-rw-r--r-- | util/m5/m5op.S | 21 | ||||
-rw-r--r-- | util/m5/m5op.h | 5 |
4 files changed, 46 insertions, 0 deletions
diff --git a/util/m5/Makefile b/util/m5/Makefile index 518542322..a98092e47 100644 --- a/util/m5/Makefile +++ b/util/m5/Makefile @@ -23,6 +23,9 @@ # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# Authors: Nathan Binkert +# Ali Saidi ### If we are not compiling on an alpha, we must use cross tools ### ifneq ($(shell uname -m), alpha) diff --git a/util/m5/m5.c b/util/m5/m5.c index fa9be96e8..23401aea5 100644 --- a/util/m5/m5.c +++ b/util/m5/m5.c @@ -24,6 +24,8 @@ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * Authors: Nathan Binkert */ #include <inttypes.h> @@ -48,6 +50,7 @@ usage() " m5 dumpstats [delay [period]]\n" " m5 dumpresetstats [delay [period]]\n" " m5 checkpoint [delay [period]]\n" + " m5 readfile\n" "\n" "All times in nanoseconds!\n"); exit(1); @@ -202,6 +205,20 @@ main(int argc, char *argv[]) if (COMPARE("loadsymbol")) { m5_loadsymbol(arg1); return 0; + if (COMPARE("readfile")) { + char buf[256*1024]; + int offset = 0; + int len; + + if (argc != 2) + usage(); + + while ((len = m5_readfile(buf, sizeof(buf), offset)) > 0) { + write(STDOUT_FILENO, buf, len); + offset += len; + } + + return 0; } usage(); diff --git a/util/m5/m5op.S b/util/m5/m5op.S index 97eb9238d..a19113e62 100644 --- a/util/m5/m5op.S +++ b/util/m5/m5op.S @@ -24,6 +24,9 @@ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * Authors: Nathan Binkert + * Ali Saidi */ #define m5_op 0x01 @@ -48,6 +51,8 @@ #define switchcpu_func 0x52 #define addsymbol_func 0x53 #define panic_func 0x54 +#define anbegin_func 0x55 +#define anwait_func 0x56 #define INST(op, ra, rb, func) \ .long (((op) << 26) | ((ra) << 21) | ((rb) << 16) | (func)) @@ -83,6 +88,8 @@ func: #define SWITCHCPU INST(m5_op, 0, 0, switchcpu_func) #define ADDSYMBOL(r1,r2) INST(m5_op, r1, r2, addsymbol_func) #define PANIC INST(m5_op, 0, 0, panic_func) +#define AN_BEGIN(r1) INST(m5_op, r1, 0, anbegin_func) +#define AN_WAIT(r1,r2) INST(m5_op, r1, r2, anwait_func) .set noreorder @@ -202,3 +209,17 @@ LEAF(m5_panic) END(m5_panic) + .align 4 +LEAF(m5_anbegin) + AN_BEGIN(16) + RET +END(m5_anbegin) + + + .align 4 +LEAF(m5_anwait) + AN_WAIT(16,17) + RET +END(m5_anwait) + + diff --git a/util/m5/m5op.h b/util/m5/m5op.h index 34ac7760d..eab4e7fd5 100644 --- a/util/m5/m5op.h +++ b/util/m5/m5op.h @@ -24,6 +24,9 @@ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * Authors: Nathan Binkert + * Ali Saidi */ #ifndef __M5OP_H__ @@ -50,5 +53,7 @@ void m5_debugbreak(void); void m5_switchcpu(void); void m5_addsymbol(uint64_t addr, char *symbol); void m5_panic(void); +void m5_anbegin(uint64_t s); +void m5_anwait(uint64_t s, uint64_t w); #endif // __M5OP_H__ |