How to implement an ISA
Contents
arguments.hh
Move out of isa?
faults.hh
ISA specific fault classes to be used in the ISA.
Functions I'd like to get rid of
- genMachineCheckFault
- genAlignmentFault
interrupts.hh
Interrupts class
Interrupt Level
Shouldn't be capitalized. Gets a request to set the interrupt level and returns what the interrupt level was actually set to.
post
Request that an interrupt happen. Like asserting the interrupt line.
clear
Request that an interrupt not happen. Like deasserting a level triggered interrupt line.
clear_all
Breaks naming convention Clear all interrupts
check_interrupts
Breaks naming convention Not sure if this is right Check to see if there are any interrupts pending
getInterrupt
Get an interrupt fault object to invoke. The Interrupts object should internally prioritize interrupts so that they are handled in the right order.
updateIntrInfo
Breaks naming convention Don't remember what this does. Need to find the email from Ali.
get_vec
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.
serialize/unserialize
Functions to serialize and unserialize the state in the Interrupts object.