1: /*
   2:  *	SCCS id	@(#)rlboot.s	2.0 (2.11BSD)	4/13/91
   3:  */
   4: #include "localopts.h"
   5: 
   6: /  The boot options and device are placed in the last SZFLAGS bytes
   7: /  at the end of core for the bootstrap.
   8: ENDCORE=        160000          / end of core, mem. management off
   9: SZFLAGS=        6               / size of boot flags
  10: BOOTOPTS=       2               / location of options, bytes below ENDCORE
  11: BOOTDEV=        4               / boot unit
  12: CHECKWORD=      6
  13: 
  14: .globl  _doboot, hardboot, _bootcsr
  15: .text
  16: _doboot:
  17:         mov     4(sp),r4        / boot options
  18:         mov     2(sp),r3        / boot device
  19: 
  20: #ifndef KERN_NONSEP
  21: /  If running separate I/D, need to turn off memory management.
  22: /  Call the routine unmap in low text, after setting up a jump
  23: /  in low data where the PC will be pointing.
  24: .globl  unmap
  25:         mov     $137,*$unmap+2          / jmp *$hardboot
  26:         mov     $hardboot,*$unmap+4
  27:         jmp     unmap
  28:         / "return" from unmap will be to hardboot in data
  29: .data
  30: #else
  31: /  Reset to turn off memory management
  32:         reset
  33: #endif
  34: 
  35: /  On power fail, hardboot is the entry point (map is already off)
  36: /  and the args are in r4 (RB_POWRFAIL), r3 (rootdev)
  37: 
  38: hardboot:
  39:         mov     r4, ENDCORE-BOOTOPTS
  40:         ash     $-3,r3          / shift out the partition number
  41:         bic     $!7,r3          / save only the drive number
  42:         mov     r3, ENDCORE-BOOTDEV
  43:         com     r4              / if CHECKWORD == ~bootopts, flags are believed
  44:         mov     r4, ENDCORE-CHECKWORD
  45: 1:
  46:         reset
  47: 
  48: /  The remainder of the code is dependent on the boot device.
  49: /  If you have a bootstrap ROM, just jump to the correct entry.
  50: /  Otherwise, use a BOOT opcode, if available;
  51: /  if necessary, read in block 0 to location 0 "by hand".
  52: 
  53: /  Bootstrap for rl01/02 drive - salkind@nyu
  54: 
  55: WC      = -256.
  56: READ    = 6\<1
  57: SEEK    = 3\<1
  58: RDHDR   = 4\<1
  59: 
  60: rlcs    = 0
  61: rlba    = 2
  62: rlda    = 4
  63: rlmp    = 6
  64: 
  65:         mov     _bootcsr,r1
  66:         mov     ENDCORE-BOOTDEV,r2
  67:         bis     $RDHDR,r2
  68:         mov     r2,rlcs(r1)     /find out where we are (cyl)
  69: 1:
  70:         tstb    rlcs(r1)
  71:         bpl     1b
  72:         mov     rlmp(r1),r0
  73:         bic     $!77600,r0
  74:         bis     $1,r0
  75:         mov     r0,rlda(r1)
  76:         mov     ENDCORE-BOOTDEV,r2
  77:         bis     $SEEK,r2
  78:         mov     r2,rlcs(r1)     / move it
  79: 1:
  80:         tstb    rlcs(r1)
  81:         bpl     1b
  82: /
  83:         add     $rlmp,r1
  84:         mov     $WC,(r1)        /wc into rlmp
  85:         clr     -(r1)           /da into rlda
  86:         clr     -(r1)           /ba
  87:         mov     ENDCORE-BOOTDEV,r2
  88:         bis     $READ,r2
  89:         mov     r2,-(r0)        /cmd into rlcs
  90: 1:
  91:         tstb    rlcs(r1)
  92:         bpl     1b
  93: /
  94:         mov     ENDCORE-BOOTDEV,r0
  95:         clr     pc              / and away we go

Defined functions

BOOTDEV defined in line 11; used 5 times
BOOTOPTS defined in line 10; used 1 times
  • in line 39
CHECKWORD defined in line 12; used 1 times
  • in line 44
ENDCORE defined in line 8; used 7 times
SZFLAGS defined in line 9; never used
_doboot declared in line 14; defined in line 16; used 1 times
  • in line 14

Defined variables

RDHDR defined in line 58; used 1 times
  • in line 67
READ defined in line 56; used 1 times
  • in line 88
SEEK defined in line 57; used 1 times
  • in line 77
WC defined in line 55; used 1 times
  • in line 84
hardboot declared in line 14; defined in line 38; used 2 times
rlba defined in line 61; never used
rlcs defined in line 60; used 5 times
rlda defined in line 62; used 1 times
  • in line 75
rlmp defined in line 63; used 2 times
Last modified: 1991-04-20
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 672
Valid CSS Valid XHTML 1.0 Strict