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

📄 proc-xscale.s

📁 LINUX 2.6.17.4的源码
💻 S
📖 第 1 页 / 共 2 页
字号:
 * Errata 40: must set memory to write-through for user read-only pages. */	.align	5ENTRY(cpu_xscale_set_pte)	str	r1, [r0], #-2048		@ linux version	bic	r2, r1, #0xff0	orr	r2, r2, #PTE_TYPE_EXT		@ extended page	eor	r3, r1, #L_PTE_PRESENT | L_PTE_YOUNG | L_PTE_WRITE | L_PTE_DIRTY	tst	r3, #L_PTE_USER			@ User?	orrne	r2, r2, #PTE_EXT_AP_URO_SRW	@ yes -> user r/o, system r/w	tst	r3, #L_PTE_WRITE | L_PTE_DIRTY	@ Write and Dirty?	orreq	r2, r2, #PTE_EXT_AP_UNO_SRW	@ yes -> user n/a, system r/w						@ combined with user -> user r/w	@	@ Handle the X bit.  We want to set this bit for the minicache	@ (U = E = B = W = 0, C = 1) or when write allocate is enabled,	@ and we have a writeable, cacheable region.  If we ignore the	@ U and E bits, we can allow user space to use the minicache as	@ well.	@	@  X = (C & ~W & ~B) | (C & W & B & write_allocate)	@	eor	ip, r1, #L_PTE_CACHEABLE	tst	ip, #L_PTE_CACHEABLE | L_PTE_WRITE | L_PTE_BUFFERABLE#if PTE_CACHE_WRITE_ALLOCATE	eorne	ip, r1, #L_PTE_CACHEABLE | L_PTE_WRITE | L_PTE_BUFFERABLE	tstne	ip, #L_PTE_CACHEABLE | L_PTE_WRITE | L_PTE_BUFFERABLE#endif	orreq	r2, r2, #PTE_EXT_TEX(1)	@	@ Erratum 40: The B bit must be cleared for a user read-only	@ cacheable page.	@	@  B = B & ~(U & C & ~W)	@	and	ip, r1, #L_PTE_USER | L_PTE_WRITE | L_PTE_CACHEABLE	teq	ip, #L_PTE_USER | L_PTE_CACHEABLE	biceq	r2, r2, #PTE_BUFFERABLE	tst	r3, #L_PTE_PRESENT | L_PTE_YOUNG	@ Present and Young?	movne	r2, #0				@ no -> fault	str	r2, [r0]			@ hardware version	mov	ip, #0	mcr	p15, 0, r0, c7, c10, 1		@ Clean D cache line	mcr	p15, 0, ip, c7, c10, 4		@ Drain Write (& Fill) Buffer	mov	pc, lr	.ltorg	.align	__INIT	.type	__xscale_setup, #function__xscale_setup:	mcr	p15, 0, ip, c7, c7, 0		@ invalidate I, D caches & BTB	mcr	p15, 0, ip, c7, c10, 4		@ Drain Write (& Fill) Buffer	mcr	p15, 0, ip, c8, c7, 0		@ invalidate I, D TLBs#ifdef CONFIG_IWMMXT	mov	r0, #0				@ initially disallow access to CP0/CP1#else	mov	r0, #1				@ Allow access to CP0#endif	orr     r0, r0, #1 << 6			@ cp6 for IOP3xx and Bulverde	orr	r0, r0, #1 << 13		@ Its undefined whether this	mcr	p15, 0, r0, c15, c1, 0		@ affects USR or SVC modes	mrc	p15, 0, r0, c1, c0, 0		@ get control register	ldr	r5, xscale_cr1_clear	bic	r0, r0, r5	ldr	r5, xscale_cr1_set	orr	r0, r0, r5	mov	pc, lr	.size	__xscale_setup, . - __xscale_setup	/*	 *  R	 * .RVI ZFRS BLDP WCAM	 * ..11 1.01 .... .101	 * 	 */	.type	xscale_cr1_clear, #object	.type	xscale_cr1_set, #objectxscale_cr1_clear:	.word	0x3b07xscale_cr1_set:	.word	0x3905	__INITDATA/* * Purpose : Function pointers used to access above functions - all calls *	     come through these */	.type	xscale_processor_functions, #objectENTRY(xscale_processor_functions)	.word	v5t_early_abort	.word	cpu_xscale_proc_init	.word	cpu_xscale_proc_fin	.word	cpu_xscale_reset	.word	cpu_xscale_do_idle	.word	cpu_xscale_dcache_clean_area	.word	cpu_xscale_switch_mm	.word	cpu_xscale_set_pte	.size	xscale_processor_functions, . - xscale_processor_functions	.section ".rodata"	.type	cpu_arch_name, #objectcpu_arch_name:	.asciz	"armv5te"	.size	cpu_arch_name, . - cpu_arch_name	.type	cpu_elf_name, #objectcpu_elf_name:	.asciz	"v5"	.size	cpu_elf_name, . - cpu_elf_name	.type	cpu_80200_name, #objectcpu_80200_name:	.asciz	"XScale-80200"	.size	cpu_80200_name, . - cpu_80200_name	.type	cpu_8032x_name, #objectcpu_8032x_name:	.asciz	"XScale-IOP8032x Family"	.size	cpu_8032x_name, . - cpu_8032x_name	.type	cpu_8033x_name, #objectcpu_8033x_name:	.asciz	"XScale-IOP8033x Family"	.size	cpu_8033x_name, . - cpu_8033x_name	.type	cpu_pxa250_name, #objectcpu_pxa250_name:	.asciz	"XScale-PXA250"	.size	cpu_pxa250_name, . - cpu_pxa250_name	.type	cpu_pxa210_name, #objectcpu_pxa210_name:	.asciz	"XScale-PXA210"	.size	cpu_pxa210_name, . - cpu_pxa210_name	.type	cpu_ixp42x_name, #objectcpu_ixp42x_name:	.asciz	"XScale-IXP42x Family"	.size	cpu_ixp42x_name, . - cpu_ixp42x_name	.type	cpu_ixp46x_name, #objectcpu_ixp46x_name:	.asciz	"XScale-IXP46x Family"	.size	cpu_ixp46x_name, . - cpu_ixp46x_name	.type	cpu_ixp2400_name, #objectcpu_ixp2400_name:	.asciz	"XScale-IXP2400"	.size	cpu_ixp2400_name, . - cpu_ixp2400_name	.type	cpu_ixp2800_name, #objectcpu_ixp2800_name:	.asciz	"XScale-IXP2800"	.size	cpu_ixp2800_name, . - cpu_ixp2800_name	.type	cpu_pxa255_name, #objectcpu_pxa255_name:	.asciz	"XScale-PXA255"	.size	cpu_pxa255_name, . - cpu_pxa255_name	.type	cpu_pxa270_name, #objectcpu_pxa270_name:	.asciz	"XScale-PXA270"	.size	cpu_pxa270_name, . - cpu_pxa270_name	.align	.section ".proc.info.init", #alloc, #execinstr	.type	__80200_proc_info,#object__80200_proc_info:	.long	0x69052000	.long	0xfffffff0	.long   PMD_TYPE_SECT | \		PMD_SECT_BUFFERABLE | \		PMD_SECT_CACHEABLE | \		PMD_SECT_AP_WRITE | \		PMD_SECT_AP_READ	b	__xscale_setup	.long	cpu_arch_name	.long	cpu_elf_name	.long	HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP	.long	cpu_80200_name	.long	xscale_processor_functions	.long	v4wbi_tlb_fns	.long	xscale_mc_user_fns	.long	xscale_cache_fns	.size	__80200_proc_info, . - __80200_proc_info	.type	__8032x_proc_info,#object__8032x_proc_info:	.long	0x69052420	.long	0xfffff5e0      @ mask should accomodate IOP80219 also	.long   PMD_TYPE_SECT | \		PMD_SECT_BUFFERABLE | \		PMD_SECT_CACHEABLE | \		PMD_SECT_AP_WRITE | \		PMD_SECT_AP_READ	b	__xscale_setup	.long	cpu_arch_name	.long	cpu_elf_name	.long	HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP	.long	cpu_8032x_name	.long	xscale_processor_functions	.long	v4wbi_tlb_fns	.long	xscale_mc_user_fns	.long	xscale_cache_fns	.size	__8032x_proc_info, . - __8032x_proc_info	.type	__8033x_proc_info,#object__8033x_proc_info:	.long	0x69054010	.long	0xffffff30	.long   PMD_TYPE_SECT | \		PMD_SECT_BUFFERABLE | \		PMD_SECT_CACHEABLE | \		PMD_SECT_AP_WRITE | \		PMD_SECT_AP_READ	b	__xscale_setup	.long	cpu_arch_name	.long	cpu_elf_name	.long	HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP	.long	cpu_8033x_name	.long	xscale_processor_functions	.long	v4wbi_tlb_fns	.long	xscale_mc_user_fns	.long	xscale_cache_fns	.size	__8033x_proc_info, . - __8033x_proc_info	.type	__pxa250_proc_info,#object__pxa250_proc_info:	.long	0x69052100	.long	0xfffff7f0	.long   PMD_TYPE_SECT | \		PMD_SECT_BUFFERABLE | \		PMD_SECT_CACHEABLE | \		PMD_SECT_AP_WRITE | \		PMD_SECT_AP_READ	b	__xscale_setup	.long	cpu_arch_name	.long	cpu_elf_name	.long	HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP	.long	cpu_pxa250_name	.long	xscale_processor_functions	.long	v4wbi_tlb_fns	.long	xscale_mc_user_fns	.long	xscale_cache_fns	.size	__pxa250_proc_info, . - __pxa250_proc_info	.type	__pxa210_proc_info,#object__pxa210_proc_info:	.long	0x69052120	.long	0xfffff3f0	.long   PMD_TYPE_SECT | \		PMD_SECT_BUFFERABLE | \		PMD_SECT_CACHEABLE | \		PMD_SECT_AP_WRITE | \		PMD_SECT_AP_READ	b	__xscale_setup	.long	cpu_arch_name	.long	cpu_elf_name	.long	HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP	.long	cpu_pxa210_name	.long	xscale_processor_functions	.long	v4wbi_tlb_fns	.long	xscale_mc_user_fns	.long	xscale_cache_fns	.size	__pxa210_proc_info, . - __pxa210_proc_info	.type	__ixp2400_proc_info, #object__ixp2400_proc_info:	.long   0x69054190	.long   0xfffffff0	.long   PMD_TYPE_SECT | \		PMD_SECT_BUFFERABLE | \		PMD_SECT_CACHEABLE | \		PMD_SECT_AP_WRITE | \		PMD_SECT_AP_READ	b       __xscale_setup	.long   cpu_arch_name	.long   cpu_elf_name	.long   HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP	.long   cpu_ixp2400_name	.long   xscale_processor_functions	.long	v4wbi_tlb_fns	.long	xscale_mc_user_fns	.long	xscale_cache_fns	.size   __ixp2400_proc_info, . - __ixp2400_proc_info                	.type	__ixp2800_proc_info, #object__ixp2800_proc_info:	.long   0x690541a0	.long   0xfffffff0	.long   PMD_TYPE_SECT | \		PMD_SECT_BUFFERABLE | \		PMD_SECT_CACHEABLE | \		PMD_SECT_AP_WRITE | \		PMD_SECT_AP_READ	b       __xscale_setup	.long   cpu_arch_name	.long   cpu_elf_name	.long   HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP	.long   cpu_ixp2800_name	.long   xscale_processor_functions	.long	v4wbi_tlb_fns	.long	xscale_mc_user_fns	.long	xscale_cache_fns	.size   __ixp2800_proc_info, . - __ixp2800_proc_info                	.type	__ixp42x_proc_info, #object__ixp42x_proc_info:	.long   0x690541c0	.long   0xffffffc0	.long   PMD_TYPE_SECT | \		PMD_SECT_BUFFERABLE | \		PMD_SECT_CACHEABLE | \		PMD_SECT_AP_WRITE | \		PMD_SECT_AP_READ	b       __xscale_setup	.long   cpu_arch_name	.long   cpu_elf_name	.long   HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP	.long   cpu_ixp42x_name	.long   xscale_processor_functions	.long	v4wbi_tlb_fns	.long	xscale_mc_user_fns	.long	xscale_cache_fns	.size   __ixp42x_proc_info, . - __ixp42x_proc_info                	.type	__ixp46x_proc_info, #object__ixp46x_proc_info:	.long   0x69054200	.long   0xffffff00	.long   0x00000c0e	b       __xscale_setup	.long   cpu_arch_name	.long   cpu_elf_name	.long   HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP	.long   cpu_ixp46x_name	.long   xscale_processor_functions	.long	v4wbi_tlb_fns	.long	xscale_mc_user_fns	.long	xscale_cache_fns	.size   __ixp46x_proc_info, . - __ixp46x_proc_info	.type	__pxa255_proc_info,#object__pxa255_proc_info:	.long	0x69052d00	.long	0xfffffff0	.long   PMD_TYPE_SECT | \		PMD_SECT_BUFFERABLE | \		PMD_SECT_CACHEABLE | \		PMD_SECT_AP_WRITE | \		PMD_SECT_AP_READ	b	__xscale_setup	.long	cpu_arch_name	.long	cpu_elf_name	.long	HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP	.long	cpu_pxa255_name	.long	xscale_processor_functions	.long	v4wbi_tlb_fns	.long	xscale_mc_user_fns	.long	xscale_cache_fns	.size	__pxa255_proc_info, . - __pxa255_proc_info	.type	__pxa270_proc_info,#object__pxa270_proc_info:	.long	0x69054110	.long	0xfffffff0	.long   PMD_TYPE_SECT | \		PMD_SECT_BUFFERABLE | \		PMD_SECT_CACHEABLE | \		PMD_SECT_AP_WRITE | \		PMD_SECT_AP_READ	b	__xscale_setup	.long	cpu_arch_name	.long	cpu_elf_name	.long	HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP	.long	cpu_pxa270_name	.long	xscale_processor_functions	.long	v4wbi_tlb_fns	.long	xscale_mc_user_fns	.long	xscale_cache_fns	.size	__pxa270_proc_info, . - __pxa270_proc_info

⌨️ 快捷键说明

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