about summary refs log tree commit diff
path: root/sysdeps/unix/sysv/linux/alpha/clone.S
diff options
context:
space:
mode:
authorZack Weinberg <zackw@panix.com>2018-03-09 09:42:04 -0500
committerZack Weinberg <zackw@panix.com>2018-03-10 15:17:18 -0500
commit054b72cc976000424e1d1017b3d51f071e5dd956 (patch)
treed5e748a12cb86dcf877dca72e62c4f92f40432e8 /sysdeps/unix/sysv/linux/alpha/clone.S
parent6253bacdc00de132dec452ff7c6ce3ba7fa23d81 (diff)
downloadglibc-054b72cc976000424e1d1017b3d51f071e5dd956.tar.gz
glibc-054b72cc976000424e1d1017b3d51f071e5dd956.tar.xz
glibc-054b72cc976000424e1d1017b3d51f071e5dd956.zip
alpha/clone.S: Invoke .set noat/.set at around explicit uses of $at
On Alpha, the register $at is, by default, reserved for use by the
assembler, in the expansion of pseudo-instructions.  It's also used
by the special calling convention for _mcount.  We get warnings from
Alpha clone.S because the code to call _mcount isn't properly marked
up to tell the assembler not to use $at itself.

	* sysdeps/unix/sysv/linux/alpha/clone.s (__clone): Wrap manual
	uses of $at in .set noat / .set at.
Diffstat (limited to 'sysdeps/unix/sysv/linux/alpha/clone.S')
-rw-r--r--sysdeps/unix/sysv/linux/alpha/clone.S2
1 files changed, 2 insertions, 0 deletions
diff --git a/sysdeps/unix/sysv/linux/alpha/clone.S b/sysdeps/unix/sysv/linux/alpha/clone.S
index bd85b0b1d3..810a2e5e78 100644
--- a/sysdeps/unix/sysv/linux/alpha/clone.S
+++ b/sysdeps/unix/sysv/linux/alpha/clone.S
@@ -40,9 +40,11 @@
 	cfi_startproc
 __clone:
 #ifdef PROF
+	.set noat
 	ldgp	gp,0(pv)
 	lda	AT, _mcount
 	jsr	AT, (AT), _mcount
+	.set at
 #endif
 
 	/* Sanity check arguments.  */