_CPU_Fatal_halt does not "halt" on Cyrix MediaGX MMX-S CPU (pc586 BSP)

Joel Sherrill <joel@OARcorp.com> joel.sherrill at OARcorp.com
Mon Oct 18 11:10:18 UTC 2004


Valery Pykhtin wrote:
> Hi all,
> 
> _CPU_Fatal_halt function doesn't work properly on Cyrix MediaGX MMX-S CPU.
> The macro is defined as follows:
> 
> cpukit\score\cpu\i386\rtems\score\cpu.h
> 
> #define _CPU_Fatal_halt( _error ) \
>  { \
>    asm volatile ( "cli ; \
>                    movl %0,%%eax ; \
>                    hlt" \
>                    : "=r" ((_error)) : "0" ((_error)) \
>    ); \
>  }
> If I change it to
> 
> #define _CPU_Fatal_halt( _error ) \
> while(1)  { \
>    asm volatile ( "cli ; \
>                    movl %0,%%eax ; \
>                    hlt" \
>                    : "=r" ((_error)) : "0" ((_error)) \
>    ); \
>  }
> - all works ok.
> 
> Can it be considered as appropriate patch?

It's an appropriate patch format but I don't see why it is
needed.  THe default fatal error handler is intended to
lock the processor up with NO further processing of tasks
of interrupts.  If you are having to loop, then I have to
wonder what the hlt instruction is doing on the Cyrix.
Is it really "halting" or it is "halting until the next
interrupt"?

It is OK for a BSP to override this behavior and this
action is only taken if the BSP did not provide a
handler.

> Valery
> 


-- 
Joel Sherrill, Ph.D.             Director of Research & Development
joel at OARcorp.com                 On-Line Applications Research
Ask me about RTEMS: a free RTOS  Huntsville AL 35805
    Support Available             (256) 722-9985




More information about the users mailing list