* Move exception_return to exception.s which is a more logical home for it.

* Optimise the return path for syscalls so that they only restore a minimal
  set of registers instead of performing a full exception_return.

A new flag in the trapframe indicates that the frame only holds partial
state. When it is necessary to perform a full state restore (e.g. after an
execve or signal), the flag is cleared to force a full restore.
This commit is contained in:
Doug Rabson 2001-02-02 10:20:30 +00:00
parent 6548daa8aa
commit 294156a7ff
1 changed files with 6 additions and 8 deletions

View File

@ -74,18 +74,16 @@
#define FRAME_T12 24
#define FRAME_AT 25
#define FRAME_SP 26
#define FRAME_FLAGS 27
#define FRAME_FLAGS_SYSCALL 1 /* partial frame for syscalls */
/* The following are set only when a signal is to be delivered to a process. */
#define FRAME_TRAPARG_A0 27
#define FRAME_TRAPARG_A1 28
#define FRAME_TRAPARG_A2 29
/* this is a flag area to see whether we need to restore all registers */
#define FRAME_FLAGS 30
#define FRAME_TRAPARG_A0 28
#define FRAME_TRAPARG_A1 29
#define FRAME_TRAPARG_A2 30
#define FRAME_SW_SIZE (FRAME_FLAGS + 1)
#define FRAME_SW_SIZE (FRAME_TRAPARG_A2 + 1)
#define FRAME_HW_OFFSET FRAME_SW_SIZE
#define FRAME_FLAGS_SYSCALL 0x1
#define FRAME_PS (FRAME_HW_OFFSET + ALPHA_HWFRAME_PS)
#define FRAME_PC (FRAME_HW_OFFSET + ALPHA_HWFRAME_PC)
#define FRAME_GP (FRAME_HW_OFFSET + ALPHA_HWFRAME_GP)