diff options
author | Andreas Sandberg <andreas.sandberg@arm.com> | 2013-04-22 13:20:32 -0400 |
---|---|---|
committer | Andreas Sandberg <andreas.sandberg@arm.com> | 2013-04-22 13:20:32 -0400 |
commit | 6d2941d9904bdaf0805d46046a0ff43b22d77165 (patch) | |
tree | 815723128609a4e416252df573a2afc4895cac96 /src/arch | |
parent | f8f66fa3df3ef5b4e30ee86d33a4e95476ba425a (diff) | |
download | gem5-6d2941d9904bdaf0805d46046a0ff43b22d77165.tar.xz |
arm: Add a method to query interrupt state ignoring CPSR masks
Add the method checkRaw to ArmISA::Interrupts. This method can be used
to query the raw state (ignoring CPSR masks) of an interrupt. It is
primarily intended for hardware virtualized CPUs.
Diffstat (limited to 'src/arch')
-rw-r--r-- | src/arch/arm/interrupts.hh | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/src/arch/arm/interrupts.hh b/src/arch/arm/interrupts.hh index 82c0bb713..7def6ddd6 100644 --- a/src/arch/arm/interrupts.hh +++ b/src/arch/arm/interrupts.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010 ARM Limited + * Copyright (c) 2010,2012 ARM Limited * All rights reserved * * The license below extends only to copyright in the software and shall @@ -150,6 +150,24 @@ class Interrupts : public SimObject return intStatus; } + /** + * Check the state of a particular interrupt, ignoring CPSR masks. + * + * This method is primarily used when running the target CPU in a + * hardware VM (e.g., KVM) to check if interrupts should be + * delivered upon guest entry. + * + * @param interrupt Interrupt type to check the state of. + * @return true if the interrupt is asserted, false otherwise. + */ + bool + checkRaw(InterruptTypes interrupt) const + { + if (interrupt >= NumInterruptTypes) + panic("Interrupt number out of range.\n"); + + return interrupts[interrupt]; + } Fault getInterrupt(ThreadContext *tc) |