Re: [kvm-unit-tests v2 06/10] powerpc/sprs: Specify SPRs with data rather than code
From: "Nicholas Piggin" <npiggin@gmail.com>
Date: 2023-03-27 12:01:03
Also in:
kvm
On Thu Mar 23, 2023 at 10:36 PM AEST, Thomas Huth wrote:
On 20/03/2023 08.03, Nicholas Piggin wrote:quoted
+/* 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