Ignore:
Timestamp:
Jul 27, 2012, 4:43:55 AM (7 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/lisp-kernel/arm-asmutils.s

    r15229 r15425  
    3838        __(svc #0)
    3939        __endif   
    40         __(isb sy)             
    4140        __(bx lr)
    4241
     
    7170/* Atomically store new value (r2) in *r0, if old value == expected (r1). */
    7271/* Return actual old value. */
    73 
     72        .globl C(arm_architecture_version)
    7473_exportfn(C(store_conditional))
    75740:      __(ldrex r3,[r0])
     
    8079        __(bne 0b)
    8180        __(b 2f)
    82 1:      __(clrex)
     811:      __(adr ip,3f)
     82        __(ldr ip,[ip])
     83        __(ldr ip,[ip])
     84        __(cmp ip,#7)
     85        __(blt 2f)
     86        .long 0xf57ff01f
    83872:      __(mov r0,r3)
    84         __(bx lr)               
     88        __(bx lr)   
     893:      .long C(arm_architecture_version)                     
    8590_endfn
    8691
Note: See TracChangeset for help on using the changeset viewer.