亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? low.s

?? 操作系統SunOS 4.1.3版本的源碼
?? S
字號:
.data.asciz "@(#) low.s 1.1 92/07/30 Copyr 1986 Sun Micro".even.text| Copyright (C) 1986 by Sun Microsystems, Inc.! @(#) low.s 1.1 92/07/30 !! This source code is a product of Sun Microsystems, Inc. and is provided! for unrestricted use provided that this legend is included on all tape! media and as a part of the software program in whole or part.  Users! may copy or modify this source code without charge, but are not authorized! to license or distribute it to anyone else except as part of a product or! program developed by the user.!! THIS PROGRAM CONTAINS SOURCE CODE COPYRIGHTED BY SUN MICROSYSTEMS, INC.! AND IS LICENSED TO SUNSOFT, INC., A SUBSIDIARY OF SUN MICROSYSTEMS, INC.! SUN MICROSYSTEMS, INC., MAKES NO REPRESENTATIONS ABOUT THE SUITABLITY! OF SUCH SOURCE CODE FOR ANY PURPOSE.  IT IS PROVIDED "AS IS" WITHOUT! EXPRESS OR IMPLIED WARRANTY OF ANY KIND.  SUN MICROSYSTEMS, INC. DISCLAIMS! ALL WARRANTIES WITH REGARD TO SUCH SOURCE CODE, INCLUDING ALL IMPLIED! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  IN! NO EVENT SHALL SUN MICROSYSTEMS, INC. BE LIABLE FOR ANY SPECIAL, INDIRECT,! INCIDENTAL, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING! FROM USE OF SUCH SOURCE CODE, REGARDLESS OF THE THEORY OF LIABILITY.!! This source code is provided with no support and without any obligation on! the part of Sun Microsystems, Inc. to assist in its use, correction, ! modification or enhancement.!! SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE! INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY THIS! SOURCE CODE OR ANY PART THEREOF.!! Sun Microsystems, Inc.! 2550 Garcia Avenue! Mountain View, California 94043#include "low.h".text.globl	___schedule.globl	___real_sig.globl	___do_agent.globl	___asmdebug.globl	___Curproc.globl	___EventsPending.globl	___AsynchLock.globl	___fake_sig.globl	___exchelpclean.globl	___exc_trap.globl	___NuggetSP|| assembly language support routines|| a7 is the stack| __swtch()| switch context when not at interrupt level and the new process| was not switched out asynchronously.| Volatile registers are not restored (d0/d1, a0/a1).| Must be called while LOCKED.|| Context is restored BEFORE UNLOCK (i.e., clearing AsynchLock)| so that any interrupt will capture the correct context| (i.e., save the "backing store" version of the registers,| not the values in the registers at the time ___swtch is called).| We LOCK before calling fake_sig to prevent intrerrupts from| changing anything before fake_sig causes a scheduling decision.| We UNLOCK before testing EventsPending so a interrupt will| cause scheduling (and not just save info and set EventsPending),| even if we decided that EventsPending was false| (and then immediately got an interrupt).| Once we decided that EventsPending is true, it is safe to LOCK| again because setting EventsPending is idempotent.ENTRY(swtch)	movl	___Curproc, a0		| pointer to client context	moveml	a0@(REGOFFSET), #0xfcfc	| restore client regs and new sp	clrl	___AsynchLock		| allow interrupts	tstl	___EventsPending	| check for pending events	jeq	1f			| none	movl	#1, ___AsynchLock	| prevent interrupts from touching regs	movl	___NuggetSP, sp		| don't use client stack for interrupts	jbsr	___fake_sig		| fake an interrupt	| NOTREACHED1:	rts				| back to client| __checkpoint()| Save context and reschedule.| The context will have the return address of the caller of| ___checkpoint on the stack so upon rescheduling it will look| like checkpoint() just returned.| Should be called while LOCKED. When checkpoint() "returns" though,| the state is UNLOCKED.ENTRY(checkpoint)	movl	___Curproc, a0	moveml	#0xfcfc, a0@(REGOFFSET)	| save volatile registers	movl	___NuggetSP, sp		| don't use client stack now	jra	___schedule	| NOTREACHED| __unlock()| Unlock a critical section.| If events occurred while LOCKED, call fake_sig| to simulate an interrupt and cause all pending events to be processed.| Context must be saved before calling fake_sig because the saved context| does not reflect reality and fake_sig will cause a scheduling decision.| Context is saved while LOCKED to prevent interrupts from preserving| an incorrect state before the correct state is established.| EventsPending is tested while UNLOCKED to avoid deadlocks as described in| the swtch() code.ENTRY(unlock)	clrl	___AsynchLock	tstl	___EventsPending	jeq	1f	movl	#1, ___AsynchLock	| prevent interrupts from touching regs	movl	___Curproc, a0	moveml	#0xfcfc, a0@(REGOFFSET)	| save return cntxt; __fake_sig doesn't	movl	___NuggetSP, sp		| don't use client stack now	jbsr	___fake_sig	| NOTREACHED1:	rts| __excreturn()| return value to exception handler upon an excraise.| the return address is on the stack.| note that normal context switching does not restore d0| so we do the exception handle return| as if the user was calling a function returning a value.ENTRY(excreturn)	movl	sp@+, d0		| return pattern	rts| __exccleanup()| a procedure handling exceptions has its return address replaced| by exccleanup.| initially, the procedure return address is at the top of the stack.| it is replaced by exccleanup which is called instead of returning.| We pretend that the stack is as it would be if we were about to| return to the procedure. __exchelpclean makes this true and we return.ENTRY(exccleanup)	subqw	#4, sp			| pretend real return address is there	movl	d0, sp@-		| save return value if any	jsr	___exchelpclean		| this guy restores the original ret addr	movl	sp@+, d0		| restore return value	rts| __sigtrap()| signum is on the stack|ENTRY(sigtrap)	moveml	#0xC0C0, sp@-	/* save C scratch regs */	movl	sp@(16), sp@-	jsr	___exc_trap	addqw	#4, sp	moveml	sp@+,#0x0303	/* restore regs */	addqw	#4, sp	rts| __interrupt()| our own version of sigtramp with no floating point stuff saved| called when an interrupt or trap occurs.ENTRY(interrupt)	moveml	a0/a1/d0/d1,sp@-	/* save C scratch regs */	movl	sp@(0+28),sp@-		/* push addr */	movl	sp@(4+24),sp@-		/* push scp address */	movl	sp@(8+20),sp@-		/* push code */	movl	sp@(12+16),sp@-		/* push signal number */	jsr	___real_sig		/* call realsig */	addl	#16,sp			/* pop args */	tstl	d0			/* need to save full state? */	jeq	1f			/* no */	movl	___Curproc, a0	moveml	a2-a6/d2-d7, a0@(REGOFFSET)	| save general regs except sp	movl	sp@(0), a0@(REGOFFSET+48+0)	| d0	movl	sp@(4), a0@(REGOFFSET+48+4)	| d1	movl	sp@(8), a0@(REGOFFSET+48+8)	| a0	movl	sp@(12), a0@(REGOFFSET+48+12)	| a1	jsr	___do_agent			| map interrupt1:	moveml	sp@+,a0/a1/d0/d1	/* restore regs */	addl	#8,sp			/* pop signo, code, scp now on top */	pea	139			/* call sigcleanup(scp) */	trap	#0	/*NOTREACHED*/| __fp_save()| routines to save and restore floating point context.| Each is called with a pointer to the floating point context as an arg.| This context has FPSAVESIZE bytes of space.#define FP_UNSPECIFIED	0#define FP_SOFTWARE	1#define FP_SKYFFP	2#define FP_MC68881	3#define FP_SUNFPA	4.globl	_getfptype, ffpa_save, f68881_save, fsky_saveENTRY(fp_save)	jsr	_getfptype		| get fp_switch value into d0	movl	sp@(4), a0		| get pointer to fp context	movel	d0, a0@+		| save fp_switch for fp_restore	cmpw	#FP_SUNFPA, d0	jne	3f	jsr	ffpa_save	bras	9f3:	cmpw	#FP_MC68881, d0	bnes	2f	jsr	f68881_save	bras	9f2:	cmpw	#FP_SKYFFP, d0	bnes	9f	jsr	fsky_save9:	rts| __fp_restore().globl	ffpa_restore, f68881_restore, fsky_restoreENTRY(fp_restore)	movl	sp@(4), a0	movel	a0@+, d0	| retrieve saved fp_switch	cmpw	#FP_SUNFPA, d0	jne	3f	jsr	ffpa_restore	bras	9f3:	cmpw	#FP_MC68881, d0	bnes	2f	jsr	f68881_restore	bras	9f2:	cmpw	#FP_SKYFFP, d0	bnes	9f	jsr	fsky_restore9:	rts| stripped-down version of fp stuff from /usr/src/lib/libc/crt/fp_save.s| with ALL regs saved/restored#define	COMREG	-4	/* Sky command register offset from __skybase. */#define	STCREG	-2	/* Sky status register offset from __skybase. */#define SKYSAVE 0x1040	/* Sky context save command. */#define SKYRESTORE 0x1041 /* Sky context restore command. */#define SKYNOP 0x1063 	/* Sky noop command. */#define IOCTL	0x40020000#define	FPABASEADDRESS	0xe0000000f68881_save:	fmovem	fp0-fp7, a0@	fmovem	fpcr/fpsr/fpiar, a0@(96)	rtsf68881_restore:	fmovem	a0@+, fp0-fp7	fmovem	a0@, fpcr/fpsr/fpiar	rts.globl	_getskyfdfsky_save:	movel	__skybase,a11:	movew	a1@(STCREG),d0	btst	#14,d0	beqs	2f			| Branch if busy.	movew	#SKYNOP,a0@(32)	bras	8f2:	tstw	a1@(STCREG)	bpls	1b			| Branch if i/o not ready.	pea	a0@(32)			| Push address of pc save area.	movel	#IOCTL,sp@-	jsr	_getskyfd		| obtain __sky_fd	movl	d0,sp@-			| Push sky descriptor.skyioctl:	jsr	_ioctl	addl	#12,sp			| Remove parameters.8:	movew	#SKYNOP,a1@(COMREG)	movew	#SKYSAVE,a1@(COMREG)	movel	a1@,a0@	movel	a1@,a0@(4)	movel	a1@,a0@(8)	movel	a1@,a0@(12)	movel	a1@,a0@(16)	movel	a1@,a0@(20)	movel	a1@,a0@(24)	movel	a1@,a0@(28)	rtsfsky_restore:	movel	__skybase,a11:	movew	a1@(STCREG),d0	btst	#14,d0	beqs	2f			| Branch if busy.	bras	8f2:	tstw	a1@(STCREG)	bpls	1b			| Branch if i/o not ready.	pea	a0@(36)			| Push address of scratch area.	movel	#IOCTL,sp@-	jsr	_getskyfd	movel	d0,sp@-			| Push sky descriptor.rskyioctl:	jsr	_ioctl	addl	#12,sp			| Remove parameters.8:	movew	#SKYNOP,a1@(COMREG)	movew	#SKYRESTORE,a1@(COMREG)	movel	a0@,a1@	movel	a0@(4),a1@	movel	a0@(8),a1@	movel	a0@(12),a1@	movel	a0@(16),a1@	movel	a0@(20),a1@	movel	a0@(24),a1@	movel	a0@(28),a1@1:	movew	a1@(STCREG),d0	btst	#14,d0	beqs	1b	movew	a0@(32),a1@(COMREG)	rtsffpa_save:	fmovem	fp0-fp7,a0@	addl	#96,a0	fmovem	fpcr/fpsr/fpiar,a0@+	movel	#(FPABASEADDRESS+0xf14),a1	movel	a1@+,a0@+		| Stable read imask.	movel	a1@+,a0@+		| Stable read load_ptr.	movel	a1@+,a0@+		| Stable read ierr.	movel	a1@+,a0@+		| Active instruction.	movel	a1@+,a0@+		| Active data 1.	movel	a1@+,a0@+		| Active data 2.	movel	a1@+,a0@+		| Next instruction.	movel	a1@+,a0@+		| Next data 1.	movel	a1@+,a0@+		| Next data 2.	movel	a1@+,a0@+		| Stable read weitek mode.	movel	a1@+,a0@+		| Stable read weitek status.	movel	#0,0xe0000f84		| Clear pipe.	movel	#(FPABASEADDRESS+0xe00),a1	movel	a1@+,a0@+		| fpa0	movel	a1@+,a0@+		| fpa0	movel	a1@+,a0@+		| fpa1	movel	a1@+,a0@+		| fpa1	movel	a1@+,a0@+		| fpa2	movel	a1@+,a0@+		| fpa2	movel	a1@+,a0@+		| fpa3	movel	a1@+,a0@+		| fpa3|	Set up almost like a new context.	movel	#(FPABASEADDRESS),a1	movel	#0,a1@(0xf1c)		| Clear ierr.	movel	#0,a1@(0xf14)		| Set imask = 0 since SIGFPE					| may already be signalled.	fpmove@1 #2,fpamode		| Set FPA mode to default.	fmovel	#0,fpsr	fmovel	#0,fpcr	rtsffpa_restore:	movel	#0,0xe0000f84		|  Clear pipe.	fmovem	a0@+,fp0-fp7	fmovem	a0@+,fpcr/fpsr/fpiar	addl	#44,a0	movel	#(FPABASEADDRESS+0xc00),a1	movel	a0@+,a1@+		| fpa0	movel	a0@+,a1@+		| fpa0	movel	a0@+,a1@+		| fpa1	movel	a0@+,a1@+		| fpa1	movel	a0@+,a1@+		| fpa2	movel	a0@+,a1@+		| fpa2	movel	a0@+,a1@+		| fpa3	movel	a0@+,a1@+		| fpa3	subl	#76,a0	movel	#(FPABASEADDRESS+0xf14),a1	movel	a0@+,a1@+ 		|  imask.	movel	a0@+,a1@+		|  load_ptr.	movel	a0@+,a1@+		|  ierr.	movel	#(FPABASEADDRESS),a1	movel	a0@(24),d0	andl	#0xf,d0			| Clear all but bottom bits.	fpmove@1	d0,fpamode	fpmove@1	a0@(28),fpastatus	movel	#0,a1@(0x9c4)		| Rewrite shadow registers!	movel	a0@,d0			| Load active instruction.	lea	a0@(8),a0		| Point to active data.	jsr	ffpa_rewrite		| Restore active instruction.	movel	a0@(-4),d0		| Load next instruction.	lea	a0@(8),a0		| Point to next data.	jsr	ffpa_rewrite		| Restore next instruction.	rtsffpa_rewrite:	swap	d0	btst	#15,d0	bnes	9f			| Quit if invalid.	andw	#0x1ffc,d0		| Clear bogus bits.	movel	a0@,a1@(0,d0:w)	swap	d0	btst	#15,d0	bnes	9f			| Quit if invalid.	andw	#0x1ffc,d0		| Clear bogus bits.	movel	a0@(4),a1@(0,d0:w)9:	rts

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲在线视频网站| 国产精品乡下勾搭老头1| 亚洲色图在线播放| 91精品国产综合久久久久| 在线这里只有精品| 99精品视频免费在线观看| 久久国产日韩欧美精品| 亚洲国产日韩av| 一级做a爱片久久| 亚洲欧美日韩精品久久久久| 中文字幕高清不卡| 中文成人综合网| 国产精品嫩草99a| 中文成人av在线| 国产精品欧美久久久久一区二区| 久久人人爽爽爽人久久久| 26uuu国产日韩综合| 欧美精品一区二区三区视频| 日韩一区二区三区在线视频| 日韩三级.com| 精品粉嫩aⅴ一区二区三区四区| 久久久亚洲国产美女国产盗摄| 精品国产一区二区三区四区四| 精品欧美一区二区在线观看| 欧美一级艳片视频免费观看| 日韩免费高清av| 亚洲精品一区二区三区蜜桃下载| 欧美激情综合五月色丁香小说| 视频一区国产视频| 午夜伦欧美伦电影理论片| 免费在线观看一区二区三区| 精品亚洲成a人在线观看| 国产98色在线|日韩| 一本一道久久a久久精品| 欧美亚洲动漫另类| 久久综合色天天久久综合图片| 国产精品久久毛片av大全日韩| 亚洲欧美自拍偷拍| 日本亚洲一区二区| 国产成人精品影院| 色综合视频在线观看| 欧美哺乳videos| 亚洲色图清纯唯美| 国内精品第一页| 欧美性淫爽ww久久久久无| 91精品国产色综合久久久蜜香臀| 日本一区二区三区电影| 亚洲成人av一区二区三区| 国产精品一区不卡| 欧美日韩第一区日日骚| 欧美激情一二三区| 日本亚洲电影天堂| 色婷婷狠狠综合| 国产日韩欧美制服另类| 亚洲福利一二三区| 99视频国产精品| 国产亚洲一区字幕| 美日韩一级片在线观看| 欧美综合天天夜夜久久| 国产精品乱码妇女bbbb| 国产高清久久久| 日本高清视频一区二区| 成人综合在线观看| 欧美videossexotv100| 精品一二三四区| 国产欧美日韩另类视频免费观看| 九色porny丨国产精品| 欧洲精品一区二区| 欧美国产综合一区二区| 美女视频网站久久| 欧美日韩一区 二区 三区 久久精品 | 亚洲欧美一区二区三区孕妇| 麻豆成人综合网| 在线观看成人免费视频| 欧美国产精品v| 国产精一区二区三区| 欧美日韩在线观看一区二区 | 欧美美女喷水视频| 国产精品久久久久久户外露出| 紧缚奴在线一区二区三区| 精品国精品国产| 久久电影网站中文字幕| 精品国产乱码久久久久久老虎| 久久精品av麻豆的观看方式| 日韩你懂的电影在线观看| 久久精品国产久精国产爱| 2024国产精品| 高清日韩电视剧大全免费| 中文字幕一区二区不卡| 色婷婷综合久久久久中文一区二区 | 日韩三级电影网址| 成人久久视频在线观看| 日韩二区三区在线观看| 久久在线免费观看| 91首页免费视频| 日韩av网站在线观看| 久久精品夜夜夜夜久久| aaa欧美日韩| 日韩精品电影在线| 精品国产一区二区三区四区四| 国产成人亚洲综合a∨猫咪| 亚洲老妇xxxxxx| 日韩一区二区三| 成人深夜视频在线观看| 一区二区国产视频| 精品国内片67194| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 午夜精品福利一区二区三区av| 亚洲视频在线观看三级| 99re热这里只有精品视频| 亚洲成人7777| 中文字幕日韩一区| 欧美一区二区福利视频| 国产盗摄一区二区三区| 亚洲一卡二卡三卡四卡| 欧美激情中文字幕一区二区| 欧美日韩精品专区| 91蜜桃传媒精品久久久一区二区| 奇米亚洲午夜久久精品| 最新国产成人在线观看| 日韩你懂的电影在线观看| 99热在这里有精品免费| 国产裸体歌舞团一区二区| 亚洲国产wwwccc36天堂| 国产精品国产三级国产aⅴ入口| 日韩一区二区三区高清免费看看 | 蜜桃久久精品一区二区| 午夜影院在线观看欧美| 中文字幕在线免费不卡| 一区在线观看视频| **欧美大码日韩| 国产精品传媒视频| 美女脱光内衣内裤视频久久影院| 亚洲国产精品一区二区久久恐怖片 | 黄色日韩网站视频| 天堂一区二区在线| 亚洲一区二区三区四区五区中文| 国产人伦精品一区二区| 久久免费国产精品| 精品成人佐山爱一区二区| 91麻豆精品国产自产在线| 91久久精品网| 在线亚洲免费视频| 欧美撒尿777hd撒尿| 欧美日韩一区二区三区四区| 色素色在线综合| 欧美视频在线不卡| 欧美三级视频在线| 欧美三级乱人伦电影| 欧美色精品天天在线观看视频| 欧美午夜精品一区二区蜜桃| 欧美日韩国产乱码电影| 日韩一区二区免费电影| 欧美一区二区三区视频免费| 日韩视频免费直播| 国产欧美一区二区三区网站| 国产日韩欧美一区二区三区乱码| 国产欧美日韩不卡| 亚洲三级理论片| 偷窥国产亚洲免费视频| 另类中文字幕网| 成人一区二区三区中文字幕| 97精品久久久久中文字幕 | 国产高清亚洲一区| 色国产精品一区在线观看| 欧美日韩一区精品| 精品国产伦一区二区三区观看体验 | 午夜在线电影亚洲一区| 黑人巨大精品欧美一区| 欧美日韩国产精品成人| 欧美日韩一区二区在线观看| 26uuu精品一区二区三区四区在线| 国产精品久久久久永久免费观看| 一区二区三区欧美| 精品亚洲国产成人av制服丝袜 | 丰满放荡岳乱妇91ww| 欧美午夜精品电影| 国产亚洲一二三区| 日本中文字幕一区二区视频 | 免费在线观看一区| 成人免费福利片| 日韩欧美一二区| 亚洲精品成人少妇| 国产综合久久久久久久久久久久| 色婷婷亚洲婷婷| 久久丝袜美腿综合| 水野朝阳av一区二区三区| 99视频一区二区三区| 久久久电影一区二区三区| 午夜激情一区二区| www.欧美.com| 久久精品网站免费观看| 青娱乐精品视频在线| 91福利精品第一导航| 国产欧美综合在线| 精品一区二区在线视频| 欧美日韩午夜影院| 伊人婷婷欧美激情| 99re视频这里只有精品| 久久午夜羞羞影院免费观看|