Changeset 14103 for branches


Ignore:
Timestamp:
Aug 1, 2010, 3:54:44 PM (9 years ago)
Author:
gb
Message:

Don't use "ba" pseudo-instruction.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/arm/level-1/arm-callback-support.lisp

    r13922 r14103  
    1919(defun make-callback-trampoline (index &optional info)
    2020  (declare (ignore info))
    21   (let* ((p (%allocate-callback-pointer 12)))
     21  (let* ((p (%allocate-callback-pointer 16)))
    2222    (macrolet ((arm-lap-word (instruction-form)
    2323                 (uvref (uvref (compile nil `(lambda (&lap 0) (arm-lap-function () ((?? 0)) ,instruction-form))) 1) 0)))
    2424      (setf (%get-unsigned-long p 0)
    25             (dpb (ldb (byte 8 0) index)
    26                  (byte 8 0)
    27                  (arm-lap-word (mov r12 (:$ 0))))
     25            (arm-lap-word (mov r12 (:$ #.(subprim-name->offset '.SPeabi-callback))))
    2826            (%get-unsigned-long p 4)
    29             (dpb (ldb (byte 8 8) index)
    30                  (byte 8 0)
    31                  (arm-lap-word (orr r12 r12 (:$ #xff00))))
     27            (arm-lap-word (push1 r12 sp))
    3228            (%get-unsigned-long p 8)
    33             (arm-lap-word (ba .SPeabi-callback)))
     29            (dpb (ldb (byte 12 0) index)
     30                 (byte 12 0)
     31                 (dpb (ldb (byte 4 12) index)
     32                      (byte 4 16)
     33                      (arm-lap-word (movw r12 (:$ 0)))))
     34
     35            (%get-unsigned-long p 12)
     36            (arm-lap-word (pop1 pc sp)))
    3437      (ff-call (%kernel-import #.arm::kernel-import-makedataexecutable)
    3538               :address p
    36                :unsigned-fullword 12
     39               :unsigned-fullword 16
    3740               :void)
    3841      p)))
Note: See TracChangeset for help on using the changeset viewer.