From 65a4de4e06709264e7e06152cd88aaec1f03fd11 Mon Sep 17 00:00:00 2001 From: Chung-Lin Tang Date: Mon, 28 May 2012 00:06:57 +0200 Subject: SH: Add CFI directives. --- sysdeps/unix/sh/sysdep.S | 13 ++++++++++--- sysdeps/unix/sysv/linux/sh/sh3/setcontext.S | 3 ++- sysdeps/unix/sysv/linux/sh/sh3/swapcontext.S | 3 ++- sysdeps/unix/sysv/linux/sh/sh4/setcontext.S | 1 + sysdeps/unix/sysv/linux/sh/sh4/swapcontext.S | 1 + 5 files changed, 16 insertions(+), 5 deletions(-) (limited to 'sysdeps/unix') diff --git a/sysdeps/unix/sh/sysdep.S b/sysdeps/unix/sh/sysdep.S index e816575..f8025cc 100644 --- a/sysdeps/unix/sh/sysdep.S +++ b/sysdeps/unix/sh/sysdep.S @@ -1,4 +1,4 @@ -/* Copyright (C) 1999, 2000, 2005 Free Software Foundation, Inc. +/* Copyright (C) 1999-2012 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 @@ -41,13 +41,15 @@ skip: sts.l pr, @-r15 cfi_adjust_cfa_offset (4) cfi_rel_offset (pr, 0) - jsr @r1 - mov.l r0, @-r15 + mov.l r0, @-r15 cfi_adjust_cfa_offset (4) + jsr @r1 + nop mov.l @r15+, r1 cfi_adjust_cfa_offset (-4) lds.l @r15+, pr cfi_adjust_cfa_offset (-4) + cfi_restore (pr) mov.l r1, @r0 #endif #else @@ -77,10 +79,15 @@ skip: jsr @r1 nop lds.l @r15+, pr + cfi_adjust_cfa_offset (-4) + cfi_restore (pr) mov.l @r15+, r1 + cfi_adjust_cfa_offset (-4) mov.l r1, @r0 #endif mov.l @r15+, r12 + cfi_adjust_cfa_offset (-4) + cfi_restore (r12) #endif /* And just kick back a -1. */ rts diff --git a/sysdeps/unix/sysv/linux/sh/sh3/setcontext.S b/sysdeps/unix/sysv/linux/sh/sh3/setcontext.S index abe384e..9d672f9 100644 --- a/sysdeps/unix/sysv/linux/sh/sh3/setcontext.S +++ b/sysdeps/unix/sysv/linux/sh/sh3/setcontext.S @@ -1,5 +1,5 @@ /* Install given context. - Copyright (C) 2005 Free Software Foundation, Inc. + Copyright (C) 2005-2012 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 @@ -90,6 +90,7 @@ ENTRY(__setcontext) mov.l @(oR7,r0), r7 mov.l @(oR8,r0), r8 mov.l @r15+, r0 + cfi_adjust_cfa_offset(-4) jmp @r0 mov.l @r15+, r0 diff --git a/sysdeps/unix/sysv/linux/sh/sh3/swapcontext.S b/sysdeps/unix/sysv/linux/sh/sh3/swapcontext.S index 92c476e..8227a13 100644 --- a/sysdeps/unix/sysv/linux/sh/sh3/swapcontext.S +++ b/sysdeps/unix/sysv/linux/sh/sh3/swapcontext.S @@ -1,5 +1,5 @@ /* Save current context and install the given one. - Copyright (C) 2005 Free Software Foundation, Inc. + Copyright (C) 2005-2012 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 @@ -123,6 +123,7 @@ ENTRY(__swapcontext) mov.l @(oR7,r0), r7 mov.l @(oR8,r0), r8 mov.l @r15+, r0 + cfi_adjust_cfa_offset(-4) jmp @r0 mov.l @r15+, r0 diff --git a/sysdeps/unix/sysv/linux/sh/sh4/setcontext.S b/sysdeps/unix/sysv/linux/sh/sh4/setcontext.S index a3c0e21..161c51d 100644 --- a/sysdeps/unix/sysv/linux/sh/sh4/setcontext.S +++ b/sysdeps/unix/sysv/linux/sh/sh4/setcontext.S @@ -132,6 +132,7 @@ ENTRY(__setcontext) mov.l @(oR7,r0), r7 mov.l @(oR8,r0), r8 mov.l @r15+, r0 + cfi_adjust_cfa_offset(-4) jmp @r0 mov.l @r15+, r0 diff --git a/sysdeps/unix/sysv/linux/sh/sh4/swapcontext.S b/sysdeps/unix/sysv/linux/sh/sh4/swapcontext.S index 3ff7fe4..24caae5 100644 --- a/sysdeps/unix/sysv/linux/sh/sh4/swapcontext.S +++ b/sysdeps/unix/sysv/linux/sh/sh4/swapcontext.S @@ -209,6 +209,7 @@ ENTRY(__swapcontext) mov.l @(oR7,r0), r7 mov.l @(oR8,r0), r8 mov.l @r15+, r0 + cfi_adjust_cfa_offset(-4) jmp @r0 mov.l @r15+, r0 -- cgit v1.1