Fix register conflicts and avoid deprecated instructions in ARM EABI setjmp/longjmp.
authorAndrew Stubbs <ams@codesourcery.com>
Thu, 22 Oct 2009 19:35:53 +0000 (19:35 +0000)
committerJoseph Myers <joseph@codesourcery.com>
Thu, 22 Oct 2009 19:35:53 +0000 (19:35 +0000)
commitfbc4c20a80a81ef6bc624a219ef5f2c746efe563
tree08cb072b8909f30f47f087030108a86a465e732a
parentb5c2620bee9fb698c642fa609ee03d6a87ac1552
Fix register conflicts and avoid deprecated instructions in ARM EABI setjmp/longjmp.

* setjmp and longjmp were using the obsolete fstmiax and fldmiax
  instructions.

* Because of a confusion with two different sets of names for the same
  registers (r0...r3 and a1...a4), if VFP was present then the
  subsequent check for iWMMXt support would use a register that had
  been clobbered by saving/restoring the VFP registers.  (The bit
  being checked was clobbered by a reserved bit of FPSCR that it
  always 0 on present hardware, and no present hardware has both VFP
  and iWMMXt, so this did not cause visible problems.)

2009-10-22  Andrew Stubbs  <ams@codesourcery.com>
            Julian Brown  <julian@codesourcery.com>

* sysdeps/arm/eabi/setjmp.S (__sigsetjmp): Replace deprecated
instruction fstmiax with vstmia.
Correct register conflict and comment.
* sysdeps/arm/eabi/__longjmp.S (__longjmp): Use vldmia not fldmiax.
Don't clobber r1/a2 register before testing IWMMXT hwcap.
ChangeLog.arm
sysdeps/arm/eabi/__longjmp.S
sysdeps/arm/eabi/setjmp.S