Skip to content
Snippets Groups Projects
Commit ae722838 authored by Neil Conway's avatar Neil Conway
Browse files

Cleanup some ancient Ultrix / Alpha code in main() that is intended to

modify how unaligned memory accesses are dealt with. Document that this
is really what is going on, and merge the NOFIXADE and NOPRINTADE code
paths.
parent 3331180b
No related branches found
No related tags found
No related merge requests found
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/main/main.c,v 1.89 2004/08/29 05:06:43 momjian Exp $ * $PostgreSQL: pgsql/src/backend/main/main.c,v 1.90 2004/09/24 06:29:07 neilc Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
...@@ -71,18 +71,23 @@ main(int argc, char *argv[]) ...@@ -71,18 +71,23 @@ main(int argc, char *argv[])
#if defined(__alpha) /* no __alpha__ ? */ #if defined(__alpha) /* no __alpha__ ? */
#ifdef NOFIXADE #ifdef NOFIXADE
int buffer[] = {SSIN_UACPROC, UAC_SIGBUS}; int buffer[] = {SSIN_UACPROC, UAC_SIGBUS | UAC_NOPRINT};
#endif /* NOFIXADE */ #endif
#ifdef NOPRINTADE
int buffer[] = {SSIN_UACPROC, UAC_NOPRINT};
#endif /* NOPRINTADE */
#endif /* __alpha */ #endif /* __alpha */
#ifdef WIN32 #ifdef WIN32
char *env_locale; char *env_locale;
#endif #endif
#if defined(NOFIXADE) || defined(NOPRINTADE) /*
* On some platforms, unaligned memory accesses result in a kernel
* trap; the default kernel behavior is to emulate the memory
* access, but this results in a significant performance
* penalty. We ought to fix PG not to make such unaligned memory
* accesses, so this code disables the kernel emulation: unaligned
* accesses will result in SIGBUS instead.
*/
#ifdef NOFIXADE
#if defined(ultrix4) #if defined(ultrix4)
syscall(SYS_sysmips, MIPS_FIXADE, 0, NULL, NULL, NULL); syscall(SYS_sysmips, MIPS_FIXADE, 0, NULL, NULL, NULL);
...@@ -94,7 +99,7 @@ main(int argc, char *argv[]) ...@@ -94,7 +99,7 @@ main(int argc, char *argv[])
write_stderr("%s: setsysinfo failed: %s\n", write_stderr("%s: setsysinfo failed: %s\n",
argv[0], strerror(errno)); argv[0], strerror(errno));
#endif #endif
#endif /* NOFIXADE || NOPRINTADE */ #endif /* NOFIXADE */
#if defined(WIN32) #if defined(WIN32)
{ {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment