Home | History | Annotate | Line # | Download | only in gen
__setjmp14.S revision 1.2
      1  1.2    he /*	$NetBSD: __setjmp14.S,v 1.2 2009/03/08 18:57:12 he Exp $	*/
      2  1.1  ross 
      3  1.1  ross #include <sys/syscall.h>
      4  1.1  ross 
      5  1.1  ross #include <machine/asm.h>
      6  1.1  ross 
      7  1.1  ross #if defined(LIBC_SCCS)
      8  1.1  ross 	.text
      9  1.2    he 	.asciz "$NetBSD: __setjmp14.S,v 1.2 2009/03/08 18:57:12 he Exp $"
     10  1.1  ross #endif
     11  1.1  ross 
     12  1.1  ross /*
     13  1.1  ross  * C library -- _setjmp, _longjmp
     14  1.1  ross  *
     15  1.1  ross  *	longjmp(a,v)
     16  1.1  ross  * will generate a "return(v?v:1)" from the last call to
     17  1.1  ross  *	setjmp(a)
     18  1.1  ross  * by restoring registers from the stack.
     19  1.1  ross  * The previous signal state is restored.
     20  1.1  ross  */
     21  1.1  ross 
     22  1.1  ross ENTRY(__setjmp14)
     23  1.1  ross 	mr	%r6,%r3
     24  1.1  ross 	li	%r3,1			# SIG_BLOCK
     25  1.1  ross 	li	%r4,0
     26  1.1  ross 	addi	%r5,%r6,100		# &sigmask
     27  1.1  ross 	li	%r0,SYS___sigprocmask14
     28  1.1  ross 	sc				# assume no error	XXX
     29  1.1  ross 	mflr	%r11
     30  1.1  ross 	mfcr	%r12
     31  1.1  ross 	mr	%r10,%r1
     32  1.1  ross 	mr	%r9,%r2
     33  1.2    he 
     34  1.2    he 	std	%r8,8(%r6)		# save r8-r31
     35  1.2    he 	std	%r9,16(%r6)
     36  1.2    he 	std	%r10,24(%r6)
     37  1.2    he 	std	%r11,32(%r6)
     38  1.2    he 	std	%r12,40(%r6)
     39  1.2    he 	std	%r13,48(%r6)
     40  1.2    he 	std	%r14,56(%r6)
     41  1.2    he 	std	%r15,64(%r6)
     42  1.2    he 	std	%r16,72(%r6)
     43  1.2    he 	std	%r17,80(%r6)
     44  1.2    he 	std	%r18,88(%r6)
     45  1.2    he 	std	%r19,96(%r6)
     46  1.2    he 	std	%r20,104(%r6)
     47  1.2    he 	std	%r21,112(%r6)
     48  1.2    he 	std	%r22,120(%r6)
     49  1.2    he 	std	%r23,128(%r6)
     50  1.2    he 	std	%r24,136(%r6)
     51  1.2    he 	std	%r25,144(%r6)
     52  1.2    he 	std	%r26,152(%r6)
     53  1.2    he 	std	%r27,160(%r6)
     54  1.2    he 	std	%r28,168(%r6)
     55  1.2    he 	std	%r29,176(%r6)
     56  1.2    he 	std	%r30,184(%r6)
     57  1.2    he 	std	%r31,192(%r6)
     58  1.2    he 
     59  1.1  ross 	li	%r3,0
     60  1.1  ross 	blr
     61  1.1  ross 
     62  1.1  ross ENTRY(__longjmp14)
     63  1.2    he 	ld	%r8,8(%r6)		# load r8-r31
     64  1.2    he 	ld	%r9,16(%r6)
     65  1.2    he 	ld	%r10,24(%r6)
     66  1.2    he 	ld	%r11,32(%r6)
     67  1.2    he 	ld	%r12,40(%r6)
     68  1.2    he 	ld	%r13,48(%r6)
     69  1.2    he 	ld	%r14,56(%r6)
     70  1.2    he 	ld	%r15,64(%r6)
     71  1.2    he 	ld	%r16,72(%r6)
     72  1.2    he 	ld	%r17,80(%r6)
     73  1.2    he 	ld	%r18,88(%r6)
     74  1.2    he 	ld	%r19,96(%r6)
     75  1.2    he 	ld	%r20,104(%r6)
     76  1.2    he 	ld	%r21,112(%r6)
     77  1.2    he 	ld	%r22,120(%r6)
     78  1.2    he 	ld	%r23,128(%r6)
     79  1.2    he 	ld	%r24,136(%r6)
     80  1.2    he 	ld	%r25,144(%r6)
     81  1.2    he 	ld	%r26,152(%r6)
     82  1.2    he 	ld	%r27,160(%r6)
     83  1.2    he 	ld	%r28,168(%r6)
     84  1.2    he 	ld	%r29,176(%r6)
     85  1.2    he 	ld	%r30,184(%r6)
     86  1.2    he 	ld	%r31,192(%r6)
     87  1.2    he 
     88  1.1  ross 	mr	%r6,%r4
     89  1.1  ross 	mtlr	%r11
     90  1.1  ross 	mtcr	%r12
     91  1.1  ross 	mr	%r2,%r9
     92  1.1  ross 	mr	%r1,%r10
     93  1.1  ross 	addi	%r4,%r3,100		# &sigmask
     94  1.1  ross 	li	%r3,3			# SIG_SETMASK
     95  1.1  ross 	li	%r5,0
     96  1.1  ross 	li	%r0,SYS___sigprocmask14
     97  1.1  ross 	sc				# assume no error	XXX
     98  1.1  ross 	or.	%r3,%r6,%r6
     99  1.1  ross 	bnelr
    100  1.1  ross 	li	%r3,1
    101  1.1  ross 	blr
    102