diff options
author | Gabe Black <gblack@eecs.umich.edu> | 2010-06-02 12:58:05 -0500 |
---|---|---|
committer | Gabe Black <gblack@eecs.umich.edu> | 2010-06-02 12:58:05 -0500 |
commit | 34032f97d6861243a2338d02d6c7d071051c44c5 (patch) | |
tree | db48b07ce2a3ce05273db23c285e7aa34f4052ec /src/arch/arm/faults.hh | |
parent | 52460938cbd156c7753deb18e3b2f7ded55335b0 (diff) | |
download | gem5-34032f97d6861243a2338d02d6c7d071051c44c5.tar.xz |
ARM: Trigger system calls from the SupervisorCall invoke method.
This simplifies the decoder slightly, and makes the system call mechanism
very slightly more realistic.
Diffstat (limited to 'src/arch/arm/faults.hh')
-rw-r--r-- | src/arch/arm/faults.hh | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/arch/arm/faults.hh b/src/arch/arm/faults.hh index 90a730507..64940dd26 100644 --- a/src/arch/arm/faults.hh +++ b/src/arch/arm/faults.hh @@ -125,7 +125,19 @@ class UndefinedInstruction : public ArmFault<UndefinedInstruction> #endif }; -class SupervisorCall : public ArmFault<SupervisorCall> {}; +class SupervisorCall : public ArmFault<SupervisorCall> +{ +#if !FULL_SYSTEM + protected: + ExtMachInst machInst; + + public: + SupervisorCall(ExtMachInst _machInst) : machInst(_machInst) + {} + + void invoke(ThreadContext *tc); +#endif +}; class PrefetchAbort : public ArmFault<PrefetchAbort> {}; class DataAbort : public ArmFault<DataAbort> {}; class Interrupt : public ArmFault<Interrupt> {}; |