mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-31 16:38:12 +00:00
61 lines
1.2 KiB
ArmAsm
61 lines
1.2 KiB
ArmAsm
|
/*
|
||
|
* This file is subject to the terms and conditions of the GNU General Public
|
||
|
* License. See the file "COPYING" in the main directory of this archive
|
||
|
* for more details.
|
||
|
*
|
||
|
* Kernel debug stuff to use the Watch registers.
|
||
|
* Useful to find stack overflows, dangling pointers etc.
|
||
|
*
|
||
|
* Copyright (C) 1995, 1996, 1999 by Ralf Baechle
|
||
|
*/
|
||
|
#include <asm/asm.h>
|
||
|
#include <asm/mipsregs.h>
|
||
|
#include <asm/regdef.h>
|
||
|
|
||
|
.set noreorder
|
||
|
/*
|
||
|
* Parameter: a0 - logic address to watch
|
||
|
* Currently only KSEG0 addresses are allowed!
|
||
|
* a1 - set bit #1 to trap on load references
|
||
|
* bit #0 to trap on store references
|
||
|
* Results : none
|
||
|
*/
|
||
|
LEAF(__watch_set)
|
||
|
li t0, 0x80000000
|
||
|
subu a0, t0
|
||
|
ori a0, 7
|
||
|
xori a0, 7
|
||
|
or a0, a1
|
||
|
mtc0 a0, CP0_WATCHLO
|
||
|
sw a0, watch_savelo
|
||
|
|
||
|
jr ra
|
||
|
mtc0 zero, CP0_WATCHHI
|
||
|
END(__watch_set)
|
||
|
|
||
|
/*
|
||
|
* Parameter: none
|
||
|
* Results : none
|
||
|
*/
|
||
|
LEAF(__watch_clear)
|
||
|
jr ra
|
||
|
mtc0 zero, CP0_WATCHLO
|
||
|
END(__watch_clear)
|
||
|
|
||
|
/*
|
||
|
* Parameter: none
|
||
|
* Results : none
|
||
|
*/
|
||
|
LEAF(__watch_reenable)
|
||
|
lw t0, watch_savelo
|
||
|
jr ra
|
||
|
mtc0 t0, CP0_WATCHLO
|
||
|
END(__watch_reenable)
|
||
|
|
||
|
/*
|
||
|
* Saved value of the c0_watchlo register for watch_reenable()
|
||
|
*/
|
||
|
.data
|
||
|
watch_savelo: .word 0
|
||
|
.text
|