diff options
author | Gerd Hoffmann <kraxel@redhat.com> | 2024-01-08 17:08:58 +0100 |
---|---|---|
committer | Michael Tokarev <mjt@tls.msk.ru> | 2024-01-20 13:01:57 +0300 |
commit | 143d230d51a8f125804cb75a9bbc430e91027f61 (patch) | |
tree | fb2d86625cfd5f986e9bbdcb64e47a54e31d6eab /hw | |
parent | 731783ff1e7fced41dc857a0e39deadaf8ae2477 (diff) | |
download | qemu-143d230d51a8f125804cb75a9bbc430e91027f61.zip qemu-143d230d51a8f125804cb75a9bbc430e91027f61.tar.gz qemu-143d230d51a8f125804cb75a9bbc430e91027f61.tar.bz2 |
hw/pflash: use ldn_{be,le}_p and stn_{be,le}_p
Use the helper functions we have to read/write multi-byte values
in correct byte order.
Suggested-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Message-ID: <20240108160900.104835-3-kraxel@redhat.com>
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
(cherry picked from commit 5dd58358a57048e5ceabf5c91c0544f4f56afdcd)
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
Diffstat (limited to 'hw')
-rw-r--r-- | hw/block/pflash_cfi01.c | 63 |
1 files changed, 8 insertions, 55 deletions
diff --git a/hw/block/pflash_cfi01.c b/hw/block/pflash_cfi01.c index 82f592d..f1a9dd5 100644 --- a/hw/block/pflash_cfi01.c +++ b/hw/block/pflash_cfi01.c @@ -225,34 +225,10 @@ static uint32_t pflash_data_read(PFlashCFI01 *pfl, hwaddr offset, uint32_t ret; p = pfl->storage; - switch (width) { - case 1: - ret = p[offset]; - break; - case 2: - if (be) { - ret = p[offset] << 8; - ret |= p[offset + 1]; - } else { - ret = p[offset]; - ret |= p[offset + 1] << 8; - } - break; - case 4: - if (be) { - ret = p[offset] << 24; - ret |= p[offset + 1] << 16; - ret |= p[offset + 2] << 8; - ret |= p[offset + 3]; - } else { - ret = p[offset]; - ret |= p[offset + 1] << 8; - ret |= p[offset + 2] << 16; - ret |= p[offset + 3] << 24; - } - break; - default: - abort(); + if (be) { + ret = ldn_be_p(p + offset, width); + } else { + ret = ldn_le_p(p + offset, width); } trace_pflash_data_read(pfl->name, offset, width, ret); return ret; @@ -408,34 +384,11 @@ static inline void pflash_data_write(PFlashCFI01 *pfl, hwaddr offset, trace_pflash_data_write(pfl->name, offset, width, value, pfl->counter); p = pfl->storage + offset; - switch (width) { - case 1: - p[0] = value; - break; - case 2: - if (be) { - p[0] = value >> 8; - p[1] = value; - } else { - p[0] = value; - p[1] = value >> 8; - } - break; - case 4: - if (be) { - p[0] = value >> 24; - p[1] = value >> 16; - p[2] = value >> 8; - p[3] = value; - } else { - p[0] = value; - p[1] = value >> 8; - p[2] = value >> 16; - p[3] = value >> 24; - } - break; + if (be) { + stn_be_p(p, width, value); + } else { + stn_le_p(p, width, value); } - } static void pflash_write(PFlashCFI01 *pfl, hwaddr offset, |