PROCEDURE CALLS
7-8
For most programs, the existence of the multiple local register sets and their saving/restoring in the
stack frames should be transparent. However, there are some special cases:
•
A store to the register save area in memory does not necessarily update a local register set,
unless user software executes
flushreg
first.
•
Reading from the register save area in memory does not necessarily return the current value of
a local register set, unless user software executes
flushreg
first.
•
There is no mechanism, including
flushreg
, to access the current local register set with a read
or write to memory.
•
flushreg
must be executed sometime before returning from the current frame when the
current procedure modifies the PFP in register r0, or else the behavior of the
ret
instruction is
not predictable.
•
The values of the local registers r2 to r15 in a new frame are undefined.
flushreg
is commonly used in debuggers or fault handlers to gain access to all saved local
registers. In this way, call history may be traced back through nested procedures.
7.1.4.1
Reserving Local Register Sets for High Priority Interrupts
To decrease interrupt latency for high priority interrupts, software can limit the number of frames
available to all remaining code. This includes code that is either in the executing state (non-inter-
rupted) or code that is in the interrupted state but has a process priority less than 28. For the
purposes of discussion here, this remaining code is referred to as non-critical code. Specifying a
limit for non-critical code ensures that some number of free frames are available to high-priority
interrupt service routines. Software can specify the limit for non-critical code by writing bits 10
through 8 of the register cache configuration word in the PRCB (see
Figure 12-6 on page 12-17
).
The value indicates how many frames within the register cache may be used by non-critical code
before a frame needs to be flushed to external memory. The programmed limit is used only when a
frame is pushed, which occurs only for an implicit or explicit call.
Allowed values of the programmed limit range from 0 to 7. Setting the value to 0 reserves no
frames for high-priority interrupts. Setting the value to 7 causes the register cache to become
disabled for non-critical code. See
section 12.3.1.2, “Process Control Block (PRCB)” (pg. 12-16)
.
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: ......