about summary refs log tree commit diff
diff options
context:
space:
mode:
authorRichard Henderson <rth@twiddle.net>2013-02-14 10:32:04 -0800
committerRichard Henderson <rth@twiddle.net>2013-03-06 07:46:44 -0800
commit5ff5dfe748c0585bb43e9d16fea9d89dc3bf2b9b (patch)
treefc645728bc43e2f719239657e780d3e3e2b0f045
parent5232b909bf31420497ec864e34f806a545017185 (diff)
downloadglibc-5ff5dfe748c0585bb43e9d16fea9d89dc3bf2b9b.tar.gz
glibc-5ff5dfe748c0585bb43e9d16fea9d89dc3bf2b9b.tar.xz
glibc-5ff5dfe748c0585bb43e9d16fea9d89dc3bf2b9b.zip
arm: Enable thumb2 mode in assembly files
The preceeding patches have allowed for the few incompatibilities
between arm and thumb2 mode, or have marked the file as not wanting
to use thumb2 mode.
-rw-r--r--ports/ChangeLog.arm3
-rw-r--r--ports/sysdeps/arm/sysdep.h13
2 files changed, 14 insertions, 2 deletions
diff --git a/ports/ChangeLog.arm b/ports/ChangeLog.arm
index 3ad5704e2f..6458a75154 100644
--- a/ports/ChangeLog.arm
+++ b/ports/ChangeLog.arm
@@ -1,5 +1,8 @@
 2013-03-06  Richard Henderson <rth@redhat.com>
 
+	* sysdeps/arm/sysdep.h [__ASSEMBLER__]: Enable thumb2 if __thumb2__.
+	(PC_OFS): Respect __thumb__ if __ASSEMBLER__.
+
 	* sysdeps/arm/sysdep.h (GET_TLS): New macro.
 	* sysdeps/arm/dl-tlsdesc.S (_dl_tlsdesc_undefweak): Use it.
 	(_dl_tlsdesc_dynamic): Likewise.
diff --git a/ports/sysdeps/arm/sysdep.h b/ports/sysdeps/arm/sysdep.h
index c525d5b977..d855ceb3c3 100644
--- a/ports/sysdeps/arm/sysdep.h
+++ b/ports/sysdeps/arm/sysdep.h
@@ -117,6 +117,16 @@
    the caller.  */
 	.eabi_attribute 24, 1
 
+/* The thumb2 encoding is reasonably complete.  Unless suppressed, use it.  */
+	.syntax unified
+# if defined(__thumb2__) && !defined(NO_THUMB)
+	.thumb
+#else
+#  undef __thumb__
+#  undef __thumb2__
+	.arm
+# endif
+
 /* Load or store to/from a pc-relative EXPR into/from R, using T.  */
 # ifdef __thumb2__
 #  define LDST_PCREL(OP, R, T, EXPR) \
@@ -172,8 +182,7 @@
 #endif	/* __ASSEMBLER__ */
 
 /* This number is the offset from the pc at the current location.  */
-/* ??? At the moment we're not turning on thumb mode in assembly.  */
-#if defined(__thumb__) && !defined(__ASSEMBLER__)
+#ifdef __thumb__
 # define PC_OFS  4
 #else
 # define PC_OFS  8