diff options
author | Gabe Black <gblack@eecs.umich.edu> | 2007-10-02 23:00:37 -0700 |
---|---|---|
committer | Gabe Black <gblack@eecs.umich.edu> | 2007-10-02 23:00:37 -0700 |
commit | 504f90f76350ce14debfbfa837423144b0abdbe4 (patch) | |
tree | 610f9dfdcd624ab6c6a5524dc5dbe3eca073b77d /src/arch/x86/faults.hh | |
parent | f4a932a6b3f5b829dd0e7cb3a596a7e054fd7144 (diff) | |
download | gem5-504f90f76350ce14debfbfa837423144b0abdbe4.tar.xz |
X86: Start implementing the x86 tlb which will handle segmentation permission and limit checks and paging.
--HG--
extra : convert_revision : 6072f7d9eecbaa066d39d6da7f0180ea4a2615af
Diffstat (limited to 'src/arch/x86/faults.hh')
-rw-r--r-- | src/arch/x86/faults.hh | 41 |
1 files changed, 29 insertions, 12 deletions
diff --git a/src/arch/x86/faults.hh b/src/arch/x86/faults.hh index 31bb686ed..0579be9b5 100644 --- a/src/arch/x86/faults.hh +++ b/src/arch/x86/faults.hh @@ -111,10 +111,7 @@ namespace X86ISA {} #if FULL_SYSTEM - void invoke(ThreadContext * tc) - { - panic("X86 faults are not implemented!"); - } + void invoke(ThreadContext * tc); #endif }; @@ -127,10 +124,7 @@ namespace X86ISA {} #if FULL_SYSTEM - void invoke(ThreadContext * tc) - { - panic("X86 faults are not implemented!"); - } + void invoke(ThreadContext * tc); #endif }; @@ -143,10 +137,7 @@ namespace X86ISA {} #if FULL_SYSTEM - void invoke(ThreadContext * tc) - { - panic("X86 faults are not implemented!"); - } + void invoke(ThreadContext * tc); #endif }; @@ -372,18 +363,44 @@ namespace X86ISA // the tlb on a miss and are to take the place of a hardware table walker. class FakeITLBFault : public X86Fault { +#if !FULL_SYSTEM + protected: + Addr vaddr; + public: + FakeITLBFault(Addr _vaddr) : + X86Fault("fake instruction tlb fault", "itlb"), + vaddr(_vaddr) +#else public: FakeITLBFault() : X86Fault("fake instruction tlb fault", "itlb") +#endif {} + +#if !FULL_SYSTEM + void invoke(ThreadContext * tc); +#endif }; class FakeDTLBFault : public X86Fault { +#if !FULL_SYSTEM + protected: + Addr vaddr; + public: + FakeDTLBFault(Addr _vaddr) : + X86Fault("fake data tlb fault", "dtlb"), + vaddr(_vaddr) +#else public: FakeDTLBFault() : X86Fault("fake data tlb fault", "dtlb") +#endif {} + +#if !FULL_SYSTEM + void invoke(ThreadContext * tc); +#endif }; }; |