Errata and Corrections
2. Write to a PC stack inside a call
• DO UNTIL instruction
If a loop is present inside the delayed branch, it performs a sequen-
tial operation after executing the loop and does not jump to the
label. This happens because the address of the destination of the
jump is flushed out of the pipeline. Instead, in the pipeline (Fetch,
Decode, and Execute) are the instructions of the loop, which causes
sequential operation.
H-4
www.BDTIC.com/ADI
If the user writes to the PC stack inside a call, the value
pushed onto the PC stack due to a call is overwritten by the
value written onto the PC stack. Hence, when the user does
an RTS, the user returns to the address pushed onto the PC
stack and not to the address pushed while branching to the
subroutine.
For example:
[20111] call foo3(db);
[20112] PCSTK=0x2011C;
[20113] nop;
[20114]
The value
is pushed onto the PC stack, while the
20114
value
is written to the PC stack. Accordingly, the
2011C
value
is overwritten by
20114
when the user comes back by doing an RTS, the return is to
the address
and not to
2011C
restricted.
in the PC stack. Thus,
2011C
. Consequently, this is
20114
Need help?
Do you have a question about the ADSP-2106x SHARC and is the answer not in the manual?
Questions and answers