summaryrefslogtreecommitdiffstats
path: root/sys/alpha/include
diff options
context:
space:
mode:
authordfr <dfr@FreeBSD.org>2001-02-02 10:20:30 +0000
committerdfr <dfr@FreeBSD.org>2001-02-02 10:20:30 +0000
commitfed402db9f07a884ada2c96768923fe70d39bbed (patch)
tree77f6b5f287ff0410f9b468d6e3fe32d52ff96564 /sys/alpha/include
parent4ae46f175424455223efc4900a37984cb683378d (diff)
downloadFreeBSD-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.
Diffstat (limited to 'sys/alpha/include')
-rw-r--r--sys/alpha/include/frame.h14
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)
OpenPOWER on IntegriCloud