From f23e76119d2dbd0f2fdc34713ffae68b975c5057 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sat, 12 Feb 2005 18:03:54 +0000 Subject: [PATCH] [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 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/video/fbcon/SDL_fbvideo.c b/src/video/fbcon/SDL_fbvideo.c index 4693d8efe..edee92026 100644 --- a/src/video/fbcon/SDL_fbvideo.c +++ b/src/video/fbcon/SDL_fbvideo.c @@ -1423,7 +1423,7 @@ 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__) /* SIGBUS when using memset() ?? */ Uint8 *rowp = (Uint8 *)this->screen->pixels; int left = this->screen->pitch*this->screen->h; while ( left-- ) { *rowp++ = 0; }