gpio: make several const arrays static, shrinks object size
authorColin Ian King <colin.king@canonical.com>
Wed, 18 Apr 2018 17:26:34 +0000 (18:26 +0100)
committerLinus Walleij <linus.walleij@linaro.org>
Wed, 16 May 2018 12:35:24 +0000 (14:35 +0200)
Don't populate the const read-only arrays 'port' on the stack but
instead make them static. Makes the object code smaller:

Before:
  text    data     bss     dec    hex filename
  8542    4088     672   13302   33f6 drivers/gpio/gpio-gpio-mm.o
 10959    4952     832   16743   4167 drivers/gpio/gpio-104-dio-48e.o
  9022    5064    1408   15494   3c86 drivers/gpio/gpio-104-idi-48.o

After:
  text    data     bss     dec    hex filename
  8372    4144     672   13188   3384 drivers/gpio/gpio-gpio-mm.o
 10790    5008     832   16630   40f6 drivers/gpio/gpio-104-dio-48e.o
  8853    5152    1408   15413   3c35 linux/drivers/gpio/gpio-104-idi-48.o

(gcc version 7.2.0 x86_64)

Signed-off-by: Colin Ian King <colin.king@canonical.com>
Acked-by: William Breathitt Gray <vilhelm.gray@gmail.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
drivers/gpio/gpio-104-idi-48.c
drivers/gpio/gpio-gpio-mm.c

index f35632609379432440e9ca1df167f88dab1422a0..2c9738adb3a68434eb877d380954185342c13a37 100644 (file)
@@ -94,7 +94,7 @@ static int idi_48_gpio_get_multiple(struct gpio_chip *chip, unsigned long *mask,
 {
        struct idi_48_gpio *const idi48gpio = gpiochip_get_data(chip);
        size_t i;
-       const size_t ports[] = { 0, 1, 2, 4, 5, 6 };
+       static const size_t ports[] = { 0, 1, 2, 4, 5, 6 };
        const unsigned int gpio_reg_size = 8;
        unsigned int bits_offset;
        size_t word_index;
index d496cc56c2a2d03d60321980caae64fda6f5fe2a..b56ff2efbf3690129d3d781b5a39890e9c5d307d 100644 (file)
@@ -177,7 +177,7 @@ static int gpiomm_gpio_get_multiple(struct gpio_chip *chip, unsigned long *mask,
 {
        struct gpiomm_gpio *const gpiommgpio = gpiochip_get_data(chip);
        size_t i;
-       const size_t ports[] = { 0, 1, 2, 4, 5, 6 };
+       static const size_t ports[] = { 0, 1, 2, 4, 5, 6 };
        const unsigned int gpio_reg_size = 8;
        unsigned int bits_offset;
        size_t word_index;