Work around updating pointers from ILP32
Signed-off-by: Dave Rodgman <dave.rodgman@arm.com>
This commit is contained in:
parent
5b5dd011d1
commit
e6c9996d04
2 changed files with 8 additions and 5 deletions
|
@ -248,10 +248,10 @@
|
|||
|
||||
#endif /* AMD64 */
|
||||
|
||||
#if defined(__aarch64__)
|
||||
#if defined(__aarch64__) && (UINTPTR_MAX == 0xfffffffful || UINTPTR_MAX == 0xfffffffffffffffful)
|
||||
|
||||
#define MULADDC_X1_INIT \
|
||||
asm(
|
||||
do { uintptr_t muladdc_d = (uintptr_t) d, muladdc_s = (uintptr_t) s; asm(
|
||||
|
||||
#define MULADDC_X1_CORE \
|
||||
"ldr x4, [%2], #8 \n\t" \
|
||||
|
@ -266,12 +266,12 @@
|
|||
|
||||
#define MULADDC_X1_STOP \
|
||||
: "+r" (c), \
|
||||
"+" MBEDTLS_ASM_AARCH64_PTR_CONSTRAINT (d), \
|
||||
"+" MBEDTLS_ASM_AARCH64_PTR_CONSTRAINT (s), \
|
||||
"+r" (muladdc_d), \
|
||||
"+r" (muladdc_s), \
|
||||
"+m" (*(uint64_t (*)[16]) d) \
|
||||
: "r" (b), "m" (*(const uint64_t (*)[16]) s) \
|
||||
: "x4", "x5", "x6", "x7", "cc" \
|
||||
);
|
||||
); d = (mbedtls_mpi_uint *)muladdc_d; s = (mbedtls_mpi_uint *)muladdc_s; } while (0);
|
||||
|
||||
#endif /* Aarch64 */
|
||||
|
||||
|
|
|
@ -174,6 +174,9 @@ inline void mbedtls_xor(unsigned char *r, const unsigned char *a, const unsigned
|
|||
*
|
||||
* This is normally the usual "r", but for aarch64_32 (aka ILP32,
|
||||
* as found in watchos), "p" is required to avoid warnings from clang.
|
||||
*
|
||||
* Note that clang does not recognise '+p' or '=p', and armclang
|
||||
* does not recognise 'p' at all.
|
||||
*/
|
||||
#if defined(__aarch64__) && defined(MBEDTLS_HAVE_ASM)
|
||||
#if UINTPTR_MAX == 0xfffffffful
|
||||
|
|
Loading…
Reference in a new issue