Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/arch/arm/arm fix off-by-one in frame handling, and add a...
details: https://anonhg.NetBSD.org/src/rev/685c3096e46c
branches: trunk
changeset: 777406:685c3096e46c
user: christos <christos%NetBSD.org@localhost>
date: Fri Feb 17 16:26:51 2012 +0000
description:
fix off-by-one in frame handling, and add a missing db_read
diffstat:
sys/arch/arm/arm/db_trace.c | 13 +++++++++----
1 files changed, 9 insertions(+), 4 deletions(-)
diffs (43 lines):
diff -r f3391b2ec21c -r 685c3096e46c sys/arch/arm/arm/db_trace.c
--- a/sys/arch/arm/arm/db_trace.c Fri Feb 17 16:01:41 2012 +0000
+++ b/sys/arch/arm/arm/db_trace.c Fri Feb 17 16:26:51 2012 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: db_trace.c,v 1.23 2012/02/16 02:32:40 christos Exp $ */
+/* $NetBSD: db_trace.c,v 1.24 2012/02/17 16:26:51 christos Exp $ */
/*
* Copyright (c) 2000, 2001 Ben Harris
@@ -31,7 +31,7 @@
#include <sys/param.h>
-__KERNEL_RCSID(0, "$NetBSD: db_trace.c,v 1.23 2012/02/16 02:32:40 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: db_trace.c,v 1.24 2012/02/17 16:26:51 christos Exp $");
#include <sys/proc.h>
#include <arm/armreg.h>
@@ -161,9 +161,9 @@
lastframe = frame;
#ifndef _KERNEL
uint32_t frameb[4];
- db_read_bytes((db_addr_t)(frame - 4), sizeof(frameb),
+ db_read_bytes((db_addr_t)(frame - 3), sizeof(frameb),
(char *)frameb);
- frame = frameb + 4;
+ frame = frameb + 3;
#endif
/*
@@ -189,7 +189,12 @@
#endif
(*pr)("\trsp=0x%08x rfp=0x%08x", frame[FR_RSP], frame[FR_RFP]);
+#ifndef _KERNEL
+ db_read_bytes((db_addr_t)((u_int32_t *)scp + scp_offset),
+ sizeof(savecode), (void *)&savecode);
+#else
savecode = ((u_int32_t *)scp)[scp_offset];
+#endif
if ((savecode & 0x0e100000) == 0x08000000) {
/* Looks like an STM */
rp = frame - 4;
Home |
Main Index |
Thread Index |
Old Index