mirror of
https://sourceware.org/git/glibc.git
synced 2026-01-06 11:51:29 +03:00
Thu Aug 17 16:18:38 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
* hurd/intr-msg.c: Use INTR_MSG_TRAP macro from machine-dependent "intr-msg.h" for special syscall code, instead of i386-specific asm. * hurd/hurdsig.c: Use INTR_MSG_BACK_OUT macro from machine-dependent "intr-msg.h" before mutating thread state to skip RPC. * sysdeps/mach/hurd/i386/trampoline.c: If PC is inside _hurd_intr_rpc_mach_msg special syscall code, use real SP saved in %ecx. * Makeconfig (link-libc): New variable; use shared library if available. (+link): Use it. * sysdeps/mach/hurd/fork.c (_hurd_fork_locks): Variable removed. Instead, declare with `symbol_set_declare'. (fork): Use symbol_set_* macros for _hurd_fork_locks. Use SS->thread instead of __mach_thread_self (). Suspend all other threads during task_create and port copying.
This commit is contained in:
@@ -21,6 +21,9 @@ Cambridge, MA 02139, USA. */
|
||||
#include <mach/mig_errors.h>
|
||||
#include <hurd/signal.h>
|
||||
|
||||
#include "intr-msg.h"
|
||||
|
||||
|
||||
error_t
|
||||
_hurd_intr_rpc_mach_msg (mach_msg_header_t *msg,
|
||||
mach_msg_option_t option,
|
||||
@@ -56,17 +59,8 @@ _hurd_intr_rpc_mach_msg (mach_msg_header_t *msg,
|
||||
ss->cancel = 0;
|
||||
}
|
||||
else
|
||||
/* err = intr_msg_trap (msg, option, send_size,
|
||||
rcv_size, rcv_name, timeout, notify);
|
||||
*/
|
||||
asm (".globl _hurd_intr_rpc_msg_do_trap\n"
|
||||
".globl _hurd_intr_rpc_msg_in_trap\n"
|
||||
" movl %%esp, %%ecx\n"
|
||||
" leal %1, %%esp\n"
|
||||
" movl $-25, %%eax\n"
|
||||
"_hurd_intr_rpc_msg_do_trap: lcall $7, $0 # status in %0\n"
|
||||
"_hurd_intr_rpc_msg_in_trap: movl %%ecx, %%esp"
|
||||
: "=a" (err) : "m" ((&msg)[-1]) : "%ecx");
|
||||
err = INTR_MSG_TRAP (msg, option, send_size,
|
||||
rcv_size, rcv_name, timeout, notify);
|
||||
|
||||
switch (err)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user