title: How are external interrupts vectored on a powerpc processor?
body: <p>Maybe the question should be, <em>are</em> external interrupts even vectored on the PowerPC at all?  I've been looking at <a href="http://www.ibm.com/developerworks/eserver/library/es-archguide-v2.html" rel="nofollow noreferrer">http://www.ibm.com/developerworks/eserver/library/es-archguide-v2.html</a>, 'book 3', trying to figure out how the processor locates the appropriate interrupt service routine in response to an external interrupt.  It seems to suggest that when the PPC recognizes an external interrupt, it just jumps execution to 0x0000_0500.</p>
  
  <p>I may be laboring under a misconception about how the PPC works. With x86, the processor responds to interrupt requests with an interrupt acknowledge cycle, and obtains a 'vector' directly from the device. The vector (really an index) then allows the cpu to pick an appropriate handler routine from its interrupt vector table.  Most importantly, this acknowledge/vector fetch is a hardware, bus-protocol thing, nobody has to write any code to make it happen. The only code that needs writing (read, software) is the ISRs themselves.</p>
  
  <p><em>Does</em> the PPC do something similar?  Would there be a table of vectors at 0x500?  Or does it do something radically different, and offload the functionality of getting the device's vector to an external interrupt controller?  I suppose it <em>could</em> just jump to code at 0x500, where actual software would then interrogate the (hypothetical?) interrupt controller to get the vector .. and then use it in a jump-table/what-have-you, but I can't find documentation to verify this is the case, one way or another.</p>