[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

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>