Annotation of 3BSD/cmd/lisp/reset.s, revision 1.1.1.1

1.1       root        1: # C library -- reset, setexit
                      2: 
                      3: #      reset(x)
                      4: # will generate a "return" from
                      5: # the last call to
                      6: #      setexit()
                      7: # by restoring r6 - r12, ap, fp
                      8: # and doing a return.
                      9: # The returned value is x; on the original
                     10: # call the returned value is 0.
                     11: #
                     12: # useful for going back to the main loop
                     13: # after a horrible error in a lowlevel
                     14: # routine.
                     15: 
                     16: .globl _setexit
                     17: .globl _getexit
                     18: .globl _reset
                     19: .globl _resexit
                     20: .globl _setsav
                     21: .globl _svkludg
                     22: 
                     23: _setexit:
                     24:        .word   0x0000
                     25:        movab   _setsav,r0
                     26:        movq    r6,(r0)+
                     27:        movq    r8,(r0)+
                     28:        movq    r10,(r0)+
                     29:        movq    8(fp),(r0)+             # ap, fp
                     30:        movab   4(ap),(r0)+             # sp
                     31:        movl    16(fp),(r0)             # pc
                     32:        clrl    r0
                     33:        ret
                     34: 
                     35: _reset:
                     36:        .word   0x0000
                     37:        movl    4(ap),r0        # returned value
                     38:        movab   _setsav,r1
                     39:        movq    (r1)+,r6
                     40:        movq    (r1)+,r8
                     41:        movq    (r1)+,r10
                     42:        movq    (r1)+,r12
                     43:        movl    (r1)+,sp
                     44:        jmp     *(r1)
                     45: 
                     46: _resexit:
                     47:        .word   0x0000
                     48:        movc3   $40,*4(ap),_setsav
                     49:        ret
                     50: _svkludg:
                     51:        movl    (sp)+,out
                     52:        movq    r0,myregs
                     53:        movq    r2,myregs+8
                     54:        movq    r4,myregs+16
                     55:        subl2   $40,sp
                     56:        movc3   $40,_setsav,(sp)
                     57:        movq    myregs,r0
                     58:        movq    myregs+8,r2
                     59:        movq    myregs+16,r4
                     60:        jmp     *out
                     61: 
                     62: _getexit:
                     63:        .word   0x0000
                     64:        movc3   $40,_setsav,*4(ap)
                     65:        ret
                     66: 
                     67: 
                     68:        .data
                     69: _setsav:.space 10*4
                     70: out:   .space  4
                     71: myregs:        .space  6*4
                     72: 

unix.superglobalmegacorp.com

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