|
From: <sv...@va...> - 2009-02-26 17:50:19
|
Author: bart
Date: 2009-02-26 17:50:14 +0000 (Thu, 26 Feb 2009)
New Revision: 9275
Log:
Ported this test to ppc.
Modified:
trunk/none/tests/faultstatus.c
Modified: trunk/none/tests/faultstatus.c
===================================================================
--- trunk/none/tests/faultstatus.c 2009-02-26 13:21:50 UTC (rev 9274)
+++ trunk/none/tests/faultstatus.c 2009-02-26 17:50:14 UTC (rev 9275)
@@ -9,6 +9,19 @@
#include <sys/mman.h>
#include <unistd.h>
+/*
+ * Division by zero triggers a SIGFPE on x86 and x86_64,
+ * but not on the PowerPC architecture.
+ */
+#if defined(__powerpc__)
+#define DIVISION_BY_ZERO_TRIGGERS_FPE 0
+#define DIVISION_BY_ZERO_SI_CODE SI_TKILL
+#else
+#define DIVISION_BY_ZERO_TRIGGERS_FPE 1
+#define DIVISION_BY_ZERO_SI_CODE FPE_INTDIV
+#endif
+
+
struct test {
void (*test)(void);
int sig;
@@ -93,6 +106,9 @@
volatile int v = 44/zero();
(void)v;
+#if DIVISION_BY_ZERO_TRIGGERS_FPE == 0
+ raise(SIGFPE);
+#endif
}
int main()
@@ -125,7 +141,7 @@
T(1, SIGSEGV, SEGV_MAPERR, BADADDR),
T(2, SIGSEGV, SEGV_ACCERR, mapping),
T(3, SIGBUS, BUS_ADRERR, &mapping[FILESIZE+10]),
- T(4, SIGFPE, FPE_INTDIV, 0),
+ T(4, SIGFPE, DIVISION_BY_ZERO_SI_CODE, 0),
#undef T
};
|