faults.hh (5268:5bfc53fe60e7) | faults.hh (6378:4a2ff62c3b4f) |
---|---|
1/* 2 * Copyright (c) 2003-2005 The Regents of The University of Michigan 3 * Copyright (c) 2007 MIPS Technologies, Inc. 4 * All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions are 8 * met: redistributions of source code must retain the above copyright --- 22 unchanged lines hidden (view full) --- 31 * Jaidev Patwardhan 32 */ 33 34#ifndef __MIPS_FAULTS_HH__ 35#define __MIPS_FAULTS_HH__ 36 37#include "sim/faults.hh" 38 | 1/* 2 * Copyright (c) 2003-2005 The Regents of The University of Michigan 3 * Copyright (c) 2007 MIPS Technologies, Inc. 4 * All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions are 8 * met: redistributions of source code must retain the above copyright --- 22 unchanged lines hidden (view full) --- 31 * Jaidev Patwardhan 32 */ 33 34#ifndef __MIPS_FAULTS_HH__ 35#define __MIPS_FAULTS_HH__ 36 37#include "sim/faults.hh" 38 |
39// The design of the "name" and "vect" functions is in sim/faults.hh 40 | |
41namespace MipsISA 42{ | 39namespace MipsISA 40{ |
41 |
|
43typedef const Addr FaultVect; 44 45class MipsFault : public FaultBase 46{ 47 protected: 48 virtual bool skipFaultingInstruction() {return false;} 49 virtual bool setRestartAddress() {return true;} 50 public: 51 Addr BadVAddr; 52 Addr EntryHi_Asid; 53 Addr EntryHi_VPN2; 54 Addr EntryHi_VPN2X; 55 Addr Context_BadVPN2; 56#if FULL_SYSTEM | 42typedef const Addr FaultVect; 43 44class MipsFault : public FaultBase 45{ 46 protected: 47 virtual bool skipFaultingInstruction() {return false;} 48 virtual bool setRestartAddress() {return true;} 49 public: 50 Addr BadVAddr; 51 Addr EntryHi_Asid; 52 Addr EntryHi_VPN2; 53 Addr EntryHi_VPN2X; 54 Addr Context_BadVPN2; 55#if FULL_SYSTEM |
57 void invoke(ThreadContext * tc) {}; 58 void setExceptionState(ThreadContext *,uint8_t); 59 void setHandlerPC(Addr,ThreadContext *); | 56 void invoke(ThreadContext * tc) {}; 57 void setExceptionState(ThreadContext *, uint8_t); 58 void setHandlerPC(Addr, ThreadContext *); |
60#endif 61 virtual FaultVect vect() = 0; 62 virtual FaultStat & countStat() = 0; 63}; 64 65class MachineCheckFault : public MipsFault 66{ 67 private: --- 43 unchanged lines hidden (view full) --- 111 FaultName name() const {return _name;} 112 FaultVect vect() {return _vect;} 113 FaultStat & countStat() {return _count;} 114#if FULL_SYSTEM 115 void invoke(ThreadContext * tc); 116#endif 117 118}; | 59#endif 60 virtual FaultVect vect() = 0; 61 virtual FaultStat & countStat() = 0; 62}; 63 64class MachineCheckFault : public MipsFault 65{ 66 private: --- 43 unchanged lines hidden (view full) --- 110 FaultName name() const {return _name;} 111 FaultVect vect() {return _vect;} 112 FaultStat & countStat() {return _count;} 113#if FULL_SYSTEM 114 void invoke(ThreadContext * tc); 115#endif 116 117}; |
118 |
|
119class StoreAddressErrorFault : public MipsFault 120{ 121 private: 122 static FaultName _name; 123 static FaultVect _vect; 124 static FaultStat _count; 125 public: 126 FaultName name() const {return _name;} 127 FaultVect vect() {return _vect;} 128 FaultStat & countStat() {return _count;} 129#if FULL_SYSTEM 130 void invoke(ThreadContext * tc); 131#endif | 119class StoreAddressErrorFault : public MipsFault 120{ 121 private: 122 static FaultName _name; 123 static FaultVect _vect; 124 static FaultStat _count; 125 public: 126 FaultName name() const {return _name;} 127 FaultVect vect() {return _vect;} 128 FaultStat & countStat() {return _count;} 129#if FULL_SYSTEM 130 void invoke(ThreadContext * tc); 131#endif |
132 | |
133}; | 132}; |
133 |
|
134class UnimplementedOpcodeFault : public MipsFault 135{ 136 private: 137 static FaultName _name; 138 static FaultVect _vect; 139 static FaultStat _count; 140 public: 141 FaultName name() const {return _name;} --- 10 unchanged lines hidden (view full) --- 152 static FaultVect _vect; 153 static FaultStat _count; 154 public: 155 FaultName name() const {return _name;} 156 FaultVect vect() {return _vect;} 157 FaultStat & countStat() {return _count;} 158 void invoke(ThreadContext * tc); 159}; | 134class UnimplementedOpcodeFault : public MipsFault 135{ 136 private: 137 static FaultName _name; 138 static FaultVect _vect; 139 static FaultStat _count; 140 public: 141 FaultName name() const {return _name;} --- 10 unchanged lines hidden (view full) --- 152 static FaultVect _vect; 153 static FaultStat _count; 154 public: 155 FaultName name() const {return _name;} 156 FaultVect vect() {return _vect;} 157 FaultStat & countStat() {return _count;} 158 void invoke(ThreadContext * tc); 159}; |
160 |
|
160class TLBInvalidIFetchFault : public MipsFault 161{ 162 private: 163 Addr vaddr; 164 static FaultName _name; 165 static FaultVect _vect; 166 static FaultStat _count; 167 public: --- 86 unchanged lines hidden (view full) --- 254 static FaultStat _count; 255 public: 256 FaultName name() const {return _name;} 257 FaultVect vect() {return _vect;} 258 FaultStat & countStat() {return _count;} 259 void invoke(ThreadContext * tc); 260 261}; | 161class TLBInvalidIFetchFault : public MipsFault 162{ 163 private: 164 Addr vaddr; 165 static FaultName _name; 166 static FaultVect _vect; 167 static FaultStat _count; 168 public: --- 86 unchanged lines hidden (view full) --- 255 static FaultStat _count; 256 public: 257 FaultName name() const {return _name;} 258 FaultVect vect() {return _vect;} 259 FaultStat & countStat() {return _count;} 260 void invoke(ThreadContext * tc); 261 262}; |
263 |
|
262class SystemCallFault : public MipsFault 263{ 264 private: 265 static FaultName _name; 266 static FaultVect _vect; 267 static FaultStat _count; 268 public: 269 FaultName name() const {return _name;} --- 9 unchanged lines hidden (view full) --- 279 static FaultVect _vect; 280 static FaultStat _count; 281 public: 282 FaultName name() const {return _name;} 283 FaultVect vect() {return _vect;} 284 FaultStat & countStat() {return _count;} 285 void invoke(ThreadContext * tc); 286}; | 264class SystemCallFault : public MipsFault 265{ 266 private: 267 static FaultName _name; 268 static FaultVect _vect; 269 static FaultStat _count; 270 public: 271 FaultName name() const {return _name;} --- 9 unchanged lines hidden (view full) --- 281 static FaultVect _vect; 282 static FaultStat _count; 283 public: 284 FaultName name() const {return _name;} 285 FaultVect vect() {return _vect;} 286 FaultStat & countStat() {return _count;} 287 void invoke(ThreadContext * tc); 288}; |
289 |
|
287class DebugSingleStep : public MipsFault 288{ 289 private: 290 static FaultName _name; 291 static FaultVect _vect; 292 static FaultStat _count; 293 public: 294 FaultName name() const {return _name;} 295 FaultVect vect() {return _vect;} 296 FaultStat & countStat() {return _count;} 297 void invoke(ThreadContext * tc); 298}; | 290class DebugSingleStep : public MipsFault 291{ 292 private: 293 static FaultName _name; 294 static FaultVect _vect; 295 static FaultStat _count; 296 public: 297 FaultName name() const {return _name;} 298 FaultVect vect() {return _vect;} 299 FaultStat & countStat() {return _count;} 300 void invoke(ThreadContext * tc); 301}; |
302 |
|
299class DebugInterrupt : public MipsFault 300{ 301 private: 302 static FaultName _name; 303 static FaultVect _vect; 304 static FaultStat _count; 305 public: 306 FaultName name() const {return _name;} --- 38 unchanged lines hidden (view full) --- 345 static FaultStat _count; 346 public: 347 FaultName name() const {return _name;} 348 FaultVect vect() {return _vect;} 349 FaultStat & countStat() {return _count;} 350 void invoke(ThreadContext * tc); 351}; 352 | 303class DebugInterrupt : public MipsFault 304{ 305 private: 306 static FaultName _name; 307 static FaultVect _vect; 308 static FaultStat _count; 309 public: 310 FaultName name() const {return _name;} --- 38 unchanged lines hidden (view full) --- 349 static FaultStat _count; 350 public: 351 FaultName name() const {return _name;} 352 FaultVect vect() {return _vect;} 353 FaultStat & countStat() {return _count;} 354 void invoke(ThreadContext * tc); 355}; 356 |
353 | |
354class ArithmeticFault : public MipsFault 355{ 356 protected: 357 bool skipFaultingInstruction() {return true;} 358 private: 359 static FaultName _name; 360 static FaultVect _vect; 361 static FaultStat _count; --- 17 unchanged lines hidden (view full) --- 379 public: 380 FaultName name() const {return _name;} 381 FaultVect vect() {return _vect;} 382 FaultStat & countStat() {return _count;} 383 384#if FULL_SYSTEM 385 void invoke(ThreadContext * tc); 386#endif | 357class ArithmeticFault : public MipsFault 358{ 359 protected: 360 bool skipFaultingInstruction() {return true;} 361 private: 362 static FaultName _name; 363 static FaultVect _vect; 364 static FaultStat _count; --- 17 unchanged lines hidden (view full) --- 382 public: 383 FaultName name() const {return _name;} 384 FaultVect vect() {return _vect;} 385 FaultStat & countStat() {return _count;} 386 387#if FULL_SYSTEM 388 void invoke(ThreadContext * tc); 389#endif |
387 388 //void invoke(ThreadContext * tc); | |
389}; 390 391class TrapFault : public MipsFault 392{ 393 private: 394 static FaultName _name; 395 static FaultVect _vect; 396 static FaultStat _count; --- 30 unchanged lines hidden (view full) --- 427 public: 428 FaultName name() const {return _name;} 429 FaultVect vect() {return _vect;} 430 FaultStat & countStat() {return _count;} 431#if FULL_SYSTEM 432 void invoke(ThreadContext * tc); 433#endif 434}; | 390}; 391 392class TrapFault : public MipsFault 393{ 394 private: 395 static FaultName _name; 396 static FaultVect _vect; 397 static FaultStat _count; --- 30 unchanged lines hidden (view full) --- 428 public: 429 FaultName name() const {return _name;} 430 FaultVect vect() {return _vect;} 431 FaultStat & countStat() {return _count;} 432#if FULL_SYSTEM 433 void invoke(ThreadContext * tc); 434#endif 435}; |
436 |
|
435class DtbRefillFault : public MipsFault 436{ 437 private: 438 static FaultName _name; 439 static FaultVect _vect; 440 static FaultStat _count; 441 public: 442 FaultName name() const {return _name;} --- 27 unchanged lines hidden (view full) --- 470 static FaultStat _count; 471 public: 472 FaultName name() const {return _name;} 473 FaultVect vect() {return _vect;} 474 FaultStat & countStat() {return _count;} 475#if FULL_SYSTEM 476 void invoke(ThreadContext * tc); 477#endif | 437class DtbRefillFault : public MipsFault 438{ 439 private: 440 static FaultName _name; 441 static FaultVect _vect; 442 static FaultStat _count; 443 public: 444 FaultName name() const {return _name;} --- 27 unchanged lines hidden (view full) --- 472 static FaultStat _count; 473 public: 474 FaultName name() const {return _name;} 475 FaultVect vect() {return _vect;} 476 FaultStat & countStat() {return _count;} 477#if FULL_SYSTEM 478 void invoke(ThreadContext * tc); 479#endif |
478 | |
479}; | 480}; |
481 |
|
480class TLBModifiedFault : public MipsFault 481{ 482 private: 483 static FaultName _name; 484 static FaultVect _vect; 485 static FaultStat _count; 486 public: 487 FaultName name() const {return _name;} 488 FaultVect vect() {return _vect;} 489 FaultStat & countStat() {return _count;} 490#if FULL_SYSTEM 491 void invoke(ThreadContext * tc); 492#endif | 482class TLBModifiedFault : public MipsFault 483{ 484 private: 485 static FaultName _name; 486 static FaultVect _vect; 487 static FaultStat _count; 488 public: 489 FaultName name() const {return _name;} 490 FaultVect vect() {return _vect;} 491 FaultStat & countStat() {return _count;} 492#if FULL_SYSTEM 493 void invoke(ThreadContext * tc); 494#endif |
493 | |
494}; 495 496class DtbInvalidFault : public MipsFault 497{ 498 private: 499 static FaultName _name; 500 static FaultVect _vect; 501 static FaultStat _count; 502 public: 503 FaultName name() const {return _name;} 504 FaultVect vect() {return _vect;} 505 FaultStat & countStat() {return _count;} 506#if FULL_SYSTEM 507 void invoke(ThreadContext * tc); 508#endif | 495}; 496 497class DtbInvalidFault : public MipsFault 498{ 499 private: 500 static FaultName _name; 501 static FaultVect _vect; 502 static FaultStat _count; 503 public: 504 FaultName name() const {return _name;} 505 FaultVect vect() {return _vect;} 506 FaultStat & countStat() {return _count;} 507#if FULL_SYSTEM 508 void invoke(ThreadContext * tc); 509#endif |
509 | |
510}; 511 512class FloatEnableFault : public MipsFault 513{ 514 private: 515 static FaultName _name; 516 static FaultVect _vect; 517 static FaultStat _count; --- 58 unchanged lines hidden --- | 510}; 511 512class FloatEnableFault : public MipsFault 513{ 514 private: 515 static FaultName _name; 516 static FaultVect _vect; 517 static FaultStat _count; --- 58 unchanged lines hidden --- |