f850a6df1f
- put /*comments symbols*/ around any chars after #endif. Other compilers do not get it. - fix cases in which a pointer is cast to a 32-bit int, then back to a pointer. This breaks on a machine with 64-bit pointers. Examples: FPU_sub arg 2 and FPU_div arg 2. The int->ptr->int conversions are now done more safely by macros REGNO2PTR and PTR2INT. - use GCC_ATTRIBUTE macro instead of __attribute__. For compilers that do not support __attribute__, the macro can be defined to be nothing. - in fpu_entry.c, arg1 of FPU_load_int32 is (s32*), but the calls to it cast their data to (u32*). - if compiler does NOT inline functions in poly.h, the "extern inline" setting caused duplicate symbols to be created. Changed them to "static inline" so that the mul_32_32 from different .c files do not conflict. - implemented setcc so that it doesn't use curly brackets inside parens - comment out sigcontext structure definition, which conflicts with non-linux or non-intel operating systems. It's not used by bochs anyway.
60 lines
1.2 KiB
C
60 lines
1.2 KiB
C
#ifndef _ASMi386_SIGCONTEXT_H
|
|
#define _ASMi386_SIGCONTEXT_H
|
|
|
|
/*
|
|
* As documented in the iBCS2 standard..
|
|
*
|
|
* The first part of "struct _fpstate" is just the
|
|
* normal i387 hardware setup, the extra "status"
|
|
* word is used to save the coprocessor status word
|
|
* before entering the handler.
|
|
*/
|
|
struct _fpreg {
|
|
unsigned short significand[4];
|
|
unsigned short exponent;
|
|
};
|
|
|
|
struct _fpstate {
|
|
unsigned long cw,
|
|
sw,
|
|
tag,
|
|
ipoff,
|
|
cssel,
|
|
dataoff,
|
|
datasel;
|
|
struct _fpreg _st[8];
|
|
unsigned long status;
|
|
};
|
|
|
|
#if 0
|
|
/* sigcontext is not needed by bochs, and it conflicts with some other
|
|
machine types (DEC OSF1) */
|
|
struct sigcontext {
|
|
unsigned short gs, __gsh;
|
|
unsigned short fs, __fsh;
|
|
unsigned short es, __esh;
|
|
unsigned short ds, __dsh;
|
|
unsigned long edi;
|
|
unsigned long esi;
|
|
unsigned long ebp;
|
|
unsigned long esp;
|
|
unsigned long ebx;
|
|
unsigned long edx;
|
|
unsigned long ecx;
|
|
unsigned long eax;
|
|
unsigned long trapno;
|
|
unsigned long err;
|
|
unsigned long eip;
|
|
unsigned short cs, __csh;
|
|
unsigned long eflags;
|
|
unsigned long esp_at_signal;
|
|
unsigned short ss, __ssh;
|
|
struct _fpstate * fpstate;
|
|
unsigned long oldmask;
|
|
unsigned long cr2;
|
|
};
|
|
#endif
|
|
|
|
|
|
#endif
|