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>
This commit is contained in:
BALATON Zoltan 2021-10-29 23:02:09 +02:00 committed by Philippe Mathieu-Daudé
parent cfaf2806e8
commit dc6f1734b7

View File

@ -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
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 unsigned int sh_intc_mode(unsigned long address,
unsigned long set_reg, unsigned long clr_reg)
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;
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 */