arm: Use a static_assert to test that miscRegName[] is complete
Instead of statically defining miscRegName to contain NUM_MISCREGS elements, let the compiler determine the length of the array. This allows us to use a static_assert to test that all registers are listed in the name vector.
This commit is contained in:
parent
4544f3def4
commit
6f603e0807
1 changed files with 5 additions and 1 deletions
|
@ -43,6 +43,7 @@
|
||||||
#define __ARCH_ARM_MISCREGS_HH__
|
#define __ARCH_ARM_MISCREGS_HH__
|
||||||
|
|
||||||
#include "base/bitunion.hh"
|
#include "base/bitunion.hh"
|
||||||
|
#include "base/compiler.hh"
|
||||||
|
|
||||||
namespace ArmISA
|
namespace ArmISA
|
||||||
{
|
{
|
||||||
|
@ -250,7 +251,7 @@ namespace ArmISA
|
||||||
unsigned crm, unsigned opc2);
|
unsigned crm, unsigned opc2);
|
||||||
|
|
||||||
|
|
||||||
const char * const miscRegName[NUM_MISCREGS] = {
|
const char * const miscRegName[] = {
|
||||||
"cpsr", "cpsr_q", "spsr", "spsr_fiq", "spsr_irq", "spsr_svc",
|
"cpsr", "cpsr_q", "spsr", "spsr_fiq", "spsr_irq", "spsr_svc",
|
||||||
"spsr_mon", "spsr_und", "spsr_abt",
|
"spsr_mon", "spsr_und", "spsr_abt",
|
||||||
"fpsr", "fpsid", "fpscr", "fpscr_qc", "fpscr_exc", "fpexc",
|
"fpsr", "fpsid", "fpscr", "fpscr_qc", "fpscr_exc", "fpexc",
|
||||||
|
@ -325,6 +326,9 @@ namespace ArmISA
|
||||||
"nop", "raz"
|
"nop", "raz"
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static_assert(sizeof(miscRegName) / sizeof(*miscRegName) == NUM_MISCREGS,
|
||||||
|
"The miscRegName array and NUM_MISCREGS are inconsistent.");
|
||||||
|
|
||||||
BitUnion32(CPSR)
|
BitUnion32(CPSR)
|
||||||
Bitfield<31,30> nz;
|
Bitfield<31,30> nz;
|
||||||
Bitfield<29> c;
|
Bitfield<29> c;
|
||||||
|
|
Loading…
Reference in a new issue