qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH 4/8] hw/gpio/avr_gpio: Simplify avr_gpio_write_port using extract


From: Heecheol Yang
Subject: [PATCH 4/8] hw/gpio/avr_gpio: Simplify avr_gpio_write_port using extract32()
Date: Mon, 12 Sep 2022 20:21:02 +0900

From: Philippe Mathieu-Daudé <f4bug@amsat.org>

Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Message-Id: <20210313165445.2113938-7-f4bug@amsat.org>
Reviewed-by: Michael Rolnik <mrolnik@gmail.com>
Signed-off-by: Heecheol Yang <heecheol.yang@outlook.com>
---
 hw/gpio/avr_gpio.c | 11 +++--------
 1 file changed, 3 insertions(+), 8 deletions(-)

diff --git a/hw/gpio/avr_gpio.c b/hw/gpio/avr_gpio.c
index 3db55bfa77..e4c7122e62 100644
--- a/hw/gpio/avr_gpio.c
+++ b/hw/gpio/avr_gpio.c
@@ -39,20 +39,15 @@ static void avr_gpio_reset(DeviceState *dev)
 static void avr_gpio_write_port(AVRGPIOState *s, uint64_t value)
 {
     uint8_t pin;
-    uint8_t cur_port_val = s->reg.port;
-    uint8_t cur_ddr_val = s->reg.ddr;
 
     for (pin = 0u; pin < AVR_GPIO_COUNT ; pin++) {
-        uint8_t cur_port_pin_val = cur_port_val & 0x01u;
-        uint8_t cur_ddr_pin_val = cur_ddr_val & 0x01u;
-        uint8_t new_port_pin_val = value & 0x01u;
+        uint8_t cur_port_pin_val = extract32(s->reg.port, pin, 1);
+        uint8_t cur_ddr_pin_val = extract32(s->reg.ddr, pin, 1);
+        uint8_t new_port_pin_val = extract32(value, pin, 1);
 
         if (cur_ddr_pin_val && (cur_port_pin_val != new_port_pin_val)) {
             qemu_set_irq(s->out[pin], new_port_pin_val);
         }
-        cur_port_val >>= 1u;
-        cur_ddr_val >>= 1u;
-        value >>= 1u;
     }
     s->reg.port = value & s->reg.ddr;
 }
-- 
2.34.1




reply via email to

[Prev in Thread] Current Thread [Next in Thread]