Commit Graph

506 Commits

Author SHA1 Message Date
gbeauche
2cb7e02c9e Some instructions assume offsets are only 1-byte long. I don't think this
is 100% correct. Therefore, insert some asserts so that would fail.
2002-10-13 11:14:24 +00:00
gbeauche
aa6b264d21 Add raw_emit_nop_filler() with more efficient no-op fillers stolen from
GNU binutils 2.12.90.0.15. Speed bump is marginal (less than 6%). Make it
default though, that's conditionalized by tune_nop_fillers constant.
2002-10-12 16:27:13 +00:00
nigel
7914fdc677 Incorporate several changes from latest Unix version of file 2002-10-06 23:29:59 +00:00
nigel
ce0bca286f Change required for GCC 3.1 (stdc++ library needed in C++ program link),
general tidy-up (now use G++ to compile several files at once for gencpu)
2002-10-06 23:28:58 +00:00
nigel
162cc94bcd Newer prototype required by GCC 3.1 2002-10-06 23:26:07 +00:00
nigel
dd6025502d MacOS 10.2 compatibility (diffeent config.sub & config.guess location),
argument processing (like Unix autogen.sh)
2002-10-06 23:23:10 +00:00
gbeauche
8bf60db5ee Real addressing mode also works on Linux/ppc. Uhoh, what was the initial
problem anyway?
2002-10-03 19:57:12 +00:00
gbeauche
78ac3e667f Don't forget to note CPU detection code mostly comes from Linux kernel. 2002-10-03 16:16:57 +00:00
gbeauche
d4ed937de6 JIT add copyright notices just to notify people that's real derivative
work from GPL code (UAE-JIT). Additions and improvements are from B2
developers.
2002-10-03 16:13:46 +00:00
gbeauche
ff85d804d0 Real addressing is reported to work on FreeBSD/i386 too 2002-10-03 15:50:13 +00:00
gbeauche
177cdee820 configure script is reportedly no longer crashing on FreeBSD when
SIGSEGV_SKIP_INSTRUCTION is set.
2002-10-03 15:49:14 +00:00
gbeauche
3efbc30695 B2 maintainer for FreeBSD reported <sys/soundcard.h> is the one to use in all
recent versions of FreeBSD.
2002-10-03 15:47:59 +00:00
gbeauche
8de7ad1091 - Turn on runtime detection of loop and jump alignment as Aranym people
reported they got some improvement with it and larger loops. Small
  loops are an issue for now until unrolling is implemented for DBcc.
- Const jumps are identified in readcpu. I don't want to duplicate code
  uselessly. Rather, it's the JIT job to know whether we are doing block
  inlining and un-marking those instructions as end-of-block.
2002-10-03 15:05:01 +00:00
gbeauche
a60c6da7c3 Turn on block inlining so that people could test this feature and report
if they do gain something or renders JIT less stable.
2002-10-03 15:01:53 +00:00
gbeauche
724516511a Do translate BSR.L, we don't have any issue with that even if we are
doing block inlining since we have a complete chain of information about
the blocks to checksum.
2002-10-03 14:59:35 +00:00
gbeauche
e11dd3d375 Do translate FMUL instructions, the core needs to be fixed and this is
not translation of that instruction. I believe this is related to some
misgeneration of FPU core sequence and allocation of FP registers?
2002-10-03 14:58:02 +00:00
gbeauche
e9584dbcc1 Add PROFILE_UNTRANSLATED_INSNS information. Interestingly, the following
are the bottleneck now: DIVS, BSR.L (why isn't it translated yet?),
bit-field instructions (I need to self-motivate enough for that), and
A-Traps.
2002-10-02 16:22:51 +00:00
gbeauche
94a9038826 - Remove dead code in readcpu.cpp concerning CONST_JUMP control flow.
- Replace unused fl_compiled with fl_const_jump
- Implement block inlining enabled with USE_INLINING && USE_CHECKSUM_INFO.
  However, this is currently disabled as it doesn't give much and exhibits
  even more a cache/code generation problem with FPU JIT compiled code.
- Actual checksum values are now integral part of a blockinfo regardless
  of USE_CHECKSUM_INFO is set or not. Reduce number of elements in that
  structure and speeds up a little calculation of checksum of chained blocks.
- Don't care about show_checksum() for now.
2002-10-02 15:55:10 +00:00
gbeauche
21909f1eed - Rewrite blockinfo allocator et al. Use a template class so that this
can work with other types related to blockinfos.
- Add new method to compute checksums. This should permit code inlining
  and follow-ups of const_jumps without breaking the lazy cache invalidator.
  aka. chain infos for checksuming. TODO: Incomplete support thus disabled.
2002-10-01 16:22:36 +00:00
gbeauche
518f982775 - CAN_JIT=yes has to be moved into the actual block containing JITSRCS.
- Optimistically reenable gas/x86 assembly optimizations and JIT for FreeBSD
  as it used to work in the past there. If not, beat me.
2002-10-01 09:58:08 +00:00
gbeauche
13e8cb3eec Huh, am I still asleep? Actually use the cpuemuX_nf.cpp pattern rather
than the *.s variant.
2002-10-01 09:51:09 +00:00
gbeauche
75de104c92 - Optimize use of quit_program variable. This is a real boolean for B2.
- Remove unused/dead code concerning surroundings of (debugging).
- m68k_compile_execute() is generated and optimized code now.
2002-10-01 09:39:55 +00:00
gbeauche
bdf9d76bb8 - #include "flags_x86.h" here to get NATICE_CC_?? helper macros
- Add raw_cmp_b_mi() and raw_call_m_indexed() for generated
  m68k_compile_execute() function
2002-10-01 09:37:03 +00:00
gbeauche
c492269143 Drop cpuopti on x86 now that we have a fast JIT. I don't want to bother
fixing cpuopti or workarounding code for any known and unknown gcc bug.
2002-10-01 09:34:47 +00:00
gbeauche
98d1246815 - Let fullscreen DGA mode work again, even with a DirectColor visual. In
that case, we do need add it when creating the window otherwise we
  result int a nice BadMatch for X_CreateWindow request. FIXME?
- Fix typo and do enable VOSF in DGA mode, if necessary.
2002-09-28 12:42:39 +00:00
gbeauche
8748b48b7a Disable USE_QUAD_DOUBLE for now and probably for good as (i) the emulator
implementation is not correct, (ii) I don't know of any CPU which
handles this kind of format *natively* with conformance to IEEE.
2002-09-20 16:52:48 +00:00
gbeauche
ec92457d68 Fix align_jumps for athlon, that's really "16" and gcc-3.2 sources contained
the same error. ;-)
2002-09-20 14:55:50 +00:00
gbeauche
d7c677d077 - Implement {make,extract}_extended() for USE_QUAD_DOUBLE
- Don't forget to fill in mantissa3 member for USE_QUAD_DOUBLE in
  make_extended_*() but make sure NaN, inf, zeros are handled beforehand
2002-09-19 20:52:50 +00:00
gbeauche
a5ba7ea5ac Don't define USE_LONG_DOUBLE when sizeof(long double) == 16. This still
is not very clean but it should build now. Probably live with USE_LONG_DOUBLE
for any case where native long double exists and sizeof > 8 ?
2002-09-19 16:02:13 +00:00
gbeauche
b765112cf9 Get rid of any "extern inline" bits. Use static inline instead as MIPS
compilers don't really like the former syntax.
2002-09-19 15:42:16 +00:00
gbeauche
ecd3db832e - Rewrite raw_init_cpu() to match more details, from kernel sources.
- Add possibility to tune code alignment to the underlying processor. However,
  this is turned off as I don't see much improvement and align_jumps = 64
  for Athlon looks suspicious to me.
- Remove two extra align_target() that are already covered.
- Remove unused may_trap() predicate.
2002-09-19 14:59:03 +00:00
gbeauche
feca66d43e Optimize runtime assembler with shorter equivalents when the accumulator
(%eax) is referenced along with immediates.
2002-09-18 15:56:17 +00:00
gbeauche
f2a9938685 Ensure the IEEE fpu core is used when building the JIT compiler 2002-09-18 13:06:49 +00:00
gbeauche
54ac7a1493 Move -DSAHF_SETO_PROFITABLE down in x86 & gas specific block. Also ensure
SAHF_SETO_PROFITABLE is defined when compiling the JIT. Aka I don't want
to support obsolete and probably bogus code nowadays.
2002-09-18 11:41:56 +00:00
gbeauche
e268a5a072 Define SAHF_SETO_PROFITABLE on x86, aka restore full performance of the
JIT compiler. ;-) BTW, also fixes some valgrind warnings.
2002-09-18 10:25:05 +00:00
gbeauche
c40279294a Don't forget to use vm_realease() to free up translation cache. Also free
the right amount of memory that was previously allocated.
2002-09-18 09:55:37 +00:00
gbeauche
599f7e845f Use vm_acquire() to allocate translation cache 2002-09-18 07:50:55 +00:00
gbeauche
5df172aa53 Additions for the JIT compiler opcode translators + NOFLAGS variant of
regular instruction handlers.
2002-09-17 16:09:25 +00:00
gbeauche
8c7254e4c8 Additions for the JIT compiler (--enable-jit-compiler, --enable-jit-debug) 2002-09-17 16:08:41 +00:00
gbeauche
6f3a214a15 Make FlushCodeRange aware of the JIT compiler's flush_icache() 2002-09-17 16:08:07 +00:00
gbeauche
0b001e81a5 Additional string defs for JIT-specific options 2002-09-17 16:07:21 +00:00
gbeauche
ea8bdf1941 Update prefs editor with "JIT Compiler" pane 2002-09-17 16:06:37 +00:00
gbeauche
4fc127c8df - Changes to support 68040 -> x86 dynamic translator
- Globalize FLIGHT_RECORDER, possibly used in compiler/ sources as well
2002-09-17 16:05:39 +00:00
gbeauche
c0526db089 Import JIT compiler 2002-09-17 16:04:06 +00:00
gbeauche
ba346aa0d2 Check for for C99 math functions in the form *l() 2002-09-16 15:40:48 +00:00
gbeauche
6af88bc787 Only use *l() math functions when they are available 2002-09-16 15:40:23 +00:00
gbeauche
ea98d02ce8 Conditionalize use of pthread_mutexattr_setpshared() as this is an optional
POSIX feature from _POSIX_THREAD_PROCESS_SHARED group. Besides, Ulrich Drepper
mentions "the kernel support for this option wasn't available until 2.5.7.
Future versions of the thread library will support this option."
<http://people.redhat.com/drepper/posix-option-groups.html>

BTW, this nukes a warning when build on FreeBSD 4.6
2002-09-16 15:06:24 +00:00
cebix
7c1352a5f7 updated autogen.sh to AutoGen(TM) 8.0 Professional :-) 2002-09-16 14:54:19 +00:00
gbeauche
d16a54362c #include <pthread.h> to get pthread_attr_t definition 2002-09-16 14:48:53 +00:00
gbeauche
a04889fe03 Portability fixes: use a switch to test for ac_cv_c_float_format 2002-09-16 14:17:20 +00:00