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:
Andreas Sandberg 2012-09-25 11:49:40 -05:00
parent 4544f3def4
commit 6f603e0807

View file

@ -43,6 +43,7 @@
#define __ARCH_ARM_MISCREGS_HH__
#include "base/bitunion.hh"
#include "base/compiler.hh"
namespace ArmISA
{
@ -250,7 +251,7 @@ namespace ArmISA
unsigned crm, unsigned opc2);
const char * const miscRegName[NUM_MISCREGS] = {
const char * const miscRegName[] = {
"cpsr", "cpsr_q", "spsr", "spsr_fiq", "spsr_irq", "spsr_svc",
"spsr_mon", "spsr_und", "spsr_abt",
"fpsr", "fpsid", "fpscr", "fpscr_qc", "fpscr_exc", "fpexc",
@ -325,6 +326,9 @@ namespace ArmISA
"nop", "raz"
};
static_assert(sizeof(miscRegName) / sizeof(*miscRegName) == NUM_MISCREGS,
"The miscRegName array and NUM_MISCREGS are inconsistent.");
BitUnion32(CPSR)
Bitfield<31,30> nz;
Bitfield<29> c;