diff options
author | bunnei <bunneidev@gmail.com> | 2014-05-08 23:16:35 +0200 |
---|---|---|
committer | bunnei <bunneidev@gmail.com> | 2014-05-08 23:16:35 +0200 |
commit | bdc54d0d4897841a4d24aee80311bfb1f0eba884 (patch) | |
tree | 558d87c83fe8f7e8e3e57644407c872244ee5a3a /src/core/hle/coprocessor.cpp | |
parent | Merge pull request #16 from Sethpaien/master (diff) | |
parent | removed unknown fields from GX_CmdBufferHeader (diff) | |
download | yuzu-bdc54d0d4897841a4d24aee80311bfb1f0eba884.tar yuzu-bdc54d0d4897841a4d24aee80311bfb1f0eba884.tar.gz yuzu-bdc54d0d4897841a4d24aee80311bfb1f0eba884.tar.bz2 yuzu-bdc54d0d4897841a4d24aee80311bfb1f0eba884.tar.lz yuzu-bdc54d0d4897841a4d24aee80311bfb1f0eba884.tar.xz yuzu-bdc54d0d4897841a4d24aee80311bfb1f0eba884.tar.zst yuzu-bdc54d0d4897841a4d24aee80311bfb1f0eba884.zip |
Diffstat (limited to 'src/core/hle/coprocessor.cpp')
-rw-r--r-- | src/core/hle/coprocessor.cpp | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/src/core/hle/coprocessor.cpp b/src/core/hle/coprocessor.cpp new file mode 100644 index 000000000..74305331c --- /dev/null +++ b/src/core/hle/coprocessor.cpp @@ -0,0 +1,50 @@ +// Copyright 2014 Citra Emulator Project +// Licensed under GPLv2 +// Refer to the license.txt file included. + +#include "core/hle/coprocessor.h" +#include "core/hle/hle.h" +#include "core/mem_map.h" +#include "core/core.h" + +namespace HLE { + +/// Data synchronization barrier +u32 DataSynchronizationBarrier() { + return 0; +} + +/// Returns the coprocessor (in this case, syscore) command buffer pointer +Addr GetThreadCommandBuffer() { + // Called on insruction: mrc p15, 0, r0, c13, c0, 3 + return Memory::KERNEL_MEMORY_VADDR; +} + +/// Call an MCR (move to coprocessor from ARM register) instruction in HLE +s32 CallMCR(u32 instruction, u32 value) { + CoprocessorOperation operation = (CoprocessorOperation)((instruction >> 20) & 0xFF); + ERROR_LOG(OSHLE, "unimplemented MCR instruction=0x%08X, operation=%02X, value=%08X", + instruction, operation, value); + return 0; +} + +/// Call an MRC (move to ARM register from coprocessor) instruction in HLE +s32 CallMRC(u32 instruction) { + CoprocessorOperation operation = (CoprocessorOperation)((instruction >> 20) & 0xFF); + + switch (operation) { + + case DATA_SYNCHRONIZATION_BARRIER: + return DataSynchronizationBarrier(); + + case CALL_GET_THREAD_COMMAND_BUFFER: + return GetThreadCommandBuffer(); + + default: + ERROR_LOG(OSHLE, "unimplemented MRC instruction 0x%08X", instruction); + break; + } + return 0; +} + +} // namespace |