<p class="MsoNormal">Hi,</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">I'm doing kernel porting to arm926 based FPGA board, very
minimal setup.</p>
<p class="MsoNormal">Only UART and timer devices are available as part of FPGA.</p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New""> </span></p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">Board details – </p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">Using ARM926e-js processor with 128MB SDRAM., Clock-33Mhz</p>
<p class="MsoNormal">SDRAM Size = 128M </p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">CONFIG_PAGE_OFFSET = 0xc0000000</p>
<p class="MsoNormal">CONFIG_PHYS_OFFSET= 0x80000000</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">Kernel Lowmem = 32M including 8M for initramfs (starting
from 24M to 32M).</p>
<p class="MsoNormal">HighMEM is not configured.</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">Vmalloc_start =
end address of LowMem (i.e 0xC200000)</p>
<p class="MsoNormal">VMALLOC_END =
Vmalloc_start + 64M = 0xC6000000</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">If
I enable data cache and debug with JTAG, Kernel ends up in ENTRY(__delay).</p>
<p class="MsoNormal">This
is due to the corruption of the “meminfo” structure.</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">I
could also observe during step by step using trace32 , after excuting few
instructions that modifies memory(<b>refer
label</b>), the data in that particular memory is not modify.</p>
<p class="MsoNormal">Because
of which there is corruption of the meminfo structure ending up in looping in “ setup_arch -->paging_init --> prepare_page_table”.</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"><b>Label:</b></p>
<p class="MsoNormal">The
instructions that should actually modify
memory, but the memory is not modified are from parse_early_param() --> parse_early_options
--> parse_args --> next_arg --></p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">for
(i = 0; args[i]; i++) {</p>
<p class="MsoNormal"> if (isspace(args[i]) &&
!in_quote)</p>
<p class="MsoNormal"> break;</p>
<p class="MsoNormal"> if (equals == 0) {</p>
<p class="MsoNormal"> if (args[i] == '=')</p>
<p class="MsoNormal"> equals = i;</p>
<p class="MsoNormal"> }</p>
<p class="MsoNormal"> if (args[i] == '"')</p>
<p class="MsoNormal"> in_quote = !in_quote;</p>
<p class="MsoNormal"> }</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"> *param = args;</p>
<p class="MsoNormal"> if (!equals)</p>
<p class="MsoNormal"> *val = NULL;</p>
<p class="MsoNormal"><span style="color:red"> else {</span></p>
<p class="MsoNormal"><span style="color:red">
args[equals] = '\0';</span></p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">which
modifies the command line args passed. The instruction that sets the ‘=’
location to ‘NULL’ as highlighted is not modifying the memory .</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">Please
let me know how dcahe enabling is creating this effect.,as with dcache disabled(CPU_DCACHE_DISABLE
= y) this instruction is replacing the ‘=’
symbol with NULL.</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"> Karthik.</p>
<p class="MsoNormal"> </p>