Tuesday, June 20, 2006

Understand Exception Logging in LogTM

in $GEMS/ruby/module/ruby.c, line 318
SIM_hap_register_callback("Core_Exception", (cb_func_no_t) ctrl_exception_start, (void *) NULL) registers a call back for all exception in simics, and these callback is then passed to crl_execption_start method in $GEMS/ruby/simics/commands.C line 300
void ctrl_exception_start(void* desc, void* cpu, integer_t val). In crl_exception_start method, if the trap type is a window spill trap or a window fill trap, it would let xact_mgr->setLoggedException();
However, at a close examine of the window spill and window fill condition, it seems the LogTM code is different from the UltraSparc document. In page 336, chapter 12 UltraSparc III Cu User's Manual, it defines that a window spill trap has TT >= 080 && TT <=0BF, window fill trap has TT >=0C0 && TT <=0FF, where in LogTM code, the condition is set to TT>=080&&TT<=09f, windows fill trap as TT>=0C0&&TT<=0DF. I am wondering what is going on here.

No comments: