<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html;charset=windows-1252"
 http-equiv="Content-Type">
  <title></title>
</head>
<body bgcolor="#ffffff" text="#000000">
Mahavir Prasad wrote:
<blockquote
 cite="mid:CAPTcMzz5Pq=8T9BiZJ6RuPoNx5EMsX5mFAUK4CK6+wF42gVb_g@mail.gmail.com"
 type="cite">Hi Piet,<br>
  <font color="navy" face="Arial" size="2"><span
 style="font-size: 10pt; font-family: Arial; color: navy;"><br>
  <span style="color: rgb(0, 0, 0);">I have attached the .config file
that was used to build linux. I think our kernel versions are
different. I had checked out linux with the following command: <br>
  <br>
  </span></span></font><span id="IDstID"> git clone <a
 moz-do-not-send="true" class="moz-txt-link-abbreviated"
 href="mailto:git+ssh://rakesh@git.linux-xtensa.org/git/kernel/xtensa-2.6.29-smp.git">git+ssh://rakesh@git.linux-xtensa.org/git/kernel/xtensa-2.6.29-smp.git</a>
linux</span><br>
  <font color="navy" face="Arial" size="2"><span
 style="font-size: 10pt; font-family: Arial; color: navy;"><span
 style="color: rgb(0, 0, 0);"></span></span></font><br>
  <font color="navy" face="Arial" size="2"><span
 style="font-size: 10pt; font-family: Arial; color: navy;"><span
 style="color: rgb(0, 0, 0);"> Could you please try out the version
that I am using? </span></span></font><br>
</blockquote>
<br>
<b>Hi Mahavir:<br>
<br>
This is the same kernel that I'm using.  I didn't see anything in your
kernel .config that should effect the early startup of the MMU code.<br>
<br>
<u><big>I'll try to get your Xtrensa Tools and Overlay from your office
here in the States.</big></u><br>
</b><br>
<b>In the simulation it looks like once the kernel jumps to the 1st
re-mapped context at 0X4000,0000<br>
that the PC isn't changing as it should. It appears to have put
0x4000004c into ar4, and<br>
then jumped to that location. After that  you (Mahavir) stepped twice
with 'next' (<u><font color="#006600">would have preferred<br>
using 'step'</font></u>)  the PC is still at 0x4000004c; that seems
wrong. <br>
<br>
I just stepped with 'next' thru the MMU initialization code and <big><font
 color="#006600">I'm not getting stuck<br>
at the point of executing in the 1st re-mapping at 0X4000,0000:</font></big><br>
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------<br>
</b><tt>[pdelaney@pdelaney_fc9 linux-2.6.29-smp.xcc]$ <b>./doit</b><br>
Current configuration:  XTCONFIG:DC_D_233L_Avnt60,
root:MYROOT:/fac/vol6/software/pdelaney/Work/cottonwood_1,
USEWHAT:ybuild, XTSYSTEM: Jtag<br>
System, xtsysok:.<br>
Current configuration:  XTCONFIG:DC_D_233L_Avnt60,
root:MYROOT:/fac/vol6/software/pdelaney/Work/cottonwood_1,
USEWHAT:ybuild, XTSYSTEM: Jtag<br>
System, xtsysok:.<br>
Current buildroot config is dc233c, root
/export2/DC_C_233L/src/buildroot-xtensa-HiFi2-Snapshot<br>
Current buildroot config is dc233c, root
/export2/DC_C_233L/src/buildroot-xtensa-HiFi2-Snapshot<br>
Current configuration:  XTCONFIG:DC_D_233L_Avnt60,
root:MYROOT:/fac/vol6/software/pdelaney/Work/cottonwood_1,
USEWHAT:ybuild, XTSYSTEM: Jtag<br>
System, xtsysok:.<br>
Current buildroot config is dc233c, root
/export2/DC_C_233L/src/buildroot-xtensa-HiFi2-Snapshot<br>
ddd -debugger xt-gdb<br>
GNU gdb (GDB) 7.1 Xtensa Tools 9.0.3-development<br>
Copyright (C) 2010 Free Software Foundation, Inc.<br>
License GPLv3+: GNU GPL version 3 or later
<a class="moz-txt-link-rfc2396E" href="http://gnu.org/licenses/gpl.html">&lt;http://gnu.org/licenses/gpl.html&gt;</a><br>
This is free software: you are free to change and redistribute it.<br>
There is NO WARRANTY, to the extent permitted by law.  Type "show
copying"<br>
and "show warranty" for details.<br>
This GDB was configured as "--host=i686-pc-linux-gnu
--target=xtensa-elf".<br>
(xt-gdb)<b> source .xt-gdbinit</b><br>
"Using MMU, assumne V2 MMU Mappings<br>
""add-symbol-file vmlinux 0xd0003000<br>
"add symbol table from file "vmlinux" at<br>
        .text_addr = 0xd0003000<br>
"target sim --memlimit=128<br>
"Connected to the simulator.<br>
Breakpoint 1 at 0xfe000104: file arch/xtensa/boot/boot-elf/bootstrap.S,
line 93.<br>
"Starting Simulation<br>
"Breakpoint 2 at 0xfe000000: file
arch/xtensa/boot/boot-elf/bootstrap.S, line 44.<br>
Breakpoint 3 at 0xd0003003: file arch/xtensa/kernel/head.S, line 66.<br>
Breakpoint 4 at 0xd000303a: file arch/xtensa/kernel/head.S, line 190.<br>
".xt-gdbinit: Done<br>
"(xt-gdb)<b> break _SetupMMU </b><br>
Breakpoint 5 at 0xfe000043: file
/export2/DC_C_233L/src/linux-2.6.29-smp.xcc/arch/xtensa/include/asm/initialize_mmu.h,
line 87.<br>
(xt-gdb) run<br>
Starting program:
/export2/DC_C_233L/src/linux-2.6.29-smp.xcc/arch/xtensa/boot/Image.elf <br>
Starting the ISS simulator.<br>
Switching to remote protocol<br>
Remote debugging using localhost:58376<br>
<br>
Breakpoint 5, _SetupMMU () at
/export2/DC_C_233L/src/linux-2.6.29-smp.xcc/arch/xtensa/include/asm/initialize_mmu.h:89<br>
89              wsr     a3, ATOMCTL<br>
(xt-gdb) <b>n</b><br>
178             movi    a1, 0           // Set $sp to NULL to minimize
gdb confusion trying to walk up the stack<br>
(xt-gdb)<b> &lt;CR&gt;</b><br>
180             _call0  1f              // get PC in a PIC manner
(don't rely on literal constants)<br>
(xt-gdb) <b>&lt;CR&gt;</b><br>
186     1:      movi    a2, 0x10000000<br>
(xt-gdb) <br>
187             movi    a3, 0x18000000<br>
(xt-gdb) <br>
188             add     a2, a2, a0      // a2 = 0x10000000 + original_pc<br>
(xt-gdb) <br>
189             bltu    a2, a3, 1f      // is PC &gt;= 0xF0000000, or
PC &lt; 0x08000000 ?<br>
(xt-gdb) <br>
200             movi    a2, 0x40000006  // 512MB region at vaddr
0x40000000, way 6<br>
(xt-gdb) <br>
201             idtlb   a2              // kick it out...<br>
(xt-gdb) <br>
202             iitlb   a2<br>
(xt-gdb) <br>
203             isync<br>
(xt-gdb) <br>
211             srli    a3, a0, 27              // get 128MB area
containing PC ...<br>
(xt-gdb) <br>
212             slli    a3, a3, 27              // ...<br>
(xt-gdb) <br>
213             addi    a3, a3, CA_BYPASS       // bypass-cache access
R/W Executable<br>
(xt-gdb) <br>
214             addi    a7, a2, -1              // 128MB region at
vaddr 0x40000000, way 5<br>
(xt-gdb) <br>
215             wdtlb   a3, a7                  // setup mapping...<br>
(xt-gdb) <br>
216             witlb   a3, a7                  // ...<br>
(xt-gdb) <br>
217             isync                           // ...<br>
(xt-gdb) <br>
226             slli    a4, a0, 5       // clear upper 5 bits of PC
(get 128MB relative offset)<br>
(xt-gdb) <br>
227             srli    a4, a4, 5       // ...<br>
(xt-gdb) <br>
228             addi    a5, a2, -6      // a5 = 0x40000000<br>
(xt-gdb) <br>
229             add     a4, a4, a5      // address of above "j 2f" in
128MB page at vaddr 0x40000000<br>
(xt-gdb) <br>
<b><font color="#006600">230             jx      a4              //
Note: jumps to 0x46000043; xt-gdb switches to remapped text section </font> </b>     </tt><font
 color="#006600"> <big><big><b>[Last instruction seen in your
(Mahavir's) gdb log]</b></big></big></font><tt><big><br>
(xt-gdb) </big><br>
<font color="#990000"><b>181     0:      j       2f              // a0
= pc; NOTE: we get here AGAIN in Step 2b after remapping to 0X46000000 </b></font>
</tt><big><font color="#990000"><b>[You don't seem to get to this
instruction being executed]</b></font><br>
</big><tt><big>(xt-gdb) </big><br>
<b><font color="#990000">240     2:      movi    a4, 0x20000000    </font>                                                                           
</b></tt><font color="#990000"><b><big>[You don't  seem to get to this
instruction being executed]</big></b></font><br>
(xt-gdb) <tt><br>
241             add     a5, a2, a4      // start at 0x60000000 (+6 for
way 6)<br>
(xt-gdb) <br>
242     3:      idtlb   a5              // invalidate entry...<br>
(xt-gdb) <br>
243             iitlb   a5<br>
(xt-gdb) <br>
244             add     a5, a5, a4<br>
(xt-gdb) <br>
245             bne     a5, a2, 3b      // loop until we get to
0x40000000<br>
(xt-gdb) where<br>
#0  ?? () at
/export2/DC_C_233L/src/linux-2.6.29-smp.xcc/arch/xtensa/include/asm/initialize_mmu.h:245<br>
(xt-gdb) </tt><b><tt><br>
</tt></b><b>----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------<br>
<br>
-piet<br>
 
</b><br>
<br>
<blockquote
 cite="mid:CAPTcMzz5Pq=8T9BiZJ6RuPoNx5EMsX5mFAUK4CK6+wF42gVb_g@mail.gmail.com"
 type="cite"><br>
  <div class="gmail_quote">
  <blockquote class="gmail_quote"
 style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
    <div> <br>
    <font color="#006600">I'd get curious</font>. For starters I'd do a
&lt;control-C&gt; and see what it's doing. If you use the <br>
.xt-gdbinit script it will put breakpoints in some early startup
points. If you don't get to<br>
the 1st breakpoint that plants the other breakpoints you make have to
single step <br>
from the very 1st instruction and walk thru the MMU initialization.
This code does<br>
some harry stuff but I went to extreme effort to make it possible to
single step<br>
completely thru the code and the debugger clearly showing you the code
your<br>
executing. <br>
    <br>
If you aren't getting to the 1st breakpoint, "set_breakpoints", I'd put
a breakpoint<br>
at the reset vector before doing the  "run" command. Look at your log
and compare<br>
it to mine, if you use the same .xt-gbinit script the log should be
identical.<br>
    <br>
Relax, it's time to dive in and look closely at what's happening.<br>
It's a journey and time to be curious.  <span><span> ;-) </span></span><br>
  <br>
    </div>
  </blockquote>
  <div><br>
I have attached log file  (linux_bootup_on_iss_log01.txt) of my steps.
Curiously, the first time when I say "run" breakpoint is not hit.
However, if I do ^C twice and say "run" again, then breakpoint is hit.
This is a consistent behavior whenever I start xt-gdb.<br>
  <br>
Last few lines from the log:<br>
  <br>
(xt-gdb) n<br>
_SetupMMU () at
/home/mahavir/Desktop/lahaina/git_checkout/lah_build/linux/arch/xtensa/include/asm/initialize_mmu.h:230<br>
230        jx    a4        // Note: jumps to 0x46000043; xt-gdb
switches to remapped text section<br>
(xt-gdb) n<br>
0x4000004c in ?? ()<br>
(xt-gdb) n<br>
Cannot find bounds of current function<br>
  <br>
 </div>
  <blockquote class="gmail_quote"
 style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
    <div bgcolor="#FFFFFF" text="#000000"> Let us know if there is
anything we can do to help in cutting the Turbo License.<br>
If your not getting to the two breakpoints at the begining of kernel
startup I'd<br>
focus on that problem for now.<font color="#006600"><u> Even without
Turbo you should get to these<br>
breakpoints easily within a minute; seconds as I recall.<br>
    </u></font><br>
    </div>
  </blockquote>
  <div><br>
Yes, the second time when the breakpoint is hit is within 10-20
seconds. I will check with Rakesh again regarding the Turbo license.
The last we heard from him he said:<br>
&gt;&gt;<font color="navy" face="Arial" size="2"><span
 style="font-size: 10pt; font-family: Arial; color: navy;">What are the
steps to cut a Turbo License
from XPG account?</span></font><font color="navy" face="Arial" size="2"><span
 style="font-size: 10pt; font-family: Arial; color: navy;"> I can login
into the Nethra’s XPG
account. <br>
  </span></font>So, if you  have steps for the same, could you please
mail it to him?<br>
  <font color="navy" face="Arial" size="2"><span
 style="font-size: 10pt; font-family: Arial; color: navy;"></span></font><font
 color="navy" face="Arial" size="2"><span
 style="font-size: 10pt; font-family: Arial; color: navy;"><br>
  </span></font></div>
  </div>
Thanks and Regards,<br>
Mahavir<br>
</blockquote>
<br>
</body>
</html>