Hello,

> Well these lines set up the exeption vector table to handle the
> traps that can occure durint operation on the rt-side removing
> them is not the solution, as this means that you are letting
> non-RT-Linux handle these things for you now and the behavior may
> be quite unpredictable.
I think that rtl_exception_intercept is always zero, as it is 
initialized to zero in rtlinux.c, but never reassigned.
At least, I was not able to find another location where this is done... 
If so, the RTL_PUSH_VECTOR() macros are never executed.

Anyway, the rtlinux patch in divide_error destroys %eax:

> #ifdef CONFIG_RTLINUX
>         movl  rtl_exception_intercept,%eax <----
>         testl %eax, %eax
>         je  8f

So I took the "original" patched entry.S file, reassigned the value -1 to 
%eax at the end of the rtlinx patch in divide_error and I do 
not get segmentation faults anymore. (The current tests runs for about
six hours and normally I get a segmentation fault after 10 minutes or so.)
Maybe the routine called by
>         call *%edi
assumes that %eax is still -1?!?

> could you specify the Cyrix that you are using a littl more precisely - on
> a CII (450) this does not happen with rtlinux-3.1 2.2.19 atleast not in a
> reonalble time (ran it over night).
It's a STPC Industrial from ST running at 80MHz. As I know it has built in 
a Cyrix 486 core.
Maybe the problem is Cyrix specific or turns up only with slow CPUs.

Thanks,
Stephan
-- [rtl] ---
To unsubscribe:
echo "unsubscribe rtl" | mail [EMAIL PROTECTED] OR
echo "unsubscribe rtl <Your_email>" | mail [EMAIL PROTECTED]
--
For more information on Real-Time Linux see:
http://www.rtlinux.org/

Reply via email to