sparc_netbsd_mach_dep.s raw

   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  #include "machine/asm.h"
   8  
   9  	.seg 	"text"
  10  	.globl	_C_LABEL(GC_save_regs_in_stack)
  11  _C_LABEL(GC_save_regs_in_stack):
  12  	ta	0x3   ! ST_FLUSH_WINDOWS
  13  	mov	%sp,%o0
  14  	retl
  15  	nop
  16  
  17  	.globl	_C_LABEL(GC_clear_stack_inner)
  18  _C_LABEL(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.
  26  loop:
  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