
On 06/28/2013 09:49 PM, Scott Wood wrote:
On 06/28/2013 04:05:43 AM, Prabhakar Kushwaha wrote:
On 06/27/2013 12:36 AM, Scott Wood wrote:
On 06/25/2013 11:09:04 PM, Prabhakar Kushwaha wrote:
then it should be like this. slightly complex. #if defined(CONFIG_SYS_PPC_E500_DEBUG_TLB) && !(defined(CONFIG_NAND_SPL) || \ (defined(CONFIG_SPL_BUILD) && defined(CONFIG_SPL_INIT_MINIMAL)))
or #if defined(CONFIG_SYS_PPC_E500_DEBUG_TLB) && (CONFIG_SYS_RAMBOOT) || \ (defined(CONFIG_SPL_BUILD) && !defined(CONFIG_SPL_INIT_MINIMAL)))
The former:
The defines mentioned at this link and earlier written by me will not work as they are not taking care of SD boot and NOR boot scenario.
How so?
Below define will take care of all possible combination
- NOR , SD, SPI boot
- NAND_SPL
- SPL with SPL_INIT_MINIMAL
- SPL without SPL_INIT_MINIMAL
#if defined(CONFIG_SYS_PPC_E500_DEBUG_TLB) && !defined(CONFIG_NAND_SPL) && \ (!defined(CONFIG_SPL_BUILD) || !defined(CONFIG_SPL_INIT_MINIMAL))
Took lot of time to figure out :)
That's equivalent to what I suggested in the above link. You just replaced !(x && y) with (!x || !y).
Or relative to your original suggestion above, you replaced !(x || (y && z)) with !x && (!y || !z).
They're all logically equivalent[1]. The question is just which one is most readable/intuitiv
We have below mentioned issues with defines :-
A) Earlier suggested by me #if defined(CONFIG_SYS_PPC_E500_DEBUG_TLB) && !(defined(CONFIG_NAND_SPL) || \ (defined(CONFIG_SPL_BUILD) && defined(CONFIG_SPL_INIT_MINIMAL)))
This will cause compile failure in SPL build. in SPL build, CONFIG_NAND_SPL is not defined hence "1" making disable_tlb() present. As SPL + SPL_INIT_MINIMAL does not have TLB related functions means compilation error.
B) Define suggested at this link has "http://lists.denx.de/pipermail/u-boot/2013-June/157201.html " #if defined(CONFIG_SYS_PPC_E500_DEBUG_TLB) && \ !(defined(CONFIG_SPL_INIT_MINIMAL) && defined(CONFIG_SPL_BUILD)) && \ !defined(CONFIG_NAND_SPL)
here, during SD & NOR boot, CONFIG_SPL_BUILD is not defined. hece complete define = 0. this make disable_tlb not compile which is wrong.
Only below define solve all the use cases. #if defined(CONFIG_SYS_PPC_E500_DEBUG_TLB) && !defined(CONFIG_NAND_SPL) && \ (!defined(CONFIG_SPL_BUILD) || !defined(CONFIG_SPL_INIT_MINIMAL))
Please suggest.
Regards, Prabhakar