<p class="MsoNormal">Hi,</p>

<p class="MsoNormal"> </p>

<p class="MsoNormal">I&#39;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:&quot;Courier New&quot;"> </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 --&gt;paging_init --&gt; 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() --&gt; parse_early_options
--&gt; parse_args --&gt; next_arg --&gt;</p>

<p class="MsoNormal"> </p>

<p class="MsoNormal">for
(i = 0; args[i]; i++) {</p>

<p class="MsoNormal">                if (isspace(args[i]) &amp;&amp;
!in_quote)</p>

<p class="MsoNormal">                        break;</p>

<p class="MsoNormal">                if (equals == 0) {</p>

<p class="MsoNormal">                        if (args[i] == &#39;=&#39;)</p>

<p class="MsoNormal">                                equals = i;</p>

<p class="MsoNormal">                }</p>

<p class="MsoNormal">                if (args[i] == &#39;&quot;&#39;)</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] = &#39;\0&#39;;</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>