summaryrefslogtreecommitdiff
path: root/util/m5
diff options
context:
space:
mode:
Diffstat (limited to 'util/m5')
-rw-r--r--util/m5/Makefile3
-rw-r--r--util/m5/m5.c17
-rw-r--r--util/m5/m5op.S21
-rw-r--r--util/m5/m5op.h5
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__