[PATCH] fix FB_VideoQuit for ia64

I noticed that on my ia64 machine when SDL_Quit was called, the machine would
hang in weird ways. It turned out to be caused by a machine check in the
memset() call near the top of FB_VideoQuit. Generally memset shouldn’t be
used on I/O regions like the framebuffer or other I/O device memory (the
Linux kernel has special routines for dealing with I/O memory), so I changed
the #ifdef powerpc to #if defined(powerpc) || defined(ia64) and
SDL_Quit now works properly. The change should probably be made
unconditional though since doing one byte at a time is the only way to be
portable, afaik.

Thanks,
Jesse
-------------- next part --------------
diff -Napur -X /home/jbarnes/dontdiff SDL-1.2.7.orig/src/video/fbcon/SDL_fbvideo.c SDL-1.2.7/src/video/fbcon/SDL_fbvideo.c
— SDL-1.2.7.orig/src/video/fbcon/SDL_fbvideo.c 2004-02-18 09:22:06.000000000 -0800
+++ SDL-1.2.7/src/video/fbcon/SDL_fbvideo.c 2005-01-14 10:53:28.736513622 -0800
@@ -1423,7 +1423,8 @@ static void FB_VideoQuit(_THIS)
if ( this->screen ) {
/* Clear screen and tell SDL not to free the pixels /
if ( this->screen->pixels && FB_InGraphicsMode(this) ) {
-#ifdef powerpc /
SIGBUS when using memset() ?? */
+#if defined(powerpc) || defined(ia64)

  •   	/* Don't memset I/O memory */
      	Uint8 *rowp = (Uint8 *)this->screen->pixels;
      	int left = this->screen->pitch*this->screen->h;
      	while ( left-- ) { *rowp++ = 0; }

Jesse Barnes wrote:

I noticed that on my ia64 machine when SDL_Quit was called, the machine would
hang in weird ways. It turned out to be caused by a machine check in the
memset() call near the top of FB_VideoQuit. Generally memset shouldn’t be
used on I/O regions like the framebuffer or other I/O device memory (the
Linux kernel has special routines for dealing with I/O memory), so I changed
the #ifdef powerpc to #if defined(powerpc) || defined(ia64) and
SDL_Quit now works properly. The change should probably be made
unconditional though since doing one byte at a time is the only way to be
portable, afaik.

Ah, very nice. I had tried the SDL framebuffer backend on a radeon/ia64
and it gave me strange troubles too.

Stephane