delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1993/08/14/01:28:13

From: eyal AT fir DOT canberra DOT edu DOT au (Eyal Lebedinsky)
Subject: SVGA page fault risk.
To: djgpp AT sun DOT soe DOT clarkson DOT edu
Date: Sat, 14 Aug 93 15:20:28 EST

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 -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019