diff options
author | gber <gber@FreeBSD.org> | 2012-05-24 12:41:57 +0000 |
---|---|---|
committer | gber <gber@FreeBSD.org> | 2012-05-24 12:41:57 +0000 |
commit | 5b4a3e5f4a4045127c253ffac2a618946f83912b (patch) | |
tree | 6c1fa0edb3e1dd26b7abc41e092bf7fa186c298d | |
parent | abae368f39b85b293231ca7ae983d1f1727f6f51 (diff) | |
download | FreeBSD-src-5b4a3e5f4a4045127c253ffac2a618946f83912b.zip FreeBSD-src-5b4a3e5f4a4045127c253ffac2a618946f83912b.tar.gz |
Return Supervisor SP and LR registers instead of User ones while in KDB thread.
Obtained from: Semihalf
-rw-r--r-- | sys/arm/arm/gdb_machdep.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/sys/arm/arm/gdb_machdep.c b/sys/arm/arm/gdb_machdep.c index eefb046..2cccb7e6 100644 --- a/sys/arm/arm/gdb_machdep.c +++ b/sys/arm/arm/gdb_machdep.c @@ -54,8 +54,12 @@ gdb_cpu_getreg(int regnum, size_t *regsz) *regsz = gdb_cpu_regsz(regnum); if (kdb_thread == curthread) { - if (regnum < 15) + if (regnum < 13) return (&kdb_frame->tf_r0 + regnum); + if (regnum == 13) + return (&kdb_frame->tf_svc_sp); + if (regnum == 14) + return (&kdb_frame->tf_svc_lr); if (regnum == 15) return (&kdb_frame->tf_pc); if (regnum == 25) |