1: /*
   2:  * Copyright (c) 1980,1986 Regents of the University of California.
   3:  * All rights reserved.  The Berkeley software License Agreement
   4:  * specifies the terms and conditions for redistribution.
   5:  */
   6: 
   7: /* "@(#)raboot.s	7.1 (Berkeley) 6/5/86" */
   8: 
   9:         .set    MAJOR,9                 /* major("/dev/ra0a") */
  10: 
  11: /*
  12:  * 1st level boot program: loads next 7.5Kbytes from
  13:  * boot sector of file system and sets it up to run.
  14:  * Except for MAJOR definition above, should work
  15:  * with any disk using 750 boot rom.
  16:  */
  17:         .set    RELOC,0x50000
  18:         .set    BOOTLAST,15             /* last boot sector */
  19:         .set    RABPSECT,512            /* bytes per sector */
  20: 
  21: init:
  22:         .word   0                       /* entry mask for dec monitor */
  23:         nop;nop;nop;nop;nop;nop;nop;nop /* some no-ops for 750 boot to skip */
  24:         nop;nop;
  25: start:
  26:         movl    $MAJOR,r10              /* major("/dev/xx0a") */
  27:         extzv   $18,$1,r1,r4            /* get UBA number from R1 */
  28:         xorb2   $0x01,r4                /* complement bit */
  29:         insv    r4,$24,$8,r10           /* set UBA number */
  30:         insv    r3,$16,$8,r10           /* drive number */
  31:         extzv   $12,$4,r5,r4            /* get partition from r5 */
  32:         bicw2   $0xf000,r5              /* remove from r5 */
  33:         insv    r4,$8,$8,r10            /* set partition */
  34:         movl    r5,r11                  /* boot flags */
  35:         movl    r1,r9                   /* UNIBUS I/O page address */
  36:         movl    r2,r8                   /* boot device CSR */
  37:         movl    r3,r7                   /* unit number */
  38:         movl    $RELOC,sp
  39:         moval   init,r4
  40:         movc3   $end,(r4),(sp)
  41:         movl    r9,r1                   /* UNIBUS I/O page address */
  42:         movl    r8,r2                   /* boot device CSR */
  43:         movl    r7,r3                   /* unit number */
  44:         jmp     *$RELOC+start2
  45: /* now running relocated */
  46: /* bring in the boot program */
  47: start2:                                 /* running relocated */
  48:         pushr   $0xffff                 /* BEGIN FIREWALL */
  49:         movl    $1,r4                   /* first boot sector */
  50:         clrl    r5                      /* transfer address */
  51:         clrl    -(sp)                   /* transfer address */
  52: 1:
  53:         movl    r4,r8                   /* requested sector # */
  54:         jsb     (r6)                    /* call ROM-based driver */
  55:         blbs    r0,2f
  56:         halt                            /* read error */
  57: 2:
  58:         addl2   $RABPSECT,r5            /* bump address */
  59:         movl    r5,(sp)
  60:         aobleq  $BOOTLAST,r4,1b
  61: 
  62:         .set    PROGSIZE,(BOOTLAST*RABPSECT)
  63: done:
  64:         tstl    (sp)+                   /* pop address */
  65:         popr    $0xffff                 /* END FIREWALL */
  66:         movl    $PROGSIZE,r4
  67: clrcor:
  68:         clrq    (r4)
  69:         acbl    $RELOC,$8,r4,clrcor
  70: /* start loaded program */
  71:         calls   $0,*$0
  72:         brw     start2
  73: end:

Defined functions

clrcor defined in line 67; used 1 times
  • in line 69
done defined in line 63; never used
end defined in line 73; used 1 times
  • in line 40
init defined in line 21; used 1 times
  • in line 39
start defined in line 25; never used
start2 defined in line 47; used 2 times
Last modified: 1986-06-05
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 646
Valid CSS Valid XHTML 1.0 Strict