First, IDE_DMA__COUNT represents the number of enumerated
values, but is incorrectly listed as part of the enum.
Second, IDE_DMA_CMD_str() is internal to core.c and only
takes sane enums from ide_dma_cmd. So no need to check the
'enval' argument is within the enum range. Only checks
IDE_DMA_CMD_lookup[] entry is not NULL.
Both combined, IDE_DMA__COUNT can go.
Reduce IDE_DMA_CMD_lookup[] scope which is only used locally.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
hw/ide/core.c | 10 +++++-----
include/hw/ide/internal.h | 3 ---
2 files changed, 5 insertions(+), 8 deletions(-)
diff --git a/hw/ide/core.c b/hw/ide/core.c
index 5d1039378f..8bf61e7267 100644
--- a/hw/ide/core.c
+++ b/hw/ide/core.c
@@ -63,19 +63,19 @@ static const int smart_attributes[][12] = {
{ 190, 0x03, 0x00, 0x45, 0x45, 0x1f, 0x00, 0x1f, 0x1f, 0x00, 0x00, 0x32},
};
-const char *IDE_DMA_CMD_lookup[IDE_DMA__COUNT] = {
+static const char *IDE_DMA_CMD_lookup[] = {
[IDE_DMA_READ] = "DMA READ",
[IDE_DMA_WRITE] = "DMA WRITE",
[IDE_DMA_TRIM] = "DMA TRIM",
- [IDE_DMA_ATAPI] = "DMA ATAPI"
+ [IDE_DMA_ATAPI] = "DMA ATAPI",
};
static const char *IDE_DMA_CMD_str(enum ide_dma_cmd enval)
{
- if ((unsigned)enval < IDE_DMA__COUNT) {
- return IDE_DMA_CMD_lookup[enval];
+ if (!IDE_DMA_CMD_lookup[enval]) {
+ return "DMA UNKNOWN CMD";
}
- return "DMA UNKNOWN CMD";
+ return IDE_DMA_CMD_lookup[enval];
}
static void ide_dummy_transfer_stop(IDEState *s);
diff --git a/include/hw/ide/internal.h b/include/hw/ide/internal.h
index fc0aa81a88..e864fe8caf 100644
--- a/include/hw/ide/internal.h
+++ b/include/hw/ide/internal.h
@@ -352,11 +352,8 @@ enum ide_dma_cmd {
IDE_DMA_WRITE,
IDE_DMA_TRIM,
IDE_DMA_ATAPI,
- IDE_DMA__COUNT
};
-extern const char *IDE_DMA_CMD_lookup[IDE_DMA__COUNT];
-
#define ide_cmd_is_read(s) \
((s)->dma_cmd == IDE_DMA_READ)