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

📄 boot_head.s

📁 linux 内核源代码
💻 S
字号:
/* * Copyright (C) 1998-2003 Hewlett-Packard Co *	David Mosberger-Tang <davidm@hpl.hp.com> */#include <asm/asmmacro.h>#include <asm/pal.h>	.bss	.align 16stack_mem:	.skip 16834	.text/* This needs to be defined because lib/string.c:strlcat() calls it in case of error... */GLOBAL_ENTRY(printk)	break 0END(printk)GLOBAL_ENTRY(_start)	.prologue	.save rp, r0	.body	movl gp = __gp	movl sp = stack_mem+16384-16	bsw.1	br.call.sptk.many rp=start_bootloader0:	nop 0		  /* dummy nop to make unwinding work */END(_start)/* * Set a break point on this function so that symbols are available to set breakpoints in * the kernel being debugged. */GLOBAL_ENTRY(debug_break)	br.ret.sptk.many b0END(debug_break)GLOBAL_ENTRY(ssc)	.regstk 5,0,0,0	mov r15=in4	break 0x80001	br.ret.sptk.many b0END(ssc)GLOBAL_ENTRY(jmp_to_kernel)	.regstk 2,0,0,0	mov r28=in0	mov b7=in1	br.sptk.few b7END(jmp_to_kernel)/* * r28 contains the index of the PAL function * r29--31 the args * Return values in ret0--3 (r8--11) */GLOBAL_ENTRY(pal_emulator_static)	mov r8=-1	mov r9=256	;;	cmp.gtu p6,p7=r9,r28		/* r28 <= 255? */(p6)	br.cond.sptk.few static	;;	mov r9=512	;;	cmp.gtu p6,p7=r9,r28(p6)	br.cond.sptk.few stacked	;;static:	cmp.eq p6,p7=PAL_PTCE_INFO,r28(p7)	br.cond.sptk.few 1f	;;	mov r8=0			/* status = 0 */	movl r9=0x100000000		/* tc.base */	movl r10=0x0000000200000003	/* count[0], count[1] */	movl r11=0x1000000000002000	/* stride[0], stride[1] */	br.cond.sptk.few rp1:	cmp.eq p6,p7=PAL_FREQ_RATIOS,r28(p7)	br.cond.sptk.few 1f	mov r8=0			/* status = 0 */	movl r9 =0x100000064		/* proc_ratio (1/100) */	movl r10=0x100000100		/* bus_ratio<<32 (1/256) */	movl r11=0x100000064		/* itc_ratio<<32 (1/100) */	;;1:	cmp.eq p6,p7=PAL_RSE_INFO,r28(p7)	br.cond.sptk.few 1f	mov r8=0			/* status = 0 */	mov r9=96			/* num phys stacked */	mov r10=0			/* hints */	mov r11=0	br.cond.sptk.few rp1:	cmp.eq p6,p7=PAL_CACHE_FLUSH,r28		/* PAL_CACHE_FLUSH */(p7)	br.cond.sptk.few 1f	mov r9=ar.lc	movl r8=524288			/* flush 512k million cache lines (16MB) */	;;	mov ar.lc=r8	movl r8=0xe000000000000000	;;.loop:	fc r8	add r8=32,r8	br.cloop.sptk.few .loop	sync.i	;;	srlz.i	;;	mov ar.lc=r9	mov r8=r0	;;1:	cmp.eq p6,p7=PAL_PERF_MON_INFO,r28(p7)	br.cond.sptk.few 1f	mov r8=0			/* status = 0 */	movl r9 =0x08122f04		/* generic=4 width=47 retired=8 cycles=18 */	mov r10=0			/* reserved */	mov r11=0			/* reserved */	mov r16=0xffff			/* implemented PMC */	mov r17=0x3ffff			/* implemented PMD */	add r18=8,r29			/* second index */	;;	st8 [r29]=r16,16		/* store implemented PMC */	st8 [r18]=r0,16			/* clear remaining bits  */	;;	st8 [r29]=r0,16			/* clear remaining bits  */	st8 [r18]=r0,16			/* clear remaining bits  */	;;	st8 [r29]=r17,16		/* store implemented PMD */	st8 [r18]=r0,16			/* clear remaining bits  */	mov r16=0xf0			/* cycles count capable PMC */	;;	st8 [r29]=r0,16			/* clear remaining bits  */	st8 [r18]=r0,16			/* clear remaining bits  */	mov r17=0xf0			/* retired bundles capable PMC */	;;	st8 [r29]=r16,16		/* store cycles capable */	st8 [r18]=r0,16			/* clear remaining bits  */	;;	st8 [r29]=r0,16			/* clear remaining bits  */	st8 [r18]=r0,16			/* clear remaining bits  */	;;	st8 [r29]=r17,16		/* store retired bundle capable */	st8 [r18]=r0,16			/* clear remaining bits  */	;;	st8 [r29]=r0,16			/* clear remaining bits  */	st8 [r18]=r0,16			/* clear remaining bits  */	;;1:	cmp.eq p6,p7=PAL_VM_SUMMARY,r28(p7)	br.cond.sptk.few 1f	mov	r8=0			/* status = 0  */	movl	r9=0x2044040020F1865	/* num_tc_levels=2, num_unique_tcs=4 */					/* max_itr_entry=64, max_dtr_entry=64 */					/* hash_tag_id=2, max_pkr=15 */					/* key_size=24, phys_add_size=50, vw=1 */	movl	r10=0x183C		/* rid_size=24, impl_va_msb=60 */	;;1:	cmp.eq p6,p7=PAL_MEM_ATTRIB,r28(p7)	br.cond.sptk.few 1f	mov	r8=0			/* status = 0 */	mov	r9=0x80|0x01		/* NatPage|WB */	;;1:	br.cond.sptk.few rpstacked:	br.ret.sptk.few rpEND(pal_emulator_static)

⌨️ 快捷键说明

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