History log of /gem5/util/m5/Makefile.arm
Revision Date Author Comments
# 13103:ff21402d84f2 18-Sep-2018 Kevin Brodsky <kevin.brodsky@arm.com>

util: Do not use $(PWD) in Makefiles

644e8cdf5ee7 ("util: Move the m5ops.h file to a shared directory")
added include/ to the include path for m5 Makefiles, based on
$(PWD): $(PWD)/../../include.

Unfortunately, this breaks when using `make -C <path>`, as -C does
not move PWD accordingly. The fix is simply to remove $(PWD), as a
relative path is just fine here.

Change-Id: Ia046c29761363b6670e52c52a604c7e70a6a305a
Signed-off-by: Kevin Brodsky <kevin.brodsky@arm.com>
Signed-off-by: Ciro Santilli <ciro.santilli@arm.com>
Reviewed-by: Ciro Santilli <ciro.santilli@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/12844
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Jason Lowe-Power <jason@lowepower.com>


# 12464:a02f2484c710 09-Dec-2017 Hanhwi Jang <jang.hanhwi@gmail.com>

util: Implement Lua module for m5ops.

This module allows m5ops to be executed in Lua programs.
To compile it (in util/m5):
The following command generates Lua moduel, gem5OpLua.so.

make -f Makefile.<arch> gem5OpLua.so

To use it:
First, put gem5OpLua.so in Lua library search path.
Then, import the module and execute the m5op function.

Example usage, creating a checkpoint.

m5 = require("gem5OpLua")
m5.do_checkpoint(0, 0)

Change-Id: Icc18a1fb6c050afeb1cf4558fbdc724fb26a90e2
Reviewed-on: https://gem5-review.googlesource.com/6541
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>


# 12157:c27b548bad70 27-Jul-2017 Andreas Sandberg <andreas.sandberg@arm.com>

util: Move the m5ops.h file to a shared directory

The header file m5ops.h contains a list of constants that should be
shared between the simulator and utilities. Move this header file to a
new top-level directory for shared files and rename constants to make
them suitable for inclusion in the main simulator.

The structure of the shared include directory is as follows:

include/gem5: Files that can be included from C code.
include/gem5/asm: Files that can be included from assembly code.
asm/generic/: Files that aren't guest ISA specific
asm/${isa}/: Files that are guest ISA specific

Change-Id: I1aa511057bcaa80cc2d566109ff26581558c4a41
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Jose Marinho <jose.marinho@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/4261
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>


# 10151:2434d2fa50b6 01-Apr-2014 Anthony Gutierrez <atgutier@umich.edu>

arm: fix typos in makefile for ARM m5 util and link statically

1) fixes a typo for clean target libgemOpJni.so -> libgem5OpJni.so
2) addes jni_gem5Op.h to clean since it is added during make
3) links the m5 utility statically since it won't work on some images otherwise


# 9821:afa9f7f4ee46 14-Aug-2013 Anthony Gutierrez <atgutier@umich.edu>

arm: use -march when compiling m5op_arm.S

Using arm-linux-gnueabi-gcc 4.7.3-1ubuntu1 on Ubuntu 13.04 to compiled
the m5 binary yields the error:

m5op_arm.S: Assembler messages:
m5op_arm.S:85: Error: selected processor does not support ARM mode `bxj lr'

For each of of the SIMPLE_OPs. Apparently, this compiler doesn't like the
interworking of these code types for the default arch. Adding -march=armv7-a
makes it compile. Another alternative that I found to work is replacing the
bxj lr instruction with mov pc, lr, but I don't know how that affects the
KVM stuff and if bxj is needed.


# 9685:eb075b2b925a 07-May-2013 Andreas Sandberg <andreas@sandberg.pp.se>

arm: Make libm5 a dependency of the m5 utility

The m5 utility wasn't relinked properly since libm5.a wasn't a
dependency of the utility. This changeset addresses that issue.


# 9333:b037944e4908 08-Oct-2012 James Clarkson <james.clarkson@arm.com>

m5: Expose m5 pseudo-instructions to C/C++ via a static library

Updated the util/m5/Makefile.arm so that m5op_arm.S is used to create
a static library - libm5.a. Allowing users to insert m5
psuedo-instructions into their applications for fine-grained
checkpointing, switching cpus or dumping statistics. e.g.

#include <m5op.h>

void foo(){
...
m5_reset_stats(<delay>,<period>)
m5_work_begin(<workid>,<threadid>);
...
m5_work_end(<workid>,<threadid>);
m5_dump_stats(<delay>,<period>);
}


# 9192:0fd64ccb4c93 07-Sep-2012 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Fix the compiler and platform identification for building on ARM.


# 8547:5979b029bbb4 13-Sep-2011 Prakash Ramrakhyani <prakash.ramrakhyani@arm.com>

gem5ops: Implement Java JNI for gem5Ops

These ops allow gem5 ops to be called from within java programs like the following:
import jni.gem5Op;

public class HelloWorld {

public static void main(String[] args) {
gem5Op gem5 = new gem5Op();
System.out.println("Rpns0:" + gem5.rpns());
System.out.println("Rpns1:" + gem5.rpns());
}

static {
System.loadLibrary("gem5OpJni");
}
}

When building you need to make sure classpath include gem5OpJni.jar:
javac -classpath $CLASSPATH:/path/to/gem5OpJni.jar HelloWorld.java

and when running you need to make sure both the java and library path are set:
java -classpath $CLASSPATH:/path/to/gem5OpJni.jar -Djava.library.path=/path/to/libgem5OpJni.so HelloWorld


# 7732:a2c660de7787 08-Nov-2010 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Add support for M5 ops in the ARM ISA