From: "Jörn Engel" <joern@logfs.org>
To: Christoph Hellwig <hch@lst.de>
Cc: linux-mips@linux-mips.org, Felix Fietkau <nbd@openwrt.org>,
Eugene Konev <ejka@imfi.kspu.ru>,
linux-mtd@lists.infradead.org,
Matteo Croce <technoboy85@gmail.com>,
Andrew Morton <akpm@linux-foundation.org>,
dwmw2@infradead.org
Subject: Re: [PATCH][MIPS][2/7] AR7: mtd partition map
Date: Thu, 20 Sep 2007 22:00:59 +0200 [thread overview]
Message-ID: <20070920200058.GB1692@lazybastard.org> (raw)
In-Reply-To: <20070920193547.GA911@lst.de>
On Thu, 20 September 2007 21:35:49 +0200, Christoph Hellwig wrote:
> On Thu, Sep 20, 2007 at 09:29:11PM +0200, Matteo Croce wrote:
> > +#ifdef CONFIG_CPU_LITTLE_ENDIAN
> > +#define LOADER_MAGIC1 0xfeedfa42
> > +#define LOADER_MAGIC2 0xfeed1281
> > +#else
> > +#define LOADER_MAGIC1 0x42faedfe
> > +#define LOADER_MAGIC2 0x8112edfe
> > +#endif
>
> Please keep only one defintion and use le/be32_to_cpu on it.
>
> > +struct ar7_bin_rec {
> > + unsigned int checksum;
> > + unsigned int length;
> > + unsigned int address;
> > +};
>
> Wich means you'd need an endianess annotation here. What about the
> length and address fields, are they always native-endian unlike
> the checksum field or will the need to be byte-swapped aswell?
<slightly off-topic, feel free to skip>
If this is indeed the squashfs magic, le/be32_to_cpu won't help.
Squashfs can have either endianness, tries to detect the one actually
used by checking either magic and sets a flag in the superblock.
Afterwards every single access checks the flag and conditionally swaps
fields around or not.
If squashfs had a fixed endianness, quite a lot of this logic could get
removed and both source and object size would shrink. Some two years
after requesting this for the first time, I'm thinking about just doing
it myself. If I find a sponsor who pays me for it, I might even do it
soon.
</offtopic>
I don't really understand why the squashfs magic number should be used
in this code at all. It may have set a bad example, though. In general
you should decide on a fixed endianness (1) and use the beXX_to_cpu
macros when accessing data unless you have a very good reason to do
otherwise.
1) Big endian is my preferred choice because it is easy to read in a
hexdump and the opposite of my notebook. Being forced to do endian
conversions during development/testing helps to find problems early.
Jörn
--
Joern's library part 13:
http://www.chip-architect.com/
next prev parent reply other threads:[~2007-09-20 20:08 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <200709201728.10866.technoboy85@gmail.com>
2007-09-20 15:55 ` [PATCH][MIPS][2/7] AR7: mtd partition map Matteo Croce
2007-09-20 16:53 ` Ralf Baechle
2007-09-20 17:52 ` Christoph Hellwig
2007-09-20 18:34 ` Matteo Croce
2007-09-20 19:29 ` Matteo Croce
2007-09-20 19:35 ` Christoph Hellwig
2007-09-20 20:00 ` Jörn Engel [this message]
2007-09-21 2:09 ` Matteo Croce
2007-09-21 2:20 ` Jörn Engel
2007-09-21 8:03 ` Christoph Hellwig
2007-09-21 8:18 ` Geert Uytterhoeven
[not found] <200709080143.12345.technoboy85@gmail.com>
2007-09-08 0:19 ` Matteo Croce
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=20070920200058.GB1692@lazybastard.org \
--to=joern@logfs.org \
--cc=akpm@linux-foundation.org \
--cc=dwmw2@infradead.org \
--cc=ejka@imfi.kspu.ru \
--cc=hch@lst.de \
--cc=linux-mips@linux-mips.org \
--cc=linux-mtd@lists.infradead.org \
--cc=nbd@openwrt.org \
--cc=technoboy85@gmail.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox