setjmp.S raw

   1  	.global ___setjmp
   2  	.hidden ___setjmp
   3  	.global __setjmp
   4  	.global _setjmp
   5  	.global setjmp
   6  	.type   __setjmp,@function
   7  	.type   _setjmp,@function
   8  	.type   setjmp,@function
   9  ___setjmp:
  10  __setjmp:
  11  _setjmp:
  12  setjmp:
  13  	/* 0) store IP int 0, then into the jmpbuf pointed to by r3 (first arg) */
  14  	mflr 0
  15  	stw 0, 0(3)
  16  	/* 1) store reg1 (SP) */
  17  	stw 1, 4(3)
  18  	/* 2) store cr */
  19  	mfcr 0
  20  	stw 0, 8(3)
  21  	/* 3) store r14-31 */
  22  	stw 14, 12(3)
  23  	stw 15, 16(3)
  24  	stw 16, 20(3)
  25  	stw 17, 24(3)
  26  	stw 18, 28(3)
  27  	stw 19, 32(3)
  28  	stw 20, 36(3)
  29  	stw 21, 40(3)
  30  	stw 22, 44(3)
  31  	stw 23, 48(3)
  32  	stw 24, 52(3)
  33  	stw 25, 56(3)
  34  	stw 26, 60(3)
  35  	stw 27, 64(3)
  36  	stw 28, 68(3)
  37  	stw 29, 72(3)
  38  	stw 30, 76(3)
  39  	stw 31, 80(3)
  40  #if defined(_SOFT_FLOAT) || defined(__NO_FPRS__)
  41  	mflr 0
  42  	bl 1f
  43  	.hidden __hwcap
  44  	.long __hwcap-.
  45  1:	mflr 4
  46  	lwz 5, 0(4)
  47  	lwzx 4, 4, 5
  48  	andis. 4, 4, 0x80
  49  	beq 1f
  50  	.long 0x11c35b21 /* evstdd 14,88(3) */
  51  	.long 0x11e36321 /* ... */
  52  	.long 0x12036b21
  53  	.long 0x12237321
  54  	.long 0x12437b21
  55  	.long 0x12638321
  56  	.long 0x12838b21
  57  	.long 0x12a39321
  58  	.long 0x12c39b21
  59  	.long 0x12e3a321
  60  	.long 0x1303ab21
  61  	.long 0x1323b321
  62  	.long 0x1343bb21
  63  	.long 0x1363c321
  64  	.long 0x1383cb21
  65  	.long 0x13a3d321
  66  	.long 0x13c3db21
  67  	.long 0x13e3e321 /* evstdd 31,224(3) */
  68  	.long 0x11a3eb21 /* evstdd 13,232(3) */
  69  1:	mtlr 0
  70  #else
  71  	stfd 14,88(3)
  72  	stfd 15,96(3)
  73  	stfd 16,104(3)
  74  	stfd 17,112(3)
  75  	stfd 18,120(3)
  76  	stfd 19,128(3)
  77  	stfd 20,136(3)
  78  	stfd 21,144(3)
  79  	stfd 22,152(3)
  80  	stfd 23,160(3)
  81  	stfd 24,168(3)
  82  	stfd 25,176(3)
  83  	stfd 26,184(3)
  84  	stfd 27,192(3)
  85  	stfd 28,200(3)
  86  	stfd 29,208(3)
  87  	stfd 30,216(3)
  88  	stfd 31,224(3)
  89  #endif
  90  	/* 4) set return value to 0 */
  91  	li 3, 0
  92  	/* 5) return */
  93  	blr
  94