dcc.h 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. /* Copyright (c) 2010, 2014 The Linux Foundation. All rights reserved.
  2. *
  3. * This program is free software; you can redistribute it and/or modify
  4. * it under the terms of the GNU General Public License version 2 and
  5. * only version 2 as published by the Free Software Foundation.
  6. *
  7. * This program is distributed in the hope that it will be useful,
  8. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  9. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  10. * GNU General Public License for more details.
  11. */
  12. #include <asm/barrier.h>
  13. static inline u32 __dcc_getstatus(void)
  14. {
  15. u32 __ret;
  16. asm volatile("mrc p14, 0, %0, c0, c1, 0 @ read comms ctrl reg"
  17. : "=r" (__ret) : : "cc");
  18. return __ret;
  19. }
  20. static inline char __dcc_getchar(void)
  21. {
  22. char __c;
  23. asm volatile("mrc p14, 0, %0, c0, c5, 0 @ read comms data reg"
  24. : "=r" (__c));
  25. isb();
  26. return __c;
  27. }
  28. static inline void __dcc_putchar(char c)
  29. {
  30. asm volatile("mcr p14, 0, %0, c0, c5, 0 @ write a char"
  31. : /* no output register */
  32. : "r" (c));
  33. isb();
  34. }