kernel/head.S start_here

Prasad, Siva Siva.Prasad at smartm.com
Thu Nov 15 13:06:38 EST 2001


Hi,

I am using HHL2.0 PCore LSP to build my Embedded Linux on PPC 750.

In the arch/ppc/kernel/head.S, there is a branch to "start_here" using SRR0
and SRR1.
~~~~~~~~~~~~~~~~
turn_on_mmu:
	mfmsr	r0
	ori	r0,r0,MSR_DR|MSR_IR
	mtspr	SRR1,r0
	lis	r0,start_here at h
	ori	r0,r0,start_here at l
	mtspr	SRR0,r0
	SYNC
	RFI				/* enables MMU */
~~~~~~~~~~~~~~~~

In the code above, address of start_here is moved to register r0. Here it is
moving the address "c00..." as value, and will not be changed as the code is
relocated.
What beats me is ... How come it is able to go to label pointed by
"start_here"?.

Whole issue came because, When I plug in a PMC card into another PMC slot,
Linux doesn't boot (hangs after printing "Now booting kernel"). I used JTAG
to find out that, it is branching to "c000..." location (because of the
above mentioned problem), instead of going to correct locations after
relocation. Those "c00..." locations are PCI locations.
What I don't understand is... "How come Linux boots when this card is not
plugged in, even though it branches to "c00...".

Any pointers would be great.

Thanks,
-- Siva Prasad

** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/





More information about the Linuxppc-embedded mailing list