sh: Fix up restorer in debug_trap exception return path.
There are a few different types of debug trap exceptions, though now that they are all going through a special jump table, the restorer needs to be unified as well. Presently this is falling through the ret_from_fork path, which more or less does the right thing on SH-3/4 whilst being completely unsuitable on MMU-less targets. Ultimately what we want here is a branch through the platform's restore_all directly, without worrying about the retval being clobbered. We can accomplish that through a branch to __restore_all directly, so switch it so we come back from the jump table and branch to the restorer. This fixes up a recursion in the nommu WARN_ON() path, as well as some other userspace nastiness where said recursion caused serious stack corruption. Signed-off-by: Paul Mundt <lethal@linux-sh.org>
This commit is contained in:
Родитель
9a33fc217d
Коммит
336f1d3268
|
@ -1,9 +1,6 @@
|
|||
/* $Id: entry.S,v 1.37 2004/06/11 13:02:46 doyu Exp $
|
||||
*
|
||||
* linux/arch/sh/entry.S
|
||||
*
|
||||
/*
|
||||
* Copyright (C) 1999, 2000, 2002 Niibe Yutaka
|
||||
* Copyright (C) 2003 Paul Mundt
|
||||
* Copyright (C) 2003 - 2008 Paul Mundt
|
||||
*
|
||||
* This file is subject to the terms and conditions of the GNU General Public
|
||||
* License. See the file "COPYING" in the main directory of this archive
|
||||
|
@ -282,7 +279,9 @@ debug_trap:
|
|||
mov.l 1f, r8
|
||||
add r0, r8
|
||||
mov.l @r8, r8
|
||||
jmp @r8
|
||||
jsr @r8
|
||||
nop
|
||||
bra __restore_all
|
||||
nop
|
||||
|
||||
.align 2
|
||||
|
|
Загрузка…
Ссылка в новой задаче