[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

A few BSPs have buggy ISR processing.



While looking at ISR processing code in different BSPs I've noticed that a few
BSPs have bugs in the code. All the observations are made in the latest
20030128 snapshot. The BSPs affected are:

sh/sh7032
sh/sh7045
sh/sh7750
c4x
a29k

The first 4 have the same bug:

- if(( _Context_Switch_necessary) || (! _ISR_Signals_to_thread_executing))
+ if(( _Context_Switch_necessary) || (_ISR_Signals_to_thread_executing))

Here are the relevant lines:

rtems-ss-20030128/c/src/lib/libcpu/sh/sh7032/score/cpu_asm.c:305:      if(( _Context_Switch_necessary) || (! _ISR_Signals_to_thread_executing))
rtems-ss-20030128/c/src/lib/libcpu/sh/sh7045/score/cpu_asm.c:308:      if(( _Context_Switch_necessary) || (! _ISR_Signals_to_thread_executing))
rtems-ss-20030128/c/src/lib/libcpu/sh/sh7750/score/cpu_asm.c:305:      if(( _Context_Switch_necessary) || (! _ISR_Signals_to_thread_executing))
rtems-ss-20030128/cpukit/score/cpu/c4x/irq.c:77:    if (_Context_Switch_necessary || !_ISR_Signals_to_thread_executing ) {

The a29k fails to reset _ISR_Signals_to_thread_executing to FALSE here:

rtems-ss-20030128/cpukit/score/cpu/a29k/cpu.c:274:    (_Context_Switch_necessary || _ISR_Signals_to_thread_executing ))


-- 
Sergei.