setjmp.S raw

   1  .syntax unified
   2  .global __setjmp
   3  .global _setjmp
   4  .global setjmp
   5  .type __setjmp,%function
   6  .type _setjmp,%function
   7  .type setjmp,%function
   8  __setjmp:
   9  _setjmp:
  10  setjmp:
  11  	mov ip,r0
  12  	stmia ip!,{v1,v2,v3,v4,v5,v6,sl,fp}
  13  	mov r2,sp
  14  	stmia ip!,{r2,lr}
  15  	mov r0,#0
  16  
  17  	adr r1,1f
  18  	ldr r2,1f
  19  	ldr r1,[r1,r2]
  20  
  21  #if __ARM_ARCH < 8
  22  	tst r1,#0x260
  23  	beq 3f
  24  	// HWCAP_ARM_FPA
  25  	tst r1,#0x20
  26  	beq 2f
  27  	stc p2, cr4, [ip], #48
  28  #endif
  29  2:	tst r1,#0x40
  30  	beq 2f
  31  	.fpu vfp
  32  	vstmia ip!, {d8-d15}
  33  	.fpu softvfp
  34  	.eabi_attribute 10, 0
  35  	.eabi_attribute 27, 0
  36  #if __ARM_ARCH < 8
  37  	// HWCAP_ARM_IWMMXT
  38  2:	tst r1,#0x200
  39  	beq 3f
  40  	stcl p1, cr10, [ip], #8
  41  	stcl p1, cr11, [ip], #8
  42  	stcl p1, cr12, [ip], #8
  43  	stcl p1, cr13, [ip], #8
  44  	stcl p1, cr14, [ip], #8
  45  	stcl p1, cr15, [ip], #8
  46  #endif
  47  2:
  48  3:	bx lr
  49  
  50  .hidden __hwcap
  51  .align 2
  52  1:	.word __hwcap-1b
  53