Richard Earnshaw 439779bace arm: libgcc: provide implementations of __sync_synchronize
Prior to Armv6 there was no architected method to synchronize data
across processors.  Armv6 saw the first introduction of
multi-processor support, using a CP15 operation; but this was
deprecated in Armv7 and is not supported on m-profile devices of any
form.  Armv7 (and armv6-m) and later support data synchronization via
the DMB instruction.

This all leads to difficulties when linking programs as the user
generally needs to know which synchronization method is needed, but
there seems no easy way around this, when there are no OS-related
primitives available.

I've addressed this by adding multiple variants of __sync_synchronize
to libgcc, one for each of the above use cases.  I've named these
__sync_synchronize_none, __sync_synchronize_cp15dmb and
__sync_synchronize_dmb.  I've also added three specs files that can be
used to direct the linker to pick the appropriate implementation.
Using specs fragments for this is preferable to directing the user to
directly use --defsym as the latter has to be placed at the correct
position on the command line to be effective and the spec rule ensures
this automatically.

I've also added a default implementation of __sync_synchronize.  The
default implementation will use DMB if that is available in the target
ISA, or fall back to a nul-implementation if it isn't.  In the latter
case it will cause the linker (GNU LD) to emit a warning that
specifies how to pick a specific implementation.  I've chosen not to
permit this default to use the CP15 solution as that has been
deprecated.

libgcc:

	* config.host (arm*-*-eabi* | arm*-*-rtems*):
	Add arm/t-sync to the makefile rules.
	* config/arm/lib1funcs.S (__sync_synchronize_none)
	(__sync_synchronize_cp15dmb, __sync_synchronize_dmb)
	(__sync_synchronize): New functions.
	* config/arm/t-sync: New file.
	* config/arm/sync-none.specs: Likewise.
	* config/arm/sync-dmb.specs: Likewise.
	* config/arm/sync-cp15dmb.specs: Likewise.
2023-11-24 14:15:26 +00:00
2023-06-23 00:16:38 +00:00
2023-11-14 12:23:39 +00:00
2023-11-24 00:17:53 +00:00
2023-11-23 00:18:14 +00:00
2023-04-26 00:17:46 +00:00
2023-11-04 00:16:45 +00:00
2023-11-08 00:17:35 +00:00
2023-08-08 00:17:37 +00:00
2023-11-14 12:23:39 +00:00
2023-10-23 00:16:43 +00:00
2023-11-17 00:17:33 +00:00
2023-06-16 00:17:18 +00:00
2023-06-16 00:17:18 +00:00
2023-10-27 00:17:12 +00:00
2023-11-09 00:17:25 +00:00
2023-11-14 12:23:39 +00:00
2023-11-16 00:17:42 +00:00
2023-10-23 00:16:43 +00:00
2023-10-23 00:16:43 +00:00
2023-11-22 00:17:52 +00:00
2023-10-24 00:17:34 +00:00
2023-11-22 00:17:52 +00:00
2023-10-23 00:16:43 +00:00
2023-11-24 00:17:53 +00:00
2023-10-23 00:16:43 +00:00
2023-10-23 00:16:43 +00:00
2023-11-14 12:23:39 +00:00
2023-10-23 00:16:43 +00:00
2023-11-14 00:47:11 +01:00
2023-11-24 00:17:53 +00:00
2023-11-14 00:47:11 +01:00
2023-11-14 00:47:11 +01:00
2023-11-14 00:47:11 +01:00
2023-10-05 12:00:39 -04:00

This directory contains the GNU Compiler Collection (GCC).

The GNU Compiler Collection is free software.  See the files whose
names start with COPYING for copying permission.  The manuals, and
some of the runtime libraries, are under different terms; see the
individual source files for details.

The directory INSTALL contains copies of the installation information
as HTML and plain text.  The source of this information is
gcc/doc/install.texi.  The installation information includes details
of what is included in the GCC sources and what files GCC installs.

See the file gcc/doc/gcc.texi (together with other files that it
includes) for usage and porting information.  An online readable
version of the manual is in the files gcc/doc/gcc.info*.

See http://gcc.gnu.org/bugs/ for how to report bugs usefully.

Copyright years on GCC source files may be listed using range
notation, e.g., 1987-2012, indicating that every year in the range,
inclusive, is a copyrightable year that could otherwise be listed
individually.
Description
No description provided
Readme 2.7 GiB
Languages
C++ 30.7%
C 30.1%
Ada 14.4%
D 6.1%
Go 5.7%
Other 12.5%