ocd.h 720 B

12345678910111213141516171819202122232425262728293031323334353637
  1. /*
  2. * linux/arch/unicore32/include/mach/ocd.h
  3. *
  4. * Code specific to PKUnity SoC and UniCore ISA
  5. *
  6. * Copyright (C) 2001-2010 GUAN Xue-tao
  7. *
  8. * This program is free software; you can redistribute it and/or modify
  9. * it under the terms of the GNU General Public License version 2 as
  10. * published by the Free Software Foundation.
  11. */
  12. #ifndef __MACH_PUV3_OCD_H__
  13. #define __MACH_PUV3_OCD_H__
  14. #if defined(CONFIG_DEBUG_OCD)
  15. static inline void ocd_putc(unsigned int c)
  16. {
  17. int status, i = 0x2000000;
  18. do {
  19. if (--i < 0)
  20. return;
  21. asm volatile ("movc %0, p1.c0, #0" : "=r" (status));
  22. } while (status & 2);
  23. asm("movc p1.c1, %0, #1" : : "r" (c));
  24. }
  25. #define putc(ch) ocd_putc(ch)
  26. #else
  27. #define putc(ch)
  28. #endif
  29. #endif