1/*- 2 * Copyright (c) 1995 The NetBSD Foundation, Inc. 3 * All rights reserved. 4 * 5 * This code is derived from software contributed to The NetBSD Foundation 6 * by Christos Zoulas. 7 * 8 * Redistribution and use in source and binary forms, with or without 9 * modification, are permitted provided that the following conditions 10 * are met: 11 * 1. Redistributions of source code must retain the above copyright 12 * notice, this list of conditions and the following disclaimer. 13 * 2. Redistributions in binary form must reproduce the above copyright 14 * notice, this list of conditions and the following disclaimer in the 15 * documentation and/or other materials provided with the distribution. 16 * 17 * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 18 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 19 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 20 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 21 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27 * POSSIBILITY OF SUCH DAMAGE. 28 * 29 * $NetBSD: fpu_extern.h,v 1.4 2000/08/03 18:32:08 eeh Exp $ 30 * $FreeBSD: releng/10.3/lib/libc/sparc64/fpu/fpu_extern.h 205393 2010-03-20 21:04:47Z marius $ 31 */ 32 33#ifndef _SPARC64_FPU_FPU_EXTERN_H_ 34#define _SPARC64_FPU_FPU_EXTERN_H_ 35 36struct utrapframe; 37struct fpemu; 38struct fpn; 39 40/* fpu.c */ 41int __fpu_exception(struct utrapframe *tf); 42 43/* fpu_add.c */ 44struct fpn *__fpu_add(struct fpemu *); 45 46/* fpu_compare.c */ 47void __fpu_compare(struct fpemu *, int, int); 48 49/* fpu_div.c */ 50struct fpn *__fpu_div(struct fpemu *); 51 52/* fpu_explode.c */ 53int __fpu_itof(struct fpn *, u_int); 54int __fpu_xtof(struct fpn *, u_int64_t); 55int __fpu_stof(struct fpn *, u_int); 56int __fpu_dtof(struct fpn *, u_int, u_int); 57int __fpu_qtof(struct fpn *, u_int, u_int, u_int, u_int); 58void __fpu_explode(struct fpemu *, struct fpn *, int, int); 59 60/* fpu_implode.c */ 61u_int __fpu_ftoi(struct fpemu *, struct fpn *); 62u_int __fpu_ftox(struct fpemu *, struct fpn *, u_int *); 63u_int __fpu_ftos(struct fpemu *, struct fpn *); 64u_int __fpu_ftod(struct fpemu *, struct fpn *, u_int *); 65u_int __fpu_ftoq(struct fpemu *, struct fpn *, u_int *); 66void __fpu_implode(struct fpemu *, struct fpn *, int, u_int *); 67 68/* fpu_mul.c */ 69struct fpn *__fpu_mul(struct fpemu *); 70 71/* fpu_sqrt.c */ 72struct fpn *__fpu_sqrt(struct fpemu *); 73 74/* fpu_subr.c */ 75/* 76 * Shift a number right some number of bits, taking care of round/sticky. 77 * Note that the result is probably not a well-formed number (it will lack 78 * the normal 1-bit mant[0]&FP_1). 79 */ 80int __fpu_shr(register struct fpn *, register int); 81void __fpu_norm(register struct fpn *); 82/* Build a new Quiet NaN (sign=0, frac=all 1's). */ 83struct fpn *__fpu_newnan(register struct fpemu *); 84 85#endif /* !_SPARC64_FPU_FPU_EXTERN_H_ */ 86