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

📄 pacache.s

📁 这个linux源代码是很全面的~基本完整了~使用c编译的~由于时间问题我没有亲自测试~但就算用来做参考资料也是非常好的
💻 S
📖 第 1 页 / 共 2 页
字号:
	stw %r20,36(%r28)	stw %r21,40(%r28)	stw %r22,44(%r28)	ldw 48(%r29),%r19	ldw 52(%r29),%r20	ldw 56(%r29),%r21	ldw 60(%r29),%r22	stw %r19,48(%r28)	stw %r20,52(%r28)	stw %r21,56(%r28)	stw %r22,60(%r28)	ldo 64(%r28),%r28	ADDIB>  -1,%r1,1b	ldo 64(%r29),%r29	bv      %r0(%r2)	nop	.exit	.procend#endif	.export clear_user_page_asm,codeclear_user_page_asm:	.proc	.callinfo NO_CALLS	.entry	tophys_r1 %r26	ldil    L%(TMPALIAS_MAP_START),%r28#ifdef __LP64__	extrd,u %r26,56,32,%r26 /* convert phys addr to tlb insert format */	depd    %r25,63,22,%r28 /* Form aliased virtual address 'to' */	depdi   0,63,12,%r28    /* Clear any offset bits */#else	extrw,u %r26,24,25,%r26 /* convert phys addr to tlb insert format */	depw    %r25,31,22,%r28 /* Form aliased virtual address 'to' */	depwi   0,31,12,%r28    /* Clear any offset bits */#endif	/* Purge any old translation */	pdtlb   0(%r28)	ldi 64,%r11:	stw %r0,0(%r28)	stw %r0,4(%r28)	stw %r0,8(%r28)	stw %r0,12(%r28)	stw %r0,16(%r28)	stw %r0,20(%r28)	stw %r0,24(%r28)	stw %r0,28(%r28)	stw %r0,32(%r28)	stw %r0,36(%r28)	stw %r0,40(%r28)	stw %r0,44(%r28)	stw %r0,48(%r28)	stw %r0,52(%r28)	stw %r0,56(%r28)	stw %r0,60(%r28)	ADDIB>  -1,%r1,1b	ldo 64(%r28),%r28	bv      %r0(%r2)	nop	.exit	.procend	.export flush_kernel_dcache_pageflush_kernel_dcache_page:	.proc	.callinfo NO_CALLS	.entry	ldil    L%dcache_stride,%r1	ldw     R%dcache_stride(%r1),%r23#ifdef __LP64__	depdi,z 1,63-PAGE_SHIFT,1,%r25#else	depwi,z 1,31-PAGE_SHIFT,1,%r25#endif	add     %r26,%r25,%r25	sub     %r25,%r23,%r251:      fdc,m   %r23(%r26)	fdc,m   %r23(%r26)	fdc,m   %r23(%r26)	fdc,m   %r23(%r26)	fdc,m   %r23(%r26)	fdc,m   %r23(%r26)	fdc,m   %r23(%r26)	fdc,m   %r23(%r26)	fdc,m   %r23(%r26)	fdc,m   %r23(%r26)	fdc,m   %r23(%r26)	fdc,m   %r23(%r26)	fdc,m   %r23(%r26)	fdc,m   %r23(%r26)	fdc,m   %r23(%r26)	CMPB<<  %r26,%r25,1b	fdc,m   %r23(%r26)	sync	bv      %r0(%r2)	nop	.exit	.procend	.export purge_kernel_dcache_pagepurge_kernel_dcache_page:	.proc	.callinfo NO_CALLS	.entry	ldil    L%dcache_stride,%r1	ldw     R%dcache_stride(%r1),%r23#ifdef __LP64__	depdi,z 1,63-PAGE_SHIFT,1,%r25#else	depwi,z 1,31-PAGE_SHIFT,1,%r25#endif	add      %r26,%r25,%r25	sub      %r25,%r23,%r251:      pdc,m   %r23(%r26)	pdc,m   %r23(%r26)	pdc,m   %r23(%r26)	pdc,m   %r23(%r26)	pdc,m   %r23(%r26)	pdc,m   %r23(%r26)	pdc,m   %r23(%r26)	pdc,m   %r23(%r26)	pdc,m   %r23(%r26)	pdc,m   %r23(%r26)	pdc,m   %r23(%r26)	pdc,m   %r23(%r26)	pdc,m   %r23(%r26)	pdc,m   %r23(%r26)	pdc,m   %r23(%r26)	CMPB<<  %r26,%r25,1b	pdc,m   %r23(%r26)	sync	bv      %r0(%r2)	nop	.exit	.procend#if 0	/* Currently not used, but it still is a possible alternate	 * solution.	 */	.export flush_alias_pageflush_alias_page:	.proc	.callinfo NO_CALLS	.entry	tophys_r1 %r26	ldil    L%(TMPALIAS_MAP_START),%r28#ifdef __LP64__	extrd,u %r26,56,32,%r26 /* convert phys addr to tlb insert format */	depd    %r25,63,22,%r28 /* Form aliased virtual address 'to' */	depdi   0,63,12,%r28    /* Clear any offset bits */#else	extrw,u %r26,24,25,%r26 /* convert phys addr to tlb insert format */	depw    %r25,31,22,%r28 /* Form aliased virtual address 'to' */	depwi   0,31,12,%r28    /* Clear any offset bits */#endif	/* Purge any old translation */	pdtlb   0(%r28)	ldil    L%dcache_stride,%r1	ldw     R%dcache_stride(%r1),%r23#ifdef __LP64__	depdi,z 1,63-PAGE_SHIFT,1,%r29#else	depwi,z 1,31-PAGE_SHIFT,1,%r29#endif	add      %r28,%r29,%r29	sub      %r29,%r23,%r291:      fdc,m   %r23(%r28)	fdc,m   %r23(%r28)	fdc,m   %r23(%r28)	fdc,m   %r23(%r28)	fdc,m   %r23(%r28)	fdc,m   %r23(%r28)	fdc,m   %r23(%r28)	fdc,m   %r23(%r28)	fdc,m   %r23(%r28)	fdc,m   %r23(%r28)	fdc,m   %r23(%r28)	fdc,m   %r23(%r28)	fdc,m   %r23(%r28)	fdc,m   %r23(%r28)	fdc,m   %r23(%r28)	CMPB<<  %r28,%r29,1b	fdc,m   %r23(%r28)	sync	bv      %r0(%r2)	nop	.exit	.procend#endif	.export flush_user_dcache_range_asmflush_user_dcache_range_asm:	.proc	.callinfo NO_CALLS	.entry	ldil    L%dcache_stride,%r1	ldw     R%dcache_stride(%r1),%r23	ldo     -1(%r23),%r21	ANDCM   %r26,%r21,%r261:      CMPB<<,n %r26,%r25,1b	fdc,m   %r23(%sr3,%r26)	sync	bv      %r0(%r2)	nop	.exit	.procend	.export flush_kernel_dcache_range_asmflush_kernel_dcache_range_asm:	.proc	.callinfo NO_CALLS	.entry	ldil    L%dcache_stride,%r1	ldw     R%dcache_stride(%r1),%r23	ldo     -1(%r23),%r21	ANDCM   %r26,%r21,%r261:      CMPB<<,n %r26,%r25,1b	fdc,m   %r23(%r26)	sync	syncdma	bv      %r0(%r2)	nop	.exit	.procend	.export flush_user_icache_range_asmflush_user_icache_range_asm:	.proc	.callinfo NO_CALLS	.entry	ldil    L%icache_stride,%r1	ldw     R%icache_stride(%r1),%r23	ldo     -1(%r23),%r21	ANDCM   %r26,%r21,%r261:      CMPB<<,n %r26,%r25,1b	fic,m   %r23(%sr3,%r26)	sync	bv      %r0(%r2)	nop	.exit	.procend	.export flush_kernel_icache_pageflush_kernel_icache_page:	.proc	.callinfo NO_CALLS	.entry	ldil    L%icache_stride,%r1	ldw     R%icache_stride(%r1),%r23#ifdef __LP64__	depdi,z 1,63-PAGE_SHIFT,1,%r25#else	depwi,z 1,31-PAGE_SHIFT,1,%r25#endif	add     %r26,%r25,%r25	sub     %r25,%r23,%r251:      fic,m   %r23(%r26)	fic,m   %r23(%r26)	fic,m   %r23(%r26)	fic,m   %r23(%r26)	fic,m   %r23(%r26)	fic,m   %r23(%r26)	fic,m   %r23(%r26)	fic,m   %r23(%r26)	fic,m   %r23(%r26)	fic,m   %r23(%r26)	fic,m   %r23(%r26)	fic,m   %r23(%r26)	fic,m   %r23(%r26)	fic,m   %r23(%r26)	fic,m   %r23(%r26)	CMPB<<  %r26,%r25,1b	fic,m   %r23(%r26)	sync	bv      %r0(%r2)	nop	.exit	.procend	.export flush_kernel_icache_range_asmflush_kernel_icache_range_asm:	.proc	.callinfo NO_CALLS	.entry	ldil    L%icache_stride,%r1	ldw     R%icache_stride(%r1),%r23	ldo     -1(%r23),%r21	ANDCM   %r26,%r21,%r261:      CMPB<<,n %r26,%r25,1b	fic,m   %r23(%r26)	sync	bv      %r0(%r2)	nop	.exit	.procend	.align 128	.export disable_sr_hashing_asm,codedisable_sr_hashing_asm:	.proc	.callinfo NO_CALLS	.entry	/* Switch to real mode */	ssm     0,%r0           /* relied upon translation! */	nop	nop	nop	nop	nop	nop	nop		rsm     (PSW_SM_Q|PSW_SM_I),%r0 /* disable Q&I to load the iia queue */	ldil    L%REAL_MODE_PSW, %r1	ldo     R%REAL_MODE_PSW(%r1), %r1	mtctl	%r1, %cr22	mtctl	%r0, %cr17	mtctl	%r0, %cr17	ldil    L%PA(1f),%r1	ldo     R%PA(1f)(%r1),%r1	mtctl	%r1, %cr18	ldo	4(%r1), %r1	mtctl	%r1, %cr18	rfi	nop1:      cmpib,=,n SRHASH_PCXST,%r26,srdis_pcxs	cmpib,=,n SRHASH_PCXL,%r26,srdis_pcxl	cmpib,=,n SRHASH_PA20,%r26,srdis_pa20	b,n       srdis_donesrdis_pcxs:	/* Disable Space Register Hashing for PCXS,PCXT,PCXT' */	.word           0x141c1a00  /* mfdiag %dr0,%r28 */	.word           0x141c1a00  /* must issue twice */	depwi           0,18,1,%r28 /* Clear DHE (dcache hash enable) */	depwi           0,20,1,%r28 /* Clear IHE (icache hash enable) */	.word           0x141c1600  /* mtdiag %r28,%dr0 */	.word           0x141c1600  /* must issue twice */	b,n             srdis_donesrdis_pcxl:	/* Disable Space Register Hashing for PCXL */	.word           0x141c0600  /* mfdiag %dr0,%r28 */	depwi           0,28,2,%r28 /* Clear DHASH_EN & IHASH_EN */	.word           0x141c0240  /* mtdiag %r28,%dr0 */	b,n             srdis_donesrdis_pa20:	/* Disable Space Register Hashing for PCXU,PCXU+,PCXW,PCXW+ */	.word           0x144008bc  /* mfdiag %dr2,%r28 */	depdi           0,54,1,%r28 /* clear DIAG_SPHASH_ENAB (bit 54) */	.word           0x145c1840  /* mtdiag %r28,%dr2 */srdis_done:	/* Switch back to virtual mode */	rsm     PSW_SM_Q,%r0           /* clear Q bit to load iia queue */	ldil	L%KERNEL_PSW, %r1	ldo	R%KERNEL_PSW(%r1), %r1	mtctl	%r1, %cr22	mtctl	%r0, %cr17	mtctl	%r0, %cr17	ldil    L%(2f), %r1	ldo     R%(2f)(%r1), %r1	mtctl	%r1, %cr18	ldo	4(%r1), %r1	mtctl	%r1, %cr18	rfi	nop2:      bv      %r0(%r2)	nop	.exit	.procend	.end

⌨️ 快捷键说明

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