Annotation of sys/arch/hppa/spmath/md.h, Revision 1.1
1.1 ! nbrk 1: /* $OpenBSD: md.h,v 1.7 2003/04/10 17:27:58 mickey Exp $ */
! 2: /*
! 3: (c) Copyright 1986 HEWLETT-PACKARD COMPANY
! 4: To anyone who acknowledges that this file is provided "AS IS"
! 5: without any express or implied warranty:
! 6: permission to use, copy, modify, and distribute this file
! 7: for any purpose is hereby granted without fee, provided that
! 8: the above copyright notice and this notice appears in all
! 9: copies, and that the name of Hewlett-Packard Company not be
! 10: used in advertising or publicity pertaining to distribution
! 11: of the software without specific, written prior permission.
! 12: Hewlett-Packard Company makes no representations about the
! 13: suitability of this software for any purpose.
! 14: */
! 15: /* @(#)md.h: Revision: 1.8.88.1 Date: 93/12/07 15:06:33 */
! 16:
! 17: #include <sys/cdefs.h>
! 18:
! 19: /*****************************************************************
! 20: * Muliply/Divide SFU Internal State *
! 21: *****************************************************************/
! 22: struct mdsfu_register {
! 23: int rslt_hi,
! 24: rslt_lo,
! 25: ovflow;
! 26: };
! 27:
! 28: #define result_hi result->rslt_hi
! 29: #define result_lo result->rslt_lo
! 30: #define overflow result->ovflow
! 31:
! 32: /*
! 33: * Constants
! 34: */
! 35:
! 36: #undef FALSE
! 37: #define FALSE 0
! 38:
! 39: #undef TRUE
! 40: #define TRUE (!FALSE)
! 41:
! 42: #undef NIL
! 43: #define NIL 0
! 44:
! 45: #define WORD_LEN 32
! 46: #define BIT0 1<<31
! 47: #define BIT28 0x8
! 48: #define BIT29 0x4
! 49: #define BIT30 0x2
! 50: #define BIT31 0x1
! 51:
! 52: /* Simply copy the arguments to the emulated copies of the registers */
! 53: #define mdrr(reg1,reg2,result) {result_hi = reg1;result_lo = reg2;}
! 54:
! 55: /*
! 56: * Structures
! 57: */
! 58:
! 59: struct md_state {
! 60: int resulthi, /* high word of result */
! 61: resultlo; /* low word of result */
! 62: };
! 63:
! 64: void divsfm(int, int, struct mdsfu_register *);
! 65: void divsfr(int, int, struct mdsfu_register *);
! 66: void divsim(int, int, struct mdsfu_register *);
! 67: void divsir(int, int, struct mdsfu_register *);
! 68:
! 69: void divu(int, int, int, struct mdsfu_register *);
! 70: void divufr(unsigned int, unsigned int, struct mdsfu_register *);
! 71: void divuir(unsigned int, unsigned int, struct mdsfu_register *);
! 72:
! 73: void mpyaccs(int, int, struct mdsfu_register *);
! 74: void mpyaccu(unsigned int, unsigned int, struct mdsfu_register *);
! 75: void mpys(int, int, struct mdsfu_register *);
! 76: void mpyscv(int, int, struct mdsfu_register *);
! 77: void mpyu(unsigned int, unsigned int, struct mdsfu_register *);
! 78: void mpyucv(unsigned int, unsigned int, struct mdsfu_register *);
! 79:
! 80: int s_xmpy(int *, int *, struct mdsfu_register *);
! 81: int u_xmpy(int *, int *, struct mdsfu_register *);
CVSweb