From mboxrd@z Thu Jan 1 00:00:00 1970 From: Scott Wood Date: Mon, 1 Jul 2013 12:14:43 -0500 Subject: [U-Boot] [PATCH] powerpc/mpc85xx:Disable Debug TLB entry for non-minimal SPL In-Reply-To: <51D14437.6010105@freescale.com> (from prabhakar@freescale.com on Mon Jul 1 03:56:23 2013) Message-ID: <1372698883.8183.85@snotra> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On 07/01/2013 03:56:23 AM, Prabhakar Kushwaha wrote: > 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: >>>> >>>> http://lists.denx.de/pipermail/u-boot/2013-June/157201.html >>>> >>> 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. In that case CONFIG_SPL_BUILD and CONFIG_SPL_INIT_MINIMAL will be defined, which means (defined(CONFIG_NAND_SPL) || (defined(CONFIG_SPL_BUILD) && defined(CONFIG_SPL_INIT_MINIMAL))) will be true, which means the negation will be false, which means the toplevel conjunction will be false, and disable_tlb() will not be called. Again, unless I'm misreading something, this is 100% logically equivalent to your final suggestion. I tried copy-and-pasting the above and had no problem building P2020RDB-PC_NAND. > 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. If CONFIG_SPL_BUILD is not defined, then !(anything && defined(CONFIG_SPL_BUILD)) will be true. Since the other terms of the toplevel conjunction will also be true, disable_tlb will be compiled. -Scott