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
rfi
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 */
2:
sync /* Flush to memory before changing TLB */
tlbia
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 */
tophys(r5,r5)
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...
xavier
More information about the Linuxppc-dev
mailing list