[PATCH] pata_mpc52xx: optimizing code size by change of ATA timing data types
Grant Likely
grant.likely at secretlab.ca
Wed Feb 17 06:41:27 EST 2010
[cc'd linux-kernel, linux-ide and Jeff Garzik]
Hi Roman.
you should use ./scripts/get_maintainer.pl to make sure you're cc'ing
the right people when posting patches. You should repost so that Jeff
has a copy of the patch to pick up (and add my acked-by when you do).
On Wed, Dec 16, 2009 at 6:29 AM, Roman Fietze
<roman.fietze at telemotive.de> wrote:
> Hello Everybody,
>
> A totally simple patch that reduces the text size as of the
> ppc_6xx-size command of pata_mpc52xx by more than 10%, by reducing the
> rodata size from 0x4a4 to 0x17e bytes. This is simply done by changing
> the data types of the ATA timing constants.
Acked-by: Grant Likely <grant.likely at secretlab>
>
> If you are interested at all, and it's worth the trouble, here the
> details:
>
> ppc_6xx-size:
> text data bss dec hex filename
> old: 6532 1068 0 7600 1db0 pata_mpc52xx.o
> new: 5718 1068 0 6786 1a82 pata_mpc52xx.o
>
> The (assembler) code itself doesn't really change very much. I double
> checked the final results inside mpc52xx_ata_apply_timings() and they
> match.
>
> BTW: Should I break lines at col 72 or 80?
>
>
> From: Roman Fietze <roman.fietze at telemotive.de>
> Date: Wed, 16 Dec 2009 13:10:31 +0100
> Subject: [PATCH] pata_mpc52xx: reduce code size by simple change of constant data types
>
> Signed-off-by: Roman Fietze <roman.fietze at telemotive.de>
> ---
> drivers/ata/pata_mpc52xx.c | 78 ++++++++++++++++++++++----------------------
> 1 files changed, 39 insertions(+), 39 deletions(-)
>
> diff --git a/drivers/ata/pata_mpc52xx.c b/drivers/ata/pata_mpc52xx.c
> index 2bc2dbe..e4e5e82 100644
> --- a/drivers/ata/pata_mpc52xx.c
> +++ b/drivers/ata/pata_mpc52xx.c
> @@ -64,13 +64,13 @@ struct mpc52xx_ata_priv {
>
>
> /* ATAPI-4 PIO specs (in ns) */
> -static const int ataspec_t0[5] = {600, 383, 240, 180, 120};
> -static const int ataspec_t1[5] = { 70, 50, 30, 30, 25};
> -static const int ataspec_t2_8[5] = {290, 290, 290, 80, 70};
> -static const int ataspec_t2_16[5] = {165, 125, 100, 80, 70};
> -static const int ataspec_t2i[5] = { 0, 0, 0, 70, 25};
> -static const int ataspec_t4[5] = { 30, 20, 15, 10, 10};
> -static const int ataspec_ta[5] = { 35, 35, 35, 35, 35};
> +static const u16 ataspec_t0[5] = {600, 383, 240, 180, 120};
> +static const u16 ataspec_t1[5] = { 70, 50, 30, 30, 25};
> +static const u16 ataspec_t2_8[5] = {290, 290, 290, 80, 70};
> +static const u16 ataspec_t2_16[5] = {165, 125, 100, 80, 70};
> +static const u16 ataspec_t2i[5] = { 0, 0, 0, 70, 25};
> +static const u16 ataspec_t4[5] = { 30, 20, 15, 10, 10};
> +static const u16 ataspec_ta[5] = { 35, 35, 35, 35, 35};
>
> #define CALC_CLKCYC(c,v) ((((v)+(c)-1)/(c)))
>
> @@ -78,13 +78,13 @@ static const int ataspec_ta[5] = { 35, 35, 35, 35, 35};
>
> /* ATAPI-4 MDMA specs (in clocks) */
> struct mdmaspec {
> - u32 t0M;
> - u32 td;
> - u32 th;
> - u32 tj;
> - u32 tkw;
> - u32 tm;
> - u32 tn;
> + u8 t0M;
> + u8 td;
> + u8 th;
> + u8 tj;
> + u8 tkw;
> + u8 tm;
> + u8 tn;
> };
>
> static const struct mdmaspec mdmaspec66[3] = {
> @@ -101,23 +101,23 @@ static const struct mdmaspec mdmaspec132[3] = {
>
> /* ATAPI-4 UDMA specs (in clocks) */
> struct udmaspec {
> - u32 tcyc;
> - u32 t2cyc;
> - u32 tds;
> - u32 tdh;
> - u32 tdvs;
> - u32 tdvh;
> - u32 tfs;
> - u32 tli;
> - u32 tmli;
> - u32 taz;
> - u32 tzah;
> - u32 tenv;
> - u32 tsr;
> - u32 trfs;
> - u32 trp;
> - u32 tack;
> - u32 tss;
> + u8 tcyc;
> + u8 t2cyc;
> + u8 tds;
> + u8 tdh;
> + u8 tdvs;
> + u8 tdvh;
> + u8 tfs;
> + u8 tli;
> + u8 tmli;
> + u8 taz;
> + u8 tzah;
> + u8 tenv;
> + u8 tsr;
> + u8 trfs;
> + u8 trp;
> + u8 tack;
> + u8 tss;
> };
>
> static const struct udmaspec udmaspec66[6] = {
> @@ -270,7 +270,7 @@ mpc52xx_ata_compute_pio_timings(struct mpc52xx_ata_priv *priv, int dev, int pio)
> {
> struct mpc52xx_ata_timings *timing = &priv->timings[dev];
> unsigned int ipb_period = priv->ipb_period;
> - unsigned int t0, t1, t2_8, t2_16, t2i, t4, ta;
> + u32 t0, t1, t2_8, t2_16, t2i, t4, ta;
>
> if ((pio < 0) || (pio > 4))
> return -EINVAL;
> @@ -299,8 +299,8 @@ mpc52xx_ata_compute_mdma_timings(struct mpc52xx_ata_priv *priv, int dev,
> if (speed < 0 || speed > 2)
> return -EINVAL;
>
> - t->mdma1 = (s->t0M << 24) | (s->td << 16) | (s->tkw << 8) | (s->tm);
> - t->mdma2 = (s->th << 24) | (s->tj << 16) | (s->tn << 8);
> + t->mdma1 = ((u32)s->t0M << 24) | ((u32)s->td << 16) | ((u32)s->tkw << 8) | s->tm;
> + t->mdma2 = ((u32)s->th << 24) | ((u32)s->tj << 16) | ((u32)s->tn << 8);
> t->using_udma = 0;
>
> return 0;
> @@ -316,11 +316,11 @@ mpc52xx_ata_compute_udma_timings(struct mpc52xx_ata_priv *priv, int dev,
> if (speed < 0 || speed > 2)
> return -EINVAL;
>
> - t->udma1 = (s->t2cyc << 24) | (s->tcyc << 16) | (s->tds << 8) | s->tdh;
> - t->udma2 = (s->tdvs << 24) | (s->tdvh << 16) | (s->tfs << 8) | s->tli;
> - t->udma3 = (s->tmli << 24) | (s->taz << 16) | (s->tenv << 8) | s->tsr;
> - t->udma4 = (s->tss << 24) | (s->trfs << 16) | (s->trp << 8) | s->tack;
> - t->udma5 = (s->tzah << 24);
> + t->udma1 = ((u32)s->t2cyc << 24) | ((u32)s->tcyc << 16) | ((u32)s->tds << 8) | s->tdh;
> + t->udma2 = ((u32)s->tdvs << 24) | ((u32)s->tdvh << 16) | ((u32)s->tfs << 8) | s->tli;
> + t->udma3 = ((u32)s->tmli << 24) | ((u32)s->taz << 16) | ((u32)s->tenv << 8) | s->tsr;
> + t->udma4 = ((u32)s->tss << 24) | ((u32)s->trfs << 16) | ((u32)s->trp << 8) | s->tack;
> + t->udma5 = (u32)s->tzah << 24;
> t->using_udma = 1;
>
> return 0;
> --
> 1.6.5.3
>
>
> Roman
>
> --
> Roman Fietze Telemotive AG Büro Mühlhausen
> Breitwiesen 73347 Mühlhausen
> Tel.: +49(0)7335/18493-45 http://www.telemotive.de
> _______________________________________________
> Linuxppc-dev mailing list
> Linuxppc-dev at lists.ozlabs.org
> https://lists.ozlabs.org/listinfo/linuxppc-dev
>
--
Grant Likely, B.Sc., P.Eng.
Secret Lab Technologies Ltd.
More information about the Linuxppc-dev
mailing list