[SDL] [PATCH] fix FB_VideoQuit for ia64
authorSam Lantinga <slouken@libsdl.org>
Sat, 12 Feb 2005 18:03:54 +0000
changeset 103650f4e7e4d117
parent 1035 974ba6ae0fa3
child 1037 c5dedfdb4e42
[SDL] [PATCH] fix FB_VideoQuit for ia64
Jesse Barnes
Fri Jan 14 11:13:54 PST 2005

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.
src/video/fbcon/SDL_fbvideo.c
     1.1 --- a/src/video/fbcon/SDL_fbvideo.c	Sat Feb 12 18:01:31 2005 +0000
     1.2 +++ b/src/video/fbcon/SDL_fbvideo.c	Sat Feb 12 18:03:54 2005 +0000
     1.3 @@ -1423,7 +1423,7 @@
     1.4  	if ( this->screen ) {
     1.5  		/* Clear screen and tell SDL not to free the pixels */
     1.6  		if ( this->screen->pixels && FB_InGraphicsMode(this) ) {
     1.7 -#ifdef __powerpc__	/* SIGBUS when using memset() ?? */
     1.8 +#if defined(__powerpc__) || defined(__ia64__)	/* SIGBUS when using memset() ?? */
     1.9  			Uint8 *rowp = (Uint8 *)this->screen->pixels;
    1.10  			int left = this->screen->pitch*this->screen->h;
    1.11  			while ( left-- ) { *rowp++ = 0; }