svc.h 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. // Copyright 2014 Citra Emulator Project
  2. // Licensed under GPLv2
  3. // Refer to the license.txt file included.
  4. #pragma once
  5. #include "common/common_types.h"
  6. ////////////////////////////////////////////////////////////////////////////////////////////////////
  7. // SVC types
  8. struct MemoryInfo {
  9. u32 base_address;
  10. u32 size;
  11. u32 permission;
  12. u32 state;
  13. };
  14. struct PageInfo {
  15. u32 flags;
  16. };
  17. struct ThreadContext {
  18. u32 cpu_registers[13];
  19. u32 sp;
  20. u32 lr;
  21. u32 pc;
  22. u32 cpsr;
  23. u32 fpu_registers[32];
  24. u32 fpscr;
  25. u32 fpexc;
  26. // These are not part of native ThreadContext, but needed by emu
  27. u32 reg_15;
  28. u32 mode;
  29. };
  30. enum ResetType {
  31. RESETTYPE_ONESHOT,
  32. RESETTYPE_STICKY,
  33. RESETTYPE_PULSE,
  34. RESETTYPE_MAX_BIT = (1u << 31),
  35. };
  36. enum ArbitrationType {
  37. ARBITRATIONTYPE_SIGNAL,
  38. ARBITRATIONTYPE_WAIT_IF_LESS_THAN,
  39. ARBITRATIONTYPE_DECREMENT_AND_WAIT_IF_LESS_THAN,
  40. ARBITRATIONTYPE_WAIT_IF_LESS_THAN_WITH_TIMEOUT,
  41. ARBITRATIONTYPE_DECREMENT_AND_WAIT_IF_LESS_THAN_WITH_TIMEOUT,
  42. ARBITRATIONTYPE_MAX_BIT = (1u << 31)
  43. };
  44. ////////////////////////////////////////////////////////////////////////////////////////////////////
  45. // Namespace SVC
  46. namespace SVC {
  47. void Register();
  48. } // namespace