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:
James Clarkson 2012-10-09 12:58:25 +01:00
parent 81406018b0
commit fdcfbda38d
3 changed files with 30 additions and 8 deletions

View file

@ -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

View file

@ -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

View file

@ -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__