[PATCH] S/390: Fix socket and mcount 64 bit asms

Andreas Krebbel krebbel@linux.vnet.ibm.com
Mon Sep 22 14:09:00 GMT 2008


Hello,

the attached patch fixes two asm snippets in the S/390 code.  Although
in the 64 bit directory the 32 bit add instruction is used to subtract
from the stack pointer in r15.  This is wrong an leads to especially
nasty bugs whenever crossing a 4GB boundary with the stack pointer.

Please apply if you think it is ok.

Bye,

-Andreas-


2008-09-22  Deborah S. Townsend  <dstownse@us.ibm.com>

	* sysdeps/s390/s390-64/s390x-mcount.S: Replace ahi with aghi.
	* sysdeps/unix/sysv/linux/s390/s390-64/socket.S: Likewise.


Index: sysdeps/s390/s390-64/s390x-mcount.S
===================================================================
--- sysdeps/s390/s390-64/s390x-mcount.S.orig	2005-05-26 16:30:45.000000000 +0200
+++ sysdeps/s390/s390-64/s390x-mcount.S	2008-09-22 14:54:23.000000000 +0200
@@ -64,7 +64,7 @@ C_LABEL(_mcount)
 	/* Pop the saved registers.  Please note that `mcount' has no
 	   return value.  */
 	lmg   %r14,%r5,160(%r15)
-        ahi   %r15,224
+        aghi   %r15,224
         br    %r14
 	ASM_SIZE_DIRECTIVE(C_SYMBOL_NAME(_mcount))
 
Index: sysdeps/unix/sysv/linux/s390/s390-64/socket.S
===================================================================
--- sysdeps/unix/sysv/linux/s390/s390-64/socket.S.orig	2005-12-20 07:55:02.000000000 +0100
+++ sysdeps/unix/sysv/linux/s390/s390-64/socket.S	2008-09-22 14:55:53.000000000 +0200
@@ -61,7 +61,7 @@ ENTRY(__socket)
 	cfi_offset (%r6,-112)
         lgr     %r1,%r15
         lg      %r0,8(%r15)             /* Load eos.  */
-        ahi     %r15,-208               /* Buy stack space.  */
+        aghi     %r15,-208              /* Buy stack space.  */
 	cfi_adjust_cfa_offset (208)
         stg     %r1,0(%r15)             /* Store back chain.  */
         stg     %r0,8(%r15)             /* Store eos.  */



More information about the Libc-alpha mailing list