From: Chris Dumoulin <cdumoulin@ics-ltd.com>
To: linuxppc-embedded@ozlabs.org
Subject: Calculating virtual address from physical address
Date: Fri, 05 May 2006 11:08:48 -0400 [thread overview]
Message-ID: <445B6A80.2090202@ics-ltd.com> (raw)
I'm using a Virtex II Pro-based board with a PPC405. The board is
hanging somewhere very early in the kernel boot process. I believe it
may be dying at the point where the MMU is enabled. In order to
determine the exact point at which my board hangs, I'm blinking two LEDs
in the assembly code found in arch/ppc/kernel/head_4xx.S, . Currently I
am only able to successfully access the LEDs before the MMU is turned
on, but I can't be sure that I'm calculating the virtual address
properly when I try to access the LED after the MMU is turned on.
My LEDs are at address 0x4F600000 and my CONFIG_KERNEL_START is
0xC0000000. If this address were low enough, I would just add 0xC0000000
to the address to get the virtual address, but since my LED address is
so high, the sum will be well past the 32-bit maximum address value. How
is a virtual address calculated for a high address like 0x4F600000?
BTW, he is the assembly code that I'm working with (from
arch/ppc/kernel/head_4xx.S):
.text
_GLOBAL(_stext)
_GLOBAL(_start)
/* Save parameters we are passed.
*/
mr r31,r3
mr r30,r4
mr r29,r5
mr r28,r6
mr r27,r7
/* CRD: set LED state here */
lis r26,0x4F600000@h
ori r26,r26,0x4F600000@l
li r25,LED_STATE_0
stw r25,0(r26)
/* We have to turn on the MMU right away so we get cache modes
* set correctly.
*/
bl initial_mmu
/* CRD: set LED state here */
lis r26,0x4F600000@h
ori r26,r26,0x4F600000@l
li r25,LED_STATE_1
stw r25,0(r26)
/* We now have the lower 16 Meg mapped into TLB entries, and the caches
* ready to work.
*/
turn_on_mmu:
lis r0,MSR_KERNEL@h
ori r0,r0,MSR_KERNEL@l
mtspr SPRN_SRR1,r0
lis r0,start_here@h
ori r0,r0,start_here@l
mtspr SPRN_SRR0,r0
SYNC
/* CRD: set LED state here */
lis r26,0x4F600000@h
ori r26,r26,0x4F600000@l
li r25,LED_STATE_2
stw r25,0(r26)
rfi /* enables MMU */
/* CRD: set LED state here */
/* This address should be a virtual address */
lis r26,0x4F600000@h
ori r26,r26,0x4F600000@l
li r25,LED_STATE_3
stw r25,0(r26)
b . /* prevent prefetch past rfi */
Regards,
Chris Dumoulin
--
*--Christopher Dumoulin--*
Software Team Leader
<http://ics-ltd.com/>
<http://ics-ltd.com/>
Interactive Circuits and Systems Ltd.
5430 Canotek Road
Ottawa, ON
K1J 9G2
(613)749-9241
1-800-267-9794 (USA only)
------------------------------------------------------------------------
This e-mail is private and confidential and is for the addressee only.
If misdirected, please notify us by telephone and confirm that it has
been deleted from your system and any hard copies destroyed. You are
strictly prohibited from using, printing, distributing or disseminating
it or any information contained in it save to the intended recipient.
next reply other threads:[~2006-05-05 15:08 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-05-05 15:08 Chris Dumoulin [this message]
2006-05-05 19:27 ` Calculating virtual address from physical address Sylvain Munaut
2006-05-05 20:24 ` Matt Porter
2006-05-05 20:58 ` Josh Boyer
2006-05-05 23:35 ` David H. Lynch Jr.
-- strict thread matches above, loose matches on Subject: below --
2006-05-06 8:43 Alexander Szekely
2006-05-06 18:43 Chris Dumoulin
2006-05-06 19:38 ` Grant Likely
2006-05-10 11:04 ` David H. Lynch Jr.
2006-05-10 16:43 ` Eugene Surovegin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=445B6A80.2090202@ics-ltd.com \
--to=cdumoulin@ics-ltd.com \
--cc=linuxppc-embedded@ozlabs.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.