;;; -*- Mode: Lisp; Package: CCL; -*-
;;;
;;; Copyright 1994-2009 Clozure Associates
;;;
;;; Licensed under the Apache License, Version 2.0 (the "License");
;;; you may not use this file except in compliance with the License.
;;; You may obtain a copy of the License at
;;;
;;;     http://www.apache.org/licenses/LICENSE-2.0
;;;
;;; Unless required by applicable law or agreed to in writing, software
;;; distributed under the License is distributed on an "AS IS" BASIS,
;;; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
;;; See the License for the specific language governing permissions and
;;; limitations under the License.



(in-package "CCL")

;;; not very smart yet

#+x8664-target
(defx86lapfunction %get-errno ()
  (movq (:rcontext x8664::tcr.errno-loc) (% imm1))
  (movslq (@ (% imm1)) (% imm0))
  (movss (% fpzero) (@ (% imm1)))
  (negq (% imm0))
  (box-fixnum imm0 arg_z)
  (single-value-return))

#+x8632-target
(defx8632lapfunction %get-errno ()
  #+windows-target
  (progn
    (movl (:rcontext x8632::tcr.aux) (% imm0))
    (movl (@ x8632::tcr-aux.errno-loc (% imm0)) (% imm0)))
  #-windows-target
  (movl (:rcontext x8632::tcr.errno-loc) (% imm0))
  (movl (@ (% imm0)) (% imm0))
  (neg (% imm0))
  (box-fixnum imm0 arg_z)
  #+windows-target
  (progn
    (movl (:rcontext x8632::tcr.aux) (% imm0))
    (movl (@ x8632::tcr-aux.errno-loc (% imm0)) (% imm0)))
  #-windows-target
  (movl (:rcontext x8632::tcr.errno-loc) (% imm0))
  (movss (% fpzero) (@ (% imm0)))
  (single-value-return))

