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

嵌入式Linux

开发平台:

Unix_Linux

  1. /*
  2.  * This file is subject to the terms and conditions of the GNU General Public
  3.  * License.  See the file "COPYING" in the main directory of this archive
  4.  * for more details.
  5.  *
  6.  * Copyright (C) 1996 David S. Miller (dm@sgi.com)
  7.  * Compability with board caches, Ulf Carlsson
  8.  */
  9. #include <linux/config.h>
  10. #include <linux/init.h>
  11. #include <linux/kernel.h>
  12. #include <asm/sgialib.h>
  13. #include <asm/bcache.h>
  14. #include <linux/console.h>
  15. #include <linux/kdev_t.h>
  16. #include <linux/major.h>
  17. /*
  18.  * IP22 boardcache is not compatible with board caches.  Thus we disable it
  19.  * during romvec action.  Since r4xx0.c is always compiled and linked with your
  20.  * kernel, this shouldn't cause any harm regardless what MIPS processor you
  21.  * have.
  22.  *
  23.  * The ARC write and read functions seem to interfere with the serial lines
  24.  * in some way. You should be careful with them.
  25.  */
  26. void prom_putchar(char c)
  27. {
  28. long cnt;
  29. char it = c;
  30. bc_disable();
  31. romvec->write(1, &it, 1, &cnt);
  32. bc_enable();
  33. }
  34. char __init prom_getchar(void)
  35. {
  36. long cnt;
  37. char c;
  38. bc_disable();
  39. romvec->read(0, &c, 1, &cnt);
  40. bc_enable();
  41. return c;
  42. }
  43. static char ppbuf[1024];
  44. void prom_printf(char *fmt, ...)
  45. {
  46. va_list args;
  47. char ch, *bptr;
  48. int i;
  49. va_start(args, fmt);
  50. i = vsprintf(ppbuf, fmt, args);
  51. bptr = ppbuf;
  52. while ((ch = *(bptr++)) != 0) {
  53. if (ch == 'n')
  54. prom_putchar('r');
  55. prom_putchar(ch);
  56. }
  57. va_end(args);
  58. }