Annotation of 43BSDReno/sys/mdec/raboot.c, revision 1.1.1.1

1.1       root        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.c       7.2 (Berkeley) 8/28/86" */
                      8: #include <sys/disklabel.h>
                      9: 
                     10:        .set    MAJOR,9                 /* major("/dev/ra0a") */
                     11: 
                     12: /*
                     13:  * 1st level boot program: loads next 7.5Kbytes from
                     14:  * boot sector of file system and sets it up to run.
                     15:  * Except for MAJOR definition above, should work
                     16:  * with any disk using 750 boot rom.
                     17:  */
                     18:        .set    RELOC,0x50000
                     19:        .set    BOOTLAST,15             /* last boot sector */
                     20:        .set    RABPSECT,512            /* bytes per sector */
                     21: 
                     22: init:
                     23:        .word   0                       /* entry mask for dec monitor */
                     24:        nop;nop;nop;nop;nop;nop;nop;nop /* some no-ops for 750 boot to skip */
                     25:        nop;nop;
                     26: start:
                     27:        movl    $MAJOR,r10              /* major("/dev/xx0a") */
                     28:        extzv   $18,$1,r1,r4            /* get UBA number from R1 */
                     29:        xorb2   $0x01,r4                /* complement bit */
                     30:        insv    r4,$24,$8,r10           /* set UBA number */
                     31:        insv    r3,$16,$8,r10           /* drive number */
                     32:        extzv   $12,$4,r5,r4            /* get partition from r5 */
                     33:        bicw2   $0xf000,r5              /* remove from r5 */
                     34:        insv    r4,$8,$8,r10            /* set partition */
                     35:        movl    r5,r11                  /* boot flags */
                     36:        movl    r1,r9                   /* UNIBUS I/O page address */
                     37:        movl    r2,r8                   /* boot device CSR */
                     38:        movl    r3,r7                   /* unit number */
                     39:        brw     start0
                     40: 
                     41: /*
                     42:  * Leave space for pack label.
                     43:  */
                     44: pad:
                     45:        .space  LABELOFFSET - (pad - init)
                     46: packlabel:
                     47:        .space  d_end_
                     48: 
                     49: start0:
                     50:        movl    $RELOC,sp
                     51:        moval   init,r4
                     52:        movc3   $end,(r4),(sp)
                     53:        movl    r9,r1                   /* UNIBUS I/O page address */
                     54:        movl    r8,r2                   /* boot device CSR */
                     55:        movl    r7,r3                   /* unit number */
                     56:        jmp     *$RELOC+start2
                     57: /* now running relocated */
                     58: /* bring in the boot program */
                     59: start2:                                        /* running relocated */
                     60:        pushr   $0xffff                 /* BEGIN FIREWALL */
                     61:        movl    $1,r4                   /* first boot sector */
                     62:        clrl    r5                      /* transfer address */
                     63:        clrl    -(sp)                   /* transfer address */
                     64: 1:
                     65:        movl    r4,r8                   /* requested sector # */
                     66:        jsb     (r6)                    /* call ROM-based driver */
                     67:        blbs    r0,2f
                     68:        halt                            /* read error */
                     69: 2:
                     70:        addl2   $RABPSECT,r5            /* bump address */
                     71:        movl    r5,(sp)
                     72:        aobleq  $BOOTLAST,r4,1b
                     73: 
                     74:        .set    PROGSIZE,(BOOTLAST*RABPSECT)
                     75: done:
                     76:        tstl    (sp)+                   /* pop address */
                     77:        popr    $0xffff                 /* END FIREWALL */
                     78:        movl    $PROGSIZE,r4
                     79: clrcor:
                     80:        clrq    (r4)
                     81:        acbl    $RELOC,$8,r4,clrcor
                     82: /* start loaded program */
                     83:        calls   $0,*$0
                     84:        brw     start2
                     85: end:

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.