Changeset 14938


Ignore:
Timestamp:
Aug 13, 2011, 11:55:24 PM (13 years ago)
Author:
Gary Byers
Message:

PUSH-FPRS, POP-FPRS: save/restore non-volatile FPRs (as doubles)
on/from sp.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/compiler/ARM/arm-lapmacros.lisp

    r14909 r14938  
    377377       `((movt ,reg (:$ ,high)))))))
    378378
     379(defarmlapmacro push-fprs (n)
     380  "Save N fprs starting at d8 on the control stack.
     381   (This actually loads a vector header into d7 and
     382   stores n+1 FPRs, starting at d7.  Clobbers imm0 and
     383   imm1."
     384  `(progn
     385    (movw imm0 (:$ (logior (ash (1+ ,n) arm::num-subtag-bits)
     386                            arm::subtag-double-float-vector)))
     387    (mov imm1 (:$ 0))
     388    (fmdrr d7 imm0 imm1)
     389    (fstmdbd d7 (:! sp) ,(1+ n))))
     390
     391(defarmlapmacro pop-fprs (n)
     392  "Restore N fprs starting at d8 from the top of the control
     393   stack.  (This actually restores N+1 fprs starting at d7;
     394   on exit, d7 will contain the vector header that had been
     395   on top of the stack.)"
     396  `(fldmiad d7 (:! sp) ,(1+ n)))
    379397
    380398
Note: See TracChangeset for help on using the changeset viewer.