Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 11 Mar 2014 13:19:45 +1300
From:      Andrew Turner <andrew@fubar.geek.nz>
To:        freebsd-arm@freebsd.org
Subject:   Updating the minimum armv6 requirement
Message-ID:  <20140311131945.01f4c9b2@bender>

next in thread | raw e-mail | index | archive | help
I've been looking at code that uses 64-bit C++ atomic operations on
armv6. These require the ldrexd and strexd instructions that are
present on armv6k.

The problem is there is a mismatch between clang and binutils. Clang
thinks armv6k is an arm1136jf-s and sets the cpu in the asm output as
one. Binutils will see the cpu and think clang means an earlier armv6
instruction set that lacks the above instructions.

In this case both are correct as prior to the r1p0 release of the
arm1136jf-s core it was an armv6 core, and as of the r1p0 release it
became an armv6k core.

All of this is uninteresting for FreeBSD as the only ARMv6 SoC we run
on appears to be the bcm2835, and maybe some Marvell parts. As the
bcm2835 is an arm1176jzf-s and we are unlikely to get a new ARMv6 port I
am suggesting we make this the minimum requirement. It appears NetBSD
has the same requirement as clang will set the cpu to arm1176jzf-s when
building for NetBSD and armv6.

My proposal is to have the same CPU requirement as NetBSD for armv6. Is
anyone working on an SoC that would be affected by this?

Andrew



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20140311131945.01f4c9b2>