Changeset 13863


Ignore:
Timestamp:
Jun 20, 2010, 9:43:58 PM (9 years ago)
Author:
gb
Message:

arm-vinsns.lisp: ensure that arg_z is preserved in UNBIND-INTERRUPT-LEVEL-INLINE.
arm2.lisp: In ARM2-INVOKE-FN, we pass the function argument to .SPmvpass in nfn, not temp0.
In ARM2-MAKE-CLOSURE: when stack-consing the closure, push the vector subtype before push the entrypoint.
l1-clos-boot: need more things to be conditionalized for ARM.
l1-dcode.lisp: we get a NO-APPLICABLE-METHOD loading l1-clos.lafsl, so leave a #+arm-target breakpoint there.
albt.c: handle stack_alloc_marker in walk_stack_frames().
arm-constants.h: #define stack_alloc_marker.
arm-spentry.s: in _SPmakestacklist, get vector header's element-count right.

Location:
branches/arm
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • branches/arm/compiler/ARM/arm-vinsns.lisp

    r13858 r13863  
    34273427(define-arm-vinsn unbind-interrupt-level-inline (()
    34283428                                                 ()
    3429                                                  ((tlb :imm)
     3429                                                 ((preserve (:lisp #.arm::arg_z))
     3430                                                  (tlb :imm)
    34303431                                                  (link :imm)
    34313432                                                  (saved-value :imm)
  • branches/arm/compiler/ARM/arm2.lisp

    r13858 r13863  
    23392339        (if (not tail-p)
    23402340          (if (arm2-mvpass-p xfer)
    2341             (let* ((call-reg (if symp ($ arm::fname) ($ arm::temp0))))
     2341            (let* ((call-reg (if symp ($ arm::fname) ($ arm::nfn))))
    23422342              (if label-p
    23432343                (arm2-copy-register seg call-reg ($ arm::fn))
     
    24632463              (! %closure-code% arm::arg_y)
    24642464              (arm2-store-immediate seg (arm2-afunc-lfun-ref afunc) arm::arg_z)
     2465              (arm2-vpush-register-arg seg arm::arg_x)
    24652466              (arm2-vpush-register-arg seg arm::temp0)
    2466               (arm2-vpush-register-arg seg arm::arg_x)
    24672467              (arm2-vpush-register-arg seg arm::arg_y)
    24682468              (arm2-vpush-register-arg seg arm::arg_z)
    2469                                         ; Could be smarter about memory traffic here.
     2469              ;; Could be smarter about memory traffic here.
    24702470              (dolist (v inherited-vars)
    24712471                (arm2-vpush-register-arg seg (var-to-reg v arm::arg_z)))
  • branches/arm/level-1/l1-clos-boot.lisp

    r13858 r13863  
    26232623           'slot-id-value
    26242624           nil                          ;method-function name
    2625            (dpb 1 $lfbits-numreq (ash 1 $lfbits-method-bit)))
     2625           (dpb 1 $lfbits-numreq (ash 1 $lfbits-method-bit))) 
    26262626  #+x86-target
    26272627  (%clone-x86-function
     
    26302630   'slot-id-value
    26312631   nil                          ;method-function name
    2632    (dpb 1 $lfbits-numreq (ash 1 $lfbits-method-bit))))
     2632   (dpb 1 $lfbits-numreq (ash 1 $lfbits-method-bit)))
     2633  #+arm-target
     2634  (gvector :function
     2635           arm::*function-initial-entrypoint*
     2636           (uvref *reader-method-function-proto* 0)
     2637           (ensure-slot-id (%slot-definition-name dslotd))
     2638           'slot-id-value
     2639           nil                          ;method-function name
     2640           (dpb 1 $lfbits-numreq (ash 1 $lfbits-method-bit))))
    26332641
    26342642(defmethod create-writer-method-function ((class slots-class)
     
    26492657     nil
    26502658     (dpb 2 $lfbits-numreq (ash 1 $lfbits-method-bit)))
     2659    #+arm-target
     2660    (gvector :function
     2661             arm::*function-initial-entrypoint*
     2662             (uvref *writer-method-function-proto* 0)
     2663             (ensure-slot-id (%slot-definition-name dslotd))
     2664             'set-slot-id-value
     2665             nil
     2666             (dpb 2 $lfbits-numreq (ash 1 $lfbits-method-bit)))
    26512667  )
    26522668
     
    38683884
    38693885
    3870    
     3886
    38713887
    38723888(defmethod allocate-instance ((class structure-class) &rest initargs)
  • branches/arm/level-1/l1-dcode.lisp

    r13779 r13863  
    751751
    752752(defun %%no-applicable-method (gf args)
     753  #+arm-target (dbg args)
    753754  (if (listp args)
    754755    (apply #'no-applicable-method gf args)
  • branches/arm/lisp-kernel/albt.c

    r13737 r13863  
    206206        elements = (header_element_count(header)+2)&~1;
    207207        next = (lisp_frame *)(current+elements);
     208      } else if (header == stack_alloc_marker) {
     209        next = (lisp_frame *)(current[1]);
    208210      } else {
    209211        fprintf(dbgout, "Bad frame! (0x%x)\n", start);
  • branches/arm/lisp-kernel/arm-constants.h

    r13754 r13863  
    246246} lisp_frame;
    247247
    248 
     248#define stack_alloc_marker SUBTAG(fulltag_imm,1)
    249249#define lisp_frame_marker SUBTAG(fulltag_imm,2)
    250250#define unbound SUBTAG(fulltag_imm, 6)
  • branches/arm/lisp-kernel/arm-spentry.s

    r13858 r13863  
    17091709        __(add imm0,arg_y,arg_y)
    17101710        __(mov imm1,imm0,lsl #num_subtag_bits-fixnumshift)
    1711         __(add imm1,imm1,#4<<num_subtag_bits)
     1711        __(add imm1,imm1,#1<<num_subtag_bits)
    17121712        __(orr imm1,imm1,#subtag_u32_vector)
    17131713        __(add imm0,imm0,#dnode_size)
Note: See TracChangeset for help on using the changeset viewer.