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
|
||||
AS=$(CROSS_COMPILE)as
|
||||
LD=$(CROSS_COMPILE)ld
|
||||
AR=$(CROSS_COMPILE)ar
|
||||
|
||||
JC=javac
|
||||
JH=javah
|
||||
|
@ -54,11 +55,13 @@ JR=jar
|
|||
#JDK_PATH=/path/to/jdk/version_number
|
||||
|
||||
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
|
||||
|
||||
all: m5
|
||||
all: libm5.a m5
|
||||
|
||||
%.o: %.S
|
||||
$(CC) $(CFLAGS) -o $@ -c $<
|
||||
|
@ -67,7 +70,10 @@ all: m5
|
|||
$(CC) $(CFLAGS) -o $@ -c $<
|
||||
|
||||
m5: $(OBJS)
|
||||
$(CC) -o $@ $(OBJS)
|
||||
$(CC) -o $@ $(OBJS) $(LDFLAGS)
|
||||
|
||||
libm5.a: $(LIB_OBJS)
|
||||
$(AR) rcs $@ $<
|
||||
|
||||
gem5OpJni: gem5OpJni.jar $(JNI_OBJS)
|
||||
$(CC) --shared -o lib$@.so $(JNI_OBJS)
|
||||
|
@ -78,4 +84,4 @@ gem5OpJni.jar:
|
|||
$(JR) cvf $@ jni/*.class
|
||||
|
||||
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
|
||||
AS=$(CROSS_COMPILE)as
|
||||
LD=$(CROSS_COMPILE)ld
|
||||
AR=$(CROSS_COMPILE)ar
|
||||
|
||||
#CFLAGS=-O2 -march=armv7 -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
|
||||
$(CC) $(CFLAGS) -o $@ -c $<
|
||||
|
@ -61,7 +66,11 @@ all: m5
|
|||
$(CC) $(CFLAGS) -o $@ -c $<
|
||||
|
||||
m5: $(OBJS)
|
||||
$(CC) -o $@ -march=armv7 -mthumb $(OBJS)
|
||||
$(CC) -o $@ -march=armv7 -mthumb $(OBJS) $(LDFLAGS)
|
||||
|
||||
libm5.a: $(LIB_OBJS)
|
||||
$(AR) rcs $@ $<
|
||||
|
||||
|
||||
clean:
|
||||
rm -f *.o m5
|
||||
rm -f *.o m5 libm5.a
|
||||
|
|
|
@ -32,6 +32,10 @@
|
|||
#ifndef __M5OP_H__
|
||||
#define __M5OP_H__
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
void arm(uint64_t address);
|
||||
|
@ -79,4 +83,7 @@ uint64_t m5a_getid(void);
|
|||
#define M5_AN_FL_LINK 0x10
|
||||
#define M5_AN_FL_RESET 0x20
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif // __M5OP_H__
|
||||
|
|
Loading…
Reference in a new issue