hw.cpp 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. // Copyright 2014 Citra Emulator Project
  2. // Licensed under GPLv2 or any later version
  3. // Refer to the license.txt file included.
  4. #include "common/common_types.h"
  5. #include "core/hw/hw.h"
  6. #include "core/hw/gpu.h"
  7. #include "core/hw/lcd.h"
  8. namespace HW {
  9. template <typename T>
  10. inline void Read(T &var, const u32 addr) {
  11. switch (addr & 0xFFFFF000) {
  12. case VADDR_GPU:
  13. GPU::Read(var, addr);
  14. break;
  15. case VADDR_LCD:
  16. LCD::Write(var, addr);
  17. break;
  18. default:
  19. LOG_ERROR(HW_Memory, "unknown Read%lu @ 0x%08X", sizeof(var) * 8, addr);
  20. }
  21. }
  22. template <typename T>
  23. inline void Write(u32 addr, const T data) {
  24. switch (addr & 0xFFFFF000) {
  25. case VADDR_GPU:
  26. GPU::Write(addr, data);
  27. break;
  28. case VADDR_LCD:
  29. LCD::Write(addr, data);
  30. break;
  31. default:
  32. LOG_ERROR(HW_Memory, "unknown Write%lu 0x%08X @ 0x%08X", sizeof(data) * 8, (u32)data, addr);
  33. }
  34. }
  35. // Explicitly instantiate template functions because we aren't defining this in the header:
  36. template void Read<u64>(u64 &var, const u32 addr);
  37. template void Read<u32>(u32 &var, const u32 addr);
  38. template void Read<u16>(u16 &var, const u32 addr);
  39. template void Read<u8>(u8 &var, const u32 addr);
  40. template void Write<u64>(u32 addr, const u64 data);
  41. template void Write<u32>(u32 addr, const u32 data);
  42. template void Write<u16>(u32 addr, const u16 data);
  43. template void Write<u8>(u32 addr, const u8 data);
  44. /// Update hardware
  45. void Update() {
  46. }
  47. /// Initialize hardware
  48. void Init() {
  49. GPU::Init();
  50. LCD::Init();
  51. LOG_DEBUG(HW, "initialized OK");
  52. }
  53. /// Shutdown hardware
  54. void Shutdown() {
  55. GPU::Shutdown();
  56. LCD::Shutdown();
  57. LOG_DEBUG(HW, "shutdown OK");
  58. }
  59. }