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

嵌入式Linux

开发平台:

Unix_Linux

  1. /*
  2.  *  linux/arch/mips/philips/nino/kgdb.c
  3.  *
  4.  *  Copyright (C) 2001 Steven J. Hill (sjhill@realitydiluted.com)
  5.  *
  6.  * This program is free software; you can redistribute it and/or modify
  7.  * it under the terms of the GNU General Public License version 2 as
  8.  * published by the Free Software Foundation.
  9.  *
  10.  *  Kernel debugging on the Philips Nino.
  11.  */
  12. #include <asm/system.h>
  13. #include <asm/tx3912.h>
  14. static int remoteDebugInitialized = 0;
  15. void debugInit(void)
  16. {
  17. /*
  18.  * If low-level debugging (before GDB or console operational) is
  19.  * configured, then we do not need to re-initialize the UART.
  20.  */
  21. #ifndef CONFIG_DEBUG_LL
  22. earlyInitUartPR31700();
  23. #endif
  24. }
  25. char getDebugChar(void)
  26. {
  27. char buf;
  28. unsigned long int2, flags;
  29. if (!remoteDebugInitialized) {
  30. debugInit();
  31. remoteDebugInitialized = 1;
  32. }
  33. save_and_cli(flags);
  34. int2 = IntEnable2;
  35. IntEnable2 = 0;
  36. while(!(UartA_Ctrl1 & UART_RX_HOLD_FULL));
  37. buf = UartA_Data;
  38. IntEnable2 = int2;
  39. restore_flags(flags);
  40. return buf;
  41. }
  42. int putDebugChar(char c)
  43. {
  44. int i;
  45. unsigned long int2;
  46. if (!remoteDebugInitialized) {
  47. debugInit();
  48. remoteDebugInitialized = 1;
  49. }
  50. int2 = IntEnable2;
  51. IntEnable2 &=
  52. ~(INT2_UARTATXINT | INT2_UARTATXOVERRUN | INT2_UARTAEMPTY);
  53. for (i = 0; !(IntStatus2 & INT2_UARTATXINT) && (i < 10000); i++);
  54. IntClear2 = INT2_UARTATXINT | INT2_UARTATXOVERRUN | INT2_UARTAEMPTY;
  55. UartA_Data = c;
  56. for (i = 0; !(IntStatus2 & INT2_UARTATXINT) && (i < 10000); i++);
  57. IntClear2 = INT2_UARTATXINT | INT2_UARTATXOVERRUN | INT2_UARTAEMPTY;
  58. IntEnable2 = int2;
  59. return 1;
  60. }