dsp_interface.cpp 979 B

123456789101112131415161718192021222324252627282930313233343536
  1. // Copyright 2008 Dolphin Emulator Project
  2. // Licensed under GPLv2+
  3. // Refer to the license.txt file included.
  4. #include "dsp_interface.h"
  5. void IDSP::SendTask(void *addr, u16 iram_addr, u16 len, u16 start)
  6. {
  7. // addr main ram addr 4byte aligned (1 Gekko word)
  8. // iram_addr dsp addr 4byte aligned (2 DSP words)
  9. // len block length in bytes multiple of 4 (wtf? if you want to fill whole iram, you need 8191)
  10. // (8191 % 4 = 3) wtffff
  11. // start dsp iram entry point
  12. while (CheckMailTo());
  13. SendMailTo(0x80F3A001);
  14. while (CheckMailTo());
  15. SendMailTo((u32)addr);
  16. while (CheckMailTo());
  17. SendMailTo(0x80F3C002);
  18. while (CheckMailTo());
  19. SendMailTo(iram_addr);
  20. while (CheckMailTo());
  21. SendMailTo(0x80F3A002);
  22. while (CheckMailTo());
  23. SendMailTo(len);
  24. while (CheckMailTo());
  25. SendMailTo(0x80F3B002);
  26. while (CheckMailTo());
  27. SendMailTo(0);
  28. while (CheckMailTo());
  29. SendMailTo(0x80F3D001);
  30. while (CheckMailTo());
  31. SendMailTo(start);
  32. while (CheckMailTo());
  33. }