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

📄 head.s

📁 LINUX 2.6.17.4的源码
💻 S
📖 第 1 页 / 共 2 页
字号:
.Lagain1: 	l     %r2,INITRD_START+ARCH_OFFSET-PARMAREA(%r12) # ramdisk loc. is temp        bas   %r14,.Lloader                    # load parameter file        ltr   %r2,%r2                          # got anything ?        bz    .Lnopf	chi   %r2,895	bnh   .Lnotrunc	la    %r2,895.Lnotrunc:	l     %r4,INITRD_START+ARCH_OFFSET-PARMAREA(%r12)	clc   0(3,%r4),.L_hdr		       # if it is HDRx	bz    .Lagain1			       # skip dataset header	clc   0(3,%r4),.L_eof		       # if it is EOFx	bz    .Lagain1			       # skip dateset trailer        la    %r5,0(%r4,%r2)        lr    %r3,%r2.Lidebc:        tm    0(%r5),0x80                      # high order bit set ?        bo    .Ldocv                           #  yes -> convert from EBCDIC        ahi   %r5,-1        bct   %r3,.Lidebc        b     .Lnocv.Ldocv:        l     %r3,.Lcvtab        tr    0(256,%r4),0(%r3)                # convert parameters to ascii        tr    256(256,%r4),0(%r3)        tr    512(256,%r4),0(%r3)        tr    768(122,%r4),0(%r3).Lnocv: la    %r3,COMMAND_LINE-PARMAREA(%r12)  # load adr. of command line	mvc   0(256,%r3),0(%r4)	mvc   256(256,%r3),256(%r4)	mvc   512(256,%r3),512(%r4)	mvc   768(122,%r3),768(%r4)        slr   %r0,%r0        b     .Lcntlp.Ldelspc:        ic    %r0,0(%r2,%r3)        chi   %r0,0x20                         # is it a space ?        be    .Lcntlp        ahi   %r2,1        b     .Leolp.Lcntlp:        brct  %r2,.Ldelspc.Leolp:        slr   %r0,%r0        stc   %r0,0(%r2,%r3)                   # terminate buffer.Lnopf:## load ramdisk from ipl device#	.Lagain2: 	l     %r2,INITRD_START+ARCH_OFFSET-PARMAREA(%r12) # addr of ramdisk        bas   %r14,.Lloader                    # load ramdisk 	st    %r2,INITRD_SIZE+ARCH_OFFSET-PARMAREA(%r12) # store size of ramdisk        ltr   %r2,%r2        bnz   .Lrdcont        st    %r2,INITRD_START+ARCH_OFFSET-PARMAREA(%r12) # no ramdisk found.Lrdcont:	l     %r2,INITRD_START+ARCH_OFFSET-PARMAREA(%r12)	clc   0(3,%r2),.L_hdr		       # skip HDRx and EOFx 	bz    .Lagain2	clc   0(3,%r2),.L_eof	bz    .Lagain2#ifdef CONFIG_IPL_VM## reset files in VM reader#        stidp __LC_CPUID                       # store cpuid	tm    __LC_CPUID,0xff                  # running VM ?	bno   .Lnoreset        la    %r2,.Lreset                      lhi   %r3,26	diag  %r2,%r3,8	la    %r5,.Lirb	stsch 0(%r5)			       # check if irq is pending	tm    30(%r5),0x0f		       # by verifying if any of the	bnz   .Lwaitforirq		       # activity or status control	tm    31(%r5),0xff		       # bits is set in the schib	bz    .Lnoreset.Lwaitforirq:	mvc   0x78(8),.Lrdrnewpsw              # set up IO interrupt psw.Lwaitrdrirq:	lpsw  .Lrdrwaitpsw.Lrdrint:	c     %r1,0xb8                         # compare subchannel number	bne   .Lwaitrdrirq	la    %r5,.Lirb	tsch  0(%r5).Lnoreset:        b     .Lnoload	.align 8.Lrdrnewpsw:	.long  0x00080000,0x80000000+.Lrdrint.Lrdrwaitpsw:	.long  0x020a0000,0x80000000+.Lrdrint#endif## everything loaded, go for it#.Lnoload:        l     %r1,.Lstartup        br    %r1.Lparm:	.long  PARMAREA.Lstartup: .long startup.Lcvtab:.long  _ebcasc                         # ebcdic to ascii table.Lreset:.byte  0xc3,0xc8,0xc1,0xd5,0xc7,0xc5,0x40,0xd9,0xc4,0xd9,0x40        .byte  0xc1,0xd3,0xd3,0x40,0xd2,0xc5,0xc5,0xd7,0x40,0xd5,0xd6        .byte  0xc8,0xd6,0xd3,0xc4             # "change rdr all keep nohold".L_eof: .long  0xc5d6c600       /* C'EOF' */.L_hdr: .long  0xc8c4d900       /* C'HDR' */#endif  /* CONFIG_IPL */## SALIPL loader support. Based on a patch by Rob van der Heij.# This entry point is called directly from the SALIPL loader and# doesn't need a builtin ipl record.#        .org  0x800	.globl startstart:	stm   %r0,%r15,0x07b0		# store registers	basr  %r12,%r0.base:	l     %r11,.parm	l     %r8,.cmd			# pointer to command buffer	ltr   %r9,%r9			# do we have SALIPL parameters?	bp    .sk8x8	mvc   0(64,%r8),0x00b0		# copy saved registers	xc    64(240-64,%r8),0(%r8)	# remainder of buffer	tr    0(64,%r8),.lowcase		b     .gotr.sk8x8:	mvc   0(240,%r8),0(%r9)		# copy iplparms into buffer.gotr:	l     %r10,.tbl			# EBCDIC to ASCII table	tr    0(240,%r8),0(%r10)	stidp __LC_CPUID		# Are we running on VM maybe	cli   __LC_CPUID,0xff	bnz   .test	.long 0x83300060		# diag 3,0,x'0060' - storage size	b     .done.test:	mvc   0x68(8),.pgmnw		# set up pgm check handler	l     %r2,.fourmeg	lr    %r3,%r2	bctr  %r3,%r0			# 4M-1.loop:  iske  %r0,%r3	ar    %r3,%r2.pgmx:	sr    %r3,%r2	la    %r3,1(%r3).done:        l     %r1,.memsize	st    %r3,ARCH_OFFSET(%r1)	slr   %r0,%r0	st    %r0,INITRD_SIZE+ARCH_OFFSET-PARMAREA(%r11)	st    %r0,INITRD_START+ARCH_OFFSET-PARMAREA(%r11)	j     startup                   # continue with startup.tbl:	.long _ebcasc			# translate table.cmd:	.long COMMAND_LINE		# address of command line buffer.parm:	.long PARMAREA.memsize: .long memory_size.fourmeg: .long 0x00400000      	# 4M.pgmnw:	.long 0x00080000,.pgmx.lowcase:	.byte 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07 	.byte 0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f	.byte 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17 	.byte 0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f	.byte 0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27 	.byte 0x28,0x29,0x2a,0x2b,0x2c,0x2d,0x2e,0x2f	.byte 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37 	.byte 0x38,0x39,0x3a,0x3b,0x3c,0x3d,0x3e,0x3f	.byte 0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47 	.byte 0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x4e,0x4f	.byte 0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57 	.byte 0x58,0x59,0x5a,0x5b,0x5c,0x5d,0x5e,0x5f	.byte 0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67 	.byte 0x68,0x69,0x6a,0x6b,0x6c,0x6d,0x6e,0x6f	.byte 0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77 	.byte 0x78,0x79,0x7a,0x7b,0x7c,0x7d,0x7e,0x7f	.byte 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87 	.byte 0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f	.byte 0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97 	.byte 0x98,0x99,0x9a,0x9b,0x9c,0x9d,0x9e,0x9f	.byte 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7 	.byte 0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf	.byte 0xb0,0xb1,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7 	.byte 0xb8,0xb9,0xba,0xbb,0xbc,0xbd,0xbe,0xbf	.byte 0xc0,0x81,0x82,0x83,0x84,0x85,0x86,0x87	# .abcdefg 	.byte 0x88,0x89,0xca,0xcb,0xcc,0xcd,0xce,0xcf	# hi	.byte 0xd0,0x91,0x92,0x93,0x94,0x95,0x96,0x97 	# .jklmnop	.byte 0x98,0x99,0xda,0xdb,0xdc,0xdd,0xde,0xdf	# qr	.byte 0xe0,0xe1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7	# ..stuvwx	.byte 0xa8,0xa9,0xea,0xeb,0xec,0xed,0xee,0xef	# yz	.byte 0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7 	.byte 0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfe,0xff.macro GET_IPL_DEVICE.Lget_ipl_device:	basr  %r12,0.LGID:	l     %r1,0xb8			# get sid	sll   %r1,15			# test if subchannel is enabled	srl   %r1,31	ltr   %r1,%r1	bz    0(%r14)			# subchannel disabled	l     %r1,0xb8	la    %r5,.Lipl_schib-.LGID(%r12)	stsch 0(%r5)		        # get schib of subchannel	bnz   0(%r14)			# schib not available	tm    5(%r5),0x01		# devno valid?	bno   0(%r14)	la    %r6,ipl_parameter_flags-.LGID(%r12)	oi    3(%r6),0x01		# set flag	la    %r2,ipl_devno-.LGID(%r12)	mvc   0(2,%r2),6(%r5)		# store devno	tm    4(%r5),0x80		# qdio capable device?	bno   0(%r14)	oi    3(%r6),0x02		# set flag	# copy ipl parameters	lhi   %r0,4096	l     %r2,20(%r0)		# get address of parameter list	lhi   %r3,IPL_PARMBLOCK_ORIGIN	st    %r3,20(%r0)	lhi   %r4,1	cr    %r2,%r3			# start parameters < destination ?	jl    0f	lhi   %r1,1			# copy direction is upwards	j     1f0:	lhi   %r1,-1			# copy direction is downwards	ar    %r2,%r0	ar    %r3,%r0	ar    %r2,%r1	ar    %r3,%r11:	mvc   0(1,%r3),0(%r2)		# finally copy ipl parameters	ar    %r3,%r1	ar    %r2,%r1	sr    %r0,%r4	jne   1b	b     0(%r14)	.align 4.Lipl_schib:	.rept 13	.long 0	.endr	.globl ipl_parameter_flagsipl_parameter_flags:	.long 0	.globl ipl_devnoipl_devno:	.word 0.endm#ifdef CONFIG_64BIT#include "head64.S"#else#include "head31.S"#endif

⌨️ 快捷键说明

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