on uba reset remap already allocated pages
[unix-history] / usr / src / sys / vax / stand / boot.c
index 26af1cf..a287bf1 100644 (file)
@@ -1,14 +1,12 @@
-/*     boot.c  4.5     81/11/12        */
+/*     boot.c  4.7     82/03/07        */
 
 #include "../h/param.h"
 
 #include "../h/param.h"
-#include "../h/ino.h"
 #include "../h/inode.h"
 #include "../h/inode.h"
-#include "../h/filsys.h"
-#include "../h/dir.h"
+#include "../h/fs.h"
 #include "../h/vm.h"
 #include <a.out.h>
 #include "saio.h"
 #include "../h/vm.h"
 #include <a.out.h>
 #include "saio.h"
-#include <sys/reboot.h>
+#include "../h/reboot.h"
 
 /*
  * Boot program... arguments passed in r10 and r11 determine
 
 /*
  * Boot program... arguments passed in r10 and r11 determine
@@ -28,6 +26,7 @@ char  devname[][2] = {
        0,0,            /* 7 = mt */
        0,0,            /* 8 = tu */
        'r','a',        /* 9 = ra */
        0,0,            /* 7 = mt */
        0,0,            /* 8 = tu */
        'r','a',        /* 9 = ra */
+       'u', 't',       /* 10 = ut */
 };
 
 char line[100] = "xx(0,0)vmunix";
 };
 
 char line[100] = "xx(0,0)vmunix";
@@ -78,14 +77,19 @@ copyunix(howto, io)
        char *addr;
 
        i = read(io, (char *)&x, sizeof x);
        char *addr;
 
        i = read(io, (char *)&x, sizeof x);
-       if (i != sizeof x || x.a_magic != 0410)
+       if (i != sizeof x ||
+           (x.a_magic != 0407 && x.a_magic != 0413 && x.a_magic != 0410))
                _stop("Bad format\n");
        printf("%d", x.a_text);
                _stop("Bad format\n");
        printf("%d", x.a_text);
+       if ((x.a_magic == 0413 || x.a_magic == 0410) &&
+           lseek(io, 0x400, 0) == -1)
+               goto shread;
        if (read(io, (char *)0, x.a_text) != x.a_text)
                goto shread;
        addr = (char *)x.a_text;
        if (read(io, (char *)0, x.a_text) != x.a_text)
                goto shread;
        addr = (char *)x.a_text;
-       while ((int)addr & CLOFSET)
-               *addr++ = 0;
+       if (x.a_magic == 0413 || x.a_magic == 0410)
+               while ((int)addr & CLOFSET)
+                       *addr++ = 0;
        printf("+%d", x.a_data);
        if (read(io, addr, x.a_data) != x.a_data)
                goto shread;
        printf("+%d", x.a_data);
        if (read(io, addr, x.a_data) != x.a_data)
                goto shread;