!	SPARCompiler 3.0 and later apparently no longer handles
!	asm outside functions.  So we need a separate .s file
!	This is only set up for SunOS 5, not SunOS 4.
!	Assumes this is called before the stack contents are
!	examined.

	.seg 	"text"
	.globl	GC_save_regs_in_stack
	.globl 	GC_push_regs
GC_save_regs_in_stack:
GC_push_regs:
#if defined(__arch64__) || defined(__sparcv9)
	save	%sp,-128,%sp
	flushw
	ret
	  restore %sp,2047+128,%o0
#else /* 32 bit SPARC */
	ta	0x3   ! ST_FLUSH_WINDOWS
	mov	%sp,%o0
	retl
	nop
#endif /* 32 bit SPARC */
.GC_save_regs_in_stack_end:
	.size GC_save_regs_in_stack,.GC_save_regs_in_stack_end-GC_save_regs_in_stack
	

	.globl	GC_clear_stack_inner
GC_clear_stack_inner:
#if defined(__arch64__) || defined(__sparcv9)
	mov %sp,%o2		! Save sp
	add %sp,2047-8,%o3	! p = sp+bias-8
	add %o1,-2047-192,%sp	! Move sp out of the way,
  				! so that traps still work.
  				! Includes some extra words
  				! so we can be sloppy below.
loop:
	stx %g0,[%o3]		! *(long *)p = 0
	cmp %o3,%o1
	bgu,pt %xcc, loop	! if (p > limit) goto loop
        add %o3,-8,%o3		! p -= 8 (delay slot)
	retl
    	  mov %o2,%sp		! Restore sp., delay slot	
#else  /* 32 bit SPARC */
	mov	%sp,%o2		! Save sp
	add	%sp,-8,%o3	! p = sp-8
	clr	%g1		! [g0,g1] = 0
	add	%o1,-0x60,%sp	! Move sp out of the way,
				! so that traps still work.
				! Includes some extra words
				! so we can be sloppy below.
loop:
	std	%g0,[%o3]	! *(long long *)p = 0
	cmp	%o3,%o1
	bgu	loop		! if (p > limit) goto loop
	  add	%o3,-8,%o3	! p -= 8 (delay slot)
	retl
	  mov	%o2,%sp		! Restore sp., delay slot
#endif  /* 32 bit SPARC */
.GC_clear_stack_inner_end:
      	.size GC_clear_stack_inner,.GC_clear_stack_inner_end-GC_clear_stack_inner

	
		
		
		
		
	
