(Resend with corrected broken example)

On 21.12.2010 08:21, Albert ARIBAUD wrote:
> Hi Dirk,
>
> Le 21/12/2010 08:11, Dirk Behme a écrit :
>
>> But the issue with drivers/mtd/nand/omap_gpmc.c (i.e. the additional
>> ldrb    r3, [r3]) is still open? Has anybody tried to replace it with
>> a nop in the binary to be sure this is the root cause?
>
> Can you try and preprocess the C file for both the broken and working
> cases, then post the preprocessed C extract? Differences at the C level
> may help understanding differences at the asm level.

gcc version 4.5.1 (Sourcery G++ Lite 2010.09-50)

Work:
====

static void omap_nand_hwcontrol(struct mtd_info *mtd, int32_t cmd,
     uint32_t ctrl)
{
  register struct nand_chip *this = mtd->priv;
  ...
  if (cmd != -1)

   (*(volatile unsigned char *)(this->IO_ADDR_W) = (cmd));
}

        if (cmd != NAND_CMD_NONE)
   84:  e3710001        cmn     r1, #1
                origwriteb(cmd, this->IO_ADDR_W);
   88:  15933004        ldrne   r3, [r3, #4]
   8c:  120110ff        andne   r1, r1, #255    ; 0xff
   90:  15c31000        strbne  r1, [r3]
   94:  e12fff1e        bx      lr
        ...


Broken:
======

static void omap_nand_hwcontrol(struct mtd_info *mtd, int32_t cmd,
     uint32_t ctrl)
{
  register struct nand_chip *this = mtd->priv;

...

  if (cmd != -1)
   ({ __asm__ __volatile__ ("" : : : "memory"); (*(volatile unsigned 
char *)(this->IO_ADDR_W) = (cmd)); });
}

        if (cmd != NAND_CMD_NONE)
   84:  e3710001        cmn     r1, #1
   88:  012fff1e        bxeq    lr
                writeb(cmd, this->IO_ADDR_W);
   8c:  e5933004        ldr     r3, [r3, #4]
   90:  e20110ff        and     r1, r1, #255    ; 0xff
   94:  e5c31000        strb    r1, [r3]
   98:  e5d33000        ldrb    r3, [r3]
   9c:  e12fff1e        bx      lr


The issue seems to be the additional 'ldrb      r3, [r3]' added by the 
compiler in the broken version.

Best regards

Dirk
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to