- it works only on x86 with gcc2.95+
- uses the GCC function atribute "regparm(n)" to declare that certain
functions use the register calling convention
- performance improvement is about 6%
- 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.