1
0
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:
Roland McGrath
1995-08-17 22:55:22 +00:00
parent 191abc516c
commit 3fe9de0da5
6 changed files with 119 additions and 37 deletions

View File

@@ -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)
{