Thread View: comp.bugs.2bsd
1 messages
1 total messages
Started by Steven M. Schultz
Fri, 04 Aug 1989 21:55
saving more state on network crash
Author: Steven M. Schultz
Date: Fri, 04 Aug 1989 21:55
Date: Fri, 04 Aug 1989 21:55
82 lines
2749 bytes
2749 bytes
Subject: saving more state on network crash
Index: sys/pdp/mch_dump.s 2.10BSD
Description:
When a network crash occurs several key pieces of information
(such as memory management registers) are not saved.
Repeat-By:
You really don't want to, but if you must, then find a way
to force the network to crash. A good way is to (w/o installing
a previous fix) do a "shutdown()" on a file descriptor that
is not open.
Fix:
Apply these patches to /sys/pdp/mch_dump.s and /sys/pdp/trap.c
*** mch_dump.s.old Mon Aug 10 21:48:26 1987
--- mch_dump.s Tue Aug 1 21:09:25 1989
***************
*** 28,33 ****
--- 28,73 ----
mov KDSA5,(r0)+
rts pc
+ #ifdef UCB_NET
+
+ SPACE(GLOBAL, suprsav, 32)
+
+ /*
+ * Save ALL registers, KDSA[5,6], SDSA[5,6], SSR3. Expressly for
+ * network crashes where the state at the time of initial trap is
+ * desired rather than after thrashing about on the way to a 'panic'.
+ * Also, this is extensible so that as much volatile information as
+ * required may be saved. Currently 14 of the 16 words allocated are used.
+ * Multiple entries into this routine should be blocked by making the
+ * call to this routine conditional on 'netoff' being set and
+ * setting 'netoff' on the first call. Must be at splhigh upon entry.
+ */
+
+ ENTRY(savestate)
+ mov r0,suprsav
+ mov $suprsav+2,r0
+ mov r1,(r0)+
+ mov r2,(r0)+
+ mov r3,(r0)+
+ mov r4,(r0)+
+ mov r5,(r0)+
+ mov sp,(r0)+
+ mov PS,-(sp)
+ mov $010340,PS /previous super, spl7
+ mfpd sp /fetch supervisor stack pointer
+ mov (sp)+,(r0)+
+ mov $030340,PS /previous user, spl7
+ mfpd sp /fetch user stack pointer
+ mov (sp)+,(r0)+
+ mov (sp)+,PS
+ mov KDSA5,(r0)+
+ mov KDSA6,(r0)+
+ mov SDSA5,(r0)+
+ mov SDSA6,(r0)+
+ mov SSR3,(r0)+
+ rts pc
+ #endif
+
#include "ht.h"
#include "tm.h"
#include "ts.h"
*** trap.c.old Tue Jul 5 14:24:11 1988
--- trap.c Tue Aug 1 20:41:41 1989
***************
*** 282,287 ****
--- 282,291 ----
case T_ZEROTRAP+SUPV:
case T_RANDOMTRAP+SUPV:
i = splhigh();
+ if (!netoff) {
+ netoff = 1;
+ savestate();
+ }
printf("Unexpected net code trap (%o)\n", dev-SUPV);
printf("ka6 = %o\n", *ka6);
printf("aps = %o\n", &ps);
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads