[BACK]Return to alpha_mach_dep.s CVS log [TXT][DIR] Up to [local] / OpenXM_contrib / gc

Annotation of OpenXM_contrib/gc/alpha_mach_dep.s, Revision 1.1

1.1     ! maekawa     1:  # $Id: alpha_mach_dep.s,v 1.2 1993/01/18 22:54:51 dosser Exp $
        !             2:
        !             3: # define call_push(x)                                                  \
        !             4:        lda   $16, 0(x);        /* copy x to first argument register */ \
        !             5:        jsr   $26, GC_push_one; /* call GC_push_one, ret addr in $26 */ \
        !             6:        ldgp  $gp, 0($26)       /* restore $gp register from $ra */
        !             7:
        !             8:         .text
        !             9:         .align  4
        !            10:         .globl  GC_push_regs
        !            11:         .ent    GC_push_regs 2
        !            12: GC_push_regs:
        !            13:        ldgp    $gp, 0($27)             # set gp from the procedure value reg
        !            14:        lda     $sp, -32($sp)           # make stack frame
        !            15:        stq     $26, 8($sp)             # save return address
        !            16:         .mask   0x04000000, -8
        !            17:         .frame  $sp, 16, $26, 0
        !            18:
        !            19:  #      call_push($0)    # expression eval and int func result
        !            20:
        !            21:  #      call_push($1)    # temp regs - not preserved cross calls
        !            22:  #      call_push($2)
        !            23:  #      call_push($3)
        !            24:  #      call_push($4)
        !            25:  #      call_push($5)
        !            26:  #      call_push($6)
        !            27:  #      call_push($7)
        !            28:  #      call_push($8)
        !            29:
        !            30:         call_push($9)    # Saved regs
        !            31:         call_push($10)
        !            32:         call_push($11)
        !            33:         call_push($12)
        !            34:         call_push($13)
        !            35:         call_push($14)
        !            36:
        !            37:         call_push($15)   # frame ptr or saved reg
        !            38:
        !            39:  #      call_push($16)   # argument regs - not preserved cross calls
        !            40:  #      call_push($17)
        !            41:  #      call_push($18)
        !            42:  #      call_push($19)
        !            43:  #      call_push($20)
        !            44:  #      call_push($21)
        !            45:
        !            46:  #      call_push($22)   # temp regs - not preserved cross calls
        !            47:  #      call_push($23)
        !            48:  #      call_push($24)
        !            49:  #      call_push($25)
        !            50:
        !            51:  #      call_push($26)   # return address - expression eval
        !            52:  #      call_push($27)   # procedure value or temporary reg
        !            53:  #      call_push($28)   # assembler temp - not presrved
        !            54:         call_push($29)   # Global Pointer
        !            55:  #      call_push($30)   # Stack Pointer
        !            56:
        !            57:        ldq     $26, 8($sp)             # restore return address
        !            58:        lda     $sp, 32($sp)            # pop stack frame
        !            59:        ret     $31, ($26), 1           # return ($31 == hardwired zero)
        !            60:        .end    GC_push_regs

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>