From: Alexander Holler <holler@ahsoftware.de>
To: u-boot@lists.denx.de
Subject: [U-Boot] [RFC PATCH v2] ARM: Avoid compiler optimization for usages of readb, writeb and friends.
Date: Mon, 20 Dec 2010 18:12:21 +0100 [thread overview]
Message-ID: <4D0F8E75.2010107@ahsoftware.de> (raw)
In-Reply-To: <AANLkTiksYKRt7DMsVwqA--WAachCfJuC65v-XgotLLyS@mail.gmail.com>
Hello,
Am 20.12.2010 07:07, schrieb John Rigby:
> With your patch and the following hack nand works:
>
>
> diff --git a/drivers/mtd/nand/omap_gpmc.c b/drivers/mtd/nand/omap_gpmc.c
> index 99b9cef..5e94155 100644
> --- a/drivers/mtd/nand/omap_gpmc.c
> +++ b/drivers/mtd/nand/omap_gpmc.c
> @@ -29,6 +29,8 @@
> #include<linux/mtd/nand_ecc.h>
> #include<nand.h>
>
> +#define origwriteb(v,a) __arch_putb(v,a)
> +
> static uint8_t cs;
> static struct nand_ecclayout hw_nand_oob = GPMC_NAND_HW_ECC_LAYOUT;
>
> @@ -58,7 +60,7 @@ static void omap_nand_hwcontrol(struct mtd_info
> *mtd, int32_t cmd,
> }
>
> if (cmd != NAND_CMD_NONE)
> - writeb(cmd, this->IO_ADDR_W);
> + origwriteb(cmd, this->IO_ADDR_W);
> }
>
> /*
>
> The working assembly looks like this:
>
> if (cmd != NAND_CMD_NONE)
> 80024d28: e3710001 cmn r1, #1
> origwriteb(cmd, this->IO_ADDR_W);
> 80024d2c: 15933004 ldrne r3, [r3, #4]
> 80024d30: 120110ff andne r1, r1, #255 ; 0xff
> 80024d34: 15c31000 strbne r1, [r3]
> 80024d38: e8bd8010 pop {r4, pc}
>
> The broken assembly looks like this:
>
> if (cmd != NAND_CMD_NONE)
> 80024d28: e3710001 cmn r1, #1
> 80024d2c: 08bd8010 popeq {r4, pc}
> writeb(cmd, this->IO_ADDR_W);
> 80024d30: e5933004 ldr r3, [r3, #4]
> 80024d34: e20110ff and r1, r1, #255 ; 0xff
> 80024d38: e5c31000 strb r1, [r3]
> 80024d3c: e5d33000 ldrb r3, [r3]
> 80024d40: e8bd8010 pop {r4, pc}
>
> This is with gcc version "(Ubuntu/Linaro 4.4.4-14ubuntu4) 4.4.5".
> I'll try a 4.5.2 version next and see what happens.
There must be more problems. Using gcc 4.5.1, the read*/write*-patch and
your hack, my kernel doesn't boot. Using gcc 4.3.5 and the same source
to compile u-boot the kernel comes up. Here is the output for the
non-working u-boot:
----------------
U-Boot 2010.12-rc3-00015-g3ae9687-dirty (Dec 20 2010 - 18:01:41, gcc 4.5.1)
OMAP3530-GP ES3.1, CPU-OPP2, L3-165MHz, Max CPU Clock 720 mHz
OMAP3 Beagle board + LPDDR/NAND
I2C: ready
DRAM: 256 MiB
NAND: 256 MiB
MMC: OMAP SD/MMC: 0
In: serial
Out: serial
Err: serial
Beagle Rev C4
timed out in wait_for_pin: I2C_STAT=0
No EEPROM on expansion board
Die ID #062a000400000000040365fa16019019
Hit any key to stop autoboot: 0
reading boot.scr
422 bytes read
Running bootscript from mmc ...
## Executing script at 82000000
reading uImage
2419940 bytes read
Booting from mmc ...
## Booting kernel from Legacy Image at 82000000 ...
Image Name: Linux-2.6.37-rc5-beagleboard-000
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 2419876 Bytes = 2.3 MiB
Load Address: 80008000
Entry Point: 80008000
Verifying Checksum ... OK
Loading Kernel Image ... OK
OK
----------------
Nothing else.
Regards,
Alexander
next prev parent reply other threads:[~2010-12-20 17:12 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-12-18 22:27 [U-Boot] [RFC PATCH v2] ARM: Avoid compiler optimization for usages of readb, writeb and friends Alexander Holler
2010-12-19 7:51 ` Dirk Behme
2010-12-19 10:22 ` Alexander Holler
2010-12-19 11:28 ` Albert ARIBAUD
2010-12-19 16:34 ` Alexander Holler
2010-12-19 18:45 ` John Rigby
2010-12-19 19:59 ` Alexander Holler
2010-12-20 0:39 ` John Rigby
2010-12-20 0:56 ` Alexander Holler
2010-12-20 4:18 ` John Rigby
2010-12-20 6:07 ` John Rigby
2010-12-20 6:49 ` Dirk Behme
2010-12-20 7:37 ` John Rigby
2010-12-20 16:08 ` John Rigby
2010-12-20 16:12 ` John Rigby
2011-01-17 4:35 ` Alexander Holler
2010-12-20 17:12 ` Alexander Holler [this message]
2010-12-21 0:25 ` John Rigby
2010-12-21 0:46 ` John Rigby
2010-12-21 7:11 ` Dirk Behme
2010-12-21 7:21 ` Albert ARIBAUD
2010-12-21 8:05 ` Dirk Behme
2010-12-21 8:17 ` Wolfgang Denk
2010-12-21 8:37 ` Dirk Behme
2010-12-21 8:35 ` Dirk Behme
2010-12-21 8:46 ` John Rigby
2010-12-21 10:38 ` Albert ARIBAUD
2010-12-21 10:53 ` Wolfgang Denk
2010-12-21 12:35 ` Alexander Holler
2010-12-21 12:51 ` Albert ARIBAUD
2010-12-21 13:30 ` Alexander Holler
2010-12-21 14:33 ` Albert ARIBAUD
2010-12-21 19:52 ` Wolfgang Denk
2010-12-21 20:04 ` Dirk Behme
2010-12-21 21:49 ` Albert ARIBAUD
2010-12-22 0:11 ` Alexander Holler
2010-12-22 7:02 ` Albert ARIBAUD
2010-12-22 7:18 ` Dirk Behme
2010-12-22 7:52 ` Wolfgang Denk
2010-12-23 16:40 ` Dirk Behme
2010-12-22 9:56 ` Alexander Holler
2010-12-21 13:38 ` Alexander Holler
2010-12-22 8:02 ` Wolfgang Denk
2010-12-22 11:23 ` Alexander Holler
2010-12-29 9:40 ` Dirk Behme
2010-12-29 23:10 ` Alessandro Rubini
2010-12-30 10:39 ` Dirk Behme
2011-01-09 22:03 ` Wolfgang Denk
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4D0F8E75.2010107@ahsoftware.de \
--to=holler@ahsoftware.de \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.