47a48,56
> enum PrivilegeLevel
> {
> U, User = U,
> P, Privileged = P,
> H, Hyperprivileged = H,
> NumLevels,
> SH = -1,
> ShouldntHappen = SH
> };
52a62
> const PrivilegeLevel nextPrivilegeLevel[NumLevels];
61a72
> virtual PrivilegeLevel getNextLevel(PrivilegeLevel current) = 0;
73a85,88
> PrivilegeLevel getNextLevel(PrivilegeLevel current)
> {
> return vals.nextPrivilegeLevel[current];
> }
76,115d90
< class InternalProcessorError :
< public SparcFault<InternalProcessorError>
< {
< public:
< bool isMachineCheckFault() {return true;}
< };
<
< class MemAddressNotAligned :
< public SparcFault<MemAddressNotAligned>
< {
< public:
< bool isAlignmentFault() {return true;}
< };
<
< #if !FULL_SYSTEM
< class PageTableFault : public SparcFault<PageTableFault>
< {
< private:
< Addr vaddr;
< public:
< PageTableFault(Addr va) : vaddr(va) {}
< void invoke(ThreadContext * tc);
< };
<
< static inline Fault genPageTableFault(Addr va)
< {
< return new PageTableFault(va);
< }
< #endif
<
< static inline Fault genMachineCheckFault()
< {
< return new InternalProcessorError;
< }
<
< static inline Fault genAlignmentFault()
< {
< return new MemAddressNotAligned;
< }
<
128a104,105
> class StoreError : public SparcFault<StoreError> {};
>
131c108
< class InstructionAccessMMUMiss : public SparcFault<InstructionAccessMMUMiss> {};
---
> //class InstructionAccessMMUMiss : public SparcFault<InstructionAccessMMUMiss> {};
139c116
< class UnimplementedLDD : public SparcFault<UnimplementedLDD> {};
---
> //class UnimplementedLDD : public SparcFault<UnimplementedLDD> {};
141c118
< class UnimplementedSTD : public SparcFault<UnimplementedSTD> {};
---
> //class UnimplementedSTD : public SparcFault<UnimplementedSTD> {};
150a128,129
> class CleanWindow : public SparcFault<CleanWindow> {};
>
152a132,142
> class InternalProcessorError :
> public SparcFault<InternalProcessorError>
> {
> public:
> bool isMachineCheckFault() {return true;}
> };
>
> class InstructionInvalidTSBEntry : public SparcFault<InstructionInvalidTSBEntry> {};
>
> class DataInvalidTSBEntry : public SparcFault<DataInvalidTSBEntry> {};
>
155c145
< class DataAccessMMUMiss : public SparcFault<DataAccessMMUMiss> {};
---
> //class DataAccessMMUMiss : public SparcFault<DataAccessMMUMiss> {};
160a151,157
> class MemAddressNotAligned :
> public SparcFault<MemAddressNotAligned>
> {
> public:
> bool isAlignmentFault() {return true;}
> };
>
171c168,169
< class AsyncDataError : public SparcFault<AsyncDataError> {};
---
> class InstructionRealTranslationMiss :
> public SparcFault<InstructionRealTranslationMiss> {};
173c171
< class CleanWindow : public SparcFault<CleanWindow> {};
---
> class DataRealTranslationMiss : public SparcFault<DataRealTranslationMiss> {};
174a173,174
> //class AsyncDataError : public SparcFault<AsyncDataError> {};
>
188,190c188,189
< InterruptLevelN(uint32_t n) :
< EnumeratedFault<InterruptLevelN>(n) {;}
< FaultPriority priority() {return 32 - _n;}
---
> InterruptLevelN(uint32_t n) : EnumeratedFault<InterruptLevelN>(n) {;}
> FaultPriority priority() {return 3200 - _n*100;}
192a192,214
> class HstickMatch : public SparcFault<HstickMatch> {};
>
> class TrapLevelZero : public SparcFault<TrapLevelZero> {};
>
> class PAWatchpoint : public SparcFault<PAWatchpoint> {};
>
> class VAWatchpoint : public SparcFault<VAWatchpoint> {};
>
> class FastInstructionAccessMMUMiss :
> public SparcFault<FastInstructionAccessMMUMiss> {};
>
> class FastDataAccessMMUMiss : public SparcFault<FastDataAccessMMUMiss> {};
>
> class FastDataAccessProtection : public SparcFault<FastDataAccessProtection> {};
>
> class InstructionBreakpoint : public SparcFault<InstructionBreakpoint> {};
>
> class CpuMondo : public SparcFault<CpuMondo> {};
>
> class DevMondo : public SparcFault<DevMondo> {};
>
> class ResumeableError : public SparcFault<ResumeableError> {};
>
196,197c218
< SpillNNormal(uint32_t n) :
< EnumeratedFault<SpillNNormal>(n) {;}
---
> SpillNNormal(uint32_t n) : EnumeratedFault<SpillNNormal>(n) {;}
207,208c228
< SpillNOther(uint32_t n) :
< EnumeratedFault<SpillNOther>(n) {;}
---
> SpillNOther(uint32_t n) : EnumeratedFault<SpillNOther>(n) {;}
214,215c234
< FillNNormal(uint32_t n) :
< EnumeratedFault<FillNNormal>(n) {;}
---
> FillNNormal(uint32_t n) : EnumeratedFault<FillNNormal>(n) {;}
225,226c244
< FillNOther(uint32_t n) :
< EnumeratedFault<FillNOther>(n) {;}
---
> FillNOther(uint32_t n) : EnumeratedFault<FillNOther>(n) {;}
233,234c251
< TrapInstruction(uint32_t n) :
< EnumeratedFault<TrapInstruction>(n) {;}
---
> TrapInstruction(uint32_t n) : EnumeratedFault<TrapInstruction>(n) {;}
236a254,262
> #if !FULL_SYSTEM
> class PageTableFault : public SparcFault<PageTableFault>
> {
> private:
> Addr vaddr;
> public:
> PageTableFault(Addr va) : vaddr(va) {}
> void invoke(ThreadContext * tc);
> };
237a264,280
> static inline Fault genPageTableFault(Addr va)
> {
> return new PageTableFault(va);
> }
> #endif
>
> static inline Fault genMachineCheckFault()
> {
> return new InternalProcessorError;
> }
>
> static inline Fault genAlignmentFault()
> {
> return new MemAddressNotAligned;
> }
>
>