nios2 and atomic operations

Sebastian Huber sebastian.huber at embedded-brains.de
Mon Apr 20 19:36:54 UTC 2015


----- Joel Sherrill <joel.sherrill at oarcorp.com> schrieb:
> 
> 
> On 4/20/2015 2:18 PM, Sebastian Huber wrote:
> > ----- Joel Sherrill <joel.sherrill at oarcorp.com> schrieb:
> >> Hi
> >>
> >> As I mentioned earlier, nios2 does not link C++ iostream because of an
> >> undefined reference:
> >>
> >> /users/joel/rtems-4.11-work/tools/lib/gcc/nios2-rtems4.11/4.9.2/libstdc++.a(locale-inst.o):/users/joel/rtems-4.11-work/rtems-source-builder/rtems/build/nios2-rtems4.11-gcc-4.9.2-newlib-2.2.0.20150323-x86_64-linux-gnu-1/build/nios2-rtems4.11/libstdc++-v3/include/ext/atomicity.h:49:
> >> more undefined references to `__sync_fetch_and_add_4' follow
> >>
> >> I don't see anything obviously different about this target. Can someone
> >> take a look at this please? It has to be something small.
> > I guess Nios II lacks support for atomic operations, so the operating system must provide them in terms of helper functions.  Maybe we need a port of libatomic for this target.  It looks like something bigger.
> >
> That's what I was coming to believe. But why don't see this on other
> targets?
> I don't see how libatomic would be broken for just Nios2. We don't have
> RTEMS
> specific configuration in it and it only has a few ports.

As far as I know we have no support of libatomic for RTEMS.

> 
> What do you mean by "It looks like something bigger"?

The Linux Nios2 configuration has something like this:

/* Implement TARGET_INIT_LIBFUNCS.  */
static void
nios2_init_libfuncs (void)
{
  /* For Linux, we have access to kernel support for atomic operations.  */
  if (TARGET_LINUX_ABI)
    init_sync_libfuncs (UNITS_PER_WORD);
}

You have to dig into the GCC configuration, and this is always time consuming.  I would file a GCC PR.

-- 
Sebastian Huber, embedded brains GmbH

Address : Dornierstr. 4, D-82178 Puchheim, Germany
Phone   : +49 89 189 47 41-16
Fax     : +49 89 189 47 41-09
E-Mail  : sebastian.huber at embedded-brains.de
PGP     : Public key available on request.

Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.



More information about the devel mailing list