1
Lowlevel-Coding / Re: ARM Timer-IRQ
« am: 30. August 2013, 21:33 »
Bei anderen Exceptions mit dem selben Befehl, aber anderem op2.
#8 bei Data Abort, #4 bei FIQs u. IRQs und #0 bei Prefetch Abort und Undefined instruction.
Wegen der Pipeline muss man ggf. eine oder zwei Befehle abziehen, das S-bit des Befehls kümmert sich darum,
dass mov cpsr, spsr GLEICHZEITIG stattfindet.
Mit einem Debugger kannst du ja mal an 0x18 einen Breakpoint setzen und dir SPSR anschauen.
Edit:
#8 bei Data Abort, #4 bei FIQs u. IRQs und #0 bei Prefetch Abort und Undefined instruction.
Wegen der Pipeline muss man ggf. eine oder zwei Befehle abziehen, das S-bit des Befehls kümmert sich darum,
dass mov cpsr, spsr GLEICHZEITIG stattfindet.
Mit einem Debugger kannst du ja mal an 0x18 einen Breakpoint setzen und dir SPSR anschauen.
Edit:
Zitat
- Wenn ein IRQ auftritt, werden R15 (PC) nach R14 und CPSR nach SPSR gesichert.Genauer: lr des Prozessormodus. Bei IRQ R14_irq, bei FIQ R14_fiq, bei Undefines Instruction R14_und usw.
Zitat
- In CPSR wird das I-Flag deaktiviert, d.h. IRQs abgeschaltet, und dann in die ISR gesprungen.Und bei FIQs zusätzlich noch FIQs abgeschaltet.