switch sh port's __unmapself to generic version when running on sh2/nommu
authorRich Felker <dalias@aerifal.cx>
Tue, 16 Jun 2015 14:55:06 +0000 (14:55 +0000)
committerRich Felker <dalias@aerifal.cx>
Tue, 16 Jun 2015 14:55:06 +0000 (14:55 +0000)
commit3366a99b17847b58f2d8cc52cbb5d65deb824f8a
tree67a75d809c6fb732da4bc1efb8ffd26bcc109620
parentf9d84554bae0fa17c9a1d724549c4408022228a5
switch sh port's __unmapself to generic version when running on sh2/nommu

due to the way the interrupt and syscall trap mechanism works,
userspace on sh2 must never set the stack pointer to an invalid value.
thus, the approach used on most archs, where __unmapself executes with
no stack for the interval between SYS_munmap and SYS_exit, is not
viable on sh2.

in order not to pessimize sh3/sh4, the sh asm version of __unmapself
is not removed. instead it's renamed and redirected through code that
calls either the generic (safe) __unmapself or the sh3/sh4 asm,
depending on compile-time and run-time conditions.
arch/sh/src/__unmapself.c [new file with mode: 0644]
src/thread/sh/__unmapself.s