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

📄 mis.u

📁 操作系统SunOS 4.1.3版本的源码
💻 U
字号:
|* @(#)mis.u	1.1	1.1	7/30/92|*|*	FPA MICROCODE|* Written by Mark Moyer|* For modifications, see "FPA MICRO-CODE GUIDE", #800-1870-01|*|*|*		Idle 1|*	;		;			;		;	;idle1:	map idl1;	lmap cslmac;		opdsp;		recclk;	rcssp imm2;|*|*		Invalid Instructions|*|*	Shadow Ram Accessesroutine inv.h1 r0111000xxxx lnop ssub|*	Other Register Accessesroutine inv.r1 x01111xxxxxx lnop ssub|*	Register Accesses Via the Load Pointerroutine inv.l1 x011101001xx lnop ssubroutine inv.l2 x01110101xxx lnop ssub|*   NOTE: w0111011111x is Defined as an invalid instruction forever more|*   (it's used in the O.S. to generate the unimplimented status.)routine inv.l3 x0111011xxxx lnop ssub|*	Single Precisionroutine inv.s1 r00xxxxxxxx0 lnop ssub|*	Commandroutine inv.c1 r010xxxxxxxx lnop ssubroutine inv.c2 w0101001010x lnop ssubroutine inv.c3 w0101001100x lnop ssubroutine inv.c4 w0101011010x lnop ssubroutine inv.c5 w0101100010x lnop ssubroutine inv.c6 w0101100110x lnop ssubroutine inv.c7 w0101101010x lnop ssubroutine inv.c8 w01011011x0x lnop ssubroutine inv.c9 w0101110110x lnop ssubroutine inv.ca w0101111110x lnop ssubroutine inv.cb w010000101xx lnop ssubroutine inv.cc w01000011xxx lnop ssubroutine inv.cd w0100011011x lnop ssubroutine inv.ce w01000111xxx lnop ssubroutine inv.cf w0100110111x lnop ssubroutine inv.cg1 w01001110000 lnop ssubroutine inv.cg3 w010011101xx lnop ssubroutine inv.cg4 w01001111xxx lnop ssubroutine inv.ch1 w01001011111 lnop ssubroutine inv.ch w0100101110x lnop ssubroutine inv.ci w01001011011 lnop ssubroutine inv.ci2 w0100101100x lnop ssubroutine inv.cj w0100101010x lnop ssubroutine inv.ck w010010100xx lnop ssubroutine inv.cl w0100100xxx0 lnop ssubroutine inv.cm w01001010111 lnop ssubroutine inv.cn w0100001001x lnop ssubroutine inv.stan w01000000100 lnop ssubroutine inv.dtan w01000000101 lnop ssubroutine inv.ssqrt w01000010000 lnop ssubroutine inv.dsqrt w01000010001 lnop ssub|*	Write Weitek Statusroutine inv.w1 r0111001xxxx lnop ssub|*	Not Used (some detected by hardware)routine inv.nu1 x01101xxxxxx lnop ssubroutine inv.nu2 w01110010101 lnop ssubroutine inv.nu3 w01110010110 lnop ssubroutine inv.nu4 w01110010111 lnop ssubroutine inv.nu5 w01110011001 lnop ssubroutine inv.nu6 w01110011010 lnop ssubroutine inv.nu7 w01110011011 lnop ssubroutine inv.nu8 w01110011100 lnop ssubroutine inv.nu9 w01110011101 lnop ssubroutine inv.nua w01110011110 lnop ssubroutine inv.nub w01110011111 lnop ssubinvalid:	;		;			;		;	;	cstat unimpl;	;			;		;	;	hng;		;			;		;	;	call idle1;	;			;		;	;|*	Double Precisionroutine inv.d1 r00xxxxxxxx1 lnop ssub|*	Extendedroutine inv.x1 r1xxxxxxxxxx lnop ssubroutine inv.x2 w1000xxxxxx1 lnop ssubroutine inv.x3 w10010xxxxx1 lnop ssubroutine inv.x4 w1011xxxxxxx lnop ssubroutine inv.x5 w111011xxxxx lnop ssubroutine inv.x6 w1111xxxxxxx lnop ssubinvalid2:	;		;			;		;	;	jclr clp idl2;	;			;		;	;	cstat unimpl;	;			;		;	;	hng;		;			;		;	;	call idle1;	;			;		;	;|*|*		General Routines|*|*	Wait (delay will be (lpreg+1) * 2)wait:	jloop wait;	;			;		;	;	rtn;		;			;		;	;	lpreg-wait5:	;		;			;		;	;wait4:	;		;			;		;	;wait3:	;		;			;		;	;wait2:	;		;			;		;	;wait1:	rtn;		;			;		;	;|*|*		Clear Pipe Clean-up Routines|*	If there is a clear pipe command, the microengine must wait|*	until the current Weitek operation (if any) is completed.|*	The delay must be long enough such that any new operation|*	will not be loaded until the time when the unload is normally|*	done.|*	Must wait 56 instructionsclp56:	;		;			;		;	;	lpreg!26	call wait;	;			;		;	;	call idle1;	;			;		;	;|*	Must wait 24 instructionsclp24:clp20:	;		;			;		;	;	lpreg!10	call wait;	;			;		;	;	call idle1;	;			;		;	;|*	Must wait 4 instructionsclp4:	;		;			;		;	;|*	Must wait 3 instructionsclp3:	;		;			;		;	;clp2:	;		;			;		;	;|*	No operation going on|*	Must wait 1 instructionsclp:clp1:	call idle1;	;			;		;	;||*||*		Write Weitek Status Instructions||*|routine w.0 w01110010000 lnop ssub|	;		;			;		;	;	ptr5!szero|	;		;			;		;	rcssp ptr5;|	;		lasf scmp0 csla;	reg;		;	;|	;		;			;		;	;|	;		;			;		;	;|	;		csuxa;			;		;	;|	;		;			;		;	;|	call idle1 cstat;woea;			;		;	;|routine w.1 w01110010001 lnop ssub|	;		;			;		;	;	ptr5!smone|	;		;			;		;	rcssp ptr5;|	;		lasf scmp0 csla;	reg;		;	;|	;		;			;		;	;|	;		;			;		;	;|	;		csuxa;			;		;	;|	;		;			;		;	;|	call idle1 cstat;woea;			;		;	;|routine w.2 w01110010010 lnop ssub|	;		;			;		;	;	ptr5!sone|	;		;			;		;	rcssp ptr5;|	;		lasf scmp0 csla;	reg;		;	;|	;		;			;		;	;|	;		;			;		;	;|	;		csuxa;			;		;	;|	;		;			;		;	;|	call idle1 cstat;woea;			;		;	;|routine w.3 w01110010011 lnop ssub|	;		;			;		;	;	ptr5!c_smaxnorm|	;		;			;		;	rcssp ptr5;	ptr5!sone|	;		las csla;		reg;		;	rcssp ptr5;|	;		lbsf ssub csla;		reg;		;	;|	;		;			;		;	;|	;		;			;		;	;|	;		csuxa;			;		;	;|	;		;			;		;	;|	call idle1 cstat;woea;			;		;	;|routine w.4 w01110010100 lnop ssub|	call invalid;	;			;		;	;|routine w.5 w01110010101 lnop ssub|	;		;			;		;	;	ptr5!c_smaxnorm|	;		;			;		;	rcssp ptr5;	ptr5!c_smaxnorm|	;		las csla;		reg;		;	rcssp ptr5;|	;		lbsf sadd csla;		reg;		;	;|	;		;			;		;	;|	;		;			;		;	;|	;		csuxa;			;		;	;|	;		;			;		;	;|	call idle1 cstat;woea;			;		;	;|routine w.6 w01110010110 lnop ssub|	;		;			;		;	;	ptr5!shalf|	;		;			;		;	rcssp ptr5;	ptr5!c_sminnorm|	;		las cslm;		reg;		;	rcssp ptr5;|	;		lbsf smul cslm;		reg;		;	;|	;		;			;		;	;|	;		;			;		;	;|	;		csuxa;			;		;	;|	;		;			;		;	;|	call idle1 cstat;woea;			;		;	;|routine w.7 w01110010111 lnop ssub|	;		;			;		;	;	ptr5!c_sminnorm|	;		;			;		;	rcssp ptr5;	ptr5!c_sminnorm|	;		las cslm;		reg;		;	rcssp ptr5;|	;		lbsf smul cslm;		reg;		;	;|	;		;			;		;	;|	;		;			;		;	;|	;		csuxa;			;		;	;|	;		;			;		;	;|	call idle1 cstat;woea;			;		;	;|routine w.8 w01110011000 lnop ssub|	;		;			;		;	;	ptr5!c_sminsub|	;		;			;		;	rcssp ptr5;|	;		lasf scmp0 cslm;	reg;		;	;|	;		;			;		;	;|	;		;			;		;	;|	;		csuxa;			;		;	;|	;		;			;		;	;|	call idle1 cstat;woea;			;		;	;|routine w.9 w01110011001 lnop ssub|	;		;			;		;	;	ptr5!szero|	;		;			;		;	rcssp ptr5;	ptr5!c_sminsub|	;		las csla;		reg;		;	rcssp ptr5;|	;		lbsf sadd csla;		reg;		;	;|	;		;			;		;	;|	;		;			;		;	;|	;		csuxa;			;		;	;|	;		;			;		;	;|	call idle1 cstat;woea;			;		;	;|routine w.a w01110011010 lnop ssub|	;		;			;		;	;	ptr5!c_sminsub|	;		;			;		;	rcssp ptr5;	ptr5!c_sminsub|	;		las csla;		reg;		;	rcssp ptr5;|	;		lbsf sadd csla;		reg;		;	;|	;		;			;		;	;|	;		;			;		;	;|	;		csuxa;			;		;	;|	;		;			;		;	;|	call idle1 cstat;woea;			;		;	;|routine w.b w01110011011 lnop ssub|	;		;			;		;	;	ptr5!sone|	;		;			;		;	rcssp ptr5;	ptr5!szero|	;		las csla;		reg;		;	rcssp ptr5;||#				(Note: 12 will cause a delay of 26)|	;		lbsf sdiv csla;		reg;		;	;	lpreg!12|	call wait;	;			;		;	;|	;		csuxa;			;		;	;|	;		;			;		;	;|	call idle1 cstat;woea;			;		;	;|routine w.c w01110011100 lnop ssub|	;		;			;		;	;	ptr5!c_ssnan|	;		;			;		;	rcssp ptr5;	ptr5!szero|	;		las csla;		reg;		;	rcssp ptr5;|	;		lbsf sadd csla;		reg;		;	;|	;		;			;		;	;|	;		;			;		;	;|	;		csuxa;			;		;	;|	;		;			;		;	;|	call idle1 cstat;woea;			;		;	;|routine w.d w01110011101 lnop ssub|	;		;			;		;	;	ptr5!szero|	;		;			;		;	rcssp ptr5;	ptr5!c_ssnan|	;		las csla;		reg;		;	rcssp ptr5;|	;		lbsf sadd csla;		reg;		;	;|	;		;			;		;	;|	;		;			;		;	;|	;		csuxa;			;		;	;|	;		;			;		;	;|	call idle1 cstat;woea;			;		;	;|routine w.e w01110011110 lnop ssub|	;		;			;		;	;	ptr5!c_ssnan|	;		;			;		;	rcssp ptr5;	ptr5!c_ssnan|	;		las csla;		reg;		;	rcssp ptr5;|	;		lbsf sadd csla;		reg;		;	;|	;		;			;		;	;|	;		;			;		;	;|	;		csuxa;			;		;	;|	;		;			;		;	;|	call idle1 cstat;woea;			;		;	;|routine w.f w01110011111 lnop ssub|	;		;			;		;	;	ptr5!c_ssnan|	;		;			;		;	rcssp ptr5;|	;		lasf scmp0 csla;	reg;		;	;|	;		;			;		;	;|	;		;			;		;	;|	;		csuxa;			;		;	;|	;		;			;		;	;|	call idle1 cstat;woea;			;		;	;|*|*		Weitek Error Routines|*	Whenever the Weitek chips get an error we hang.|*	For instructions that have written to reg1 we must restore it.|*	For more complicated operations we might have to wait for|*	the other Weitek chip to finish first.|*|*	This routine is entered in the middle of a write.  We play it safe|*	and finish the write cleanly.|*|*   Double Precision - restore from recovery to ptr2der2:	;		;			;		;	ramwe ptr2;	;		;			;		recoe;	ramwe rcsmsw ptr2;	;		;			;		recoe recclk;ramwe ptr2;	;		;			;		recoe;	ramwe rcslsw ptr2;	call hang;	;			;		recoe;	ramwe ptr2;|*   Single Precision - restore from recovery to ptr2ser2:	;		;			;		recclk;	ptr2;	;		;			;		recoe;	ramwe rcssp ptr2;	call hang;	;			;		recoe;	ramwe ptr2;|*   Double Precision - restore from recovery to ptr1der1:	;		;			;		;	ramwe ptr1;	;		;			;		recoe;	ramwe rcsmsw ptr1;	;		;			;		recoe recclk;ramwe ptr1;	;		;			;		recoe;	ramwe rcslsw ptr1;	call hang;	;			;		recoe;	ramwe ptr1;|*   Single Precision - restore from recovery to ptr1ser1:	;		;			;		recclk;	ptr1;	;		;			;		recoe;	ramwe rcssp ptr1;	call hang;	;			;		recoe;	ramwe ptr1;|*		When we jump here with another jump following immediately,|*		we must do a jump here (hence the jump werr).prewerr:	jmp werr;	;			;		;	;werr:	call hang;	;			;		;	;hang:	hng;		;			;		;	;	;		;			;		;	;	call idle1;	;			;		;	;

⌨️ 快捷键说明

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