mirror of
https://github.com/yuzu-emu/mbedtls
synced 2024-11-25 02:58:15 +00:00
aria: check arm arch version for asm
rev and rev16 are only supported from v6 (all profiles) and up. arm-none-eabi-gcc picks a lower architecture version by default, which means before this commit it would fail to build (assembler error) unless you manually specified -march=armv6-m -mthumb or similar, which broke all.sh. Source for version-checking macros: - GCC/Clang: use the -E -dM - </dev/null trick - armcc5: http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0472k/chr1359125007083.html - armclang 6: http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0774g/chr1383660321827.html Tested with the following script: #!/bin/sh set -eu ARMCLANG="env ARM_TOOL_VARIANT=ult $ARMC6_BIN_DIR/armclang" build() { echo "$@" "$@" -Iinclude -c library/aria.c } build arm-none-eabi-gcc build arm-none-eabi-gcc -march=armv5 build clang --target=arm-none-eabi build clang --target=arm-none-eabi -march=armv5 build armcc build armcc --gnu build armcc --cpu=5T build armcc --cpu=5T --gnu build $ARMCLANG --target=arm-arm-none-eabi check_asm() { rm -f aria.o build "$@" arm-none-eabi-objdump -d aria.o | grep rev16 } check_asm arm-none-eabi-gcc -march=armv6-m -mthumb check_asm arm-none-eabi-gcc -march=armv7-m -mthumb check_asm arm-none-eabi-gcc -march=armv8-m.base -mthumb check_asm arm-none-eabi-gcc -march=armv7-a -mthumb check_asm arm-none-eabi-gcc -march=armv8-a -mthumb check_asm arm-none-eabi-gcc -march=armv7-a -marm check_asm arm-none-eabi-gcc -march=armv8-a -marm check_asm clang --target=arm-none-eabi -march=armv6-m check_asm clang --target=arm-none-eabi -march=armv7-a check_asm clang --target=arm-none-eabi -march=armv7-m check_asm clang --target=arm-none-eabi -march=armv7-r check_asm clang --target=arm-none-eabi -march=armv8-a check_asm armcc -O0 --cpu=6-M check_asm armcc -O0 --cpu=7-M check_asm armcc -O0 --cpu=6 check_asm armcc -O0 --cpu=7-A check_asm $ARMCLANG --target=arm-arm-none-eabi -march=armv6-m check_asm $ARMCLANG --target=arm-arm-none-eabi -march=armv7-a check_asm $ARMCLANG --target=arm-arm-none-eabi -march=armv7-m check_asm $ARMCLANG --target=arm-arm-none-eabi -march=armv7-r check_asm $ARMCLANG --target=arm-arm-none-eabi -march=armv8-a check_asm $ARMCLANG --target=arm-arm-none-eabi -march=armv8-m.base
This commit is contained in:
parent
8abc349881
commit
2078725feb
1 changed files with 10 additions and 6 deletions
|
@ -90,10 +90,11 @@ static void mbedtls_zeroize( void *v, size_t n ) {
|
|||
* so let's provide asm versions for common platforms with C fallback.
|
||||
*/
|
||||
#if defined(MBEDTLS_HAVE_ASM)
|
||||
#if defined(__arm__)
|
||||
#if defined(__arm__) /* rev16 available from v6 up */
|
||||
/* armcc5 --gnu defines __GNUC__ but doesn't support GNU's extended asm */
|
||||
#if defined(__GNUC__) && \
|
||||
( !defined(__ARMCC_VERSION) || __ARMCC_VERSION >= 6000000 )
|
||||
( !defined(__ARMCC_VERSION) || __ARMCC_VERSION >= 6000000 ) && \
|
||||
__ARM_ARCH >= 6
|
||||
static inline uint32_t aria_p1( uint32_t x )
|
||||
{
|
||||
uint32_t r;
|
||||
|
@ -101,7 +102,8 @@ static inline uint32_t aria_p1( uint32_t x )
|
|||
return( r );
|
||||
}
|
||||
#define ARIA_P1 aria_p1
|
||||
#elif defined(__ARMCC_VERSION) && __ARMCC_VERSION < 6000000
|
||||
#elif defined(__ARMCC_VERSION) && __ARMCC_VERSION < 6000000 && \
|
||||
( __TARGET_ARCH_ARM >= 6 || __TARGET_ARCH_THUMB >= 3 )
|
||||
static inline uint32_t aria_p1( uint32_t x )
|
||||
{
|
||||
uint32_t r;
|
||||
|
@ -139,10 +141,11 @@ static inline uint32_t aria_p1( uint32_t x )
|
|||
* so let's provide asm versions for common platforms with C fallback.
|
||||
*/
|
||||
#if defined(MBEDTLS_HAVE_ASM)
|
||||
#if defined(__arm__)
|
||||
#if defined(__arm__) /* rev available from v6 up */
|
||||
/* armcc5 --gnu defines __GNUC__ but doesn't support GNU's extended asm */
|
||||
#if defined(__GNUC__) && \
|
||||
( !defined(__ARMCC_VERSION) || __ARMCC_VERSION >= 6000000 )
|
||||
( !defined(__ARMCC_VERSION) || __ARMCC_VERSION >= 6000000 ) && \
|
||||
__ARM_ARCH >= 6
|
||||
static inline uint32_t aria_p3( uint32_t x )
|
||||
{
|
||||
uint32_t r;
|
||||
|
@ -150,7 +153,8 @@ static inline uint32_t aria_p3( uint32_t x )
|
|||
return( r );
|
||||
}
|
||||
#define ARIA_P3 aria_p3
|
||||
#elif defined(__ARMCC_VERSION) && __ARMCC_VERSION < 6000000
|
||||
#elif defined(__ARMCC_VERSION) && __ARMCC_VERSION < 6000000 && \
|
||||
( __TARGET_ARCH_ARM >= 6 || __TARGET_ARCH_THUMB >= 3 )
|
||||
static inline uint32_t aria_p3( uint32_t x )
|
||||
{
|
||||
uint32_t r;
|
||||
|
|
Loading…
Reference in a new issue