diff options
author | bellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162> | 2003-03-23 16:49:39 +0000 |
---|---|---|
committer | bellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162> | 2003-03-23 16:49:39 +0000 |
commit | 9de5e440b9f6a6c6305c0b81d1df4ddcc5a4b966 (patch) | |
tree | 718d0257eb2e9cac1196bd8ca83dfd11c15fd475 /syscall-i386.h | |
parent | 66fb9763af9cd743158957e8c9c2559d922b1c22 (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.h | 46 |
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 */ /* |