From owner-svn-src-head@FreeBSD.ORG Sun Mar 15 15:17:35 2015 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 7041BF43; Sun, 15 Mar 2015 15:17:35 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 5A827D6D; Sun, 15 Mar 2015 15:17:35 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t2FFHZ4B007619; Sun, 15 Mar 2015 15:17:35 GMT (envelope-from rwatson@FreeBSD.org) Received: (from rwatson@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t2FFHZ2g007618; Sun, 15 Mar 2015 15:17:35 GMT (envelope-from rwatson@FreeBSD.org) Message-Id: <201503151517.t2FFHZ2g007618@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: rwatson set sender to rwatson@FreeBSD.org using -f From: Robert Watson Date: Sun, 15 Mar 2015 15:17:35 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r280038 - head/sys/cddl/dev/dtrace/arm X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 15 Mar 2015 15:17:35 -0000 Author: rwatson Date: Sun Mar 15 15:17:34 2015 New Revision: 280038 URL: https://svnweb.freebsd.org/changeset/base/280038 Log: On ARM, unlike some other architectures, saved $pc values from in-kernel traps do appear in the regular call stack, rather than only in a special trap frame, so we don't need to inject the trap-frame $pc into a returned stack trace in DTrace. MFC after: 3 days Sponsored by: DARPA, AFRL Modified: head/sys/cddl/dev/dtrace/arm/dtrace_isa.c Modified: head/sys/cddl/dev/dtrace/arm/dtrace_isa.c ============================================================================== --- head/sys/cddl/dev/dtrace/arm/dtrace_isa.c Sun Mar 15 14:57:11 2015 (r280037) +++ head/sys/cddl/dev/dtrace/arm/dtrace_isa.c Sun Mar 15 15:17:34 2015 (r280038) @@ -73,7 +73,6 @@ dtrace_getpcstack(pc_t *pcstack, int pcs register_t sp; int scp_offset; int depth = 0; - pc_t caller = (pc_t) solaris_cpu[curcpu].cpu_dtrace_caller; if (intrpc != 0) pcstack[depth++] = (pc_t) intrpc; @@ -92,13 +91,14 @@ dtrace_getpcstack(pc_t *pcstack, int pcs done = unwind_stack_one(&state, 1); + /* + * NB: Unlike some other architectures, we don't need to + * explicitly insert cpu_dtrace_caller as it appears in the + * normal kernel stack trace rather than a special trap frame. + */ if (aframes > 0) { aframes--; - if ((aframes == 0) && (caller != 0)) { - pcstack[depth++] = caller; - } - } - else { + } else { pcstack[depth++] = state.registers[PC]; }