arc_con.c
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:1k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. /*
  2.  * Wrap-around code for a console using the
  3.  * ARC io-routines.
  4.  *
  5.  * Copyright (c) 1998 Harald Koerfgen 
  6.  * Copyright (c) 2001 Ralf Baechle
  7.  */
  8. #include <linux/tty.h>
  9. #include <linux/major.h>
  10. #include <linux/ptrace.h>
  11. #include <linux/init.h>
  12. #include <linux/console.h>
  13. #include <linux/fs.h>
  14. #include <asm/sgialib.h>
  15. extern void prom_printf (char *, ...);
  16. void prom_putchar(char c)
  17. {
  18. ULONG cnt;
  19. CHAR it = c;
  20. ArcWrite(1, &it, 1, &cnt);
  21. }
  22. static void prom_console_write(struct console *co, const char *s,
  23.        unsigned count)
  24. {
  25. unsigned i;
  26. /*
  27.  *    Now, do each character
  28.  */
  29. for (i = 0; i < count; i++) {
  30. if (*s == 10)
  31. prom_printf("%c", 13);
  32. prom_printf("%c", *s++);
  33. }
  34. }
  35. static int prom_console_wait_key(struct console *co)
  36. {
  37. return 0;
  38. }
  39. static int __init prom_console_setup(struct console *co, char *options)
  40. {
  41. return 0;
  42. }
  43. static kdev_t prom_console_device(struct console *c)
  44. {
  45. return MKDEV(TTY_MAJOR, 64 + c->index);
  46. }
  47. static struct console arc_cons = {
  48. "ttyS",
  49. prom_console_write,
  50. NULL,
  51. prom_console_device,
  52. prom_console_wait_key,
  53. NULL,
  54. prom_console_setup,
  55. CON_PRINTBUFFER,
  56. -1,
  57. 0,
  58. NULL
  59. };
  60. /*
  61.  *    Register console.
  62.  */
  63. void __init arc_console_init(void)
  64. {
  65. register_console(&arc_cons);
  66. }