mirror of
https://github.com/xemu-project/xemu.git
synced 2024-11-24 03:59:52 +00:00
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:
parent
cfaf2806e8
commit
dc6f1734b7
@ -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 */
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user