Changeset 4814


Ignore:
Timestamp:
Jun 25, 2006, 7:32:38 PM (18 years ago)
Author:
Gary Byers
Message:

FreeBSD x8664 backend; change initialiation of x8664 foreign-type stuff.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ccl/compiler/X86/X8664/x8664-backend.lisp

    r4596 r4814  
    182182                  :little-endian-target
    183183                  :64-bit-target)
    184                 :target-fasl-pathname (make-pathname :type "d64fsl")
     184                :target-fasl-pathname (make-pathname :type "dx64fsl")
    185185                :target-platform (logior platform-cpu-x86
    186186                                         platform-os-darwin
     
    195195                ))
    196196
     197#+freebsdx86-target
     198(defvar *freebsdx8664-backend*
     199  (make-backend :lookup-opcode 'lookup-x86-opcode
     200                :lookup-macro #'false
     201                :lap-opcodes x86::*x8664-opcode-templates*
     202                :define-vinsn 'define-x86-vinsn
     203                :p2-dispatch *x862-specials*
     204                :p2-vinsn-templates *x8664-vinsn-templates*
     205                :p2-template-hash-name '*x8664-vinsn-templates*
     206                :p2-compile 'x862-compile
     207                :target-specific-features
     208                '(:x8664 :x86-target :freebsd-target :freebsdx86-target :x8664-target
     209                  :little-endian-target
     210                  :64-bit-target)
     211                :target-fasl-pathname (make-pathname :type "fx64fsl")
     212                :target-platform (logior platform-cpu-x86
     213                                         platform-os-freebsd
     214                                         platform-word-size-64)
     215                :target-os :freebsdx86
     216                :name :freebsdx8664
     217                :target-arch-name :x8664
     218                :target-foreign-type-data nil
     219                :target-arch x8664::*x8664-target-arch*
     220                :define-callback 'define-x8664-callback
     221                :defcallback-body 'defcallback-body-x8664
     222                ))
     223
    197224#+(or linuxx86-target (not x86-target))
    198225(pushnew *linuxx8664-backend* *known-x8664-backends* :key #'backend-name)
     
    201228#+darwinx86-target
    202229(pushnew *darwinx8664-backend* *known-x8664-backends* :key #'backend-name)
     230
     231#+freebsdx86-target
     232(pushnew *freebsdx8664-backend* *known-x8664-backends* :key #'backend-name)
    203233
    204234(defvar *x8664-backend* (car *known-x8664-backends*))
     
    219249(setq *host-backend* *x8664-backend* *target-backend* *x8664-backend*)
    220250
     251(defun setup-x8664-ftd (backend)
     252  (or (backend-target-foreign-type-data backend)
     253      (let* ((name (backend-name backend))
     254             (ftd
     255              (case name
     256                (:linuxx8664
     257                 (make-ftd :interface-db-directory "ccl:x86-headers64;"
     258                          :interface-package-name "X86-LINUX64"
     259                          :attributes '(:bits-per-word  64
     260                                        :struct-by-value t)))
     261                (:darwinx8664
     262                  (make-ftd :interface-db-directory "ccl:darwin-x86-headers64;"
     263                          :interface-package-name "X86-DARWIN64"
     264                          :attributes '(:bits-per-word  64
     265                                        :signed-char t
     266                                        :struct-by-value t
     267                                        :prepend-underscore t)))
     268                 (:freebsdx8664
     269                  (make-ftd :interface-db-directory "ccl:freebsd-headers64;"
     270                            :interface-package-name "X86-FREEBSD64"
     271                            :attributes '(:bits-per-word  64
     272                                          :struct-by-value t))))))
     273        (install-standard-foreign-types ftd)
     274    (use-interface-dir :libc ftd)
     275    (setf (backend-target-foreign-type-data backend) ftd))))
     276
    221277#-x8664-target
    222 (unless (backend-target-foreign-type-data *x8664-backend*)
    223   (let* ((ftd (make-ftd
    224                :interface-db-directory
    225                #+darwinx86-target "ccl:darwin-x86-headers64;"
    226                #+(or linuxx86-target (not x86-target)) "ccl:x86-headers64;"
    227                :interface-package-name
    228                #+darwinx86-target "X86-DARWIN64"
    229                #+(or linuxx86-target (not x86-target)) "X86-LINUX64"
    230                :attributes
    231                #+darwinx86-target
    232                '(:signed-char t
    233                  :struct-by-value t
    234                  :prepend-underscores t
    235                  :bits-per-word  64)
    236                #+(or linuxx86-target (not x86-target))
    237                '(:bits-per-word  64
    238                  :struct-by-value t))))
    239     (install-standard-foreign-types ftd)
    240     (use-interface-dir :libc ftd)
    241     (setf (backend-target-foreign-type-data *x8664-backend*) ftd)))
     278(setup-x8664-ftd *x8664-backend*)
    242279
    243280(pushnew *x8664-backend* *known-backends* :key #'backend-name)
Note: See TracChangeset for help on using the changeset viewer.