File:  [DVB] / dietlibc / mips / setjmp.S
Revision 1.5: download - view: text, annotated - select for diffs
Mon Jun 6 11:59:21 2016 UTC (8 years ago) by leitner
Branches: MAIN
CVS tags: HEAD
  mips64 little endian port (Christian Seiler)

.text
.align 2
setjmp:
.global __setjmp
.ent	__setjmp
__setjmp:
	li	$5, 0		/* don't save sigmask */
.end	__setjmp
.global __sigsetjmp
.ent	__sigsetjmp
__sigsetjmp:
#if _MIPS_SIM == _ABI64
	/* where to jump later */
	dla	$25, __sigjmp_save
	/* callee save floating point save registers (double) */
	s.d	$f24, 104($4)	/* fs0 */
	s.d	$f25, 112($4)	/* fs1 */
	s.d	$f26, 120($4)	/* fs2 */
	s.d	$f27, 128($4)	/* fs3 */
	s.d	$f28, 136($4)	/* fs4 */
	s.d	$f29, 144($4)	/* fs5 */
	s.d	$f30, 152($4)	/* fs6 */
	s.d	$f31, 160($4)	/* fs7 */
	/* save coprocessor status register */
	cfc1	 $2, $31
	/* callee save register */
	sd	$gp, 88($4)
	sd	 $2, 96($4)
	sd	$31,  0($4)	/* ra */
	sd	$29,  8($4)	/* sp */
	sd	$16, 16($4)	/* s0 */
	sd	$17, 24($4)	/* s1 */
	sd	$18, 32($4)	/* s2 */
	sd	$19, 40($4)	/* s3 */
	sd	$20, 48($4)	/* s4 */
	sd	$21, 56($4)	/* s5 */
	sd	$22, 64($4)	/* s6 */
	sd	$23, 72($4)	/* s7 */
	sd	$30, 80($4)	/* fp */
#else
	/* where to jump later */
	la	$25, __sigjmp_save
	/* callee save floating point save registers (double) */
	s.d	$f20, 56($4)	/* fs0 */
	s.d	$f22, 64($4)	/* fs1 */
	s.d	$f24, 72($4)	/* fs2 */
	s.d	$f26, 80($4)	/* fs3 */
	s.d	$f28, 88($4)	/* fs4 */
	s.d	$f30, 96($4)	/* fs6 */
	/* save coprocessor status register */
	cfc1	 $2, $31
	/* callee save register */
	sw	$gp, 44($4)
	sw	 $2, 48($4)
	sw	$31,  0($4)	/* ra */
	sw	$29,  4($4)	/* sp */
	sw	$16,  8($4)	/* s0 */
	sw	$17, 12($4)	/* s1 */
	sw	$18, 16($4)	/* s2 */
	sw	$19, 20($4)	/* s3 */
	sw	$20, 24($4)	/* s4 */
	sw	$21, 28($4)	/* s5 */
	sw	$22, 32($4)	/* s6 */
	sw	$23, 36($4)	/* s7 */
	sw	$30, 40($4)	/* fp */
#endif
	j	$25
.end	__sigsetjmp
.weak	setjmp

LinuxTV legacy CVS <linuxtv.org/cvs>