aboutsummaryrefslogtreecommitdiff
path: root/syscall-i386.h
diff options
context:
space:
mode:
authorbellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>2003-03-23 16:49:39 +0000
committerbellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>2003-03-23 16:49:39 +0000
commit9de5e440b9f6a6c6305c0b81d1df4ddcc5a4b966 (patch)
tree718d0257eb2e9cac1196bd8ca83dfd11c15fd475 /syscall-i386.h
parent66fb9763af9cd743158957e8c9c2559d922b1c22 (diff)
better signal/exception support
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@42 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'syscall-i386.h')
-rw-r--r--syscall-i386.h46
1 files changed, 43 insertions, 3 deletions
diff --git a/syscall-i386.h b/syscall-i386.h
index 39bba1a493..5878ccdd99 100644
--- a/syscall-i386.h
+++ b/syscall-i386.h
@@ -359,7 +359,7 @@ struct target_sigaction {
typedef union target_sigval {
int sival_int;
- void *sival_ptr;
+ target_ulong sival_ptr;
} target_sigval_t;
#define TARGET_SI_MAX_SIZE 128
@@ -389,7 +389,7 @@ typedef struct target_siginfo {
struct {
pid_t _pid; /* sender's pid */
uid_t _uid; /* sender's uid */
- sigval_t _sigval;
+ target_sigval_t _sigval;
} _rt;
/* SIGCHLD */
@@ -403,7 +403,7 @@ typedef struct target_siginfo {
/* SIGILL, SIGFPE, SIGSEGV, SIGBUS */
struct {
- void *_addr; /* faulting insn/memory ref. */
+ target_ulong _addr; /* faulting insn/memory ref. */
} _sigfault;
/* SIGPOLL */
@@ -414,6 +414,46 @@ typedef struct target_siginfo {
} _sifields;
} target_siginfo_t;
+/*
+ * SIGILL si_codes
+ */
+#define TARGET_ILL_ILLOPN (2) /* illegal operand */
+
+/*
+ * SIGFPE si_codes
+ */
+#define TARGET_FPE_INTDIV (1) /* integer divide by zero */
+#define TARGET_FPE_INTOVF (2) /* integer overflow */
+#define TARGET_FPE_FLTDIV (3) /* floating point divide by zero */
+#define TARGET_FPE_FLTOVF (4) /* floating point overflow */
+#define TARGET_FPE_FLTUND (5) /* floating point underflow */
+#define TARGET_FPE_FLTRES (6) /* floating point inexact result */
+#define TARGET_FPE_FLTINV (7) /* floating point invalid operation */
+#define TARGET_FPE_FLTSUB (8) /* subscript out of range */
+#define TARGET_NSIGFPE 8
+
+/* default linux values for the selectors */
+#define __USER_CS (0x23)
+#define __USER_DS (0x2B)
+
+struct target_pt_regs {
+ long ebx;
+ long ecx;
+ long edx;
+ long esi;
+ long edi;
+ long ebp;
+ long eax;
+ int xds;
+ int xes;
+ long orig_eax;
+ long eip;
+ int xcs;
+ long eflags;
+ long esp;
+ int xss;
+};
+
/* ioctls */
/*