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>);
}
 CC=$(CROSS_COMPILE)gcc
 AS=$(CROSS_COMPILE)as
 LD=$(CROSS_COMPILE)ld
+AR=$(CROSS_COMPILE)ar
 
 JC=javac
 JH=javah
 #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 $<
        $(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)
        $(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
 
 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 $<
        $(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
 
 #ifndef __M5OP_H__
 #define __M5OP_H__
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 #include <stdint.h>
 
 void arm(uint64_t address);
 #define M5_AN_FL_LINK   0x10
 #define M5_AN_FL_RESET  0x20
 
+#ifdef __cplusplus
+}
+#endif
 #endif // __M5OP_H__