diff --git a/src/backend/main/main.c b/src/backend/main/main.c
index df9c776b602b89719d02b1bbe97655726f38195a..bcab85cbc57e4b29a0afdcb761256835bde9012e 100644
--- a/src/backend/main/main.c
+++ b/src/backend/main/main.c
@@ -13,7 +13,7 @@
  *
  *
  * 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[])
 
 #if defined(__alpha)			/* no __alpha__ ? */
 #ifdef NOFIXADE
-	int			buffer[] = {SSIN_UACPROC, UAC_SIGBUS};
-#endif   /* NOFIXADE */
-#ifdef NOPRINTADE
-	int			buffer[] = {SSIN_UACPROC, UAC_NOPRINT};
-#endif   /* NOPRINTADE */
+	int			buffer[] = {SSIN_UACPROC, UAC_SIGBUS | UAC_NOPRINT};
+#endif
 #endif   /* __alpha */
 
 #ifdef WIN32
 	char	   *env_locale;
 #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)
 	syscall(SYS_sysmips, MIPS_FIXADE, 0, NULL, NULL, NULL);
@@ -94,7 +99,7 @@ main(int argc, char *argv[])
 		write_stderr("%s: setsysinfo failed: %s\n",
 					 argv[0], strerror(errno));
 #endif
-#endif   /* NOFIXADE || NOPRINTADE */
+#endif   /* NOFIXADE */
 
 #if defined(WIN32)
 	{