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/