Changeset 14555


Ignore:
Timestamp:
Jan 5, 2011, 10:44:00 AM (14 years ago)
Author:
Gary Byers
Message:

Try to introduce the concept of "backend-subprims-bias", where
a backend's subprims may need to live at a non-canonical address.
Try to do this in a way that minimizes bootstrapping problems,
by overloading the (mostly unused) BACKEND-LOWMEM-BIAS field
in the BACKEND structure.

Location:
trunk/source/compiler
Files:
3 edited

Legend:

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

    r14402 r14555  
    5353    (let* ((info (find x arm::*arm-subprims* :test #'string-equal :key #'ccl::subprimitive-info-name)))
    5454      (when info
    55         (ccl::subprimitive-info-offset info)))))
     55        (+ (ccl::backend-subprims-bias ccl::*target-backend*)
     56           (ccl::subprimitive-info-offset info))))))
    5657
    5758(defun arm-subprimitive-name (addr)
    58   (let* ((info (find addr arm::*arm-subprims* :key #'ccl::subprimitive-info-offset)))
     59  (let* ((info (find (- addr (ccl::backend-subprims-bias ccl::*target-backend*)) arm::*arm-subprims* :key #'ccl::subprimitive-info-offset)))
    5960    (when info
    6061      (string (ccl::subprimitive-info-name info)))))
  • trunk/source/compiler/backend.lisp

    r14507 r14555  
    6565  ;; difference between canonical static address for arch and this
    6666  ;; target's. Usually 0.
    67   (lowmem-bias 0))
     67  ;; Can be a cons of (static-area-bias . subprims-bias)
     68  (%lowmem-bias 0))
     69
     70(defun backend-lowmem-bias (backend)
     71  (let* ((b (backend-%lowmem-bias backend)))
     72    (if (atom b) b (car b))))
     73
     74(defun backend-subprims-bias (backend)
     75  (let* ((b (backend-%lowmem-bias backend)))
     76    (if (atom b) b (cdr b))))
    6877
    6978(defmethod print-object ((b backend) s)
  • trunk/source/compiler/subprims.lisp

    r14258 r14555  
    4747  ;; against symbols in the arch package.
    4848  (declare (optimize (speed 3) (safety 0)))
    49   (+ (backend-lowmem-bias backend)
     49  (+ (backend-subprims-bias backend)
    5050     (%subprim-name->offset name  (arch::target-subprims-table
    5151                                   (backend-target-arch backend)))))
Note: See TracChangeset for help on using the changeset viewer.