⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fpaversion.c

📁 操作系统SunOS 4.1.3版本的源码
💻 C
📖 第 1 页 / 共 5 页
字号:
#ifndef lintstatic  char sccsid[] = "@(#)fpaversion.c 1.1 92/07/30 SMI";#endif/* * Copyright (c) 1986 by Sun Microsystems, Inc. */  #include <stdio.h>#include <signal.h>#include <sys/file.h>#include <sys/types.h>#include <sys/ioctl.h>#include "fpa.h"#include "values.h"/*	History: *	1/24/86		Mark Moyer	Test Written *	9/21/87		Mark Moyer	sincos testing added *	12/21/88	Fernando Urbina Added the FPA+ testing capability *	1/21/89		Fernando Urbina Fixed problem in FPA+ testing (would not test w/ *					IMASK=0. *	1/23/89		Fernando Urbina	Added square root testing for FPA+. (Command Register) *	1/26/89		F. Urbina	Added sqrt for FPA+, (SP/DP Extended) *	3/21/89		F. Urbina	changed xsp sqrt tests to load different values in regs *//*	The main purpose of this test is to verify the microcode. *	Other tests were added so that this test may be a more complete *	general FPA test, but the emphasis is definitely on 1) verifying *	the microcode design and implementation, and 2) providing a *	regression test for all microcode modifications. *//* Note:  FPA+ Changes  * *  The FPA+ cannot generate a status of 2 (FINITE_EXACT). *  It instead generates a status of 1 (ST_INFINITY).  (dgh says this is OK). *  In order to implement this I have done the following: * *  1.  Test whether we are in an FPA or an FPA+ *	by looking at the IMASK/Version register. * *  2.  Copy the tables that expect a FINITE_EXACT result, *	call them "+" tables, and change the expected result to INFINITY. * *	The tables affected are: *	a) sp_table[]:	for FPA+ it's now called spp_table[]. *	b) dp_table[]:	for FPA+ it's now called dpp_table[]. *	c) sd_table[]:	for FPA+ it's now called sdp_table[]. *	d) x_table[]:	for FPA+ it's now called xp_table[]. *	e) l_table[]:	for FPA+ it's now called lp_table[]. *	f) c_table[]:	for FPA+ it's now called cp_table[]. *	g) sincos_table[]:  for FPA+ it's now called sincosp_table[]. *	h) m_table[]:	for FPA+ it's now called m_table[]. * *  3.  Now, each test that uses any of those tables will need to be copied, *	renamed to "+", and the call to those tables fixed. * *	The tests involved are: *	a) sp_test -> spp_test *	b) dp_test -> dpp_test *      c) sd_test -> sdp_test *	d) x_test -> xp_test *	e) c_test -> cp_test *	f) matrix_test -> matrixp_test *//* some contants */#define sonezp1 0x3f800001#define donezp1 0x3ff00000,0x00000001#define sonezm1 0x3f7fffff#define donezm1 0x3fefffff,0xffffffff#define sonezp2 0x3f800002#define donezp2 0x3ff00000,0x00000002#define sonezm2 0x3f7ffffe#define donezm2 0x3fefffff,0xfffffffe/*	second half of extended operation */#define X_2ND 0xE0001800/*	write weitek status */#define WRITE_WEITEK_STATUS 0xE0000E40/*	initialize (load the Weitek mode registers */#define INIT 0xE0000978/*	test user registers, destructive & non-destructive */#define REG_TEST_D 0xE00009C8#define REG_TEST_N 0xE00009CC/*	register operations */#define REG_CPY_DP 0xE0000884#define REG_CPY_SP 0xE0000880#define PUT_REG_SP 0xE0000C00#define PUT_REG_MS 0xE0000C00#define PUT_REG_LS 0xE0000C04#define GET_REG_SP 0xE0000C00#define GET_REG_MS 0xE0000C00#define GET_REG_LS 0xE0000C04/*	load pointer register RAM operations */#define LDP_MS 0xE0000E80#define LDP_LS 0xE0000E84/*	single precision operations */#define SP_NOP 0xE0000000#define SP_NEG 0xE0000080#define SP_ABS 0xE0000100#define SP_FLT 0xE0000180#define SP_FIX 0xE0000200#define SP_CNV 0xE0000280#define SP_SQR 0xE0000300#define SP_ADD 0xE0000380#define SP_SUB 0xE0000400#define SP_MUL 0xE0000480#define SP_DIV 0xE0000500#define SP_BSUB 0xE0000580#define SP_BDIV 0xE0000600#define SP_CMP0 0xE0000680#define SP_CMPR 0xE0000700#define SP_CMPM 0xE0000780#define DP_NOP 0xE0000004,0xE0001000#define DP_NEG 0xE0000084,0xE0001000#define DP_ABS 0xE0000104,0xE0001000#define DP_FLT 0xE0000184,0xE0001000#define DP_FIX 0xE0000204,0xE0001000#define DP_CNV 0xE0000284,0xE0001000#define DP_SQR 0xE0000304,0xE0001000#define DP_ADD 0xE0000384,0xE0001000#define DP_SUB 0xE0000404,0xE0001000#define DP_MUL 0xE0000484,0xE0001000#define DP_DIV 0xE0000504,0xE0001000#define DP_BSUB 0xE0000584,0xE0001000#define DP_BDIV 0xE0000604,0xE0001000#define DP_CMP0 0xE0000684,0xE0001000#define DP_CMPR 0xE0000704,0xE0001000#define DP_CMPM 0xE0000784,0xE0001000#define XS_SIN 0xE0001000#define XD_SIN 0xE0001004#define XS_COS 0xE0001080#define XD_COS 0xE0001084#define XS_TAN 0xE0001100#define XD_TAN 0xE0001104#define XS_ATAN 0xE0001180#define XD_ATAN 0xE0001184#define XS_EXPM 0xE0001200#define XD_EXPM 0xE0001204#define XS_LNP 0xE0001280#define XD_LNP 0xE0001284#define XS_EXP 0xE0001300#define XD_EXP 0xE0001304#define XS_LN 0xE0001380#define XD_LN 0xE0001384#define XS_ADD 0xE0001300#define XD_ADD 0xE0001304#define XS_SUB 0xE0001380#define XD_SUB 0xE0001384#define XS_MUL 0xE0001400#define XD_MUL 0xE0001404#define XS_DIV 0xE0001480#define XD_DIV 0xE0001484#define XS_BSUB 0xE0001500#define XD_BSUB 0xE0001504#define XS_BDIV 0xE0001580#define XD_BDIV 0xE0001584#define XS_PIV0 0xE0001800#define XD_PIV0 0xE0001804#define XS_PIV1 0xE0001880#define XD_PIV1 0xE0001884#define XS_PIV2 0xE0001900#define XD_PIV2 0xE0001904#define XS_PIV3 0xE0001980#define XD_PIV3 0xE0001984#define XS_PIV4 0xE0001A00#define XD_PIV4 0xE0001A04#define XS_PIV5 0xE0001A80#define XD_PIV5 0xE0001A84#define XS_PIV6 0xE0001B00#define XD_PIV6 0xE0001B04#define XS_PIV7 0xE0001B80#define XD_PIV7 0xE0001B84#define XS_PIV8 0xE0001C00#define XD_PIV8 0xE0001C04#define XS_PIV9 0xE0001C80#define XD_PIV9 0xE0001C84#define XS_PIVA 0xE0001D00#define XD_PIVA 0xE0001D04#define XS_LIN0 0xE0001000#define XS_LIN1 0xE0001080#define XS_LIN2 0xE0001100#define XS_LIN3 0xE0001180#define XS_LIN4 0xE0001200#define XS_LIN5 0xE0001280#define XS_SQRT 0xE0001600#define XD_SQRT 0xE0001604#define CS_SIN 0xE0000800#define CD_SIN 0xE0000804#define CS_COS 0xE0000808#define CD_COS 0xE000080C#define CS_TAN 0xE0000810#define CD_TAN 0xE0000814#define CS_ATAN 0xE0000818#define CD_ATAN 0xE000081C#define CS_EXP1 0xE0000820#define CD_EXP1 0xE0000824#define CS_LN1 0xE0000828#define CD_LN1 0xE000082C#define CS_EXP 0xE0000830#define CD_EXP 0xE0000834#define CS_LN 0xE0000838#define CD_LN 0xE000083C#define CS_SQRT 0xE0000840#define CD_SQRT 0xE0000844

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -