2d72cbec41
. add cpufeature detection of both . use it for both ipc and kernelcall traps, using a register for call number . SYSENTER/SYSCALL does not save any context, therefore userland has to save it . to accomodate multiple kernel entry/exit types, the entry type is recorded in the process struct. hitherto all types were interrupt (soft int, exception, hard int); now SYSENTER/SYSCALL is new, with the difference that context is not fully restored from proc struct when running the process again. this can't be done as some information is missing. . complication: cases in which the kernel has to fully change process context (i.e. sigreturn). in that case the exit type is changed from SYSENTER/SYSEXIT to soft-int (i.e. iret) and context is fully restored from the proc struct. this does mean the PC and SP must change, as the sysenter/sysexit userland code will otherwise try to restore its own context. this is true in the sigreturn case. . override all usage by setting libc_ipc=1 |
||
---|---|---|
.. | ||
do_abort.c | ||
do_clear.c | ||
do_copy.c | ||
do_cprofile.c | ||
do_devio.c | ||
do_endksig.c | ||
do_exec.c | ||
do_exit.c | ||
do_fork.c | ||
do_getinfo.c | ||
do_getksig.c | ||
do_irqctl.c | ||
do_kill.c | ||
do_mcontext.c | ||
do_memset.c | ||
do_privctl.c | ||
do_profbuf.c | ||
do_runctl.c | ||
do_safecopy.c | ||
do_safemap.c | ||
do_schedctl.c | ||
do_schedule.c | ||
do_setalarm.c | ||
do_setgrant.c | ||
do_sigreturn.c | ||
do_sigsend.c | ||
do_sprofile.c | ||
do_statectl.c | ||
do_stime.c | ||
do_sysctl.c | ||
do_times.c | ||
do_trace.c | ||
do_umap.c | ||
do_umap_remote.c | ||
do_update.c | ||
do_vdevio.c | ||
do_vmctl.c | ||
do_vtimer.c | ||
do_vumap.c | ||
Makefile.inc |