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>); }
This commit is contained in:
parent
81406018b0
commit
fdcfbda38d
3 changed files with 30 additions and 8 deletions
|
@ -46,6 +46,7 @@ endif
|
||||||
CC=$(CROSS_COMPILE)gcc
|
CC=$(CROSS_COMPILE)gcc
|
||||||
AS=$(CROSS_COMPILE)as
|
AS=$(CROSS_COMPILE)as
|
||||||
LD=$(CROSS_COMPILE)ld
|
LD=$(CROSS_COMPILE)ld
|
||||||
|
AR=$(CROSS_COMPILE)ar
|
||||||
|
|
||||||
JC=javac
|
JC=javac
|
||||||
JH=javah
|
JH=javah
|
||||||
|
@ -54,11 +55,13 @@ JR=jar
|
||||||
#JDK_PATH=/path/to/jdk/version_number
|
#JDK_PATH=/path/to/jdk/version_number
|
||||||
|
|
||||||
CFLAGS=-O2 -I $(JDK_PATH)/include/ -I $(JDK_PATH)/include/linux
|
CFLAGS=-O2 -I $(JDK_PATH)/include/ -I $(JDK_PATH)/include/linux
|
||||||
|
LDFLAGS=-L. -lm5
|
||||||
|
|
||||||
OBJS=m5.o m5op_arm.o
|
LIB_OBJS=m5op_arm.o
|
||||||
|
OBJS=m5.o
|
||||||
JNI_OBJS=m5op_arm.o jni_gem5Op.o
|
JNI_OBJS=m5op_arm.o jni_gem5Op.o
|
||||||
|
|
||||||
all: m5
|
all: libm5.a m5
|
||||||
|
|
||||||
%.o: %.S
|
%.o: %.S
|
||||||
$(CC) $(CFLAGS) -o $@ -c $<
|
$(CC) $(CFLAGS) -o $@ -c $<
|
||||||
|
@ -67,7 +70,10 @@ all: m5
|
||||||
$(CC) $(CFLAGS) -o $@ -c $<
|
$(CC) $(CFLAGS) -o $@ -c $<
|
||||||
|
|
||||||
m5: $(OBJS)
|
m5: $(OBJS)
|
||||||
$(CC) -o $@ $(OBJS)
|
$(CC) -o $@ $(OBJS) $(LDFLAGS)
|
||||||
|
|
||||||
|
libm5.a: $(LIB_OBJS)
|
||||||
|
$(AR) rcs $@ $<
|
||||||
|
|
||||||
gem5OpJni: gem5OpJni.jar $(JNI_OBJS)
|
gem5OpJni: gem5OpJni.jar $(JNI_OBJS)
|
||||||
$(CC) --shared -o lib$@.so $(JNI_OBJS)
|
$(CC) --shared -o lib$@.so $(JNI_OBJS)
|
||||||
|
@ -78,4 +84,4 @@ gem5OpJni.jar:
|
||||||
$(JR) cvf $@ jni/*.class
|
$(JR) cvf $@ jni/*.class
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f *.o m5 libgemOpJni.so gem5OpJni.jar jni/*.class
|
rm -f *.o m5 libgemOpJni.so gem5OpJni.jar jni/*.class libm5.a
|
||||||
|
|
|
@ -47,12 +47,17 @@ endif
|
||||||
CC=$(CROSS_COMPILE)gcc
|
CC=$(CROSS_COMPILE)gcc
|
||||||
AS=$(CROSS_COMPILE)as
|
AS=$(CROSS_COMPILE)as
|
||||||
LD=$(CROSS_COMPILE)ld
|
LD=$(CROSS_COMPILE)ld
|
||||||
|
AR=$(CROSS_COMPILE)ar
|
||||||
|
|
||||||
#CFLAGS=-O2 -march=armv7 -mthumb
|
#CFLAGS=-O2 -march=armv7 -mthumb
|
||||||
CFLAGS=-O2 -mthumb
|
CFLAGS=-O2 -mthumb
|
||||||
OBJS=m5.o m5op_arm.o
|
LDFLAGS=-L. -lm5
|
||||||
|
|
||||||
all: m5
|
OBJS=m5.o
|
||||||
|
LIB_OBJS=m5op_arm.o
|
||||||
|
|
||||||
|
|
||||||
|
all: libm5.a m5
|
||||||
|
|
||||||
%.o: %.S
|
%.o: %.S
|
||||||
$(CC) $(CFLAGS) -o $@ -c $<
|
$(CC) $(CFLAGS) -o $@ -c $<
|
||||||
|
@ -61,7 +66,11 @@ all: m5
|
||||||
$(CC) $(CFLAGS) -o $@ -c $<
|
$(CC) $(CFLAGS) -o $@ -c $<
|
||||||
|
|
||||||
m5: $(OBJS)
|
m5: $(OBJS)
|
||||||
$(CC) -o $@ -march=armv7 -mthumb $(OBJS)
|
$(CC) -o $@ -march=armv7 -mthumb $(OBJS) $(LDFLAGS)
|
||||||
|
|
||||||
|
libm5.a: $(LIB_OBJS)
|
||||||
|
$(AR) rcs $@ $<
|
||||||
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f *.o m5
|
rm -f *.o m5 libm5.a
|
||||||
|
|
|
@ -32,6 +32,10 @@
|
||||||
#ifndef __M5OP_H__
|
#ifndef __M5OP_H__
|
||||||
#define __M5OP_H__
|
#define __M5OP_H__
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
void arm(uint64_t address);
|
void arm(uint64_t address);
|
||||||
|
@ -79,4 +83,7 @@ uint64_t m5a_getid(void);
|
||||||
#define M5_AN_FL_LINK 0x10
|
#define M5_AN_FL_LINK 0x10
|
||||||
#define M5_AN_FL_RESET 0x20
|
#define M5_AN_FL_RESET 0x20
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
#endif // __M5OP_H__
|
#endif // __M5OP_H__
|
||||||
|
|
Loading…
Reference in a new issue