2
0

console.c 876 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. #include <stddef.h>
  2. #include <stdint.h>
  3. #include <string.h>
  4. #include <stdio.h>
  5. #include <stdarg.h>
  6. #include "fw.h"
  7. #include "console.h"
  8. #include "io.h"
  9. void __cold __con_set_baudrate(uint32_t baud)
  10. {
  11. __con_set_baudrate_inline(baud);
  12. }
  13. static __always_inline void __con_putc(char c)
  14. {
  15. /* Wait for FIFO space */
  16. while (CON_STATUS & (1 << 4))
  17. pause();
  18. if (c == '\n')
  19. CON_DATA = '\r';
  20. CON_DATA = c;
  21. }
  22. void __hot con_putc(char c)
  23. {
  24. __con_putc(c);
  25. }
  26. void __hot con_puts(const char *str)
  27. {
  28. while (*str)
  29. __con_putc(*str++);
  30. }
  31. void con_vprintf(const char *fmt, va_list ap)
  32. {
  33. char buf[128]; /* Maximum text size */
  34. unsigned int len;
  35. const char *p;
  36. vsnprintf(buf, sizeof buf, fmt, ap);
  37. con_puts(buf);
  38. }
  39. void con_printf(const char *fmt, ...)
  40. {
  41. va_list ap;
  42. va_start(ap, fmt);
  43. con_vprintf(fmt, ap);
  44. va_end(ap);
  45. }