Bug fix: check if vm exists
[avr-sim.git] / TimerInterrupts.h
blob70ba247cd914ede4240571eb81f10bddff287932
1 #ifndef AVR_TIMERINTERRUPTS_H
2 #define AVR_TIMERINTERRUPTS_H
4 #include "Hardware.h"
6 namespace avr {
8 class TimerInterrupts : public Hardware {
9 public:
10 TimerInterrupts(Bus & bus, unsigned char mask,
11 unsigned int bit0Vec, unsigned int bit1Vec,
12 unsigned int bit2Vec, unsigned int bit3Vec,
13 unsigned int bit4Vec, unsigned int bit5Vec,
14 unsigned int bit6Vec, unsigned int bit7Vec);
16 public:
17 bool attachReg(const char *name, IORegister *reg);
18 void regChanged( IORegister *reg );
20 private:
21 void checkForNewSetIrq(unsigned char tiac);
22 void checkForNewClearIrq(unsigned char tiac);
24 private:
25 unsigned char mask;
26 unsigned char tifrOld;
27 unsigned char timskOld;
29 unsigned int bit0Vec, bit1Vec,
30 bit2Vec, bit3Vec,
31 bit4Vec, bit5Vec,
32 bit6Vec, bit7Vec;
34 private:
35 IORegister *tifr;
36 IORegister *timsk;
39 inline TimerInterrupts::TimerInterrupts(Bus & bus, unsigned char mask,
40 unsigned int bit0Vec, unsigned int bit1Vec,
41 unsigned int bit2Vec, unsigned int bit3Vec,
42 unsigned int bit4Vec, unsigned int bit5Vec,
43 unsigned int bit6Vec, unsigned int bit7Vec)
44 : Hardware(bus), mask(mask),
45 bit0Vec(bit0Vec), bit1Vec(bit1Vec), bit2Vec(bit2Vec), bit3Vec(bit3Vec),
46 bit4Vec(bit4Vec), bit5Vec(bit5Vec), bit6Vec(bit6Vec), bit7Vec(bit7Vec) {
51 #endif /*AVR_TIMERINTERRUPTS_H*/