From: Mike Frysinger <vapier@gentoo.org>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 1/2] common.h: Introduce DEFINE_CACHE_ALIGN_BUFFER
Date: Fri, 20 Jul 2012 17:47:45 -0400 [thread overview]
Message-ID: <201207201747.47423.vapier@gentoo.org> (raw)
In-Reply-To: <201207201331.48086.marex@denx.de>
On Friday 20 July 2012 07:31:47 Marek Vasut wrote:
> Dear Mike Frysinger,
> > On Saturday 07 July 2012 23:08:14 Marek Vasut wrote:
> > > +/*
> > > DEFINE_CACHE_ALIGN_BUFFER() is similar to ALLOC_CACHE_ALIGN_BUFFER,
> > > but it's purpose is to allow allocating aligned buffers outside of
> > > function scope. Usage of this macro shall be avoided or used with
> > > extreme care! */
> > > +#define DEFINE_CACHE_ALIGN_BUFFER(type, name, size)
> > > + static char __##name[roundup(size * sizeof(type), ARCH_DMA_MINALIGN)]
> > > + __aligned(ARCH_DMA_MINALIGN);
> > > + static type *name = (type *)__##name;
> >
> > how is this any different from doing:
> > static __u8 foo[1234] __aligned(ARCH_DMA_MINALIGN);
>
> Does __aligned() align both start of the buffer downwards and end of it
> upwards ?
it guarantees the start is aligned. i don't believe it does any tail padding.
that said, you've added just 1 consumer, but it uses in function scope, so i
don't see why you had to define a new helper in the first place. the existing
one would work fine shouldn't it ?
you should probably add a const to the 2nd part so gcc is more likely to
optimize away the storage:
static type * const name = (type *)__##name;
otherwise older gcc versions will create a pointer to go through rather than
having things directly access the buffer.
w/out const:
$ readelf -s a.out | grep foo
11: 00000000004005d0 8 OBJECT LOCAL DEFAULT 13 foo.1592
12: 0000000000402080 96 OBJECT LOCAL DEFAULT 25 __foo.1591
w/const:
$ readelf -s a.out | grep foo
11: 0000000000402080 96 OBJECT LOCAL DEFAULT 25 __foo.1591
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20120720/83b5b67c/attachment.pgp>
next prev parent reply other threads:[~2012-07-20 21:47 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-07-08 3:08 [U-Boot] [PATCH 1/2] common.h: Introduce DEFINE_CACHE_ALIGN_BUFFER Marek Vasut
2012-07-08 3:08 ` [U-Boot] [PATCH 2/2] ehci-hcd.c, musb_core, usb.h: Add USB_DMA_MINALIGN define for cache alignment Marek Vasut
2012-07-08 10:04 ` Ilya Yanok
2012-07-08 18:51 ` Marek Vasut
2012-07-08 20:52 ` Tom Rini
2012-07-08 21:36 ` Marek Vasut
2012-07-09 18:37 ` Ilya Yanok
2012-07-10 1:55 ` Marek Vasut
2012-07-14 22:11 ` Ilya Yanok
2012-07-14 22:08 ` Ilya Yanok
2012-07-15 8:07 ` Marek Vasut
2012-07-15 8:55 ` Ilya Yanok
2012-07-15 9:42 ` Marek Vasut
2012-07-08 12:23 ` [U-Boot] [PATCH 1/2] common.h: Introduce DEFINE_CACHE_ALIGN_BUFFER Ilya Yanok
2012-07-08 18:55 ` Marek Vasut
2012-07-20 4:01 ` Mike Frysinger
2012-07-20 11:31 ` Marek Vasut
2012-07-20 21:47 ` Mike Frysinger [this message]
2012-07-20 21:50 ` Tom Rini
2012-07-21 17:22 ` Mike Frysinger
2012-07-23 15:24 ` Tom Rini
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=201207201747.47423.vapier@gentoo.org \
--to=vapier@gentoo.org \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox