INTERRUPTS
11-11
11
11.6.5.2
Posting Software Interrupts Directly in the Interrupt Table
Software can post interrupts by setting the desired pending-interrupt and pending-priorities bits
directly. Direct posting requires that software ensure that no external I/O agents post a pending
interrupt simultaneously, and that an interrupt cannot occur after one bit is set but before the other
is set. Note, however, that this method is not recommended and is not reliable.
11.6.5.3
Posting External Interrupts
An external agent posts (sets) a pending interrupt with vector “v” to the i960 processor through the
interrupt table by executing the following algorithm:
Generally, software cannot use this algorithm to post interrupts because there is no way for
software to have an atomic (locking) read/write operation span multiple instructions.
11.6.5.4
Posting Hardware Interrupts
Certain interrupts are posted directly to the processor by an implementation-dependent mechanism
that can bypass the interrupt table. This is often done for performance reasons.
11.6.6
Resolving Interrupt Priority
The interrupt controller continuously compares the processor’s priority to the priorities of the
highest-posted software interrupt and the highest-pending hardware interrupt. The core is
interrupted when a pending interrupt request is higher than the processor priority or has a priority
of 31. (Note that a priority-31 interrupt handler can be interrupted by another priority-31 interrupt.)
There are no priority-0 interrupts, since such an interrupt would never have a priority higher than
the current process, and would therefore never be serviced.
Example 11-2. External Agent Posting
External_Agent_Posting:
x = atomic_read(pending_priorities); # synchronize;
z = read(pending_interrupts[v/8]);
x[v/8] = 1;
z[v mod 8] = 1;
write(pending_interrupts[v/8]) = z;
atomic_write(pending_priorities) = x;
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: ......