On Sat, 20 Aug 2005, Paolo Molaro wrote:
On 08/18/05 Tomi Valkeinen wrote:
Oh, and if you are using an ARM11 based board, you may also want to fix
the swp-bug (http://bugzilla.ximian.com/show_bug.cgi?id=75114)
Did you test that change?
Care to research with the libc guys why they wrote it that way and if
your change is really the right fix?
Hi,
Yes, I did test it. All compilers seem to produce correct code after the
change. The interesting part with the bug is that even if the produced
code is against ARM reference manual, it works with all the ARM9
processors I have tested, but fails with ARM11.
The code in recent libc is actually a bit different. This is from
glibc-2.3.5:
__asm__ __volatile__("swp %0, %1, [%2]"
: "=r"(ret)
: "0"(1), "r"(spinlock));
And this is from mono's libgc:
__asm__ __volatile__("swp %0, %1, [%2]"
: "=r"(oldval)
: "r"(1), "r"(addr)
: "memory");
The version in glibc produces correct code. The fix that I proposed was
suggested in Codesourcery's forums, but I guess the libc version is just
as fine.
Tomi Valkeinen
_______________________________________________
Mono-devel-list mailing list
[EMAIL PROTECTED]
http://lists.ximian.com/mailman/listinfo/mono-devel-list