Changeset 5876
- Timestamp:
- Feb 10, 2007, 9:21:08 PM (18 years ago)
- File:
-
- 1 edited
-
trunk/ccl/compiler/X86/X8664/x8664-backend.lisp (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ccl/compiler/X86/X8664/x8664-backend.lisp
r5867 r5876 272 272 (let* ((gpr-offset 0) 273 273 (fpr-offset 16)) 274 ;; Do this 32 bits at a time, to avoid consing. 274 275 (collect ((forms)) 275 276 (case first 276 (:integer (forms `(setf (%%get-unsigned-longlong ,r 0) 277 (%%get-unsigned-longlong ,regbuf 0))) 277 (:integer (forms `(setf (%get-unsigned-long ,r 0) 278 (%get-unsigned-long ,regbuf 0))) 279 (forms `(setf (%get-unsigned-long ,r 4) 280 (%get-unsigned-long ,regbuf 4))) 278 281 (setq gpr-offset 8)) 279 (:float (forms `(setf (%%get-unsigned-longlong ,r 0) 280 (%%get-unsigned-longlong ,regbuf 16))) 282 (:float (forms `(setf (%get-unsigned-long ,r 0) 283 (%get-unsigned-long ,regbuf 16))) 284 (forms `(setf (%get-unsigned-long ,r 4) 285 (%get-unsigned-long ,regbuf 20))) 281 286 (setf fpr-offset 24))) 282 287 (case second 283 (:integer (forms `(setf (%%get-unsigned-longlong ,r 8) 284 (%%get-unsigned-longlong ,regbuf ,gpr-offset)))) 285 (:float (forms `(setf (%%get-unsigned-longlong ,r 8) 286 (%%get-unsigned-longlong ,regbuf ,fpr-offset))))) 288 (:integer (forms `(setf (%get-unsigned-long ,r 8) 289 (%get-unsigned-long ,regbuf ,gpr-offset))) 290 (forms `(setf (%get-unsigned-long ,r 12) 291 (%get-unsigned-long ,regbuf ,(+ gpr-offset 4))))) 292 (:float (forms `(setf (%get-unsigned-long ,r 8) 293 (%get-unsigned-long ,regbuf ,fpr-offset))) 294 (forms `(setf (%get-unsigned-long ,r 12) 295 (%get-unsigned-long ,regbuf ,(+ fpr-offset 4)))))) 287 296 `(progn ,@(forms)))))) 288 297 … … 295 304 (structure-arg-temp nil)) 296 305 (multiple-value-bind (result-type error) 297 ( parse-foreign-type result-type-spec)306 (ignore-errors (parse-foreign-type result-type-spec)) 298 307 (if error 299 308 (setq result-type-spec :void result-type *void-foreign-type*) … … 469 478 (rlets (list name (foreign-record-type-name argtype))) 470 479 (inits `(setf (%%get-unsigned-longlong ,name 0) 471 (%%get-unsigned-long -long ,stack-ptr ,(if (eq first8 :integer) (next-gpr) (next-fpr)))))480 (%%get-unsigned-longlong ,stack-ptr ,(if (eq first8 :integer) (next-gpr) (next-fpr))))) 472 481 (if second8 473 482 (inits `(setf (%%get-unsigned-longlong ,name 8) 474 (%%get-unsigned-long -long ,stack-ptr ,(if (eq second8 :integer) (next-gpr) (next-fpr)))))))))483 (%%get-unsigned-longlong ,stack-ptr ,(if (eq second8 :integer) (next-gpr) (next-fpr))))))))) 475 484 (lets (list name 476 485 `(,
Note:
See TracChangeset
for help on using the changeset viewer.
