TriCore
®
TC1.6P & TC1.6E
32-bit Unified Processor Core
Instruction Set
V1.0 2013-07
User Manual (Volume 2) 3-63
CALL
Call
Description
Add the value specified by disp24, multiplied by two and sign-extended, to the address of the CALL instruction and
jump to the resulting address. The target address range is ±16 MBytes relative to the current PC. In parallel with
the jump, save the caller’s Upper Context to an available Context Save Area (CSA). Set register A[11] (return
address) to the address of the next instruction beyond the call.
Note:After CALL, upper context registers are undefined except for A[10] and A[11].
Note:When the PSW is saved, the CDE bit is forced to '1'.
CALLdisp24 (B)
if (FCX == 0) trap(FCU);
if (PSW.CDE) then if (cdc_increment()) then trap(CDO);
PSW.CDE = 1;
ret_addr = PC + 4;
tmp_FCX = FCX;
EA = {FCX.FCXS, 6'b0, FCX.FCXO, 6'b0};
new_FCX = M(EA, word);
M(EA,16 * word) = {PCXI, PSW, A[10], A[11], D[8], D[9], D[10], D[11], A[12], A[13], A[14], A[15], D[12], D[13],
D[14], D[15]};
PCXI.PCPN = ICR.CCPN;
PCXI.PIE = ICR.IE;
PCXI.UL = 1;
PCXI[19:0] = FCX[19:0];
FCX[19:0] = new_FCX[19:0];
PC = PC + sign_ext(2 * disp24);
A[11] = ret_addr[31:0];
if (tmp_FCX == LCX) trap(FCD);
CALLdisp8 (SB)
Add the value specified by disp8, multiplied by two and sign-extended, to the address of the CALL instruction,
and jump to the resulting address. The target address range is ±256 bytes relative to the current PC.
In parallel with the jump, save the caller’s Upper Context to an available Context Save Area (CSA). Set register
A[11] (return address) to the address of the next instruction beyond the call.
Note:After CALL, upper context registers are undefined except for A[10] and A[11].
Note:When the PSW is saved, the CDE bit is forced to '1'.
31
disp24[15:0]
16 15
disp24[23:16]
8 7
6D
H
0