Annotation of researchv10no/sys/ml/bootcomet.s, revision 1.1.1.1

1.1       root        1: #
                      2: # primitives to stop the machine
                      3: # with and without rebooting
                      4: # comet (750) version
                      5: #
                      6: 
                      7: #
                      8: # death stops the machine cold, without rebooting
                      9: # we're not allowed to halt because it's hard to guarantee
                     10: # that we'll really halt, and not reboot or restart
                     11: #
                     12: 
                     13:        .globl  _death
                     14: _death:        .word   0x0
                     15:        mtpr    $HIGH,$IPL
                     16:        pushab  deathmsg
                     17:        calls   $1,_printf
                     18: dl:    brb     dl
                     19: 
                     20: deathmsg:
                     21:        .asciz  "death\n\n"
                     22: 
                     23: #
                     24: # reboot restarts the machine, if possible
                     25: # we ask for an auto-restart
                     26: # which will take a crash dump and then boot
                     27: # registers saved here because comet may spoil them otherwise
                     28: #
                     29: 
                     30:        .globl  _reboot
                     31: _reboot: .word 0x0
                     32:        clrl    r0
                     33: rb0:   aobleq  $1000000,r0,rb0 # about 1 sec delay, to let disk finish
                     34:        mtpr    $HIGH,$IPL      # from here on, no interruptions!
                     35:        movl    sp,rebsp        # save current stack
                     36:        moval   rebsp,sp        # get ptr to register save place
                     37:        pushr   $0x3fff         # save the registers there
                     38:        movl    rebsp,sp        # and get the real stack back
                     39:        mfpr    $PCBB,rebpcb
                     40:        jbr     doadump
                     41: 
                     42:        .data
                     43:        .globl  rebregs
                     44:        .globl  rebsp
                     45:        .globl  rebpcb
                     46: rebregs:
                     47:        .space  14*4            # place to store registers from crash
                     48: rebsp: .space  4
                     49: rebpcb:        .space  4               # place for pcbb at crash
                     50: 
                     51:        .text
                     52: 
                     53: #
                     54: # place to call on auto-restart,
                     55: # from the restart parameter block
                     56: #
                     57: 
                     58:        .globl  restart
                     59:        .align  2
                     60: restart:
                     61:        bbss    $0,_rpb+12,0f           # console should do this, but doesn't
                     62: 0:
                     63: #      cmpl    $PFMAGIC,pfmagic        # power fail?
                     64: #      bneq    doadump         # no
                     65: #       clrl   _rpb+12         # yes: flag further restarts ok
                     66: #       jmp    Xpowrec         # and do power recovery
                     67: 
                     68: #
                     69: # not a power fail
                     70: # take a crash dump and reboot
                     71: # registers have already been saved (above)
                     72: #
                     73: # crash dump routine is called as
                     74: #      dump(dev, low, size)
                     75: #
                     76: 
                     77:        .globl  doadump
                     78: doadump:
                     79:        mtpr    $HIGH,$IPL      # no interrupts
                     80:        mtpr    $0,$MAPEN       # turn off memory management
                     81:        movab   dumpstack,sp    # set up a clean stack
                     82:        pushab  dumping
                     83:        calls   $1,_printf
                     84: #      pushl   _dumpsize
                     85: #      pushl   _dumplow
                     86: #      pushl   _dumpdev
                     87: #      calls   $3,*_dumprout
                     88:        clrl    r5              # boot flags; magic: r5 undisturbed in setboot
                     89:        calls   $0,_setboot
                     90:        halt
                     91: 
                     92: dumping: .asciz        "dumping core\n"
                     93: 
                     94:        .data
                     95:        .align  2
                     96:        .globl  dumpstack
                     97:        .space  58*4                    # separate stack for dumps
                     98: dumpstack: 
                     99:        .space  4

unix.superglobalmegacorp.com

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