答复: ARM1176 goes wild when MMU on line

rocky 914059751 at qq.com
Mon Oct 26 04:43:45 EDT 2009


Hi,Peter:)
	Thanks for you tips! 
	It appears that ARM1176 implementing an revised ARMv7 CPU ID, though
it's based on an ARMv6 core. I changed ARMv6 cpu mask of cache function in
arch/arm/boot/compressed/head.S, kernel still pops in decompress_kernel. I
really don't know how to debug this, any advise would be really appreciated.


--rocky




-----邮件原件-----
发件人: Peter Pearse [mailto:peter.pearse at arm.com] 
发送时间: 2009年10月26日 16:28
收件人: 'rocky'
主题: RE: ARM1176 goes wild when MMU on line

http://www.arm.com/products/CPUs/ARM1176.html 

> -----Original Message-----
> From: linux-arm-kernel-bounces at lists.infradead.org 
> [mailto:linux-arm-kernel-bounces at lists.infradead.org] On 
> Behalf Of rocky
> Sent: 20 October 2009 11:19
> To: 'Laurent Desnogues'
> Cc: 'linux-arm-kernel'
> Subject: 答复: ARM1176 goes wild when MMU on line
> 
> ARM1176 is definitely an ARMv7 VMSA! Its CPUID is:0x410FB764, 
> check the following code to see how does kernel code decide 
> which architecture operation procedure to use.
> 
> BTW: S3C6410 is also based on ARM1176 core, it uses ARMv7 
> cache calls as well.
> 
> --------------- Arch/arm/boot/compressed/head.S -------------------
> /*
>  * Here follow the relocatable cache support functions for the
>  * various processors.  This is a generic hook for locating an
>  * entry and jumping to an instruction at the specified offset
>  * from the start of the block.  Please note this is all position
>  * independent code.
>  *
>  *  r1  = corrupted
>  *  r2  = corrupted
>  *  r3  = block offset
>  *  r6  = corrupted
>  *  r12 = corrupted
>  */
> 
> call_cache_fn:	adr	r12, proc_types
> #ifdef CONFIG_CPU_CP15
> 		mrc	p15, 0, r6, c0, c0	@ get processor ID
> #else
> 		ldr	r6, =CONFIG_PROCESSOR_ID
> #endif
> 1:		ldr	r1, [r12, #0]		@ get value
> 		ldr	r2, [r12, #4]		@ get mask
> 		eor	r1, r1, r6		@ (real ^ match)
> 		tst	r1, r2			@       & mask
> 		addeq	pc, r12, r3		@ call cache function
> 		add	r12, r12, #4*5
> 		b	1b
> proc_types
> 		.word	0x000f0000		@ new CPU Id
> 		.word	0x000f0000
> 		b	__armv7_mmu_cache_on
> 		b	__armv7_mmu_cache_off
> 		b	__armv7_mmu_cache_flush
> 
> -----邮件原件-----
> 发件人: Laurent Desnogues [mailto:laurent.desnogues at gmail.com]
> 发送时间: 2009年10月20日 18:00
> 收件人: 胡杨树
> 抄送: linux-arm-kernel
> 主题: Re: ARM1176 goes wild when MMU on line
> 
> 2009/10/20 胡杨树 <914059751 at qq.com>:
> > ARM1176 has ARMv7 VMSA. ?Am I missing something obvious?
> 
> Is that a typo? ARM1176 is an ARMv6 chip, not an ARMv7 one.
> 
> 
> Laurent
> 
> 
> 
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
> 







More information about the linux-arm-kernel mailing list