Commit Graph

18 Commits

Author SHA1 Message Date
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