How to implement an ISA
Move out of isa?
ISA specific fault classes to be used in the ISA.
Functions I'd like to get rid of
Shouldn't be capitalized. Gets a request to set the interrupt level and returns what the interrupt level was actually set to.
Request that an interrupt happen. Like asserting the interrupt line.
Request that an interrupt not happen. Like deasserting a level triggered interrupt line.
Breaks naming convention Clear all interrupts
Breaks naming convention Not sure if this is right Check to see if there are any interrupts pending
Get an interrupt fault object to invoke. The Interrupts object should internally prioritize interrupts so that they are handled in the right order.
Breaks naming convention Don't remember what this does. Need to find the email from Ali.
Breaks naming convention Returns the vector which describes the pending(?) interrupts in SPARC which is available as a (memory mapped?) register. This function panics in anything currently implemented other than SPARC, and it breaks the abstraction of the Interrupts object. Its existence allows necessary communication between two ISA specific components but goes through the ISA agnostic cpu. An argument for this function is that the cpu may need to modify the value returned by this function, so it needs to be able to intercept values and change them. This -really- breaks the abstraction of the Interrupts object by forcing the cpu to know what the vector means and what values are appropriate. This function needs to go away.
Functions to serialize and unserialize the state in the Interrupts object.