From 7b81eb81ff378d086d0e07df1b12142deca4f2c9 Mon Sep 17 00:00:00 2001 From: jzhou Date: Thu, 1 Jan 2009 18:49:15 +0000 Subject: [PATCH] add RAWCACHEFLUSH micro in multicore version code --- Robust/src/IR/Flat/BuildCodeMultiCore.java | 4 ++-- Robust/src/Runtime/multicoretask.c | 13 +++++-------- Robust/src/buildscript | 10 ++++++++++ 3 files changed, 17 insertions(+), 10 deletions(-) diff --git a/Robust/src/IR/Flat/BuildCodeMultiCore.java b/Robust/src/IR/Flat/BuildCodeMultiCore.java index ce7eb9a7..4d27c7be 100644 --- a/Robust/src/IR/Flat/BuildCodeMultiCore.java +++ b/Robust/src/IR/Flat/BuildCodeMultiCore.java @@ -680,7 +680,7 @@ public class BuildCodeMultiCore extends BuildCode { super.generateFlatNode(fm, lb, current_node, output); if (current_node.kind()!=FKind.FlatReturnNode) { //output.println(" flushAll();"); - output.println("#ifdef RAW"); + output.println("#ifdef RAWCACHEFLUSH"); output.println("raw_user_interrupts_off();"); output.println("#ifdef RAWDEBUG"); output.println("raw_test_pass(0xec00);"); @@ -1554,7 +1554,7 @@ public class BuildCodeMultiCore extends BuildCode { output.println("return "+generateTemp(fm, frn.getReturnTemp(), lb)+";"); } else { if(fm.getTask() != null) { - output.println("#ifdef RAW"); + output.println("#ifdef RAWCACHEFLUSH"); output.println("raw_user_interrupts_off();"); output.println("#ifdef RAWDEBUG"); output.println("raw_test_pass(0xec00);"); diff --git a/Robust/src/Runtime/multicoretask.c b/Robust/src/Runtime/multicoretask.c index e5eb722e..c9c9c32b 100644 --- a/Robust/src/Runtime/multicoretask.c +++ b/Robust/src/Runtime/multicoretask.c @@ -498,14 +498,9 @@ void run(void* arg) { if(grount == 1) { int k = 0; // flush the object +#ifdef RAWCACHEFLUSH raw_invalidate_cache_range((int)obj, classsize[((struct ___Object___ *)obj)->type]); - /*if(RuntimeHashcontainskey(objRedirectLockTbl, (int)obj)) { - int redirectlock = 0; - RuntimeHashget(objRedirectLockTbl, (int)obj, &redirectlock); - ((struct ___Object___ *)obj)->lock = redirectlock; - raw_flush_cache_range((int)obj, classsize[((struct ___Object___ *)obj)->type]); - RuntimeHashremovekey(objRedirectLockTbl, (int)obj); - }*/ +#endif // enqueue the object for(k = 0; k < objInfo->length; ++k) { int taskindex = objInfo->queues[2 * k]; @@ -856,7 +851,7 @@ void createstartupobject(int argc, char ** argv) { /* Set initialized flag for startup object */ flagorandinit(startupobject,1,0xFFFFFFFF); enqueueObject(startupobject, NULL, 0); -#ifdef RAW +#ifdef RAWCACHEFLUSH raw_flush_entire_cache(); #endif } @@ -4731,6 +4726,7 @@ newtask: #endif // flush the object +#ifdef RAWCACHEFLUSH { raw_invalidate_cache_range((int)parameter, classsize[((struct ___Object___ *)parameter)->type]); } @@ -4746,6 +4742,7 @@ newtask: #ifdef INTERRUPT raw_user_interrupts_on(); #endif +#endif #endif tmpparam = (struct ___Object___ *)parameter; #ifdef THREADSIMULATE diff --git a/Robust/src/buildscript b/Robust/src/buildscript index 223b5072..05830c54 100755 --- a/Robust/src/buildscript +++ b/Robust/src/buildscript @@ -19,6 +19,7 @@ echo -scheduling do task scheduling echo -multicore generate multi-core version binary echo "-numcore set the number of cores (should be used together with -multicore), defaultly set as 1" echo "-raw generate raw version binary (should be used together with -multicore)" +echo "-rawcacheflush enable cache flush in raw version binary (should be used togethere with -raw)" echo "-interrupt generate raw version binary with interruption (should be used togethere with -raw)" echo "-rawconfig config raw simulator as 4xn (should be used together with -raw)" echo "-rawpath print out execute path information for raw version (should be used together with -raw)" @@ -57,6 +58,7 @@ RECOVERFLAG=false MULTICOREFLAG=false TRANSSTATSFLAG=false RAWFLAG=false +RAWCACHEFLUSHFLAG=false RAWCONFIG='' RAWDEBUGFLAG=false RAWPATHFLAG=false @@ -157,6 +159,9 @@ elif [[ $1 = '-raw' ]] then RAWFLAG=true JAVAOPTS="$JAVAOPTS -raw" +elif [[ $1 = '-rawcacheflush' ]] +then +RAWCACHEFLUSHFLAG=true elif [[ $1 = '-rawconfig' ]] then RAWCONFIG="$2" @@ -317,6 +322,11 @@ rm ./* export RAWRGCCFLAGS="-DTASK -DMULTICORE -DRAW" +if $RAWCACHEFLUSHFLAG +then # print path +RAWRGCCFLAGS="${RAWRGCCFLAGS} -DRAWCACHEFLUSH" +fi + if $RAWPATHFLAG then # print path RAWRGCCFLAGS="${RAWRGCCFLAGS} -DRAWPATH" -- 2.34.1