[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v6 16/30] hw/intc/sh_intc: Turn some defines into an enum
From: |
BALATON Zoltan |
Subject: |
[PATCH v6 16/30] hw/intc/sh_intc: Turn some defines into an enum |
Date: |
Fri, 29 Oct 2021 23:02:09 +0200 |
Turn the INTC_MODE defines into an enum and clean up the function
returning these to make it clearer by removing nested ifs and
superfluous parenthesis. The one remaining #define is a flag which is
moved further apart by changing its value from 8 to 0x80 to leave some
spare bits as this is or-ed with the enum value at some places.
Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu>
---
hw/intc/sh_intc.c | 43 +++++++++++++++++++------------------------
1 file changed, 19 insertions(+), 24 deletions(-)
diff --git a/hw/intc/sh_intc.c b/hw/intc/sh_intc.c
index ac47b7f905..16d94458d4 100644
--- a/hw/intc/sh_intc.c
+++ b/hw/intc/sh_intc.c
@@ -100,33 +100,27 @@ int sh_intc_get_pending_vector(struct intc_desc *desc,
int imask)
abort();
}
-#define INTC_MODE_NONE 0
-#define INTC_MODE_DUAL_SET 1
-#define INTC_MODE_DUAL_CLR 2
-#define INTC_MODE_ENABLE_REG 3
-#define INTC_MODE_MASK_REG 4
-#define INTC_MODE_IS_PRIO 8
-
-static unsigned int sh_intc_mode(unsigned long address,
- unsigned long set_reg, unsigned long clr_reg)
+#define INTC_MODE_IS_PRIO 0x80
+typedef enum {
+ INTC_MODE_NONE,
+ INTC_MODE_DUAL_SET,
+ INTC_MODE_DUAL_CLR,
+ INTC_MODE_ENABLE_REG,
+ INTC_MODE_MASK_REG,
+} SHIntCMode;
+
+
+static SHIntCMode sh_intc_mode(unsigned long address, unsigned long set_reg,
+ unsigned long clr_reg)
{
- if ((address != A7ADDR(set_reg)) &&
- (address != A7ADDR(clr_reg)))
+ if (address != A7ADDR(set_reg) && address != A7ADDR(clr_reg)) {
return INTC_MODE_NONE;
-
- if (set_reg && clr_reg) {
- if (address == A7ADDR(set_reg)) {
- return INTC_MODE_DUAL_SET;
- } else {
- return INTC_MODE_DUAL_CLR;
- }
}
-
- if (set_reg) {
- return INTC_MODE_ENABLE_REG;
- } else {
- return INTC_MODE_MASK_REG;
+ if (set_reg && clr_reg) {
+ return address == A7ADDR(set_reg) ?
+ INTC_MODE_DUAL_SET : INTC_MODE_DUAL_CLR;
}
+ return set_reg ? INTC_MODE_ENABLE_REG : INTC_MODE_MASK_REG;
}
static void sh_intc_locate(struct intc_desc *desc,
@@ -137,7 +131,8 @@ static void sh_intc_locate(struct intc_desc *desc,
unsigned int *width,
unsigned int *modep)
{
- unsigned int i, mode;
+ SHIntCMode mode;
+ unsigned int i;
/* this is slow but works for now */
--
2.21.4
- [PATCH v6 11/30] hw/char/sh_serial: Embed QEMUTimer in state struct, (continued)
- [PATCH v6 11/30] hw/char/sh_serial: Embed QEMUTimer in state struct, BALATON Zoltan, 2021/10/29
- [PATCH v6 13/30] hw/char/sh_serial: QOM-ify, BALATON Zoltan, 2021/10/29
- [PATCH v6 17/30] hw/intc/sh_intc: Rename iomem region, BALATON Zoltan, 2021/10/29
- [PATCH v6 19/30] hw/intc/sh_intc: Move sh_intc_register() closer to its only user, BALATON Zoltan, 2021/10/29
- [PATCH v6 15/30] hw/intc/sh_intc: Use existing macro instead of local one, BALATON Zoltan, 2021/10/29
- [PATCH v6 03/30] hw/sh4: Coding style: White space fixes, BALATON Zoltan, 2021/10/29
- [PATCH v6 20/30] hw/intc/sh_intc: Remove excessive parenthesis, BALATON Zoltan, 2021/10/29
- [PATCH v6 16/30] hw/intc/sh_intc: Turn some defines into an enum,
BALATON Zoltan <=
- [PATCH v6 18/30] hw/intc/sh_intc: Drop another useless macro, BALATON Zoltan, 2021/10/29
- [PATCH v6 14/30] hw/char/sh_serial: Add device id to trace output, BALATON Zoltan, 2021/10/29
- [PATCH v6 23/30] hw/intc/sh_intc: Replace abort() with g_assert_not_reached(), BALATON Zoltan, 2021/10/29
- [PATCH v6 24/30] hw/intc/sh_intc: Avoid using continue in loops, BALATON Zoltan, 2021/10/29
- [PATCH v6 28/30] hw/timer/sh_timer: Do not wrap lines that are not too long, BALATON Zoltan, 2021/10/29
- [PATCH v6 25/30] hw/intc/sh_intc: Simplify allocating sources array, BALATON Zoltan, 2021/10/29
- [PATCH v6 26/30] hw/intc/sh_intc: Remove unneeded local variable initialisers, BALATON Zoltan, 2021/10/29