Changeset 10645


Ignore:
Timestamp:
Sep 8, 2008, 6:51:31 AM (11 years ago)
Author:
gb
Message:

Define win64 backend.

File:
1 edited

Legend:

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

    r10520 r10645  
    148148                ))
    149149
     150#+win64-target
     151(defvar *win64-backend*
     152  (make-backend :lookup-opcode 'lookup-x86-opcode
     153                :lookup-macro #'false
     154                :lap-opcodes x86::*x86-opcode-templates*
     155                :define-vinsn 'define-x86-vinsn
     156                :p2-dispatch *x862-specials*
     157                :p2-vinsn-templates *x8664-vinsn-templates*
     158                :p2-template-hash-name '*x8664-vinsn-templates*
     159                :p2-compile 'x862-compile
     160                :target-specific-features
     161                '(:x8664 :x86-target :win64-target :windows-target :x8664-target
     162                  :winx64-target                 
     163                  :little-endian-target
     164                  :64-bit-target)
     165                :target-fasl-pathname (make-pathname :type "wx64fsl")
     166                :target-platform (logior platform-cpu-x86
     167                                         platform-os-windows
     168                                         platform-word-size-64)
     169                :target-os :win64
     170                :name :win64
     171                :target-arch-name :x8664
     172                :target-foreign-type-data nil
     173                :target-arch x8664::*x8664-target-arch*
     174                :platform-syscall-mask (logior platform-os-windows platform-cpu-x86 platform-word-size-64)
     175                :lisp-context-register x8664::r11
     176                ))
     177
    150178#+(or linuxx86-target (not x86-target))
    151179(pushnew *linuxx8664-backend* *known-x8664-backends* :key #'backend-name)
     
    160188#+solarisx86-target
    161189(pushnew *solarisx8664-backend* *known-x8664-backends* :key #'backend-name)
     190
     191#+win64-target
     192(pushnew *win64-backend* *known-x8664-backends* :key #'backend-name)
    162193
    163194(defvar *x8664-backend* (car *known-x8664-backends*))
     
    252283                           (intern "GENERATE-CALLBACK-BINDINGS" "X86-SOLARIS64")
    253284                           :callback-return-value-function
    254                            (intern "GENERATE-CALLBACK-RETURN-VALUE" "X86-SOLARIS64"))))))
     285                           (intern "GENERATE-CALLBACK-RETURN-VALUE" "X86-SOLARIS64")))
     286                (:win64
     287                 (make-ftd :interface-db-directory
     288                           (if (eq backend *host-backend*)
     289                             "ccl:win64-headers;"
     290                             "ccl:cross-win64-headers;")
     291                           :interface-package-name "WIN64"
     292                           :attributes '(:bits-per-word  64
     293                                         :struct-by-value t
     294                                         :bits-per-long 32)
     295                           :ff-call-expand-function
     296                           (intern "EXPAND-FF-CALL" "WIN64")
     297                           :ff-call-struct-return-by-implicit-arg-function
     298                           (intern "RECORD-TYPE-RETURNS-STRUCTURE-AS-FIRST-ARG"
     299                                   "WIN64")
     300                           :callback-bindings-function
     301                           (intern "GENERATE-CALLBACK-BINDINGS" "WIN64")
     302                           :callback-return-value-function
     303                           (intern "GENERATE-CALLBACK-RETURN-VALUE" "WIN64"))))))
    255304        (install-standard-foreign-types ftd)
    256305        (use-interface-dir :libc ftd)
Note: See TracChangeset for help on using the changeset viewer.