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

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

?? mc.68k

?? 用于motorala 68K系列處理器的小實時多任務操作系統 The OMU Kernel was written to provide a cut-down Unix-like O/S for a
?? 68K
字號:
*******************************************************************************	Mc.68k		Machine code system wrappers*******************************************************************************; Mc - machine code assist for 68000 Unix. T.Barnaby 27-4-85;	Included is the system call, process switch and;	user function call wrappers which saves and recovers the;	state of the proccessor.;	.globl   _proclen	.globl   _wrapper, _cur_proc	.globl	_smaskon, _smaskoff*******************************************************************************	Wrapper		System call wrapper*******************************************************************************;	The wrapper saves the current processes state onto the system stack;	and into the process table.;	It is passed on the system stack:-;;		vector number		- 2	68010 only;		Return address		- 4;		Processor status	- 2;		Function address	- 4	C function to call;		Return address 		- 4	Return to wrapper calling func;;		Registers d0, a0, d1, a1 contain arguments for the function;; 	global variable 'cur_proc' points to the process table;	structure the first element (register pointer),of;	which points to the last state on the users system stack.;	The processors registers are stored onto;	this stack and the register pointer is set to point to them.;	They are layed out as follows:-;;/*; *	U_regs		Proccesor registers as held on system stack; */;struct u_regs {;0	long		laststate;	/* Previous state pointer */;4	long		d0;		/* Data registers */;8	long		d1;;12	long		d2;;16	long		d3;;20	long		d4;;24	long		d5;;28	long		d6;;32	long		d7;;;36	long		a0;	/* Address registers (you don't say!) */;40	long		a1;;44	long		a2;;48	long		a3;;52	long		a4;;56	long		a5;;60	long		a6;;;64	long		usp;		/* User stack pointer */;68	long		ret;		/* Return to wrapper calling func */;72	long		func;		/* Function to call */;76	short		sr;		/* Status register */;78	long		pc;		/* Program counter */;82	short		vec;		/* Vector number 68010 only */;};; Main system entry point via trap #0, process switch vi trap #1, and; faults via other traps.; Saves onto curent system stack all registers, and user sp, saves; last system state (registers) onto stack and sets curent state; pointer to new value of system stack (ie pointing to present state); If old states pointer is 0 (first system call) then it is set; to point to the end of the system stack for this process.; Note the global varible "_proclen" is used to determin the size; of the process table, and hence the top of the system stack for; this process.; ; Recovers present state pointer, and recovers registers from here._wrapper:	movem.l	d0-a7,-(a7)	;Saves all registers	jsr	_spl6		;Interupts off	move.l	d0,d1		;Save last interupt state in d1	move.l	usp,a1		;Gets user stack pointer	move.l	a1,60(a7)	;Saves	movea.l	_cur_proc,a0	;Sets a0 to start of cur_proc table	move.l	(a0),-(a7)	;Saves last system sp on stack	cmpi.l	#0,(a7)		;Checks if first access to stack	bne	snotfirst	;Not first access	move.l	_proclen,d0	;Gets process table length	add.l	_cur_proc,d0	;Offsets from start of process table	move.l	d0,(a7)		;Sets value on stack to equal start of sys stacksnotfirst:	move.l	a7,(a0)		;Saves system stack pointer in proc table	movea.l	a7,a6		;Puts stack pointer into a6	move.l	12(a6),-(a7)	;Saves arguments on stack d2	move.l	40(a6),-(a7)	;Saves arguments on stack a1	move.l	8(a6),-(a7)	;Saves arguments on stack d1	move.l	36(a6),-(a7)	;Saves arguments on stack a0	move.l	4(a6),-(a7)	;Saves arguments on stack d0	movea.l	72(a6),a1	;Gets function address into a1	move.l	d1,-(a7)	;Returns interupts to previous state	jsr	_splx	addq.l	#4,a7	jsr	(a1)		;System call	jsr	_spl6		;Interupts off	move.l	d0,d1		;Save last interupt state in d1	adda.l	#20,a7		;Recovers stack due to arguments	movea.l	_cur_proc,a0	;Sets a0 to start of cur_proc table	movea.l (a0),a7		;Resets system stack pointer	move.l  (a7)+,(a0)	;Recover previous system sp	movea.l	60(a7),a1	;Gets user sp	move.l	a1,usp	move.l	d1,-(a7)	;Returns interupts to previous state	jsr	_splx	addq.l	#4,a7	movem.l	(a7)+,d0-a6	;Recovers all registers except a7 mega crash!	addq.l	#4,a7		;Ignore sys stack pointer	rts*******************************************************************************	Pswtch	Process switch call	Called via wrapper with new*					Process pointer on stack*******************************************************************************	.globl	_pswtch_pswtch:	jsr	_spl6		;Disable all interupts until return from trap	move.l	4(a7),_cur_proc	;Switches to new process	rts			;Returns from wrapper******************************************************************************* Calluser()	Call user routine in user state from kernal (for signals)********************************************************************************	Calls a user function emulating a trap call in user state**	called -	callfunc(function, arg1, arg2, arg3, arg4)*			function = function address to call*			arg1, arg2, arg3, arg4 = arguments to function called***	Calluser()	Calls a user function caught via a signal**	This bit is extremely and uterly horible, because it is legit*	to long jump from a caught signal to another user function.*	What this bit does is first save the process state via the system*	wrapper, then copy the complete state of the processor as*	saved on the system stack, onto the user stack so*	that the long jump bit can get rid of it if so required.*	The system stack is set back to the top and the call*	is made to the user function. If this call returns (no long jump)*	then the state on the user stack will be retrieved and the system*	will return.*	If called using _callu() then the process state will not be saved*	this should only be done assuming that the state has been saved*	elsewhere.*	.globl	_calluser, _callu*	Calluser	First saves process state on stack via wrapper*			Wrapper jumps to callu which jumps to user function*_calluser:	movem.l	d0-d2/a0-a1,-(a7)	move.l	24(a7),d0	;Put arguments into registers	movea.l	28(a7),a0	move.l	32(a7),d1	movea.l	36(a7),a1	move.l	40(a7),d2	move.l	#_callu,-(a7)	;Saves function address on stack	jsr	_wrapper	;Jumps to wrapper	addq.l	#4,a7		;Recovers stack	movem.l	(a7)+,d0-d2/a0-a1	rts_callu:	link	a6,#0		;Saves a6 and sets a6 to new sp	movem.l	d0-a6,-(a7)	;Saves all registers except a7	jsr _spl6		;No interupts	move.l	d0,-(a7)	;Saves interupt state on user stack	move.l	#0,-(a7)	;Renables process switch if off	move.l	_cur_proc,-(a7)	jsr	_smaskoff	addq.l	#8,a7	move.l	d0,-(a7)	;Saves on swtch state on stack* Works out how many bytes on super stack	movea.l	_cur_proc,a0	;Gets process table start address	movea.l	(a0),a0		;Gets address of state on stack	move.l	_cur_proc,d0	;Gets process table start address	add.l	_proclen,d0	;Offsets from start of process table top stack	movea.l	d0,a3		;Saves top of stack in a3	sub.l	a7,d0		;Gets number of bytes on super stack	move.l	d0,-(a7)	;Saves number on super s(to be placed on user s)	move.l	a0,-(a7)	;Saves last state pointer on super stack	addq.l	#8,d0		;Adds 8 to d0 to include last entries* Then copies user state from system stack to user stack* a3 has top of sys stack, a2 is set to current usp	movea.l	64(a0),a2	;Sets user stack pointer	move.l	a2,usp copy:				;Copies state to user stack	move.w	-(a3),-(a2)	subq.l	#2,d0		;D0 is number of words on stack	bne	copy	* Sets system stack pointer to top of stack	move.l	_cur_proc,d0	;Gets process table start address	add.l	_proclen,d0	;Offsets from start of process table	movea.l	d0,a7		;Sets stack pointer to top of stack	movea.l	_cur_proc,a0	;Process table start address	move.l	d0,(a0)		;Sets value of last state entry in process tab* Saves arguments and return address to enter user prog	move.l	24(a6),-(a2)	;User arguments to function on user stack	move.l	20(a6),-(a2)	;User arguments to function on user stack	move.l	16(a6),-(a2)	;User arguments to function	move.l	12(a6),-(a2)	movea.l	8(a6),a1	;Gets function address	move.l	#callret,-(a2)	;Saves return address	move.w	sr,-(a2)	;Saves status register for return super state	move.l	a2,usp		;Sets up new user stack pointer	move.w	#0,sr		;Sets user state interupts on	jmp	(a1)		;Jumps to routine(emulates a trap in user state)*	The super stack has been set to the top of its working area in*	the process table.*	The user stack, has the complete sysstack on it + the following*		No of bytes which are sysstack*		Last state pointer from cur_proc table*		4 x 4 arguments**	If caught signal returns it returns here which will return from*	the previous system call with the super stack state on the user stack*	Note returns in user state with super stack pointer at top of stack.callret:	trap	#2		;Sets super state	jsr	_spl6	move.l	usp,a2		;Gets usp	adda.l	#16,a2		;Ignore arguments passed	movea.l	(a2)+,a1	;Gets last state pointer for process table	move.l	(a2)+,d0	;Get number of bytes on sysstack	adda.l	d0,a2		;Sets a2 to point to top of sysstack data	move.l	a2,usp		;Sets user stack pointer to previous statercopy:				;Copies state to super stack	move.w	-(a2),-(a7)	subq.l	#2,d0		;D0 is number of words on stack	bne	rcopy	movea.l	_cur_proc,a0	;Gets process table start address	move.l	a1,(a0)		;Saves last state pointer in process table	* System is now in state as before user call with state on super stack* and usp as before* Returns smask (process switch state) to previous value ** Previous state is already on stack at sp *	move.l	_cur_proc,-(a7)	jsr	_smaskoff	addq.l	#8,a7	move.l	(a7),-(a7)	;Returns interupts to previous state	jsr	_splx	addq.l	#4,a7	addq.l	#4,a7		;Remove user state info for interupts	movem.l	(a7)+,d0-a6	;Recovers all registers except a7 mega crash!	movea.l	(a7)+,a6	;Recovers a6 from link operation	rts			;Returns to calling function*******************************************************************************	Miscalainious routines*******************************************************************************	.globl	_getstack, _setstack, _getusp, _setusp, _getst, _setsr	.globl	_spl7,	_spl6,	_spl5,	_spl4,	_spl3,	_spl2	.globl	_spl1,	_spl0,	_splx_getstack:	move.l a7,d0	rts_setstack:	movea.l	(a7),a6		;Saves new sp in a6	move.l (a7)+,-(a6)	;Saves old return address onto new stack	movea.l a6,a7		;Sets to new sp	rts_getusp:	move.l	a0,-(a7)	;Saves a0	move.l	usp,a0		;Gets user stack pointer	move.l	a0,d0	movea.l	(a7)+,a0	;Recovers stack	rts_setusp:	move.l	a0,-(a7)	;Saves a0	movea.l	8(a7),a0	;Sets user stack pointer	move.l	a0,usp	movea.l	(a7)+,a0	;Recovers stack	rts_getsr:	move.w sr,d0		;Gets status information	rts_setsr:	move.w 6(a7),sr		;Sets status register	rts**	Sets interupt levels	returns present status register*				for use with splx._spl7:				;Sets NMI	move.w sr,d0	move.w #$2700,sr	rts_spl6:				;Sets NMI as well	move.w sr,d0	move.w #$2600,sr	rts_spl5:	move.w sr,d0	move.w #$2500,sr	rts_spl4:	move.w sr,d0	move.w #$2400,sr	rts_spl3:	move.w sr,d0	move.w #$2300,sr	rts_spl2:	move.w sr,d0	move.w #$2200,sr	rts_spl1:	move.w sr,d0	move.w #$2100,sr	rts_spl0:	move.w sr,d0	move.w #$2000,sr	rts_splx:				;Returns to interupt level given	move.l 4(a7),d0	ori.l #$2000,d0	move.w d0,sr	rts

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
丁香激情综合国产| 91精品国产综合久久精品| 日韩欧美中文一区| 亚洲精品成人少妇| 成人性生交大合| 欧美变态口味重另类| 偷拍亚洲欧洲综合| 色综合天天做天天爱| 亚洲精品在线观看视频| 五月婷婷欧美视频| 欧美午夜片在线观看| 中文字幕精品三区| 国产白丝精品91爽爽久久| 日韩欧美一级特黄在线播放| 亚洲国产日韩a在线播放性色| www.亚洲精品| 国产精品乱码一区二区三区软件 | 精品一区二区三区在线视频| 日本电影欧美片| 亚洲精品国产品国语在线app| 色综合天天做天天爱| 精品免费日韩av| 久久99国内精品| 欧美电视剧在线观看完整版| 午夜精品福利视频网站| 欧美日韩日日夜夜| 日韩av一区二区三区四区| 91精品国产综合久久久久| 日韩电影免费在线观看网站| 欧美三级乱人伦电影| 一区二区三区四区在线免费观看| 91久久精品国产91性色tv| 亚洲风情在线资源站| 777奇米四色成人影色区| 韩国毛片一区二区三区| 国产精品久久久久影院| 欧美优质美女网站| 免费看日韩a级影片| 欧美激情一区二区三区| 91视频一区二区| 日韩福利视频网| 国产精品色在线| 欧美肥妇bbw| 国产精品一区二区三区99| 国产精品免费看片| 制服丝袜中文字幕亚洲| 国产传媒一区在线| 亚洲一区免费在线观看| 日韩一区二区三区在线视频| 成人视屏免费看| 日本伊人午夜精品| 亚洲视频一区二区在线| 亚洲一级在线观看| 欧美mv和日韩mv国产网站| 国产不卡视频一区| 日韩av中文字幕一区二区| 国产精品私房写真福利视频| 欧美人狂配大交3d怪物一区| 国产传媒日韩欧美成人| 日产精品久久久久久久性色| 中文字幕一区二区5566日韩| 日韩限制级电影在线观看| 色拍拍在线精品视频8848| 国产一区二区毛片| 日本亚洲最大的色成网站www| 国产精品国产三级国产a| 国产丝袜在线精品| 精品成人一区二区三区| 欧美久久一区二区| 91国在线观看| 99久久精品国产一区二区三区| 免费观看日韩av| 日韩精品视频网站| 亚洲一区二区成人在线观看| 1024成人网色www| 国产精品久久久久久久蜜臀| 精品三级在线看| 欧美精品一区二区蜜臀亚洲| 欧美va日韩va| 精品国产乱码久久久久久闺蜜| 日韩欧美国产电影| 欧美精品一区二区三区蜜桃 | 高清av一区二区| 国产在线视频精品一区| 日本不卡在线视频| 极品少妇xxxx精品少妇| 国产精品69久久久久水密桃| 国产成人精品三级麻豆| 成人福利电影精品一区二区在线观看| 国产成人精品亚洲日本在线桃色| 国产电影一区二区三区| 91亚洲大成网污www| 欧美日韩中字一区| 精品国产免费人成在线观看| 久久精品视频免费观看| 综合色天天鬼久久鬼色| 日韩国产高清在线| 国产大陆a不卡| 欧美老女人第四色| 日本一区二区综合亚洲| 亚洲欧美电影一区二区| 蜜臀av性久久久久蜜臀aⅴ四虎| 国产不卡视频在线观看| 欧美美女bb生活片| 中文字幕不卡的av| 日韩福利电影在线| 99久久精品国产精品久久| 日韩欧美在线影院| 亚洲精品一二三| 狠狠色狠狠色综合系列| 欧美色成人综合| 中文字幕一区二区三区在线不卡| 日韩电影网1区2区| 91搞黄在线观看| 中文字幕精品—区二区四季| 美腿丝袜亚洲综合| 欧美日韩大陆一区二区| 亚洲欧洲日韩一区二区三区| 国产在线看一区| 欧美日韩成人综合在线一区二区| 亚洲色图一区二区| 国产sm精品调教视频网站| 国产成人精品影视| 在线免费观看视频一区| 国产精品免费网站在线观看| 国内一区二区在线| 日韩午夜三级在线| 美洲天堂一区二卡三卡四卡视频| 欧美色图片你懂的| 亚洲成人你懂的| 欧美色视频一区| 亚洲va欧美va人人爽| 一本色道综合亚洲| 亚洲区小说区图片区qvod| 波多野结衣91| 综合久久久久久| 色婷婷激情一区二区三区| 亚洲三级电影网站| 欧美日韩精品是欧美日韩精品| 亚洲综合成人在线| 日韩手机在线导航| 国产一区二区三区在线观看精品 | 欧美午夜片在线看| 亚洲不卡在线观看| 日韩小视频在线观看专区| 国产一区欧美日韩| 国产欧美一区二区精品仙草咪| 大桥未久av一区二区三区中文| 国产精品久久久久久久久动漫 | 国产乱人伦偷精品视频免下载| 久久久精品黄色| 色噜噜狠狠成人中文综合| 亚洲第一会所有码转帖| 精品国产青草久久久久福利| 成人高清免费观看| 亚洲国产三级在线| 26uuu国产日韩综合| 成人精品亚洲人成在线| 亚洲一级二级在线| 久久精品综合网| 欧美在线免费观看亚洲| 久久精品72免费观看| 亚洲欧美一区二区三区国产精品 | 欧美精品久久一区| 粉嫩av一区二区三区粉嫩| 亚洲图片欧美色图| 国产精品欧美极品| 日韩一区二区免费视频| av色综合久久天堂av综合| 老色鬼精品视频在线观看播放| 国产精品初高中害羞小美女文| 欧美一级日韩不卡播放免费| 91麻豆精品视频| 国产成人亚洲综合a∨猫咪| 免费在线看成人av| 亚洲午夜私人影院| 亚洲欧美日韩电影| 国产精品免费av| 国产午夜精品一区二区三区视频| 欧美日韩国产一二三| 99久久国产综合色|国产精品| 国产精品系列在线播放| 日韩不卡手机在线v区| 亚洲第一成人在线| 一区二区在线观看av| 亚洲欧美一区二区三区久本道91| 久久久亚洲精华液精华液精华液| 91精品蜜臀在线一区尤物| 欧美性大战久久久| 日本高清免费不卡视频| 色婷婷综合在线| 欧美亚洲丝袜传媒另类| 91久久线看在观草草青青| 日本道在线观看一区二区| 色欧美乱欧美15图片| 欧美中文一区二区三区| 粉嫩aⅴ一区二区三区四区| 亚洲欧洲精品成人久久奇米网| 欧美国产视频在线| 国产精品素人一区二区|