Volume 2, Part 1: Debugging and Performance Monitoring
2:163
follow the implementation-independent overflow interrupt service routine outlined in
. Use of alternate context-switch sequences may be incompatible with future
implementations.
If the outgoing context has an interrupt pending but has not yet invoked the
performance monitor interrupt service routine, the interrupt may be delivered to the
incoming context even if it is a non-monitored process. The interrupt service routine
can recognize this kind of bogus interrupt by noticing that either: the freeze bit is zero
or the context is not being monitored.
7.2.4.2
Performance Monitor Context Switch
The context switch routine described in
implementation-independent context switching of Itanium performance monitors. Using
bit masks provided by PAL (PAL
PMCmask
, PAL
PMDmask
) the routine can generically
save/restore the contents of all implementation-specific performance monitoring
registers. If the outgoing context is monitored, then all PMC and PMD registers whose
mask bit is set are preserved by software. But if the outgoing context is monitored and
the context switch routine determines that the outgoing context has a pending
performance monitor interrupt (by reading the freeze bit with the knowledge that it was
not generated by software) then software also preserves the outgoing context's
overflow status registers (PMC[0]..PMC[3]) before all PMC and PMD registers whose
mask bit is set. Here, it is explicitly assumed that software tracks monitored processes
and can determine whether a process is monitored prior to reading the freeze bit. The
context switch handler then restores the performance monitor freeze bit which resets
event collection for the new context. Sometime into the incoming (possibly
unmonitored) context, the performance overflow interrupt service routine will run, but
by looking at the status of the freeze bit software can determine whether this interrupt
can be ignored (for details refer to
Figure 7-7.
Performance Monitor Interrupt Service Routine
(Implementation Independent)
//Assumes PSR.up and PSR.pp are switched to zero together
if ((PMC[0].fr==1) && (PSR.up == 1) || (PSR.pp == 1)){
// freeze bit is set. Search for interrupt.
for (i=0; i< 4; i++) {
if (PMC[i] != 0) {
startbit = (i==0) ? 4 : 0;
for (j=startbit; j < 64 ; j++) {
if (PMC[i]{j}) {
counter_id = 64*i + j;
if (counter_id > PAL_GENERIC_PMCPMD_PAIRS) {
Implementation_Specific_Update(counter_id);
}
else { // Generic PMC/PMD counter
if (PMC[counter_id].oi)
ovflcount[counter_id] += 1;
}
}
} // scan overflow bits
}
}
}
// Either ignore bogus interrupt or clear PMC[3]..PMC[1]
for (i=3; i>=1; i--) { PMC[i] = 0; }
rfi
Summary of Contents for ITANIUM ARCHITECTURE - SOFTWARE DEVELOPERS VOLUME 3 REV 2.3
Page 1: ......
Page 11: ...x Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Page 13: ...1 2 Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Page 33: ...1 22 Volume 1 Part 1 Introduction to the Intel Itanium Architecture ...
Page 57: ...1 46 Volume 1 Part 1 Execution Environment ...
Page 147: ...1 136 Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Page 149: ...1 138 Volume 1 Part 2 About the Optimization Guide ...
Page 191: ...1 180 Volume 1 Part 2 Predication Control Flow and Instruction Stream ...
Page 230: ......
Page 248: ...236 Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Page 250: ...2 2 Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Page 264: ...2 16 Volume 2 Part 1 Intel Itanium System Environment ...
Page 380: ...2 132 Volume 2 Part 1 Interruptions ...
Page 398: ...2 150 Volume 2 Part 1 Register Stack Engine ...
Page 486: ...2 238 Volume 2 Part 1 IA 32 Interruption Vector Descriptions ...
Page 750: ...2 502 Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Page 754: ...2 506 Volume 2 Part 2 About the System Programmer s Guide ...
Page 796: ...2 548 Volume 2 Part 2 Interruptions and Serialization ...
Page 808: ...2 560 Volume 2 Part 2 Context Management ...
Page 842: ...2 594 Volume 2 Part 2 Floating point System Software ...
Page 850: ...2 602 Volume 2 Part 2 IA 32 Application Support ...
Page 862: ...2 614 Volume 2 Part 2 External Interrupt Architecture ...
Page 870: ...2 622 Volume 2 Part 2 Performance Monitoring Support ...
Page 891: ......
Page 1099: ...3 200 Volume 3 Instruction Reference padd Interruptions Illegal Operation fault ...
Page 1295: ...3 396 Volume 3 Resource and Dependency Semantics ...
Page 1296: ......
Page 1302: ...402 Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Page 1494: ...4 192 Volume 4 Base IA 32 Instruction Reference FWAIT Wait See entry for WAIT ...
Page 1647: ...Volume 4 Base IA 32 Instruction Reference 4 345 ROL ROR Rotate See entry for RCL RCR ROL ROR ...
Page 1884: ...4 582 Volume 4 IA 32 SSE Instruction Reference ...
Page 1885: ...Index Intel Itanium Architecture Software Developer s Manual Rev 2 3 Index ...
Page 1886: ...Index Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Page 1898: ...INDEX Index 12 Index for Volumes 1 2 3 and 4 ...