[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v2 09/11] hw/intc/sh_intc: Turn some defines into an enum
From: |
Philippe Mathieu-Daudé |
Subject: |
Re: [PATCH v2 09/11] hw/intc/sh_intc: Turn some defines into an enum |
Date: |
Wed, 27 Oct 2021 17:50:01 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.2.0 |
On 10/27/21 15:46, BALATON Zoltan wrote:
> Turn the INTC_MODE defines into an enum (except the one which is a
> flag) and clean up the function returning these to make it clearer by
> removing nested ifs and superfluous parenthesis.
>
> 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 0bd27aaf4f..18461ff554 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
Why change 8 -> 0x80 without updating the definition usage?
> +typedef enum {
> + INTC_MODE_NONE,
> + INTC_MODE_DUAL_SET,
> + INTC_MODE_DUAL_CLR,
> + INTC_MODE_ENABLE_REG,
> + INTC_MODE_MASK_REG,
If this is defined by the spec, better explicit the enum value,
otherwise if someone add a misplaced field this would change the
definitions.
> +} 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 */
>
>
- Re: [PATCH v2 02/11] hw//sh4: Use qemu_log instead of fprintf to stderr, (continued)
- [PATCH v2 06/11] hw/char/sh_serial: QOM-ify, BALATON Zoltan, 2021/10/27
- [PATCH v2 07/11] hw/char/sh_serial: Add device id to trace output, BALATON Zoltan, 2021/10/27
- [PATCH v2 03/11] hw/sh4: Change debug printfs to traces, BALATON Zoltan, 2021/10/27
- [PATCH v2 08/11] hw/intc/sh_intc: Use existing macro instead of local one, BALATON Zoltan, 2021/10/27
- [PATCH v2 09/11] hw/intc/sh_intc: Turn some defines into an enum, BALATON Zoltan, 2021/10/27
- Re: [PATCH v2 09/11] hw/intc/sh_intc: Turn some defines into an enum,
Philippe Mathieu-Daudé <=