summaryrefslogtreecommitdiffstats
path: root/newlib/libc/machine/arm/arm_asm.h
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2011-10-18 11:35:17 +0000
committerNick Clifton <nickc@redhat.com>2011-10-18 11:35:17 +0000
commitd6f6573a5ff9adbc16b76c5d91ba8f6ab401b822 (patch)
tree1af4a29cc88ab3ff3b012b42cb4cd8d774f13e7e /newlib/libc/machine/arm/arm_asm.h
parent53609fd238a7ba4e8e9b53378cef6087170add22 (diff)
downloadcygnal-d6f6573a5ff9adbc16b76c5d91ba8f6ab401b822.tar.gz
cygnal-d6f6573a5ff9adbc16b76c5d91ba8f6ab401b822.tar.bz2
cygnal-d6f6573a5ff9adbc16b76c5d91ba8f6ab401b822.zip
* libc/machine/arm/Makefile.am (lib_a_SOURCES): Add memchr-stub.c,
memchr.S. * libc/machine/arm/arm_asm.h: Add ifdef to allow it to be included in .S files. * libc/machine/arm/memchr-stub.c: New file - just selects what to compile. * libc/machine/arm/memchr.S: New file - ARMv6t2/v7 version. * libc/machine/arm/Makefile.am (lib_a_SOURCES): Add strlen-armv7.S. * libc/machine/arm/strlen-armv7.S: New file. * libc/machine/arm/strlen.c: Add ifdef optimised code so it isn't for v7 or 6t2. * libc/machine/arm/Makefile.in: Regenerate.
Diffstat (limited to 'newlib/libc/machine/arm/arm_asm.h')
-rw-r--r--newlib/libc/machine/arm/arm_asm.h16
1 files changed, 16 insertions, 0 deletions
diff --git a/newlib/libc/machine/arm/arm_asm.h b/newlib/libc/machine/arm/arm_asm.h
index 2e0b1dd80..5a63a8d9e 100644
--- a/newlib/libc/machine/arm/arm_asm.h
+++ b/newlib/libc/machine/arm/arm_asm.h
@@ -62,7 +62,22 @@
/* Now some macros for common instruction sequences. */
+#ifdef __ASSEMBLER__
+.macro RETURN cond=
+#if defined (_ISA_ARM_4T) || defined (_ISA_THUMB_1)
+ bx\cond lr
+#else
+ mov\cond pc, lr
+#endif
+.endm
+
+.macro optpld base, offset=#0
+#if defined (_ISA_ARM_7)
+ pld [\base, \offset]
+#endif
+.endm
+#else
asm(".macro RETURN cond=\n\t"
#if defined (_ISA_ARM_4T) || defined (_ISA_THUMB_1)
"bx\\cond lr\n\t"
@@ -78,5 +93,6 @@ asm(".macro optpld base, offset=#0\n\t"
#endif
".endm"
);
+#endif
#endif /* ARM_ASM__H */