Errata Sheet - Infineon
Errata Sheet - Infineon
Errata Sheet - Infineon
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 />
XC161CS-32F, (E)ES-BB, BB<br />
Functional Problems<br />
(e.g. stack models), to perform branches within or between code segments. Two<br />
methods basically exist for manipulations of the return address:<br />
• M1: the return address contained in the last stack frame is directly modified:<br />
[SP]+4: CSP o --> CSP m ; CSP value originally pushed is modified to CSP m [SP]+2:<br />
IP o --> IP m ; IP value originally pushed is modified to IP m [SP]: <br />
• M2: an additional frame with a new return (branch target) address is pushed onto the<br />
system stack. The original return address is still available on the system stack:<br />
[SP]+4: CSP o ; CSP value originally pushed on system stack by last CALLS<br />
[SP]+2: IP o ; IP value originally pushed on system stack by last CALL(S)<br />
[SP]: CSP m ; CSP value additionally pushed on system stack<br />
[SP]-2: IP o ; IP value additionally pushed on system stack<br />
[SP]: <br />
In order to optimize the execution speed of return instructions, the C166S V2 core<br />
additionally stores (mirrors) the 24-bit return address information (CSP r :IP r , r=1..6) of the<br />
last up to 6 subroutine calls (invoked by CALLA/R/I/S, PCALL) in a ’last in/first out’<br />
Return Stack (see User’s Manual, IFU Block Diagram). Whenever one of the return<br />
instructions RET, RETS, RETP is executed, the information from the top of the Return<br />
Stack is used to already start fetching the return target instruction. When the actual<br />
return address from the system stack is available, it is compared with the information<br />
from the Return Stack. In case of a mismatch, the instruction that was ’speculatively’<br />
read with the address information obtained from the Return Stack is cancelled, and a<br />
new fetch with the address from the system stack is started.<br />
The Return Stack (including the potential performance increase) is not used in<br />
combination with interrupts/traps and the corresponding RETI instruction.<br />
The Return Stack can only provide a performance increase when identical return<br />
addresses are delivered by the Return Stack and by the system stack. This is only the<br />
case when the system stack is not manipulated by software, i.e.<br />
• the return address on the system stack is not directly modified by software (method<br />
M1)<br />
• no additional ’return’ addresses are pushed on the system stack by software to<br />
perform special branches (method M2), or RETI is used (after pushing PSW) to<br />
return from a subroutine call. Otherwise, Return Stack and system stack are no<br />
longer aligned, and the comparison of the return addresses will also fail for all<br />
remaining Return Stack entries (r=1..5).<br />
Problem Description:<br />
When the return address on the system stack, composed of CSP m and/or IP m , is<br />
modified by software, and the Return Stack is not empty, care must be taken that a valid<br />
instruction is also located at<br />
1. address CSP rtop :IP rtop when the next return instruction is RETS<br />
2. address CSP C :IP rtop when the next return instruction is RET or RETP<br />
<strong>Errata</strong> <strong>Sheet</strong> 9/50 V1.1, 2007-06-21