Ignore:
Timestamp:
Mar 3, 2008, 8:02:11 AM (12 years ago)
Author:
gb
Message:

Define a WIN64 backend, ftd info for it. Set its LISP-CONTEXT-REGISTER
to r11/save3, since there doesn't seem to be a way to steal a segment
register on win64.
win64 ftd defines :bits-per-long as 32, to try to persuade things that
"signed/unsigned long" is 32 bits wide on win64.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/win64/compiler/X86/X8664/x8664-backend.lisp

    r7624 r8642  
    119119                ))
    120120
     121#+win64-target
     122(defvar *win64-backend*
     123  (make-backend :lookup-opcode 'lookup-x86-opcode
     124                :lookup-macro #'false
     125                :lap-opcodes x86::*x8664-opcode-templates*
     126                :define-vinsn 'define-x86-vinsn
     127                :p2-dispatch *x862-specials*
     128                :p2-vinsn-templates *x8664-vinsn-templates*
     129                :p2-template-hash-name '*x8664-vinsn-templates*
     130                :p2-compile 'x862-compile
     131                :target-specific-features
     132                '(:x8664 :x86-target :win64-target :windows-target :x8664-target
     133                  :winx64-target                 
     134                  :little-endian-target
     135                  :64-bit-target)
     136                :target-fasl-pathname (make-pathname :type "wx64fsl")
     137                :target-platform (logior platform-cpu-x86
     138                                         platform-os-windows
     139                                         platform-word-size-64)
     140                :target-os :win64
     141                :name :win64
     142                :target-arch-name :x8664
     143                :target-foreign-type-data nil
     144                :target-arch x8664::*x8664-target-arch*
     145                :platform-syscall-mask (logior platform-os-windows platform-cpu-x86 platform-word-size-64)
     146                :lisp-context-register x8664::r11
     147                ))
     148
    121149#+(or linuxx86-target (not x86-target))
    122150(pushnew *linuxx8664-backend* *known-x8664-backends* :key #'backend-name)
     
    128156#+freebsdx86-target
    129157(pushnew *freebsdx8664-backend* *known-x8664-backends* :key #'backend-name)
     158
     159#+win64-target
     160(pushnew *win64-backend* *known-x8664-backends* :key #'backend-name)
    130161
    131162(defvar *x8664-backend* (car *known-x8664-backends*))
     
    203234                           (intern "GENERATE-CALLBACK-BINDINGS" "X86-FREEBSD64")
    204235                           :callback-return-value-function
    205                            (intern "GENERATE-CALLBACK-RETURN-VALUE" "X86-FREEBSD64"))))))
     236                           (intern "GENERATE-CALLBACK-RETURN-VALUE" "X86-FREEBSD64")))
     237                (:win64
     238                 (make-ftd :interface-db-directory
     239                           (if (eq backend *host-backend*)
     240                             "ccl:win64-headers;"
     241                             "ccl:cross-win64-headers;")
     242                           :interface-package-name "WIN64"
     243                           :attributes '(:bits-per-word  64
     244                                         :struct-by-value t
     245                                         :bits-per-long 32)
     246                           :ff-call-expand-function
     247                           (intern "EXPAND-FF-CALL" "WIN64")
     248                           :ff-call-struct-return-by-implicit-arg-function
     249                           (intern "RECORD-TYPE-RETURNS-STRUCTURE-AS-FIRST-ARG"
     250                                   "WIN64")
     251                           :callback-bindings-function
     252                           (intern "GENERATE-CALLBACK-BINDINGS" "WIN64")
     253                           :callback-return-value-function
     254                           (intern "GENERATE-CALLBACK-RETURN-VALUE" "WIN64"))))))
    206255        (install-standard-foreign-types ftd)
    207256        (use-interface-dir :libc ftd)
Note: See TracChangeset for help on using the changeset viewer.