API modification request
Till Straumann
strauman at SLAC.Stanford.EDU
Tue Feb 4 02:05:09 UTC 2003
-- snip --
>
> I was referring to low-level ISRs when talking about "callee". On the
> SH1, they don't receive any arguments.
>
> On the caller/interrupt-handler-installation side, we use an array of
> pointers to functions and use the IRQ-number as an index into this
> array.
AFAIK, on the SH you currently do
if( _ISR_Vector_table[ vector])
(*_ISR_Vector_table[ vector ])( vector );
I can't imagine that being so much cheaper than
if( _ISR_Vector_table[vector].hdl )
_ISR_Vector_table[vector].hdl(_ISR_Vector_table[vector].arg);
Again: weigh this change to what your __ISR_Handler() already does.
&_ISR_Vector_table[vector] has to be computed anyways.
Plus, I can't see any impact on the callee (the routine registered with
the _ISR_Vector_table).
BTW: isn't that a bug a few lines down???
if(( _Context_Switch_necessary) || (!_ISR_Signals_to_thread_executing))
{
_ISR_Signals_to_thread_executing = FALSE;
_Thread_Dispatch();
}
I.e. shouldn't you test for _ISR_Signals_to_thread_executing to be
TRUE (libcpu/sh/sh7032/score/cpu_asm.c) ?
-- Till
More information about the users
mailing list