As is shown in ISCA-tutorial,I tried to warm up the cache 
when the barnes benchmark was running:
1) first run  
(Simics)
----------------------------------------------------------------------------------------
  * The Console command: 
./BARNES < input_p16.8192
2) second 
run  (Need 
Simics+Ruby)
-------------------------------------------------------------------------------------------
load 
"cold" checkpoint generated in the first run,
set up 
ruby
    ./BARNES < 
input_p16.8192
   ruby0.save-caches 
barnes.caches.gz  
   write-configuration 
CHKPT_DIR/barnes-warm-16p.check
3) third 
run (Real simulation--RUBY+OPAL)
----------------------------------------------------------------------------------------------
load 
barnes-warm-16p.check
load 
barnes.cache.gz
clear 
ruby stats
start 
simulcation
*The 
Console Commands:./BARNES < input_p16.8192; magic_call break 
But the running can't be interruptted by the magic_call which 
really exists in barnes/code.C 
 
In splash2_simics/codes/apps/barnes/code.C 
main(argc, argv)
{
    ......
   Global->tracktime = 
0;
   Global->partitiontime = 0;
   
Global->treebuildtime = 0;
   Global->forcecalctime = 
0;
   
    MEMSYS_ON   /*macro 
definition--#define MEMSYS_ON MAGIC(1) in 
splash2_simics/codes/solaris.threads/magic.h*/
   
    /* Create 
the slave processes: number of processors less 
one,
      since the master will do work as well 
*/
   Global->current_id = 0;
   for(ProcessId = 1; 
ProcessId < NPROC; ProcessId++) {
      
CREATE(SlaveStart);
   }
   /* Make the master do slave work so 
we don't waste the processor */
   
CLOCK(Global->computestart);
   printf("COMPUTESTART  = 
%12u\n",Global->computestart);
   
SlaveStart();
    
    ......
}
 
However, here is the warning:
Warning: in fn 
void magic_instruction_callback(void*, void*, integer_t) in 
simics/commands.C:476: val is 1
Warning: in fn void 
magic_instruction_callback(void*, void*, integer_t) in simics/commands.C:476: 
val is 1
Warning: in fn void magic_instruction_callback(void*, void*, 
integer_t) in simics/commands.C:477: SIMICS_get_program_counter(proc_num) is 
[0x145b8, line 0x14580]
Warning: in fn void magic_instruction_callback(void*, 
void*, integer_t) in simics/commands.C:477: SIMICS_get_program_counter(proc_num) 
is [0x145b8, line 0x14580]
Warning: in fn void 
magic_instruction_callback(void*, void*, integer_t) in simics/commands.C:478: 
Unexpected magic call
Warning: in fn void magic_instruction_callback(void*, 
void*, integer_t) in simics/commands.C:478: Unexpected magic call
I 
am sorry for so long mail. My question is how to implement the magic_call break 
function, so I can stop the simulation wherever I expected.
As is in the barnes,how can I managed to stop 
the simulation by the MEMSYS_ON call?
 
Any help is 
appreciated!