diff options
| author | 2022-08-07 17:48:55 -0700 | |
|---|---|---|
| committer | 2022-08-07 17:48:55 -0700 | |
| commit | 01bb5d5c4d10424145739e4dd50c0a92547ca240 (patch) | |
| tree | 403f5ae1f6ea1d4555a40dbea0f2c44183292aba /src/core/arm/arm_interface.h | |
| parent | Merge pull request #8240 from liamwhite/count-cycles (diff) | |
| parent | kernel: unlayer CPU interrupt handling (diff) | |
| download | yuzu-01bb5d5c4d10424145739e4dd50c0a92547ca240.tar.gz yuzu-01bb5d5c4d10424145739e4dd50c0a92547ca240.tar.xz yuzu-01bb5d5c4d10424145739e4dd50c0a92547ca240.zip | |
Merge pull request #8637 from liamwhite/bad-interrupts
kernel: unlayer CPU interrupt handling
Diffstat (limited to 'src/core/arm/arm_interface.h')
| -rw-r--r-- | src/core/arm/arm_interface.h | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/src/core/arm/arm_interface.h b/src/core/arm/arm_interface.h index 73f259525..7d62d030e 100644 --- a/src/core/arm/arm_interface.h +++ b/src/core/arm/arm_interface.h | |||
| @@ -27,7 +27,6 @@ namespace Core { | |||
| 27 | class System; | 27 | class System; |
| 28 | class CPUInterruptHandler; | 28 | class CPUInterruptHandler; |
| 29 | 29 | ||
| 30 | using CPUInterrupts = std::array<CPUInterruptHandler, Core::Hardware::NUM_CPU_CORES>; | ||
| 31 | using WatchpointArray = std::array<Kernel::DebugWatchpoint, Core::Hardware::NUM_WATCHPOINTS>; | 30 | using WatchpointArray = std::array<Kernel::DebugWatchpoint, Core::Hardware::NUM_WATCHPOINTS>; |
| 32 | 31 | ||
| 33 | /// Generic ARMv8 CPU interface | 32 | /// Generic ARMv8 CPU interface |
| @@ -36,10 +35,8 @@ public: | |||
| 36 | YUZU_NON_COPYABLE(ARM_Interface); | 35 | YUZU_NON_COPYABLE(ARM_Interface); |
| 37 | YUZU_NON_MOVEABLE(ARM_Interface); | 36 | YUZU_NON_MOVEABLE(ARM_Interface); |
| 38 | 37 | ||
| 39 | explicit ARM_Interface(System& system_, CPUInterrupts& interrupt_handlers_, | 38 | explicit ARM_Interface(System& system_, bool uses_wall_clock_) |
| 40 | bool uses_wall_clock_) | 39 | : system{system_}, uses_wall_clock{uses_wall_clock_} {} |
| 41 | : system{system_}, interrupt_handlers{interrupt_handlers_}, uses_wall_clock{ | ||
| 42 | uses_wall_clock_} {} | ||
| 43 | virtual ~ARM_Interface() = default; | 40 | virtual ~ARM_Interface() = default; |
| 44 | 41 | ||
| 45 | struct ThreadContext32 { | 42 | struct ThreadContext32 { |
| @@ -181,6 +178,9 @@ public: | |||
| 181 | /// Signal an interrupt and ask the core to halt as soon as possible. | 178 | /// Signal an interrupt and ask the core to halt as soon as possible. |
| 182 | virtual void SignalInterrupt() = 0; | 179 | virtual void SignalInterrupt() = 0; |
| 183 | 180 | ||
| 181 | /// Clear a previous interrupt. | ||
| 182 | virtual void ClearInterrupt() = 0; | ||
| 183 | |||
| 184 | struct BacktraceEntry { | 184 | struct BacktraceEntry { |
| 185 | std::string module; | 185 | std::string module; |
| 186 | u64 address; | 186 | u64 address; |
| @@ -208,7 +208,6 @@ public: | |||
| 208 | protected: | 208 | protected: |
| 209 | /// System context that this ARM interface is running under. | 209 | /// System context that this ARM interface is running under. |
| 210 | System& system; | 210 | System& system; |
| 211 | CPUInterrupts& interrupt_handlers; | ||
| 212 | const WatchpointArray* watchpoints; | 211 | const WatchpointArray* watchpoints; |
| 213 | bool uses_wall_clock; | 212 | bool uses_wall_clock; |
| 214 | 213 | ||