diff options
Diffstat (limited to 'board/qemu/m68k-mcf5208/patches/linux/m68knommu-fix-signal.patch')
| -rw-r--r-- | board/qemu/m68k-mcf5208/patches/linux/m68knommu-fix-signal.patch | 45 |
1 files changed, 0 insertions, 45 deletions
diff --git a/board/qemu/m68k-mcf5208/patches/linux/m68knommu-fix-signal.patch b/board/qemu/m68k-mcf5208/patches/linux/m68knommu-fix-signal.patch deleted file mode 100644 index b56994b239..0000000000 --- a/board/qemu/m68k-mcf5208/patches/linux/m68knommu-fix-signal.patch +++ /dev/null @@ -1,45 +0,0 @@ -m68knommu: fix user a5 register being overwritten - -On no-MMU systems the application a5 register can be overwitten with the -address of the process data segment when processing application signals. -For flat format applications compiled with full absolute relocation this -effectively corrupts the a5 register on signal processing - and this very -quickly leads to process crash and often takes out the whole system with -a panic as well. - -This has no effect on flat format applications compiled with the more -common PIC methods (such as -msep-data). These format applications reserve -a5 for the pointer to the data segment anyway - so it doesn't change it. - -A long time ago the a5 register was used in the code packed into the user -stack to enable signal return processing. And so it had to be restored on -end of signal cleanup processing back to the original a5 user value. This -was historically done by saving away a5 in the sigcontext structure. At -some point (a long time back it seems) the a5 restore process was changed -and it was hard coded to put the user data segment address directly into a5. -Which is ok for the common PIC compiled application case, but breaks the -full relocation application code. - -We no longer use this type of signal handling mechanism and so we don't -need to do anything special to save and restore a5 at all now. So remove the -code that hard codes a5 to the address of the user data segment. - -Signed-off-by: Greg Ungerer <gerg@linux-m68k.org> ---- - arch/m68k/kernel/signal.c | 1 - - 1 file changed, 1 deletion(-) - -diff --git a/arch/m68k/kernel/signal.c b/arch/m68k/kernel/signal.c -index 2dcee3a..9202f82 100644 ---- a/arch/m68k/kernel/signal.c -+++ b/arch/m68k/kernel/signal.c -@@ -213,7 +213,6 @@ static inline int frame_extra_sizes(int f) - - static inline void adjustformat(struct pt_regs *regs) - { -- ((struct switch_stack *)regs - 1)->a5 = current->mm->start_data; - /* - * set format byte to make stack appear modulo 4, which it will - * be when doing the rte --- -1.9.1 |

