source: branches/ia32/compiler/X86/X8632/x8632-backend.lisp @ 7221

Last change on this file since 7221 was 7221, checked in by rme, 13 years ago

Indentation; comment out some conditionalization.

File size: 3.8 KB
Line 
1;;;-*- Mode: Lisp; Package: CCL -*-
2
3(in-package "CCL")
4(eval-when (:compile-toplevel :load-toplevel :execute)
5  (require "BACKEND"))
6
7(eval-when (:compile-toplevel :execute)
8  (require "NXENV")
9  (require "X8632ENV"))
10
11(defvar *x8632-vinsn-templates* (make-hash-table :test #'eq))
12
13(defvar *known-x8632-backends* ())
14
15;;#+darwinx86-target
16(defvar *darwinx8632-backend*
17  (make-backend :lookup-opcode 'lookup-x86-opcode
18                :lookup-macro #'false
19                :lap-opcodes x86::*x86-opcode-templates*
20                :define-vinsn 'define-x86-vinsn
21                :p2-dispatch *x862-specials*
22                :p2-vinsn-templates *x8632-vinsn-templates*
23                :p2-template-hash-name '*x8632-vinsn-templates*
24                :p2-compile 'x862-compile
25                :platform-syscall-mask (logior platform-os-darwin platform-cpu-x86 platform-word-size-32) 
26                :target-specific-features
27                '(:x8632 :x86-target :darwin-target :darwinx86-target :x8632-target
28                  :darwinx8632-target
29                  :little-endian-target
30                  :32-bit-target)
31                :target-fasl-pathname (make-pathname :type "dx32fsl")
32                :target-platform (logior platform-cpu-x86
33                                         platform-os-darwin
34                                         platform-word-size-32)
35                :target-os :darwinx86
36                :name :darwinx8632
37                :target-arch-name :x8632
38                :target-foreign-type-data nil
39                :target-arch x8632::*x8632-target-arch*
40                :lisp-context-register x8632::fs
41                ))
42
43;;#+darwinx86-target
44(pushnew *darwinx8632-backend* *known-x8632-backends* :key #'backend-name)
45
46(defvar *x8632-backend* (car *known-x8632-backends*))
47
48(defun fixup-x8632-backend ()
49  (dolist (b *known-x8632-backends*)
50    (setf #| (backend-lap-opcodes b) x86::*x86-opcodes* |#
51          (backend-p2-dispatch b) *x862-specials*
52          (backend-p2-vinsn-templates b)  *x8632-vinsn-templates*)
53    (or (backend-lap-macros b) (setf (backend-lap-macros b)
54                                     (make-hash-table :test #'equalp)))))
55
56
57(fixup-x8632-backend)
58
59#+x8632-target
60(setq *host-backend* *x8632-backend* *target-backend* *x8632-backend*)
61
62
63(defun setup-x8632-ftd (backend)
64  (or (backend-target-foreign-type-data backend)
65      (let* ((name (backend-name backend))
66             (ftd
67              (case name
68                (:darwinx8632
69                 (make-ftd :interface-db-directory
70                           (if (eq backend *host-backend*)
71                             "ccl:darwin-x86-headers32;"
72                             "ccl:cross-darwin-x86-headers32;")
73                           :interface-package-name "X86-DARWIN32"
74                           :attributes '(:bits-per-word  32
75                                         :signed-char t
76                                         :struct-by-value t
77                                         :prepend-underscore t)
78                           :ff-call-expand-function
79                           (intern "EXPAND-FF-CALL" "X86-DARWIN32")
80                           :ff-call-struct-return-by-implicit-arg-function
81                           (intern "RECORD-TYPE-RETURNS-STRUCTURE-AS-FIRST-ARG"
82                                   "X86-DARWIN32")
83                           :callback-bindings-function
84                           (intern "GENERATE-CALLBACK-BINDINGS" "X86-DARWIN32")
85                           :callback-return-value-function
86                           (intern "GENERATE-CALLBACK-RETURN-VALUE" "X86-DARWIN32"))))))
87        (install-standard-foreign-types ftd)
88        (use-interface-dir :libc ftd)
89        (setf (backend-target-foreign-type-data backend) ftd))))
90
91#-x8632-target
92(setup-x8632-ftd *x8632-backend*)
93
94(pushnew *x8632-backend* *known-backends* :key #'backend-name)
95
96(provide "X8632-BACKEND")
Note: See TracBrowser for help on using the repository browser.