about summary refs log tree commit diff
path: root/linuxthreads/sysdeps
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2003-01-14 01:20:41 +0000
committerUlrich Drepper <drepper@redhat.com>2003-01-14 01:20:41 +0000
commitdb0a052cecb5b8d5850d199b695323ab58522857 (patch)
tree840c993d87a51c0f3ce44fb35fc16d163d4e40d9 /linuxthreads/sysdeps
parent0c5d3ed9edd070ad4bf192037ac6206a86e5b118 (diff)
downloadglibc-db0a052cecb5b8d5850d199b695323ab58522857.tar.gz
glibc-db0a052cecb5b8d5850d199b695323ab58522857.tar.xz
glibc-db0a052cecb5b8d5850d199b695323ab58522857.zip
Update.
2003-01-13  Martin Schwidefsky  <schwidefsky@de.ibm.com>

	* sysdeps/unix/sysv/linux/s390/s390-32/pt-initfini.c: Avoid
	unterminated string literals.
	* sysdeps/unix/sysv/linux/s390/s390-64/pt-initfini.c: Likewise.

2003-01-13  Martin Schwidefsky  <schwidefsky@de.ibm.com>

	* sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h
	(PSEUDO): Code reordering.  Move CENABLE and CDISABLE literals from
	PSEUDO_END to PSEUDO.
	(PSEUDO_END): Remove.
	(SINGLE_THREAD_P): Save an instruction.
	* sysdeps/unix/sysv/linux/s390/s390-32/vfork.S (__vfork): Add missing
	parameter to SINGLE_THREAD_P call.
	* sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h (PSEUDO):
	Code reordering.
Diffstat (limited to 'linuxthreads/sysdeps')
-rw-r--r--linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/pt-initfini.c230
-rw-r--r--linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h30
-rw-r--r--linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/vfork.S2
-rw-r--r--linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/pt-initfini.c196
-rw-r--r--linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h14
5 files changed, 231 insertions, 241 deletions
diff --git a/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/pt-initfini.c b/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/pt-initfini.c
index 8cc14dc45c..b7d901c4c6 100644
--- a/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/pt-initfini.c
+++ b/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/pt-initfini.c
@@ -36,119 +36,119 @@
    * crtn.s puts the corresponding function epilogues
    in the .init and .fini sections. */
 
-__asm__ ("
-
-#include \"defs.h\"
-
-/*@HEADER_ENDS*/
-
-/*@TESTS_BEGIN*/
-
-/*@TESTS_END*/
-
-/*@_init_PROLOG_BEGINS*/
-
-	.section .init
-#NO_APP
-	.align 4
-.globl _init
-	.type	 _init,@function
-_init:
-#	leaf function           0
-#	automatics              0
-#	outgoing args           0
-#	need frame pointer      0
-#	call alloca             0
-#	has varargs             0
-#	incoming args (stack)   0
-#	function length         36
-	STM	6,15,24(15)
-	BRAS	13,.LTN1_0
-.LT1_0:
-.LC13:
-	.long	__pthread_initialize_minimal@PLT-.LT1_0
-.LC14:
-	.long	__gmon_start__@GOT
-.LC15:
-	.long	_GLOBAL_OFFSET_TABLE_-.LT1_0
-.LTN1_0:
-	LR	1,15
-	AHI	15,-96
-	ST	1,0(15)
-	L	12,.LC15-.LT1_0(13)
-	AR	12,13
-	L     1,.LC13-.LT1_0(13)
-	LA    1,0(1,13)
-	BASR  14,1
-	L     1,.LC14-.LT1_0(13)
-	L     1,0(1,12)
-	LTR   1,1
-	JE    .L22
-	BASR  14,1
-.L22:
-#APP
-	.align 4,0x07
-	END_INIT
-
-/*@_init_PROLOG_ENDS*/
-
-/*@_init_EPILOG_BEGINS*/
-	.align 4
-	.section .init
-#NO_APP
-	.align 4
-	L	4,152(15)
-	LM	6,15,120(15)
-	BR	4
-#APP
-	END_INIT
-
-/*@_init_EPILOG_ENDS*/
-
-/*@_fini_PROLOG_BEGINS*/
-	.section .fini
-#NO_APP
-	.align 4
-.globl _fini
-	.type	 _fini,@function
-_fini:
-#	leaf function           0
-#	automatics              0
-#	outgoing args           0
-#	need frame pointer      0
-#	call alloca             0
-#	has varargs             0
-#	incoming args (stack)   0
-#	function length         30
-	STM	6,15,24(15)
-	BRAS	13,.LTN2_0
-.LT2_0:
-.LC17:
-	.long	_GLOBAL_OFFSET_TABLE_-.LT2_0
-.LTN2_0:
-	LR	1,15
-	AHI	15,-96
-	ST	1,0(15)
-	L	12,.LC17-.LT2_0(13)
-	AR	12,13
-#APP
-	.align 4,0x07
-	END_FINI
-
-/*@_fini_PROLOG_ENDS*/
-
-/*@_fini_EPILOG_BEGINS*/
-	.align 4
-	.section .fini
-#NO_APP
-	.align 4
-	L	4,152(15)
-	LM	6,15,120(15)
-	BR	4
-#APP
-	END_FINI
-
-/*@_fini_EPILOG_ENDS*/
-
-/*@TRAILER_BEGINS*/
+__asm__ ("\
+\n\
+#include \"defs.h\"\n\
+\n\
+/*@HEADER_ENDS*/\n\
+\n\
+/*@TESTS_BEGIN*/\n\
+\n\
+/*@TESTS_END*/\n\
+\n\
+/*@_init_PROLOG_BEGINS*/\n\
+\n\
+	.section .init\n\
+#NO_APP\n\
+	.align 4\n\
+.globl _init\n\
+	.type	 _init,@function\n\
+_init:\n\
+#	leaf function           0\n\
+#	automatics              0\n\
+#	outgoing args           0\n\
+#	need frame pointer      0\n\
+#	call alloca             0\n\
+#	has varargs             0\n\
+#	incoming args (stack)   0\n\
+#	function length         36\n\
+	STM	6,15,24(15)\n\
+	BRAS	13,.LTN1_0\n\
+.LT1_0:\n\
+.LC13:\n\
+	.long	__pthread_initialize_minimal@PLT-.LT1_0\n\
+.LC14:\n\
+	.long	__gmon_start__@GOT\n\
+.LC15:\n\
+	.long	_GLOBAL_OFFSET_TABLE_-.LT1_0\n\
+.LTN1_0:\n\
+	LR	1,15\n\
+	AHI	15,-96\n\
+	ST	1,0(15)\n\
+	L	12,.LC15-.LT1_0(13)\n\
+	AR	12,13\n\
+	L     1,.LC13-.LT1_0(13)\n\
+	LA    1,0(1,13)\n\
+	BASR  14,1\n\
+	L     1,.LC14-.LT1_0(13)\n\
+	L     1,0(1,12)\n\
+	LTR   1,1\n\
+	JE    .L22\n\
+	BASR  14,1\n\
+.L22:\n\
+#APP\n\
+	.align 4,0x07\n\
+	END_INIT\n\
+\n\
+/*@_init_PROLOG_ENDS*/\n\
+\n\
+/*@_init_EPILOG_BEGINS*/\n\
+	.align 4\n\
+	.section .init\n\
+#NO_APP\n\
+	.align 4\n\
+	L	4,152(15)\n\
+	LM	6,15,120(15)\n\
+	BR	4\n\
+#APP\n\
+	END_INIT\n\
+\n\
+/*@_init_EPILOG_ENDS*/\n\
+\n\
+/*@_fini_PROLOG_BEGINS*/\n\
+	.section .fini\n\
+#NO_APP\n\
+	.align 4\n\
+.globl _fini\n\
+	.type	 _fini,@function\n\
+_fini:\n\
+#	leaf function           0\n\
+#	automatics              0\n\
+#	outgoing args           0\n\
+#	need frame pointer      0\n\
+#	call alloca             0\n\
+#	has varargs             0\n\
+#	incoming args (stack)   0\n\
+#	function length         30\n\
+	STM	6,15,24(15)\n\
+	BRAS	13,.LTN2_0\n\
+.LT2_0:\n\
+.LC17:\n\
+	.long	_GLOBAL_OFFSET_TABLE_-.LT2_0\n\
+.LTN2_0:\n\
+	LR	1,15\n\
+	AHI	15,-96\n\
+	ST	1,0(15)\n\
+	L	12,.LC17-.LT2_0(13)\n\
+	AR	12,13\n\
+#APP\n\
+	.align 4,0x07\n\
+	END_FINI\n\
+\n\
+/*@_fini_PROLOG_ENDS*/\n\
+\n\
+/*@_fini_EPILOG_BEGINS*/\n\
+	.align 4\n\
+	.section .fini\n\
+#NO_APP\n\
+	.align 4\n\
+	L	4,152(15)\n\
+	LM	6,15,120(15)\n\
+	BR	4\n\
+#APP\n\
+	END_FINI\n\
+\n\
+/*@_fini_EPILOG_ENDS*/\n\
+\n\
+/*@TRAILER_BEGINS*/\
 ");
diff --git a/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h b/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h
index 9e856a4d0e..723f78c1dd 100644
--- a/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h
+++ b/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h
@@ -28,14 +28,6 @@
 # undef PSEUDO
 # define PSEUDO(name, syscall_name, args)				      \
 	.text;								      \
-ENTRY(name)								      \
-	SINGLE_THREAD_P(%r1)						      \
-	jne	L(pseudo_cancel);					      \
-	DO_CALL(syscall_name, args);					      \
-	lhi	%r4,-4095;						      \
-	clr	%r2,%r4;						      \
-	jnl	SYSCALL_ERROR_LABEL;					      \
-	br	%r14;							      \
 L(pseudo_cancel):							      \
 	STM_##args							      \
 	stm	%r12,%r15,48(%r15);					      \
@@ -43,29 +35,30 @@ L(pseudo_cancel):							      \
 	ahi	%r15,-96;						      \
 	st	%r14,0(%r15);						      \
 	basr    %r13,0;							      \
-200301:	l	%r1,200302f-200301b(%r13);				      \
+0:	l	%r1,1f-0b(%r13);					      \
 	bas	%r14,0(%r1,%r13);					      \
 	lr	%r0,%r2;						      \
 	LM_##args							      \
 	DO_CALL(syscall_name, args);					      \
-	l	%r1,200303f-200301b(%r13);				      \
+	l	%r1,2f-0b(%r13);					      \
 	lr	%r12,%r2;						      \
 	lr	%r2,%r0;						      \
 	bas	%r14,0(%r1,%r13);					      \
 	lr	%r2,%r12;						      \
 	lm	%r12,%r15,48+96(%r15);					      \
+	j	L(pseudo_check);					      \
+1:	.long	CENABLE-0b;						      \
+2:	.long	CDISABLE-0b;						      \
+ENTRY(name)								      \
+	SINGLE_THREAD_P(%r1)						      \
+	jne	L(pseudo_cancel);					      \
+	DO_CALL(syscall_name, args);					      \
+L(pseudo_check):							      \
 	lhi	%r4,-4095;						      \
 	clr	%r2,%r4;						      \
 	jnl	SYSCALL_ERROR_LABEL;					      \
 L(pseudo_end):
 
-#undef PSEUDO_END
-#define PSEUDO_END(name)						      \
-  SYSCALL_ERROR_HANDLER;						      \
-200302:	.long	CENABLE-200301b;					      \
-200303:	.long	CDISABLE-200301b;					      \
-    END (name)
-
 # ifdef IS_IN_libpthread
 #  define CENABLE	__pthread_enable_asynccancel
 #  define CDISABLE	__pthread_disable_asynccancel
@@ -95,8 +88,7 @@ L(pseudo_end):
 # else
 #  define SINGLE_THREAD_P(reg) \
 	ear	reg,%a0;						      \
-	l	reg,MULTIPLE_THREADS_OFFSET(reg);			      \
-	ltr	reg,reg;
+	icm	reg,15,MULTIPLE_THREADS_OFFSET(reg);
 # endif
 
 #elif !defined __ASSEMBLER__
diff --git a/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/vfork.S b/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/vfork.S
index 60477231a8..ce4a492a40 100644
--- a/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/vfork.S
+++ b/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/vfork.S
@@ -27,7 +27,7 @@
    and the process ID of the new process to the old process.  */
 
 ENTRY (__vfork)
-	SINGLE_THREAD_P
+	SINGLE_THREAD_P(%r1)
 	jne	0f
 
 	/* Do vfork system call.  */
diff --git a/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/pt-initfini.c b/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/pt-initfini.c
index 3d7db183fd..540443e6a3 100644
--- a/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/pt-initfini.c
+++ b/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/pt-initfini.c
@@ -37,101 +37,101 @@
    * crtn.s puts the corresponding function epilogues
    in the .init and .fini sections. */
 
-__asm__ ("
-
-#include \"defs.h\"
-
-/*@HEADER_ENDS*/
-
-/*@TESTS_BEGIN*/
-
-/*@TESTS_END*/
-
-/*@_init_PROLOG_BEGINS*/
-
-	.section .init
-#NO_APP
-	.align 4
-.globl _init
-	.type	 _init,@function
-_init:
-#	leaf function           0
-#	automatics              0
-#	outgoing args           0
-#	need frame pointer      0
-#	call alloca             0
-#	has varargs             0
-#	incoming args (stack)   0
-#	function length         36
-	STMG	6,15,48(15)
-	LGR	1,15
-	AGHI	15,-160
-	STG	1,0(15)
-	LARL	12,_GLOBAL_OFFSET_TABLE_
-	BRASL	14,__pthread_initialize_minimal@PLT
-	LARL	1,__gmon_start__@GOTENT
-	LG	1,0(1)
-	LTGR	1,1
-	JE	.L22
-	BASR	14,1
-.L22:
-#APP
-	.align 4,0x07
-	END_INIT
-
-/*@_init_PROLOG_ENDS*/
-
-/*@_init_EPILOG_BEGINS*/
-	.align 4
-	.section .init
-#NO_APP
-	.align 4
-	LG	4,272(15)
-	LMG	6,15,208(15)
-	BR	4
-#APP
-	END_INIT
-
-/*@_init_EPILOG_ENDS*/
-
-/*@_fini_PROLOG_BEGINS*/
-	.section .fini
-#NO_APP
-	.align 4
-.globl _fini
-	.type	 _fini,@function
-_fini:
-#	leaf function           0
-#	automatics              0
-#	outgoing args           0
-#	need frame pointer      0
-#	call alloca             0
-#	has varargs             0
-#	incoming args (stack)   0
-#	function length         30
-	STMG	6,15,48(15)
-	LGR	1,15
-	AGHI	15,-160
-	STG	1,0(15)
-	LARL	12,_GLOBAL_OFFSET_TABLE_
-#APP
-	.align 4,0x07
-	END_FINI
-
-/*@_fini_PROLOG_ENDS*/
-
-/*@_fini_EPILOG_BEGINS*/
-	.align 4
-	.section .fini
-#NO_APP
-	.align 4
-	LG	4,272(15)
-	LMG	6,15,208(15)
-	BR	4
-#APP
-	END_FINI
-
-/*@_fini_EPILOG_ENDS*/
-
-/*@TRAILER_BEGINS*/
-");
+__asm__ ("\
+\n\
+#include \"defs.h\"\n\
+\n\
+/*@HEADER_ENDS*/\n\
+\n\
+/*@TESTS_BEGIN*/\n\
+\n\
+/*@TESTS_END*/\n\
+\n\
+/*@_init_PROLOG_BEGINS*/\n\
+\n\
+	.section .init\n\
+#NO_APP\n\
+	.align 4\n\
+.globl _init\n\
+	.type	 _init,@function\n\
+_init:\n\
+#	leaf function           0\n\
+#	automatics              0\n\
+#	outgoing args           0\n\
+#	need frame pointer      0\n\
+#	call alloca             0\n\
+#	has varargs             0\n\
+#	incoming args (stack)   0\n\
+#	function length         36\n\
+	STMG	6,15,48(15)\n\
+	LGR	1,15\n\
+	AGHI	15,-160\n\
+	STG	1,0(15)\n\
+	LARL	12,_GLOBAL_OFFSET_TABLE_\n\
+	BRASL	14,__pthread_initialize_minimal@PLT\n\
+	LARL	1,__gmon_start__@GOTENT\n\
+	LG	1,0(1)\n\
+	LTGR	1,1\n\
+	JE	.L22\n\
+	BASR	14,1\n\
+.L22:\n\
+#APP\n\
+	.align 4,0x07\n\
+	END_INIT\n\
+\n\
+/*@_init_PROLOG_ENDS*/\n\
+\n\
+/*@_init_EPILOG_BEGINS*/\n\
+	.align 4\n\
+	.section .init\n\
+#NO_APP\n\
+	.align 4\n\
+	LG	4,272(15)\n\
+	LMG	6,15,208(15)\n\
+	BR	4\n\
+#APP\n\
+	END_INIT\n\
+\n\
+/*@_init_EPILOG_ENDS*/\n\
+\n\
+/*@_fini_PROLOG_BEGINS*/\n\
+	.section .fini\n\
+#NO_APP\n\
+	.align 4\n\
+.globl _fini\n\
+	.type	 _fini,@function\n\
+_fini:\n\
+#	leaf function           0\n\
+#	automatics              0\n\
+#	outgoing args           0\n\
+#	need frame pointer      0\n\
+#	call alloca             0\n\
+#	has varargs             0\n\
+#	incoming args (stack)   0\n\
+#	function length         30\n\
+	STMG	6,15,48(15)\n\
+	LGR	1,15\n\
+	AGHI	15,-160\n\
+	STG	1,0(15)\n\
+	LARL	12,_GLOBAL_OFFSET_TABLE_\n\
+#APP\n\
+	.align 4,0x07\n\
+	END_FINI\n\
+\n\
+/*@_fini_PROLOG_ENDS*/\n\
+\n\
+/*@_fini_EPILOG_BEGINS*/\n\
+	.align 4\n\
+	.section .fini\n\
+#NO_APP\n\
+	.align 4\n\
+	LG	4,272(15)\n\
+	LMG	6,15,208(15)\n\
+	BR	4\n\
+#APP\n\
+	END_FINI\n\
+\n\
+/*@_fini_EPILOG_ENDS*/\n\
+\n\
+/*@TRAILER_BEGINS*/\n\
+	");
diff --git a/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h b/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h
index 19ecee80ec..ce4afb1d7b 100644
--- a/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h
+++ b/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h
@@ -28,14 +28,6 @@
 # undef PSEUDO
 # define PSEUDO(name, syscall_name, args)				      \
 	.text;								      \
-ENTRY(name)								      \
-	SINGLE_THREAD_P							      \
-	jne	L(pseudo_cancel);					      \
-	DO_CALL(syscall_name, args);					      \
-	lghi	%r4,-4095;						      \
-	clgr	%r2,%r4;						      \
-	jnl	SYSCALL_ERROR_LABEL;					      \
-	br	%r14;							      \
 L(pseudo_cancel):							      \
 	STM_##args							      \
 	stmg	%r13,%r15,104(%r15);					      \
@@ -51,6 +43,12 @@ L(pseudo_cancel):							      \
 	brasl	%r14,CDISABLE;						      \
 	lgr	%r2,%r13;						      \
 	lmg	%r13,%r15,104+160(%r15);				      \
+	j	L(pseudo_check);					      \
+ENTRY(name)								      \
+	SINGLE_THREAD_P							      \
+	jne	L(pseudo_cancel);					      \
+	DO_CALL(syscall_name, args);					      \
+L(pseudo_check):							      \
 	lghi	%r4,-4095;						      \
 	clgr	%r2,%r4;						      \
 	jnl	SYSCALL_ERROR_LABEL;					      \