On 10/29/21 23:02, BALATON Zoltan wrote:
> 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 <[email protected]>
> ---
> 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;
This doesn't seem clearer, because sh_intc_write() does:
switch (mode) {
case INTC_MODE_ENABLE_REG | INTC_MODE_IS_PRIO:
break;
case INTC_MODE_DUAL_SET:
value |= *valuep;
break;
case INTC_MODE_DUAL_CLR:
value = *valuep & ~value;
break;
default:
g_assert_not_reached();
}
Anyway I expect this whole file to be rewritten by Yoshinori,
so I don't mind much.