aboutsummaryrefslogtreecommitdiff
path: root/hw
diff options
context:
space:
mode:
authorBALATON Zoltan <balaton@eik.bme.hu>2021-10-29 23:02:09 +0200
committerPhilippe Mathieu-Daudé <f4bug@amsat.org>2021-10-30 18:39:37 +0200
commitdc6f1734b704e5563e4c512393e2629799093681 (patch)
tree1bf39004bfb4e29628a8b9ff11dd0213bdb8b0ae /hw
parentcfaf2806e87b0eb962866e041a0fd75a524394d8 (diff)
downloadqemu-dc6f1734b704e5563e4c512393e2629799093681.zip
qemu-dc6f1734b704e5563e4c512393e2629799093681.tar.gz
qemu-dc6f1734b704e5563e4c512393e2629799093681.tar.bz2
hw/intc/sh_intc: Turn some defines into an enum
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> Message-Id: <4adf4e1ac9d2e728e5a536c69e310d77f0c4455a.1635541329.git.balaton@eik.bme.hu> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Diffstat (limited to 'hw')
-rw-r--r--hw/intc/sh_intc.c42
1 files changed, 18 insertions, 24 deletions
diff --git a/hw/intc/sh_intc.c b/hw/intc/sh_intc.c
index a98953d..f0ef831 100644
--- a/hw/intc/sh_intc.c
+++ b/hw/intc/sh_intc.c
@@ -100,33 +100,26 @@ 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)
+typedef enum {
+ INTC_MODE_NONE,
+ INTC_MODE_DUAL_SET,
+ INTC_MODE_DUAL_CLR,
+ INTC_MODE_ENABLE_REG,
+ INTC_MODE_MASK_REG,
+} SHIntCMode;
+#define INTC_MODE_IS_PRIO 0x80
+
+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 +130,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 */