about summary refs log tree commit diff
path: root/sysdeps/sh
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2005-12-30 22:17:53 +0000
committerUlrich Drepper <drepper@redhat.com>2005-12-30 22:17:53 +0000
commit3ddf7149f0acbffc3a24858faac04f29f57bd415 (patch)
tree6c1fe8af1a3c57e99080525cffd05bc537bd146b /sysdeps/sh
parent5ad77144942c0ea0a3f3c71d4ddccdf91e64771c (diff)
downloadglibc-3ddf7149f0acbffc3a24858faac04f29f57bd415.tar.gz
glibc-3ddf7149f0acbffc3a24858faac04f29f57bd415.tar.xz
glibc-3ddf7149f0acbffc3a24858faac04f29f57bd415.zip
* sysdeps/sh/sysdep.h: Add cfi instrumentation to asm fragments.
	* sysdeps/unix/sysv/linux/sh/sysdep.h: Likewise.
	* sysdeps/sh/_mcount.S: Add cfi instrumentation.
	* sysdeps/unix/sh/sysdep.S: Likewise.
	* sysdeps/unix/sysv/linux/sh/makecontext.S: Adjust cfi_startproc.
	* sysdeps/unix/sysv/linux/sh/sh4/getcontext.S: Remove now duplicate
	cfi_startproc and cfi_endproc.
	* sysdeps/unix/sysv/linux/sh/sh4/setcontext.S: Likewise.
	* sysdeps/unix/sysv/linux/sh/sh4/swapcontext.S: Likewise.
	* sysdeps/unix/sysv/linux/sh/sh3/getcontext.S: Likewise.
	* sysdeps/unix/sysv/linux/sh/sh3/setcontext.S: Likewise.
	* sysdeps/unix/sysv/linux/sh/sh3/swapcontext.S: Likewise.
	* sysdeps/unix/sysv/linux/sh/socket.S: Likewise.
	* sysdeps/unix/sysv/linux/sh/sysdep.S: Add cfi_endproc.
Diffstat (limited to 'sysdeps/sh')
-rw-r--r--sysdeps/sh/sysdep.h11
1 files changed, 9 insertions, 2 deletions
diff --git a/sysdeps/sh/sysdep.h b/sysdeps/sh/sysdep.h
index 202c701a10..743631ad71 100644
--- a/sysdeps/sh/sysdep.h
+++ b/sysdeps/sh/sysdep.h
@@ -1,5 +1,5 @@
 /* Assembler macros for SH.
-   Copyright (C) 1999, 2000 Free Software Foundation, Inc.
+   Copyright (C) 1999, 2000, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -52,10 +52,12 @@
   ASM_TYPE_DIRECTIVE (C_SYMBOL_NAME(name),function)			      \
   .align ALIGNARG(5);							      \
   C_LABEL(name)								      \
+  cfi_startproc;							      \
   CALL_MCOUNT
 
 #undef	END
 #define END(name)							      \
+  cfi_endproc;								      \
   ASM_SIZE_DIRECTIVE(C_SYMBOL_NAME(name))
 
 /* If compiled for profiling, call `mcount' at the start of each function.  */
@@ -63,12 +65,17 @@
 #define CALL_MCOUNT					\
 	mov.l	1f,r1;					\
 	sts.l	pr,@-r15;				\
+	cfi_adjust_cfa_offset (4);			\
+	cfi_rel_offset (pr, 0);				\
 	mova	2f,r0;					\
 	jmp	@r1;					\
 	 lds	r0,pr;					\
 	.align	2;					\
 1:	.long	mcount;					\
-2:	lds.l	@r15+,pr
+2:	lds.l	@r15+,pr;				\
+	cfi_adjust_cfa_offset (-4);			\
+	cfi_restore (pr)
+
 #else
 #define CALL_MCOUNT		/* Do nothing.  */
 #endif