Ignore:
Timestamp:
Jul 27, 2012, 4:43:55 AM (8 years ago)
Author:
gb
Message:

armcl. armcl.image: new binaries
compiler/ARM/arm-arch.lisp: add tcr.architecture-version. Bump fasl version,

image version.

compiler/ARM/arm-asm.lisp: don't define ARMv7-specific instructions.
compiler/ARM/arm-lap.lisp: new :opcode directive, assembles arbitrary word

in code section.

compiler/ARM/arm-lapmacros.lisp: don't use v7-specific instructions. Define

clrex, dmb as macros which test architecture version at runtime. Remove
some unused things.

compiler/ARM/arm-vinsns.lisp: don't use v7-specific instructions. Remove

some more unused things.

compiler/ARM/arm2.lisp: Remove still more unused things.
level-0/ARM/arm-bignum.lisp: don't use v7-specific instructions.
level-0/l0-cfm-support.lisp: hack to try to avoid treating dynamic linker

as a shared library on Linux. (Different dynamic linkers are used for
softfp/hard float on ARM; we don't a saved image to try to re-open the
wrong one.

level-1/arm-callback-support.lisp: don't use movw instruction in callback

trampolines.

lisp-kernel/arm-asmutils.s: don't use v7-specific instructions (unless we're

sure that we're on v7 or later.)

lisp-kernel/arm-constants.h: tcr.architecture_version. Bump image version.

Define ARM CPU architecture constants.

lisp-kernel/arm-constants.s: tcr.architecture_version.
lisp-kernel/arm-macros.s: define _clrex and _dmb macros which test

tcr.arm_architecture_version at runtime.

lisp-kernel/arm-spentry.s: use _clrex macro. In _SPcheck_fpu_exception,

look for offending instuction 4 bytes further before lr (change in
subprim call mechanism.)

lisp-kernel/linuxarm/Makefile: compile/assemble for ARMv6.
lisp-kernel/lisp_globals.s: don't need to define NUM_LISP_GLOBALS anymore.
lisp-kernel/pmcl-kernel.c: check_arm_cpu() accepts ARMv6 or later.
lisp-kernel/thread-manager.c: when creating a TCR on ARM, set

tcr.architecture_version to fixnum representation of architecture - 7 (so
ARMv6 is -1, ARMv7 is 0, etc.)

File:
1 edited

Legend:

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

    r15093 r15425  
    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 12 0) index)
    26                  (byte 12 0)
    27                  (dpb (ldb (byte 4 12) index)
    28                       (byte 4 16)
    29                       (arm-lap-word (movw r12 (:$ ??)))))
     25            (dpb (ldb (byte 8 0) index)
     26                 (byte 8 0)
     27                 (arm-lap-word (mov r12 (:$ ??))))
    3028            (%get-unsigned-long p 4)
     29            (dpb (ldb (byte 8 8) index)
     30                 (byte 8 0)
     31                 (dpb 12 (byte 4 8)
     32                      (arm-lap-word (orr r12 r12  (:$ ??)))))
     33            (%get-unsigned-long p 8)
    3134            (arm-lap-word (ldr pc (:@ pc (:$ -4))))
    32             (%get-unsigned-long p 8)
     35            (%get-unsigned-long p 12)
    3336            (%lookup-subprim-address #.(subprim-name->offset '.SPeabi-callback)))
    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.