PROCEDURE CALLS
7-5
7
7.1.2.4
Considerations When Popping Data off the Stack
Care should be taken in reading the stack in the presence of unforeseen faults and interrupts. In the
general case, to ensure that data about to be popped off the stack is not corrupted by a fault or
interrupt record, the data should be read first and then the sp should be decremented:
subo
24,sp,r4
ld
20(r4),rn
...
ld (r4),rn
mov
r4,sp
7.1.2.5
Previous Frame Pointer
The previous frame pointer is the previous stack frame’s first byte address. This address’s upper
28 bits are stored in local register r0, the previous frame pointer (PFP) register. The four
least-significant bits of the PFP are used to store the return type field. See
Figure 7-5
and
Table 7-2
for more information on the PFP and the return-type field.
7.1.2.6
Return Type Field
PFP register bits 0 through 3 contain return type information for the calling procedure. When a
procedure call is made — either explicit or implicit — the processor records the call type in the
return type field. The processor then uses this information to select the proper return mechanism
when returning to the calling procedure. The use of this information is described in
section 7.8,
“RETURNS” (pg. 7-20)
.
7.1.2.7
Return Instruction Pointer
The actual RIP register (r2) is reserved by the processor to support the call and return mechanism
and must not be used by software; the actual value of RIP is unpredictable at all times. For
example, an implicit procedure call (fault or interrupt) can occur at any time and modify the RIP.
An OPERATION.INVALID_OPERAND fault is generated when attempting to write to the RIP.
The image of the RIP register in the stack frame is used by the processor to determine that frame’s
return instruction address. When a call is made, the processor saves the address of the instruction
after the call in the image of the RIP register in the calling frame.
7.1.3
Call and Return Action
To clarify how procedures are linked and how the local registers and stack are managed, the
following sections describe a general call and return operation and the operations performed with
the FP, SP, PFP and RIP registers.
Summary of Contents for i960 Jx
Page 1: ...Release Date December 1997 Order Number 272483 002 i960 Jx Microprocessor Developer s Manual ...
Page 24: ......
Page 25: ...1 INTRODUCTION ...
Page 26: ......
Page 35: ...2 DATA TYPES AND MEMORY ADDRESSING MODES ...
Page 36: ......
Page 46: ......
Page 47: ...3 PROGRAMMING ENVIRONMENT ...
Page 48: ......
Page 73: ...4 CACHE AND ON CHIP DATA RAM ...
Page 74: ......
Page 85: ...5 INSTRUCTION SET OVERVIEW ...
Page 86: ......
Page 111: ...6 INSTRUCTION SET REFERENCE ...
Page 112: ......
Page 233: ...7 PROCEDURE CALLS ...
Page 234: ......
Page 256: ......
Page 257: ...8 FAULTS ...
Page 258: ......
Page 291: ...9 TRACING AND DEBUGGING ...
Page 292: ......
Page 309: ...10 TIMERS ...
Page 310: ......
Page 324: ......
Page 325: ...11 INTERRUPTS ...
Page 326: ......
Page 369: ...12 INITIALIZATION AND SYSTEM REQUIREMENTS ...
Page 370: ......
Page 412: ......
Page 413: ...13 MEMORY CONFIGURATION ...
Page 414: ......
Page 429: ...14 EXTERNAL BUS ...
Page 430: ......
Page 468: ......
Page 469: ...15 TEST FEATURES ...
Page 470: ......
Page 493: ...A CONSIDERATIONS FOR WRITING PORTABLE CODE ...
Page 494: ......
Page 502: ......
Page 503: ...B OPCODES AND EXECUTION TIMES ...
Page 504: ......
Page 515: ...C MACHINE LEVEL INSTRUCTION FORMATS ...
Page 516: ......
Page 523: ...D REGISTER AND DATA STRUCTURES ...
Page 524: ......
Page 550: ......
Page 551: ...GLOSSARY ...
Page 552: ......
Page 561: ...INDEX ...
Page 562: ......
Page 578: ......