#include "value.h"
#include "frame.h"
#include "ieee-float.h"
+#include "target.h"
/* Structure of i960 extended floating point format. */
{
case 0: return TARGET_SIGNAL_BUS; /* parallel fault */
case 1: return TARGET_SIGNAL_UNKNOWN;
- case 2: return TARGET_SIGNAL_BUS; /* operation fault */
+ case 2: return TARGET_SIGNAL_ILL; /* operation fault */
case 3: return TARGET_SIGNAL_FPE; /* arithmetic fault */
case 4: return TARGET_SIGNAL_FPE; /* floating point fault */
- case 5: return TARGET_SIGNAL_BUS; /* constraint fault */
+
+ /* constraint fault. This appears not to distinguish between
+ a range constraint fault (which should be SIGFPE) and a privileged
+ fault (which should be SIGILL). */
+ case 5: return TARGET_SIGNAL_ILL;
+
case 6: return TARGET_SIGNAL_SEGV; /* virtual memory fault */
- case 7: return TARGET_SIGNAL_SEGV; /* protection fault */
+
+ /* protection fault. This is for an out-of-range argument to
+ "calls". I guess it also could be SIGILL. */
+ case 7: return TARGET_SIGNAL_SEGV;
+
case 8: return TARGET_SIGNAL_BUS; /* machine fault */
case 9: return TARGET_SIGNAL_BUS; /* structural fault */
- case 0xa: return TARGET_SIGNAL_BUS; /* type fault */
+ case 0xa: return TARGET_SIGNAL_ILL; /* type fault */
case 0xb: return TARGET_SIGNAL_UNKNOWN; /* reserved fault */
case 0xc: return TARGET_SIGNAL_BUS; /* process fault */
case 0xd: return TARGET_SIGNAL_SEGV; /* descriptor fault */