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

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

?? ipleckd.s

?? ARM 嵌入式 系統 設計與實例開發 實驗教材 二源碼
?? S
字號:
##  arch/s390/boot/ipleckd.S#    IPL record for 3380/3390 DASD##  S390 version#    Copyright (C) 1999,2000 IBM Deutschland Entwicklung GmbH, IBM Corporation#    Author(s): Holger Smolinski <Holger.Smolinski@de.ibm.com>### FIXME:	 should use the countarea to determine the blocksize# FIXME:	 should insert zeroes into memory when filling holes# FIXME:	 calculate blkpertrack from rdc data and blksize# change 09/20/00       removed obsolete store of ipldevice to textesegment# Usage of registers# r1:	ipl subchannel ( general use, dont overload without save/restore !)# r10:# r13:	base register 	index to 0x0000# r14:	callers address# r15:	temporary save register (we have no stack!)# storage layout:#include <asm/lowcore.h>		.org 0.psw:	.long 0x00080000,0x80000000+_start.ccw1:	.long 0x06000000,0x00001000     # Re-Read enough of bootsector to start.ccw2:	.long 0x00000000,0x00000000	# read countarea of record 1 to s/w.	.org 0x58.Lextn:	.long	0x000a0000,0x00000000+.Lextn.Lsvcn:	.long	0x000a0000,0x00000000+.Lsvcn.Lprgn:	.long	0x00080000,0x00000000+.Lecs.Lmcn:	.long	0x000a0000,0x00000000+.Lmcn.Lion:	.long   0x00080000,0x80000000+.Lionewaddr	.org 0xe0.Llstad:.long 	0x00000000,0x00000000	# sectorno + ct of bootlist	.org 0xf0			# Lets start now..._start: .globl _start	l  	%r1,__LC_SUBCHANNEL_ID	# get IPL-subchannel from lowcore	st	%r1,__LC_IPLDEV         # keep it for reipl	stsch	.Lrdcdata	oi      .Lrdcdata+5,0x84        # enable ssch and multipath mode.Lecs:  xi	.Lrdcdata+27,0x01	# enable concurrent sense	msch	.Lrdcdata	        xi      .Lprgn,6                # restore Wait and d/a bit in PCnew PSW	l	%r2,.Lparm	mvc     0x0(8,%r2),.Lnull       # set parmarea to null	lctl	%c6,%c6,.Lc6     	# enable all interrupts.Lrdc:					# read device characteristics	la	%r6,.Lrdcccw     	st      %r6,.Lorb+8		# store cp-address to orb	bras    %r15,.Lssch		# start I/O	oi	.Llodata+1,0x80	lh	%r5,.Lcountarea+6	# init r5 from countarea	stcm	%r5,3,.Lrdccw+2		# and store into rd template *FIXME*	stcm	%r5,3,.Llodata+14	# and store into lodata *FIXME*.Lbootlist:		l	%r2,.Llstad		l	%r3,.Lblklst     	lhi	%r4,1	bras	%r14,.Lreadblks.Lloader:		l	%r10,.Lblklst     	# r10 is index to bootlist	lhi	%r5,4			# r5:	skip 4 blocks = firstpage.....Lkloop:	clc	.Lnull(8),0(%r10)	# test blocklist		jz	.Lchkparm		# end of list?	l	%r2,0(%r10)		# get startblock to r2	slr	%r4,%r4			# erase r4	icm	%r4,1,7(%r10)		# get blockcount	slr	%r3,%r3			# get address to r3	icm 	%r3,0xe,4(%r10)	chi	%r5,0			# still blocks to skip?	jz	.Ldoread		# no: start reading	cr	%r5,%r4			# #skipblocks >= blockct?	jm	.L007			# no: skip the blocks one by one.L006:		sr	%r5,%r4			# decrease number of blocks to skip	j	.Lkcont			# advance to next entry.L007:		ahi	%r2,1			# skip 1 block...	bctr    %r4,0                   # update blockct	ah	%r3,.Lcountarea+6       # increment address	bct	%r5,.L007		# 4 blocks skipped?.Ldoread:	ltr	%r2,%r2			# test startblock	jz	.Lzeroes		# startblocks is zero (hole).Ldiskread:		bras	%r14,.Lreadblks	j	.Lkcont.Lzeroes:	lr	%r2,%r3.L001:	slr	%r3,%r3	icm	%r3,3,.Lcountarea+6     # get blocksize	slr	%r5,%r5			# no bytes to move.L008:	mvcle	%r2,%r4,0   		# fill zeroes to storage	jo	.L008			# until block is filled	brct	%r4,.L001   		# skip to next block.Lkcont:		ahi	%r10,8	j	.Lkloop.Lchkparm:	lm	%r3,%r4,.Lstart         # load .Lstart and .Lparm	clc	0x0(4,%r4),.Lnull     	je	.Lrunkern	mvc	0x480(128,%r3),0(%r4)	# move 1k-0x80 to parmarea	mvc	0x500(256,%r3),0x80(%r4)	mvc	0x600(256,%r3),0x180(%r4)	mvc	0x700(256,%r3),0x280(%r4).Lrunkern:#	lhi	%r2,17#	sll	%r2,12#	st	%r1,0xc6c(%r2)		# store iplsubchannel to lowcore#	st	%r1,0xc6c		# store iplsubchannel to lowcore	br	%r3# This function does the start IO# r2:	number of first block to read ( input by caller )# r3:	address to read data to ( input by caller )# r4:	number of blocks to read ( input by caller )# r5:	destroyed# r6:	blocks per track ( input by caller )# r7:	number of heads # r8:	# r9:	# r10:	# r11:	temporary register# r12:	local use for base address# r13:	base address for module# r14:	address of caller for subroutine# r15:	temporary save register (since we have no stack).Lreadblks:	la	%r12,.Ldeccw     	st	%r12,8+.Lorb		# store cpaddr to orb	ahi	%r12,0x10		# increment r12 to point to rdccw	oi	1(%r12),0x40		# set CC in rd template	# first setup the read CCWs	lr	%r15,%r4		# save number or blocks	slr	%r7,%r7	icm	%r7,3,.Lrdcdata+14      # load heads to r7	lhi     %r6,9	clc     .Lrdcdata+3(2),.L9345	je	.L011	lhi	%r6,10	clc	.Lrdcdata+3(2),.L3380	je	.L011	lhi	%r6,12	clc	.Lrdcdata+3(2),.L3390     	je	.L011			        bras 	%r14,.Ldisab.L011:		# loop for nbl times.Lrdloop:		mvc	0(8,%r12),.Lrdccw     	# copy template to this ccw	st	%r3,4(%r12)		# store target address to this ccw	bct	%r4,.L005		# decrement no of blks still to do	ni	1(%r12),0x3f		# delete CC from last ccw	lr	%r4,%r15		# restore number of blocks	# read CCWs are setup now			stcm	%r4,3,.Llodata+2     	# store blockno to lodata clears r4	ar	%r4,%r2			# r4 (clear): ebl = blk + nbl	bctr    %r4,0			# decrement r4 ( last blk touched 	srda	%r2,32			# trk = blk / bpt, bot = blk % bpt 	dr	%r2,%r6			# r3: trk, r2: bot	ahi	%r2,1			# bot++ ( we start counting at 1 )	stcm	%r2,1,.Llodata+12     	# store bot to lodata	xr 	%r2,%r2			# cy  = trk / heads, hd  = trk % heads	dr	%r2,%r7			# r3: cy, r2: hd	sll	%r3,16			# combine to CCHH in r3	or	%r3,%r2	st	%r3,.Ldedata+8     	# store cchh to dedata		st	%r3,.Llodata+4     	# store cchh to lodata		st	%r3,.Llodata+8     	# store cchh to lodata		lr	%r15,%r5		# save r5	srda	%r4,32			# tr2 = ebl / bpt	dr	%r4,%r6			# r5: tr2, r4: bot2	xr 	%r4,%r4			# cy2 = tr2 / heads, hd2 = hd2 % heads	dr	%r4,%r7			# r5: cy2, r4: hd2 	stcm	%r5,3,.Ldedata+12     	# store cy2,hd2 to dedata	stcm	%r4,3,.Ldedata+14     	# store cy2,hd2 to dedata	lr	%r5,%r15		# restore r5	# CCWs are setup now, arent they?	bras	%r15,.Lssch		# start I/O	br	%r14			# return to caller.L005:		ah 	%r3,.Lcountarea+6     	# add blocksize to target address	ahi	%r12,8			# add sizeof(ccw) to base address	j	.Lrdloop# end of function# This function does the start IO# r1:	Subchannel number# r8:	ORB address# r9:	IRB address.Lssch:	lhi     %r13,10			# initialize retries.L012:		ssch	.Lorb			# start I/O	jz	.Ltpi			# ok?	bras	%r14,.Ldisab		# error.Ltpi:		lpsw	.Lwaitpsw     		# load wait-PSW.Lionewaddr:		c	%r1,0xb8     		# compare to ipl subhchannel	jnz	.Ltpi			# not equal: loop	clc	0xbc(4),.Lorb 		# cross check the intparm	jnz	.Ltpi               	# not equal:	loop 	tsch    .Lirb			# get status	tm	.Lirb+9,0xff		# channel status ?	jz	.L003			# CS == 0x00	bras	%r14,.Ldisab		# error.L003:	tm	.Lirb+8,0xf3		# DS different from CE/DE	jz	.L004			# ok ?	bct	%r13,.L012		# retries <= 5 ?	bras	%r14,.Ldisab		# error.L004:	tm	.Lirb+8,0x04		# DE set?	jz	.Ltpi			# DE not set, loop.Lsschend:	br	%r15			# return to caller# end of function# In case of error goto disabled wait with %r14 containing the caller.Ldisab:	st	%r14,.Ldisabpsw+4     	lpsw	.Ldisabpsw     # FIXME pre-initialized data should be listed first# NULLed storage can be taken from anywhere ;) .Lblklst:		.long   0x00002000     	.align 8.Ldisabpsw: 	.long 0x000a0000,0x00000000.Lwaitpsw:	.long 0x020a0000,0x00000000+.Ltpi.Lorb:		.long 0x0049504c,0x0080ff00	# intparm is " IPL".Lc6:	.long 0xff000000.Lstart:	.long	0x00010000              # do not separate .Lstart and .Lparm.Lparm:		.long	0x00008000              # they are loaded with a LM.L3390:	.word 	0x3390.L9345:	.word	0x9345.L3380:	.word	0x3380.Lnull:		.long 0x00000000,0x00000000	.align 4.Lrdcdata:	.long 0x00000000,0x00000000	.long 0x00000000,0x00000000	.long 0x00000000,0x00000000	.long 0x00000000,0x00000000	.long 0x00000000,0x00000000	.long 0x00000000,0x00000000	.long 0x00000000,0x00000000	.long 0x00000000,0x00000000.Lirb:	.long 0x00000000,0x00000000	.long 0x00000000,0x00000000	.long 0x00000000,0x00000000	.long 0x00000000,0x00000000	.long 0x00000000,0x00000000	.long 0x00000000,0x00000000	.long 0x00000000,0x00000000	.long 0x00000000,0x00000000.Lcountarea:		.word 0x0000			# cyl;	.word 0x0000			# head;	.byte 0x00			# record;	.byte 0x00			# key length;	.word 0x0000			# data length == blocksize;.Ldedata:	.long 0x40c00000,0x00000000	.long 0x00000000,0x00000000.Llodata:	.long 0x06000001,0x00000000	.long 0x00000000,0x01000000	.long 0x12345678	.org 0x7c8.Lrdcccw:				# CCW read device characteristics	.long 0x64400040,0x00000000+.Lrdcdata	.long 0x63400010,0x00000000+.Ldedata	.long 0x47400010,0x00000000+.Llodata	.long 0x12000008,0x00000000+.Lcountarea.Ldeccw:	.long 0x63400010,0x00000000+.Ldedata.Lloccw:	.long 0x47400010,0x00000000+.Llodata.Lrdccw:		.long 0x86400000,0x00000000	.org 0x800# end of pre initialized data is here CCWarea follows# from here we load 1k blocklist # end of function

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久青草青青国产亚洲免观| 狠狠v欧美v日韩v亚洲ⅴ| 国产亚洲欧洲997久久综合| 久久影院电视剧免费观看| 日本一区二区久久| 国产精品国模大尺度视频| 亚洲一区av在线| 精品亚洲成a人在线观看| 日本高清不卡视频| 国产欧美一区二区三区在线老狼| 中文字幕在线视频一区| 日韩精品91亚洲二区在线观看| 国产成a人无v码亚洲福利| 欧美色图免费看| 国产精品国模大尺度视频| 免费高清在线视频一区·| 不卡的电视剧免费网站有什么| 欧美精品99久久久**| 亚洲乱码一区二区三区在线观看| 精品一区二区免费视频| 91精品久久久久久久91蜜桃| 一区二区免费视频| 色婷婷国产精品| 亚洲视频小说图片| www.亚洲色图| 国产精品大尺度| 成人aaaa免费全部观看| 欧美国产综合色视频| 99久久99久久精品国产片果冻| 久久精品视频一区| 国产精品系列在线观看| 国产日本欧洲亚洲| 91丨九色丨蝌蚪丨老版| 亚洲一区av在线| 精品少妇一区二区三区视频免付费| 午夜精品福利一区二区蜜股av | 欧美精品 日韩| 久久精品72免费观看| 久久久综合视频| 色综合网色综合| 国产在线精品国自产拍免费| 精品第一国产综合精品aⅴ| 亚洲综合色在线| 亚洲精品在线三区| 一本一道波多野结衣一区二区| 亚洲一卡二卡三卡四卡无卡久久 | 中文字幕免费观看一区| 一本色道**综合亚洲精品蜜桃冫| 亚洲精品大片www| 久久久久久综合| 一本色道久久综合亚洲精品按摩| 美女一区二区在线观看| 一区二区三区日韩在线观看| 久久综合久久综合久久| 91影院在线观看| 国产一区视频网站| 日韩电影在线一区二区三区| 亚洲欧美怡红院| 国产精品毛片久久久久久| 日韩欧美成人激情| 欧美一区二区大片| 4438亚洲最大| 91麻豆精品国产91久久久久久 | 免费高清在线视频一区·| 亚洲色图欧洲色图| 亚洲欧洲99久久| 亚洲免费观看在线观看| 亚洲黄色av一区| 亚洲二区在线观看| 亚洲成va人在线观看| 亚洲成人av中文| 日韩影院免费视频| 日韩中文字幕1| 国产乱码精品一区二区三| 国产91精品久久久久久久网曝门| 国产米奇在线777精品观看| 国产一区免费电影| 91久久精品网| 日韩女优av电影| 综合色中文字幕| 美女高潮久久久| 成人av免费在线| 欧美日韩二区三区| 国产精品久久久久久久久果冻传媒 | 欧美国产视频在线| 亚洲人成精品久久久久久| 亚洲国产日韩a在线播放性色| 捆绑调教一区二区三区| 一本久久a久久精品亚洲| 日韩欧美一二三| 亚洲国产成人va在线观看天堂| 国产麻豆精品在线| 91精品国产综合久久久久久| 国产精品伦理一区二区| 狠狠色丁香久久婷婷综| 欧美精品日韩综合在线| 亚洲欧洲精品一区二区三区| 国产成人免费视频精品含羞草妖精| 在线影视一区二区三区| 亚洲欧洲日韩在线| 91在线观看污| 亚洲视频图片小说| 色综合天天综合网天天狠天天 | 欧美精品日韩一区| 午夜久久久影院| 欧美日韩一级大片网址| 一区二区三区中文字幕| 欧美怡红院视频| 五月天精品一区二区三区| 777奇米四色成人影色区| 日本女优在线视频一区二区| 日韩欧美一级二级三级| 九色综合国产一区二区三区| 久久久久久免费| 91年精品国产| 日韩成人午夜精品| 久久久久久久久久电影| 99国产麻豆精品| 日韩影视精彩在线| 国产精品久久久久久久久免费桃花 | 91在线观看污| 奇米888四色在线精品| 日本一区二区三区四区在线视频| av不卡在线观看| 日本大胆欧美人术艺术动态| 国产人伦精品一区二区| 欧美三级视频在线观看| 国产精品18久久久久久久久| 亚洲一区二区三区三| 欧美激情一区二区三区全黄| 欧美四级电影网| 99精品视频在线播放观看| 秋霞电影一区二区| 亚洲成人午夜电影| 中文字幕佐山爱一区二区免费| 日韩西西人体444www| 欧美午夜精品一区二区蜜桃| 高清国产一区二区| 国产剧情一区二区| 激情深爱一区二区| 麻豆成人91精品二区三区| 天天综合天天做天天综合| 日本美女一区二区三区视频| 亚洲成国产人片在线观看| 亚洲成人精品一区二区| 亚洲一区二区三区四区五区黄| 国产精品免费人成网站| 亚洲蜜臀av乱码久久精品蜜桃| 中文字幕欧美日本乱码一线二线 | av在线一区二区三区| 97超碰欧美中文字幕| 精品视频一区 二区 三区| 欧美日韩激情一区二区三区| 欧美天堂亚洲电影院在线播放| 91官网在线观看| 日韩美女视频在线| 中文字幕精品一区二区精品绿巨人 | 久久精品在线观看| 亚洲色图19p| 日本亚洲天堂网| 不卡在线视频中文字幕| 欧美三级三级三级| 欧美激情一区二区三区蜜桃视频| 亚洲激情校园春色| 国产精品538一区二区在线| 成人免费看片app下载| 欧美一区二区网站| 国产精品久久久久一区| 免费高清在线一区| 欧美日韩一区二区不卡| 亚洲色图20p| 成人午夜伦理影院| 欧美精品一区二区三区蜜桃| 亚洲综合视频网| 9l国产精品久久久久麻豆| 精品成人在线观看| 青娱乐精品在线视频| 欧美日韩国产经典色站一区二区三区| 久久久久久亚洲综合| 久久av资源网| 久久精品视频在线看| 极品美女销魂一区二区三区免费| 欧美亚洲动漫精品| 调教+趴+乳夹+国产+精品| 欧美日免费三级在线| 日韩高清电影一区| 精品国产乱码久久久久久图片 | 国产激情精品久久久第一区二区| 91精品国模一区二区三区| 成熟亚洲日本毛茸茸凸凹| 亚洲国产电影在线观看| 91色porny蝌蚪| 秋霞午夜av一区二区三区| 日韩精品一区二区在线| 成人美女视频在线观看18| 亚洲一二三区不卡| 久久伊人蜜桃av一区二区| 国产成人av一区二区三区在线观看| 亚洲欧美日韩国产综合| 制服丝袜亚洲色图|