diff options
author | ed <ed@FreeBSD.org> | 2013-06-13 18:46:49 +0000 |
---|---|---|
committer | ed <ed@FreeBSD.org> | 2013-06-13 18:46:49 +0000 |
commit | 0e12ba8af551d77509a50b911efedf59dc7cd0f3 (patch) | |
tree | 4954d3fa071da269d992063e9f1da5ec73a6c44b /sys/conf | |
parent | 31754f3c181fb90c30132ff0cc1df6e95a0be9d9 (diff) | |
download | FreeBSD-src-0e12ba8af551d77509a50b911efedf59dc7cd0f3.zip FreeBSD-src-0e12ba8af551d77509a50b911efedf59dc7cd0f3.tar.gz |
Add C11 atomic fallbacks for ARM.
Basically the situation is as follows:
- When using Clang + armv6, we should not need any intrinsics. It should
support it, even though due to a target misconfiguration it does not.
We should fix this in Clang.
- When using Clang + noarmv6, provide __atomic_* functions that disable
interrupts.
- When using GCC + armv6, we can provide __sync_* intrinsics, similar to
what we did for MIPS. As ARM and MIPS are quite similar, simply base
this implementation on the one I did for MIPS.
- When using GCC + noarmv6, disable the interrupts, like we do for
Clang.
This implementation still lacks functions for noarmv6 userspace. To be
done.
Diffstat (limited to 'sys/conf')
-rw-r--r-- | sys/conf/files.arm | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/sys/conf/files.arm b/sys/conf/files.arm index ade34e6..938386d 100644 --- a/sys/conf/files.arm +++ b/sys/conf/files.arm @@ -40,6 +40,8 @@ arm/arm/sc_machdep.c optional sc arm/arm/setcpsr.S standard arm/arm/setstack.s standard arm/arm/stack_machdep.c optional ddb | stack +arm/arm/stdatomic.c standard \ + compile-with "${NORMAL_C:N-Wmissing-prototypes}" arm/arm/support.S standard arm/arm/swtch.S standard arm/arm/sys_machdep.c standard |