porting linux ppc on custom board, stuck in timer loop ?

Xavier Grave grave at ipno.in2p3.fr
Tue Jun 28 23:10:26 EST 2005

Hi !

I still try to port linux ppc on our ppc405 based hardware, after a look
at xilinx_ml300.c file that gives the list of function calls I wait for
a call to start_kernel but I found that start_kernel is never reached...
In fact the code in head_4xx.S jumps to 0x00001000 which is Decrementer
exception :

	bl	machine_init
	bl	MMU_init
	/* Go back to running unmapped so we can load up new values
 * and change to using our exception vectors.
 * On the 4xx, all we have to do is invalidate the TLB to clear
 * the old 16M byte TLB mappings.
	lis	r4,2f at h
	ori	r4,r4,2f at l
	tophys(r4,r4) /* r4 seems to hold 0x00001000 */
	lis	r3,(MSR_KERNEL & ~(MSR_IR|MSR_DR))@h
	ori	r3,r3,(MSR_KERNEL & ~(MSR_IR|MSR_DR))@l
	mtspr	SPRN_SRR0,r4
	mtspr	SPRN_SRR1,r3
	b	.	/*	 prevent prefetch past rfi */

the previous code jump to decrementer and the code after is never
reached... And so start_kernel also...

/* Load up the kernel context */
	sync			/* Flush to memory before changing TLB */
	isync			/* Flush shadow TLBs */
	/* set up the PTE pointers for the Abatron bdiGDB.
	lis	r6, swapper_pg_dir at h
	ori	r6, r6, swapper_pg_dir at l
	lis	r5, abatron_pteptrs at h
	ori	r5, r5, abatron_pteptrs at l
	stw	r5, 0xf0(r0)	/* Must match your Abatron config file */
	stw	r6, 0(r5)
/* Now turn on the MMU for real! */
	lis	r4,MSR_KERNEL at h
	ori	r4,r4,MSR_KERNEL at l
	lis	r3,start_kernel at h
	ori	r3,r3,start_kernel at l
	mtspr	SPRN_SRR0,r3
	mtspr	SPRN_SRR1,r4
	rfi			/* enable MMU and jump to start_kernel */
	b	.		/* prevent prefetch past rfi */

Is this my hardware implementation that is incorrect ? Or I missed
something in my kernel configuration ?

Thanks in advance for any answer...


More information about the Linuxppc-dev mailing list