• Greg Ungerer's avatar
    m68knommu: fix user a5 register being overwritten · 0b980271
    Greg Ungerer authored
    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: default avatarGreg Ungerer <gerg@linux-m68k.org>
    0b980271
Name
Last commit
Last update
..
68000 Loading commit data...
amiga Loading commit data...
apollo Loading commit data...
atari Loading commit data...
bvme6000 Loading commit data...
coldfire Loading commit data...
configs Loading commit data...
emu Loading commit data...
fpsp040 Loading commit data...
hp300 Loading commit data...
ifpsp060 Loading commit data...
include Loading commit data...
kernel Loading commit data...
lib Loading commit data...
mac Loading commit data...
math-emu Loading commit data...
mm Loading commit data...
mvme147 Loading commit data...
mvme16x Loading commit data...
q40 Loading commit data...
sun3 Loading commit data...
sun3x Loading commit data...
tools/amiga Loading commit data...
Kconfig Loading commit data...
Kconfig.bus Loading commit data...
Kconfig.cpu Loading commit data...
Kconfig.debug Loading commit data...
Kconfig.devices Loading commit data...
Kconfig.machine Loading commit data...
Makefile Loading commit data...
install.sh Loading commit data...