Dummy IRQL stuff to silence warnings.

This commit is contained in:
Ben Vanik
2014-08-04 15:39:42 -07:00
parent fd95858516
commit 296bb5c87a
3 changed files with 63 additions and 17 deletions

View File

@@ -135,6 +135,17 @@ uint64_t Processor::Execute(
return context->r[3];
}
Irql Processor::RaiseIrql(Irql new_value) {
return static_cast<Irql>(
poly::atomic_exchange(static_cast<uint32_t>(new_value),
reinterpret_cast<volatile uint32_t*>(&irql_)));
}
void Processor::LowerIrql(Irql old_value) {
poly::atomic_exchange(static_cast<uint32_t>(old_value),
reinterpret_cast<volatile uint32_t*>(&irql_));
}
uint64_t Processor::ExecuteInterrupt(
uint32_t cpu, uint64_t address, uint64_t args[], size_t arg_count) {
SCOPE_profile_cpu_f("cpu");

View File

@@ -27,6 +27,14 @@ namespace xe {
namespace cpu {
enum class Irql : uint32_t {
PASSIVE = 0,
APC = 1,
DISPATCH = 2,
DPC = 3,
};
class Processor {
public:
Processor(Emulator* emulator);
@@ -44,6 +52,9 @@ public:
XenonThreadState* thread_state, uint64_t address, uint64_t args[],
size_t arg_count);
Irql RaiseIrql(Irql new_value);
void LowerIrql(Irql old_value);
uint64_t ExecuteInterrupt(
uint32_t cpu, uint64_t address, uint64_t args[], size_t arg_count);
@@ -54,6 +65,7 @@ private:
XenonRuntime* runtime_;
Memory* memory_;
Irql irql_;
xe_mutex_t* interrupt_thread_lock_;
XenonThreadState* interrupt_thread_state_;
uint64_t interrupt_thread_block_;