On Thu, 11 Apr 2019 19:09:38 +0900,
Philippe Mathieu-Daudé wrote:
>
> Hi Yoshinori,
>
> Note about the patch subject:
> - typo in regiserfields (missing 't') -> registerfields
> - I'd simply use "hw/registerfields: Add 8bit and 16bit register macros"
OK.
> On 4/1/19 4:03 PM, Yoshinori Sato wrote:
> > Some RX peripheral using 8bit and 16bit registers.
> > Added 8bit and 16bit APIs.
> >
> > Signed-off-by: Yoshinori Sato <ysato@users.sourceforge.jp>
> > ---
> > include/hw/registerfields.h | 10 ++++++++++
> > 1 file changed, 10 insertions(+)
> >
> > diff --git a/include/hw/registerfields.h b/include/hw/registerfields.h
> > index 2659a58737..f6bf911990 100644
> > --- a/include/hw/registerfields.h
> > +++ b/include/hw/registerfields.h
> > @@ -22,6 +22,14 @@
> > enum { A_ ## reg = (addr) }; \
> > enum { R_ ## reg = (addr) / 4 };
> >
> > +#define REG8(reg, addr) \
> > + enum { A_ ## reg = (addr) }; \
> > + enum { R_ ## reg = (addr) };
> > +
> > +#define REG16(reg, addr) \
> > + enum { A_ ## reg = (addr) }; \
> > + enum { R_ ## reg = (addr) / 2 };
> > +
> > /* Define SHIFT, LENGTH and MASK constants for a field within a register */
> >
> > /* This macro will define R_FOO_BAR_MASK, R_FOO_BAR_SHIFT and R_FOO_BAR_LENGTH
> > @@ -40,6 +48,8 @@
> > #define FIELD_EX64(storage, reg, field) \
> > extract64((storage), R_ ## reg ## _ ## field ## _SHIFT, \
> > R_ ## reg ## _ ## field ## _LENGTH)
> > +#define FIELD_EX8 FIELD_EX32
> > +#define FIELD_EX16 FIELD_EX32
> >
> > /* Extract a field from an array of registers */
> > #define ARRAY_FIELD_EX32(regs, reg, field) \
>
> For completeness, what about adding FIELD_DP8() and FIELD_DP16()?
I did not add it because I did not use it.
Certainly it is strange that there is no these, so I will add it.
As the registerfields support is incomplete, we will fix it together.
> Regards,
>
> Phil.
>
--
Yosinori Sato