171,175d170
< #if FULL_SYSTEM
< memset(interrupts, 0, sizeof(interrupts));
< intstatus = 0;
< #endif
<
262,268d256
< Tick
< BaseCPU::nextCycle()
< {
< Tick next_tick = curTick + clock - 1;
< next_tick -= (next_tick % clock);
< return next_tick;
< }
270,282d257
< Tick
< BaseCPU::nextCycle(Tick begin_tick)
< {
< Tick next_tick = begin_tick;
<
< while (next_tick < curTick)
< next_tick += clock;
<
< next_tick -= (next_tick % clock);
< assert(next_tick >= curTick);
< return next_tick;
< }
<
337,339c312
< for (int i = 0; i < TheISA::NumInterruptLevels; ++i)
< interrupts[i] = oldCPU->interrupts[i];
< intstatus = oldCPU->intstatus;
---
> interrupts = oldCPU->interrupts;
371,378d343
< DPRINTF(Interrupt, "Interrupt %d:%d posted\n", int_num, index);
<
< if (int_num < 0 || int_num >= TheISA::NumInterruptLevels)
< panic("int_num out of bounds\n");
<
< if (index < 0 || index >= sizeof(uint64_t) * 8)
< panic("int_num out of bounds\n");
<
380,381c345
< interrupts[int_num] |= 1 << index;
< intstatus |= (ULL(1) << int_num);
---
> interrupts.post(int_num, index);
387,397c351
< DPRINTF(Interrupt, "Interrupt %d:%d cleared\n", int_num, index);
<
< if (int_num < 0 || int_num >= TheISA::NumInterruptLevels)
< panic("int_num out of bounds\n");
<
< if (index < 0 || index >= sizeof(uint64_t) * 8)
< panic("int_num out of bounds\n");
<
< interrupts[int_num] &= ~(1 << index);
< if (interrupts[int_num] == 0)
< intstatus &= ~(ULL(1) << int_num);
---
> interrupts.clear(int_num, index);
403,406c357
< DPRINTF(Interrupt, "Interrupts all cleared\n");
<
< memset(interrupts, 0, sizeof(interrupts));
< intstatus = 0;
---
> interrupts.clear_all();
413,414c364
< SERIALIZE_ARRAY(interrupts, TheISA::NumInterruptLevels);
< SERIALIZE_SCALAR(intstatus);
---
> interrupts.serialize(os);
420,421c370
< UNSERIALIZE_ARRAY(interrupts, TheISA::NumInterruptLevels);
< UNSERIALIZE_SCALAR(intstatus);
---
> interrupts.unserialize(cp, section);