Index: dyncallback/dyncall_callback_arm32_arm_gas.S
--- dyncallback/dyncall_callback_arm32_arm_gas.S.orig
+++ dyncallback/dyncall_callback_arm32_arm_gas.S
@@ -6,7 +6,7 @@
  Description: Callback Thunk - Implementation for ARM32 (ARM mode)
  License:
 
-   Copyright (c) 2007-2018 Daniel Adler <dadler@uni-goettingen.de>,
+   Copyright (c) 2007-2021 Daniel Adler <dadler@uni-goettingen.de>,
                            Tassilo Philipp <tphilipp@potion-studios.com>
 
    Permission to use, copy, modify, and distribute this software for any
@@ -47,37 +47,37 @@ CTX_userdata    =  16
 dcCallbackThunkEntry:
 
 	/* Prolog. This function never needs to spill inside its prolog, so just store the permanent registers. */
-	stmdb	%r13, {%r4-%r11, %r13, %r14}	/* Permanent registers and stack pointer, etc... -> save area on stack (except counter). */
-	mov		%r11, %r13						/* Set frame pointer. */
-	sub		%r13, %r13, #40					/* Adjust stack pointer. */
+	stmdb	r13, {r4-r11, r13, r14}	/* Permanent registers and stack pointer, etc... -> save area on stack (except counter). */
+	mov		r11, r13				/* Set frame pointer. */
+	sub		r13, r13, #40			/* Adjust stack pointer. */
 
 	/* Grab arguments. */
-	mov		%r4, #0
+	mov		r4, #0
 #if defined(DC__ABI_ARM_HF)
-	stmdb	%r13!, {%r4}					/* Init freg_count and dreg_count to 0 */
-	stmdb	%r13!, {%r4}
-	fstmdbd	%r13!, {d0-d7}					/* Store all fp-registers in DCArgs' f[16] */
+	stmdb	r13!, {r4}					/* Init freg_count and dreg_count to 0 */
+	stmdb	r13!, {r4}
+	vstmdb	r13!, {d0-d7}				/* Store all fp-registers in DCArgs' f[16] */
 #endif
-	stmdb	%r13!, {%r0-%r4, %r11}			/* Spill first 4 args to DCArgs, along with reg_count (init to 0) and (stack) pointer to remaining args. */
+	stmdb	r13!, {r0-r4, r11}			/* Spill first 4 args to DCArgs, along with reg_count (init to 0) and (stack) pointer to remaining args. */
 
 	/* Prepare callback handler call. */
-	mov		%r0, %r12						/* Parameter 0 (r0) = DCCallback pointer (r12, pointer to thunk). */
-	mov		%r1, %r13						/* Parameter 1 (r1) = DCArgs pointer (r13, stack pointer). */
-	sub		%r13, %r13, #DCValue_size		/* Make room for return value. */
-	mov		%r2, %r13						/* Parameter 2 (r2) = results pointer. */
-	ldr		%r3, [%r12, #CTX_userdata]		/* Parameter 3 (r3) = userdata pointer. */
+	mov		r0, r12						/* Parameter 0 (r0) = DCCallback pointer (r12, pointer to thunk). */
+	mov		r1, r13						/* Parameter 1 (r1) = DCArgs pointer (r13, stack pointer). */
+	sub		r13, r13, #DCValue_size		/* Make room for return value. */
+	mov		r2, r13						/* Parameter 2 (r2) = results pointer. */
+	ldr		r3, [r12, #CTX_userdata]		/* Parameter 3 (r3) = userdata pointer. */
 
 	/* Call. */
-	ldr		%r4, [%r12, #CTX_handler]		/* Load callback handler pointer into r4. */
-	mov		%r14, %r15						/* Branch return address(r15) -> link register (r14) -- r15 always points to address of current + 2 instructions (= Epilog code). */
-	bx		%r4								/* Call. */
+	ldr		r4, [r12, #CTX_handler]		/* Load callback handler pointer into r4. */
+	mov		r14, r15					/* Branch return address(r15) -> link register (r14) -- r15 always points to address of current + 2 instructions (= Epilog code). */
+	bx		r4							/* Call. */
 
 	/* Return value. */
-	ldmia	%r13, {%r0, %r1}				/* Load return value in r0 and r1. */
+	ldmia	r13, {r0, r1}				/* Load return value in r0 and r1. */
 #if defined(DC__ABI_ARM_HF)
-	fldmiad	%r13, {%d0}						/* Same for floating point return value (if any). */
+	vldmia	r13, {d0}					/* Same for floating point return value (if any). */
 #endif
 
 	/* Epilog. */
-	ldmdb	%r11, {%r4-%r11, %r13, %r15}	/* Restore permanent registers (restore stack ptr and program counter).@@@db not needed since we rewrite r13? */
+	ldmdb	r11, {r4-r11, r13, r15}	/* Restore permanent registers (restore stack ptr and program counter).@@@db not needed since we rewrite r13? */
 
