Return to ieeefp.h CVS log | Up to [local] / sys / arch / alpha / include |
File: [local] / sys / arch / alpha / include / ieeefp.h (download)
Revision 1.1.1.1 (vendor branch), Tue Mar 4 16:04:51 2008 UTC (16 years, 3 months ago) by nbrk
Import of OpenBSD 4.2 release kernel tree with initial code to support Jornada 720/728, StrongARM 1110-based handheld PC. At this point kernel roots on NFS and boots into vfs_mountroot() and traps. What is supported: - glass console, Jornada framebuffer (jfb) works in 16bpp direct color mode (needs some palette tweaks for non black/white/blue colors, i think) - saic, SA11x0 interrupt controller (needs cleanup) - sacom, SA11x0 UART (supported only as boot console for now) - SA11x0 GPIO controller fully supported (but can't handle multiple interrupt handlers on one gpio pin) - sassp, SSP port on SA11x0 that attaches spibus - Jornada microcontroller (jmcu) to control kbd, battery, etc throught the SPI bus (wskbd attaches on jmcu, but not tested) - tod functions seem work - initial code for SA-1111 (chip companion) : this is TODO Next important steps, i think: - gpio and intc on sa1111 - pcmcia support for sa11x0 (and sa1111 help logic) - REAL root on nfs when we have PCMCIA support (we may use any of supported pccard NICs) - root on wd0! (using already supported PCMCIA-ATA) |
/* $OpenBSD: ieeefp.h,v 1.4 2002/04/28 20:55:14 pvalchev Exp $ */ /* $NetBSD: ieeefp.h,v 1.1 1995/04/29 01:09:17 cgd Exp $ */ /* * Written by J.T. Conklin, Apr 28, 1995 * Public domain. */ #ifndef _ALPHA_IEEEFP_H_ #define _ALPHA_IEEEFP_H_ typedef int fp_except; #ifdef _KERNEL #include <sys/param.h> #include <sys/proc.h> #include <machine/fpu.h> #include <machine/cpu.h> /* FP_X_IOV is intentionally omitted from the architecture flags mask */ #define FP_AA_FLAGS (FP_X_INV | FP_X_DZ | FP_X_OFL | FP_X_UFL | FP_X_IMP) #define float_raise(f) \ do curproc->p_md.md_flags |= OPENBSD_FLAG_TO_FP_C(f); \ while(0) #define float_set_inexact() float_raise(FP_X_IMP) #define float_set_invalid() float_raise(FP_X_INV) #define fpgetround() (alpha_read_fpcr() >> 58 & 3) #endif #define FP_X_INV 0x01 /* invalid operation exception */ #define FP_X_DZ 0x02 /* divide-by-zero exception */ #define FP_X_OFL 0x04 /* overflow exception */ #define FP_X_UFL 0x08 /* underflow exception */ #define FP_X_IMP 0x10 /* imprecise (loss of precision; "inexact") */ #define FP_X_IOV 0x20 /* integer overflow */ /* * fp_rnd bits match the fpcr, below, as well as bits 12:11 * in fp operate instructions */ typedef enum { FP_RZ = 0, /* round to zero (truncate) */ FP_RM = 1, /* round toward negative infinity */ FP_RN = 2, /* round to nearest representable number */ FP_RP = 3, /* round toward positive infinity */ _FP_DYNAMIC=FP_RP } fp_rnd; #endif /* _ALPHA_IEEEFP_H_ */