Commit Graph

85 Commits

Author SHA1 Message Date
Roland McGrath
edae2ab8af Use `long int' for sigcode values.
Use _hurdsig_catch_fault.
Pass address of __sigreturn in $27, SCP value in $25.
In trampoline code, use those regs.
1994-12-12 06:43:12 +00:00
Roland McGrath
94cd6ef1f8 Use asms instead of global register vars to restore FP regs.
Fix typo in REI invocation.
1994-12-12 06:41:03 +00:00
Roland McGrath
25e6db514e Use `long int' for sigcode values. 1994-12-10 04:41:06 +00:00
Roland McGrath
157aaa4ee6 Remove ".set noreorder" et al; GCC already emits them. 1994-12-09 03:42:31 +00:00
Roland McGrath
89347dc3e9 Remove unused variable. 1994-12-08 19:43:43 +00:00
Roland McGrath
ccd1325bd5 Use ENV[0].__jmpbuf[0]. 1994-12-05 17:57:43 +00:00
Roland McGrath
69edd206e9 Use ENV[0].__jmpbuf. 1994-12-05 17:55:41 +00:00
Roland McGrath
5c87d70ba0 Set up frame for `rei' to restore on user stack, aligned to an 8-word
boundary and with a PS value that restores user's stack alignment.
1994-12-03 14:00:08 +00:00
Roland McGrath
39edbfd9c8 (sigcontext
): Fixed typo.
1994-12-03 13:57:03 +00:00
Roland McGrath
239291e1db (struct sigcontext): Use __sigset_t' instead of sigset_t' for `sc_mask'. 1994-11-22 22:29:25 +00:00
Roland McGrath
cef89fdba9 Initial revision 1994-11-15 10:39:12 +00:00
Roland McGrath
8e576015fb entered into RCS 1994-11-15 06:48:25 +00:00
Roland McGrath
7d99e5148d entered into RCS 1994-11-10 09:58:40 +00:00
Roland McGrath
18b0df639c Formerly ./mach/hurd/alpha/trampoline.c.~2~ 1994-11-10 09:29:41 +00:00
Roland McGrath
1db9e43738 Initial revision 1994-11-09 12:23:25 +00:00
Roland McGrath
eacddc0a20 entered into RCS 1994-11-08 23:34:47 +00:00
Roland McGrath
72dd53ade3 Initial revision 1994-11-08 23:32:22 +00:00
Roland McGrath
7704bac4de Restore FPU state. Code from kkojima. 1994-09-03 02:31:57 +00:00
Roland McGrath
92ae11d456 (__sigreturn): Arg is not const.
After restoring SCP->sc_mask, check for pending signals (newly unblocked);
if any, set SS->context to SCP, clear SS->intr_port, and send sig_post
to the signal thread to deliver the pending signals.
Don't write $1 value into the user stack.  Instead, write it into the word
just past SCP->sc_pc; then point $1 at SCP->sc_pc and use `op_sigreturn'
pseudo-instruction to restore the PC and $1 from that.
1994-08-22 09:06:46 +00:00
Roland McGrath
62833ce689 Include "thread_state.h" instead of <mach/thread_status.h>.
(struct mach_msg_trap_args): New type.
(trampoline): Function removed.
(_hurd_setup_sighandler): Take struct hurd_sigstate * arg instead of FLAGS
and SIGALTSTACK args; take new flag arg RPC_WAIT; use struct
machine_thread_all_state * for STATE arg.
New declared labels `trampoline', `rpc_wait_trampoline' mark asm code at
end of function (after return).
Add another struct sigcontext * to STACKFRAME after the first one, for the
arg to __sigreturn.
If SS->context is set, fill registers in SCP from that instead of STATE,
and reset SS->INTR_PORT from it.
If RPC_WAIT is set, set up to use rpc_wait_trampoline and frob args to
mach_msg_trap syscall in progress so that it will retry the receive
operation (but not resend!).
{rpc_wait_trampoline, trampoline}: New trampoline code.
(_hurd_rcv_interrupted_p): New function.
1994-08-22 05:02:49 +00:00
Roland McGrath
cd582f3e94 (sc_mips_thread_state, sc_mips_exc_state, sc_mips_float_state): New macros,
marking members that correspond to thread_state.h structs.
1994-08-16 05:58:17 +00:00
Roland McGrath
2a1ec466ab (struct sigcontext): Renamed member sc_err' to sc_error'. 1994-08-11 00:26:03 +00:00
Roland McGrath
b87619900a (_hurd_exception2signal): Take new arg `int *error'; set it. 1994-08-08 22:54:44 +00:00
Roland McGrath
bd2a5f499d (struct sigcontext): Added member `sc_err'. 1994-08-08 07:58:38 +00:00
Roland McGrath
d85eb528c4 Rearranged structure so machine-dependent portion is laid out like `struct
mips_thread_state; struct mips_exc_state; struct mips_float_state;'.
1994-08-03 16:32:47 +00:00
Roland McGrath
b8f04323dc Compare *reply_port to MACH_PORT_NULL, not implicit zero.
(restore_gpr): Use N-1 as subscript into sc_gpr (sc_gpr[0] => $1).
Before general regs, restore from sc_mdlo and sc_mdhi.
Don't treat sp, fp specially; use restore_gpr for them too.
For final return, store user $1 value beyond top of user stack ahead of
time; Then use $1 to hold the user PC, and restore it from the stack in the
delay slot.
1994-08-03 06:45:59 +00:00
Roland McGrath
8d2f85c668 (_hurd_setup_sighandler): Copy TS to SCP all at once. 1994-08-03 01:38:43 +00:00
Roland McGrath
b6cc520764 (struct sigcontext): sc_gpr has 31 elts; sc_gpr, sc_pc, sc_mdlo, sc_mdhi
are arranged in that order to mimic struct mips_thread_state.
1994-08-03 01:36:31 +00:00
Roland McGrath
c1eb1d76e2 (_hurd_setup_sighandler): Save mdlo and mdhi. 1994-08-02 00:15:34 +00:00
Roland McGrath
e0ec2e47de (struct sigcontext): Add members sc_mdlo, sc_mdhi. 1994-08-02 00:12:17 +00:00
Roland McGrath
6adee8d53b Rename variable AT (which is the register's name) to SCPREG.
Fix some SCP references in register loads to use SCPREG instead.
Load SCPREG->sc_pc into $24 and jump to it, restoring $at in the delay slot.
This still leaves $24 clobbered.
1994-07-29 16:39:58 +00:00
Roland McGrath
3844669a62 Use `unsigned int' consistently for port names. 1994-07-29 15:53:52 +00:00
Roland McGrath
840c5e79e3 Don't set up args on the stack; pass them in registers. 1994-07-29 15:46:10 +00:00
Roland McGrath
76657427f5 entered into RCS 1994-07-09 07:24:37 +00:00
Roland McGrath
c4a19f6a24 Initial revision 1994-07-09 07:12:44 +00:00