From cc2a3c9fd34cd11f6bb42f332924f993e3777d8d Mon Sep 17 00:00:00 2001 From: Benjamin Valentin Date: Sun, 19 Jul 2020 23:03:27 +0200 Subject: [PATCH] cpu/sam0_common: GPIO: use bitarithm_test_and_clear() --- cpu/sam0_common/periph/gpio.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/cpu/sam0_common/periph/gpio.c b/cpu/sam0_common/periph/gpio.c index 39a3bc0ab0..a075e6a95b 100644 --- a/cpu/sam0_common/periph/gpio.c +++ b/cpu/sam0_common/periph/gpio.c @@ -25,6 +25,7 @@ */ #include "cpu.h" +#include "bitarithm.h" #include "periph/gpio.h" #include "periph_conf.h" @@ -345,9 +346,9 @@ void isr_eic(void) _EIC->INTFLAG.reg = state; /* execute interrupt callbacks */ + uint8_t pin = 0; while (state) { - unsigned pin = 8 * sizeof(state) - __builtin_clz(state) - 1; - state &= ~(1 << pin); + state = bitarithm_test_and_clear(state, &pin); gpio_config[pin].cb(gpio_config[pin].arg); }