[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