Kaffe 0.84/JIT on netbsd-m68k (long)
Hauke Fath
hauke@Espresso.Rhein-Neckar.DE
Thu, 5 Feb 1998 23:16:34 +0100
At 23:11 Uhr +0100 04.02.1998, Ignatios Souvatzis wrote:
>> -- Is this always a no-op for NetBSD/m68k?
>
>The one I'm thinking of used to be up to NetBSD-1.2G, corresponding to
>up to gcc-2.7.2.1. Actually, it did some jmp tricks I never understood.
>gcc in the 1.3 release is fixed by importing the relevant parts of
>gcc-2.7.2.3.
>
>Note that flushing the D-cache is NOT enough. You need to invalidate the
>I-cache, too. THe code actually used by gcc does this.
What I have done is copy the code snippet from the ld sources:
#define FLUSH_DCACHE(beg, end) \
__asm__ __volatile__( \
"movem%.l %/d0-%/d7/%/a0-%/a5,%-\n\t" \
"move%.l %0,%/a1\n\t" \
"move%.l %1,%/d1\n\t" \
"sub%.l %/d1,%/a1\n\t" \
"movel %#0x80000004,d0\n\t" \
"trap %#12\n\t" \
"movem%.l %+,%/d0-%/d7/%/a0-%/a5" \
: \
: "g" (beg), "g" (end) )
With this, Kaffe 0.8.4 successfully builds and runs the included test suite
and the benchmarks (apart from AWT bugs). So I'd assume that trap 12 does
TRT?
>> Is the routine from
>> arch/m68k/mdprologue.S globally available?
>
>err... at least, it should be in dynamically loaded programs, as ld.so is
>using it when patching shared library references..
But it's not an "official" interface, exported by, say, a header?
>You should make sure to have 2.7.2.3, at least. 2.7.2.1 had NOT valid code
>for 68040 and 60. We imported those parts of 2.7.2.3 during the early
>1.3 release branch time, just to fix that bug.
What I have here is
[root@q700] ~ # cc -v
gcc version 2.7.2.2+myc1
[root@q700] ~ #
i.e. stock 1.3 userland and a 1.3B kernel.
hauke
--
"It's never straight up and down" (DEVO)