23.12.2013 Views

Errata Sheet - Infineon

Errata Sheet - Infineon

Errata Sheet - Infineon

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Errata</strong> <strong>Sheet</strong><br />

Functional Deviations<br />

return execution to the first instruction of the trap handler - where it will now<br />

execute to completion without undesired interruption. If the interrupted traps are<br />

considered recoverable but are time sensitive and need to be executed<br />

immediately, then some method of deferring the interrupt processing is<br />

required. If the test of the situation (e.g. checking the PCXI.PIE bit is clear) is<br />

at the start of the Interrupt handler, then there are two simple methods to<br />

consider:<br />

The first method would be to re-request the interrupt, by writing the appropriate<br />

Service Request Control Register with the SETR bit set to one, and then<br />

executing an RFE which will be taken back to the trap handler. The interrupt will<br />

now be pending again, but will not be taken until the trap handler executes its<br />

RFE to re-enable interrupts. This method is simple if the device (and hence it's<br />

SRC register address) generating the interrupt is known. If this is not easy to<br />

determine (statically or dynamically), the second method might be preferred.<br />

The second method would be to jump to the trap handler, after setting the trap<br />

identification number (TIN) and the return address (which the trap handler will<br />

use) to be the next instruction in the interrupt handler. This relies on the fact that<br />

the CSA saved away by the preemption of the trap handler is equally valid as<br />

an execution context for the interrupt handler. The code for this method is as<br />

follows:<br />

interruptN:<br />

mfcr d15, PCXI<br />

jnz.t d15, 23, interruptReal<br />

; force CSA into memory<br />

dsync<br />

sh.h d14, d15, #12<br />

insert d15, d14, d15, #6, #16<br />

mov.a a15, d15<br />

; load trap value of d15 from CSA<br />

ld.w d15, [a15]0x3C<br />

mov.a a15, a11<br />

movh.a a11, #@his(interuptReal)<br />

lea a11, [a11]@los(interruptReal)<br />

; jump to trap handler, will return to interruptReal<br />

ji a15<br />

TC1767, EES-AD, ES-AD, AD 24/73 Rel. 1.4, 11.12.2009

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!