private void SetupRegisters() { var interruptPriorityRegisters = new Dictionary<long, DoubleWordRegister>(); priorities = new IValueRegisterField[64]; for(var i = 0; i < 8; i++) { var registerKey = (long)Registers.InterruptPriority0 + 4 * i; interruptPriorityRegisters.Add(registerKey, new DoubleWordRegister(this, 0x77777777)); for(var j = 0; j < 8; j++) { priorities[i * 8 + j] = interruptPriorityRegisters[registerKey].DefineValueField(4 * j, 3, writeCallback: (oldValue, newValue) => Update()); } } interruptPriorityRegisterCollection = new DoubleWordRegisterCollection(this, interruptPriorityRegisters); interruptOperationControl = new DoubleWordRegister(this); reflectMaskedFiq = interruptOperationControl.DefineFlagField(0, writeCallback: (oldValue, newValue) => Update()); reflectMaskedIrq = interruptOperationControl.DefineFlagField(1, writeCallback: (oldValue, newValue) => Update()); interruptOperationControl.DefineFlagField(2, changeCallback: (oldValue, newValue) => { if(newValue) { this.Log(LogLevel.Warning, "Unsupported delayed interrupt enable/disable mode was set."); } }); }