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 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 ta 0x3 ! ST_FLUSH_WINDOWS 13 mov %sp,%o0 14 retl 15 nop 16 17 .globl _GC_clear_stack_inner 18_GC_clear_stack_inner: 19 mov %sp,%o2 ! Save sp 20 add %sp,-8,%o3 ! p = sp-8 21 clr %g1 ! [g0,g1] = 0 22 add %o1,-0x60,%sp ! Move sp out of the way, 23 ! so that traps still work. 24 ! Includes some extra words 25 ! so we can be sloppy below. 26loop: 27 std %g0,[%o3] ! *(long long *)p = 0 28 cmp %o3,%o1 29 bgu loop ! if (p > limit) goto loop 30 add %o3,-8,%o3 ! p -= 8 (delay slot) 31 retl 32 mov %o2,%sp ! Restore sp., delay slot 33 34 35 36 37 38 39