On Thu Mar 23, 2023 at 10:36 PM AEST, Thomas Huth wrote:
> On 20/03/2023 08.03, Nicholas Piggin wrote:
> > +/* SPRs common denominator back to PowerPC Operating Environment 
> > Architecture */
> > +static const struct spr sprs_common[1024] = {
> > +  [1] = {"XER",            64,     RW,             SPR_HARNESS, }, /* 
> > Compiler */
> > +  [8] = {"LR",             64,     RW,             SPR_HARNESS, }, /* 
> > Compiler, mfspr/mtspr */
> > +  [9] = {"CTR",            64,     RW,             SPR_HARNESS, }, /* 
> > Compiler, mfspr/mtspr */
> > + [18] = {"DSISR",  32,     OS_RW,          SPR_INT, },
> > + [19] = {"DAR",            64,     OS_RW,          SPR_INT, },
> > + [26] = {"SRR0",   64,     OS_RW,          SPR_INT, },
> > + [27] = {"SRR1",   64,     OS_RW,          SPR_INT, },
> > +[268] = {"TB",             64,     RO      ,       SPR_ASYNC, },
> > +[269] = {"TBU",            32,     RO,             SPR_ASYNC, },
> > +[272] = {"SPRG0",  64,     OS_RW,          SPR_HARNESS, }, /* Int stack */
> > +[273] = {"SPRG1",  64,     OS_RW,          SPR_HARNESS, }, /* Scratch */
> > +[274] = {"SPRG2",  64,     OS_RW, },
> > +[275] = {"SPRG3",  64,     OS_RW, },
> > +[287] = {"PVR",            32,     OS_RO, },
> > +};
>
> Using a size of 1024 for each of these arrays looks weird. Why don't you add 
> a "nr" field to struct spr and specify the register number via that field 
> instead of using the index into the array as register number?

Oh I meant to reply to this. I did try it that way at first. When it
came manipulating the arrays like merging them or adding and
subtracing some SPRs, it required a bit of code to search, sort, add,
remove, etc. This way takes almost nothing. It is a dumb data structure
but it works okay here.

Thanks,
Nick

Reply via email to