[BACK]Return to sparc_mach_dep.S CVS log [TXT][DIR] Up to [local] / OpenXM_contrib2 / asir2000 / gc

Annotation of OpenXM_contrib2/asir2000/gc/sparc_mach_dep.S, Revision 1.1

1.1     ! noro        1: !      SPARCompiler 3.0 and later apparently no longer handles
        !             2: !      asm outside functions.  So we need a separate .s file
        !             3: !      This is only set up for SunOS 5, not SunOS 4.
        !             4: !      Assumes this is called before the stack contents are
        !             5: !      examined.
        !             6:
        !             7:        .seg    "text"
        !             8:        .globl  GC_save_regs_in_stack
        !             9:        .globl  GC_push_regs
        !            10: GC_save_regs_in_stack:
        !            11: GC_push_regs:
        !            12: #if defined(__arch64__) || defined(__sparcv9)
        !            13:        save    %sp,-128,%sp
        !            14:        flushw
        !            15:        ret
        !            16:          restore %sp,2047+128,%o0
        !            17: #else /* 32 bit SPARC */
        !            18:        ta      0x3   ! ST_FLUSH_WINDOWS
        !            19:        mov     %sp,%o0
        !            20:        retl
        !            21:        nop
        !            22: #endif /* 32 bit SPARC */
        !            23: .GC_save_regs_in_stack_end:
        !            24:        .size GC_save_regs_in_stack,.GC_save_regs_in_stack_end-GC_save_regs_in_stack
        !            25:
        !            26:
        !            27:        .globl  GC_clear_stack_inner
        !            28: GC_clear_stack_inner:
        !            29: #if defined(__arch64__) || defined(__sparcv9)
        !            30:        mov %sp,%o2             ! Save sp
        !            31:        add %sp,2047-8,%o3      ! p = sp+bias-8
        !            32:        add %o1,-2047-192,%sp   ! Move sp out of the way,
        !            33:                                ! so that traps still work.
        !            34:                                ! Includes some extra words
        !            35:                                ! so we can be sloppy below.
        !            36: loop:
        !            37:        stx %g0,[%o3]           ! *(long *)p = 0
        !            38:        cmp %o3,%o1
        !            39:        bgu,pt %xcc, loop       ! if (p > limit) goto loop
        !            40:           add %o3,-8,%o3       ! p -= 8 (delay slot)
        !            41:        retl
        !            42:          mov %o2,%sp           ! Restore sp., delay slot
        !            43: #else  /* 32 bit SPARC */
        !            44:        mov     %sp,%o2         ! Save sp
        !            45:        add     %sp,-8,%o3      ! p = sp-8
        !            46:        clr     %g1             ! [g0,g1] = 0
        !            47:        add     %o1,-0x60,%sp   ! Move sp out of the way,
        !            48:                                ! so that traps still work.
        !            49:                                ! Includes some extra words
        !            50:                                ! so we can be sloppy below.
        !            51: loop:
        !            52:        std     %g0,[%o3]       ! *(long long *)p = 0
        !            53:        cmp     %o3,%o1
        !            54:        bgu     loop            ! if (p > limit) goto loop
        !            55:          add   %o3,-8,%o3      ! p -= 8 (delay slot)
        !            56:        retl
        !            57:          mov   %o2,%sp         ! Restore sp., delay slot
        !            58: #endif  /* 32 bit SPARC */
        !            59: .GC_clear_stack_inner_end:
        !            60:        .size GC_clear_stack_inner,.GC_clear_stack_inner_end-GC_clear_stack_inner
        !            61:
        !            62:
        !            63:
        !            64:
        !            65:
        !            66:
        !            67:

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