summaryrefslogtreecommitdiff
path: root/runtime/arm/vararg.S
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/arm/vararg.S')
-rw-r--r--runtime/arm/vararg.S36
1 files changed, 15 insertions, 21 deletions
diff --git a/runtime/arm/vararg.S b/runtime/arm/vararg.S
index 8d431d3..e352582 100644
--- a/runtime/arm/vararg.S
+++ b/runtime/arm/vararg.S
@@ -34,50 +34,44 @@
@ Helper functions for variadic functions <stdarg.h>. ARM version
- .text
+#include "sysdeps.h"
@ typedef void * va_list;
@ unsigned int __compcert_va_int32(va_list * ap);
@ unsigned long long __compcert_va_int64(va_list * ap);
@ double __compcert_va_float64(va_list * ap);
- .global __compcert_va_int32
-__compcert_va_int32:
+FUNCTION(__compcert_va_int32)
@ r0 = ap parameter
ldr r1, [r0, #0] @ r1 = pointer to next argument
- add r1, r1, #4 @ advance ap by 4
+ ADD r1, r1, #4 @ advance ap by 4
str r1, [r0, #0]
ldr r0, [r1, #-4] @ load next argument and return it in r0
bx lr
- .type __compcert_va_int32, %function
- .size __compcert_va_int32, . - __compcert_va_int32
+ENDFUNCTION(__compcert_va_int32)
- .global __compcert_va_int64
-__compcert_va_int64:
+FUNCTION(__compcert_va_int64)
@ r0 = ap parameter
ldr r1, [r0, #0] @ r1 = pointer to next argument
- add r1, r1, #15 @ 8-align and advance by 8
- bic r1, r1, #7
+ ADD r1, r1, #15 @ 8-align and advance by 8
+ BIC r1, r1, #7
str r1, [r0, #0] @ update ap
ldr r0, [r1, #-8] @ load next argument and return it in r0,r1
ldr r1, [r1, #-4]
bx lr
- .type __compcert_va_int64, %function
- .size __compcert_va_int64, . - __compcert_va_int64
+ENDFUNCTION(__compcert_va_int64)
- .global __compcert_va_float64
-__compcert_va_float64:
+FUNCTION(__compcert_va_float64)
@ r0 = ap parameter
ldr r1, [r0, #0] @ r1 = pointer to next argument
- add r1, r1, #15 @ 8-align and advance by 8
- bic r1, r1, #7
+ ADD r1, r1, #15 @ 8-align and advance by 8
+ BIC r1, r1, #7
str r1, [r0, #0] @ update ap
-#ifdef VARIANT_hardfloat
- fldd d0, [r1, #-8] @ load next argument and return it in d0
-#else
+#ifdef VARIANT_eabi
ldr r0, [r1, #-8] @ load next argument and return it in r0,r1
ldr r1, [r1, #-4]
+#else
+ vldr d0, [r1, #-8] @ load next argument and return it in d0
#endif
bx lr
- .type __compcert_va_float64, %function
- .size __compcert_va_float64, . - __compcert_va_float64
+ENDFUNCTION(__compcert_va_float64)