diff options
author | dfr <dfr@FreeBSD.org> | 2001-02-02 10:20:30 +0000 |
---|---|---|
committer | dfr <dfr@FreeBSD.org> | 2001-02-02 10:20:30 +0000 |
commit | fed402db9f07a884ada2c96768923fe70d39bbed (patch) | |
tree | 77f6b5f287ff0410f9b468d6e3fe32d52ff96564 | |
parent | 4ae46f175424455223efc4900a37984cb683378d (diff) | |
download | FreeBSD-src-fed402db9f07a884ada2c96768923fe70d39bbed.zip FreeBSD-src-fed402db9f07a884ada2c96768923fe70d39bbed.tar.gz |
* 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.
-rw-r--r-- | sys/alpha/include/frame.h | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/sys/alpha/include/frame.h b/sys/alpha/include/frame.h index 6d8cceb..7b25696 100644 --- a/sys/alpha/include/frame.h +++ b/sys/alpha/include/frame.h @@ -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) |