Mail Archives: djgpp/1993/08/14/01:28:13
Hello everyone,
Writing some higher performance graphics for djgpp I came across a
machine lockup situation. After much testing it turned out to be a
simple design 'feature' gone astray.
If one moves data into video memory, the extender
will trap page faults and swap the pages. This is a nice feature;
However, if one writes using a word or long instruction and the page is
crossed during the instruction then an infinit loop of page faults and page swap will happen. Every time that the instruction is restarted
it will fault on either the first bytes or on the last bytes. It will never have
both pages active.
Actualy, this showed me a bug in my program since I was trying to
alighn the VGA access, but there you
have it.
Here is a program to use for locking your machine:
#include <stdio.h>
int
main ()
{
printf ("before fffc\n"); fflush (stdout);
*(long *)0xd000fffc = 0x01010101;
printf ("after fffc\n"); fflush (stdout);
printf ("before fffd\n"); fflush (stdout);
*(long *)0xd000fffd = 0x01010101;
printf ("after fffd\n"); fflush (stdout);
return (0);
}
--
Regards
Eyal Lebedinsky eyal AT ise DOT canberra DOT edu DOT au
- Raw text -