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

嵌入式Linux

开发平台:

Unix_Linux

  1. /* $Id$
  2.  *
  3.  * This file is subject to the terms and conditions of the GNU General Public
  4.  * License.  See the file "COPYING" in the main directory of this archive
  5.  * for more details.
  6.  *
  7.  * Kernel debug stuff to use the Watch registers.
  8.  * Useful to find stack overflows, dangling pointers etc.
  9.  *
  10.  * Copyright (C) 1995, 1996, 1999 by Ralf Baechle
  11.  */
  12. #include <asm/asm.h>
  13. #include <asm/mipsregs.h>
  14. #include <asm/regdef.h>
  15. .set noreorder
  16. /*
  17.  * Parameter: a0 - logic address to watch
  18.  *                 Currently only KSEG0 addresses are allowed!
  19.  *            a1 - set bit #1 to trap on load references
  20.  *                     bit #0 to trap on store references
  21.  * Results  : none
  22.  */
  23. LEAF(__watch_set)
  24. li t0,0x80000000
  25. subu a0,t0
  26. ori a0,7
  27. xori a0,7
  28. or a0,a1
  29. mtc0 a0,CP0_WATCHLO
  30. sw a0,watch_savelo
  31. jr ra
  32.  mtc0 zero,CP0_WATCHHI
  33. END(__watch_set)
  34. /*
  35.  * Parameter: none
  36.  * Results  : none
  37.  */
  38. LEAF(__watch_clear)
  39. jr ra
  40.  mtc0 zero,CP0_WATCHLO
  41. END(__watch_clear)
  42. /*
  43.  * Parameter: none
  44.  * Results  : none
  45.  */
  46. LEAF(__watch_reenable)
  47. lw t0,watch_savelo
  48. jr ra
  49.  mtc0 t0,CP0_WATCHLO
  50. END(__watch_reenable)
  51. /*
  52.  * Saved value of the c0_watchlo register for watch_reenable()
  53.  */
  54. .data
  55. watch_savelo: .word 0
  56. .text