From owner-p4-projects@FreeBSD.ORG Sun Mar 23 20:40:57 2008 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id D0D5B1065674; Sun, 23 Mar 2008 20:40:56 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 74D6A106566B for ; Sun, 23 Mar 2008 20:40:56 +0000 (UTC) (envelope-from jb@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 5EA968FC1C for ; Sun, 23 Mar 2008 20:40:56 +0000 (UTC) (envelope-from jb@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.1/8.14.1) with ESMTP id m2NKeuo3009207 for ; Sun, 23 Mar 2008 20:40:56 GMT (envelope-from jb@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.1/8.14.1/Submit) id m2NKeuFa009205 for perforce@freebsd.org; Sun, 23 Mar 2008 20:40:56 GMT (envelope-from jb@freebsd.org) Date: Sun, 23 Mar 2008 20:40:56 GMT Message-Id: <200803232040.m2NKeuFa009205@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to jb@freebsd.org using -f From: John Birrell To: Perforce Change Reviews Cc: Subject: PERFORCE change 138384 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 23 Mar 2008 20:40:57 -0000 http://perforce.freebsd.org/chv.cgi?CH=138384 Change 138384 by jb@jb_freebsd1 on 2008/03/23 20:40:28 Implement the stack depth. Cleanup. Affected files ... .. //depot/projects/dtrace/src/sys/cddl/dev/dtrace/amd64/dtrace_asm.S#4 edit .. //depot/projects/dtrace/src/sys/cddl/dev/dtrace/amd64/dtrace_isa.c#5 edit Differences ... ==== //depot/projects/dtrace/src/sys/cddl/dev/dtrace/amd64/dtrace_asm.S#4 (text+ko) ==== @@ -426,7 +426,7 @@ * they were when we entered vpanic() to the designated location in * the regs structure we allocated on the stack. */ -#ifdef DOODAD +#ifdef notyet movq 0x0(%rbx), %rcx movq %rcx, REGOFF_RDI(%rsp) movq 0x8(%rbx), %rcx ==== //depot/projects/dtrace/src/sys/cddl/dev/dtrace/amd64/dtrace_isa.c#5 (text+ko) ==== @@ -42,11 +42,6 @@ extern uintptr_t kernbase; uintptr_t kernelbase = (uintptr_t) &kernbase; -struct xframe { - greg_t fr_savfp; /* saved frame pointer */ - greg_t fr_savpc; /* saved program counter */ -}; - uint8_t dtrace_fuword8_nocheck(void *); uint16_t dtrace_fuword16_nocheck(void *); uint32_t dtrace_fuword32_nocheck(void *); @@ -220,10 +215,10 @@ return (n); } +#ifdef notyet void dtrace_getufpstack(uint64_t *pcstack, uint64_t *fpstack, int pcstack_limit) { -#ifdef DOODAD klwp_t *lwp = ttolwp(curthread); proc_t *p = curproc; struct regs *rp; @@ -306,14 +301,12 @@ zero: while (pcstack_limit-- > 0) *pcstack++ = NULL; -#endif } /*ARGSUSED*/ uint64_t dtrace_getarg(int arg, int aframes) { -#ifdef DOODAD uintptr_t val; struct xframe *fp = (struct xframe *)dtrace_getfp(); uintptr_t *stack; @@ -400,50 +393,44 @@ DTRACE_CPUFLAG_CLEAR(CPU_DTRACE_NOFAULT); return (val); -#else return (0); +} #endif -} /*ARGSUSED*/ int dtrace_getstackdepth(int aframes) { -#ifdef DOODAD int depth = 0; - struct xframe *frame; - vm_offset_t ebp; + struct amd64_frame *frame; + vm_offset_t rbp; aframes++; - ebp = dtrace_getfp(); - frame = (struct xframe *)ebp; + rbp = dtrace_getfp(); + frame = (struct amd64_frame *)rbp; depth++; for(;;) { - if (!INKERNEL(frame)) + if (!INKERNEL((long) frame)) break; - if (!INKERNEL(frame->fr_savpc)) + if (!INKERNEL((long) frame->f_frame)) break; depth++; - if ((struct xframe *)frame->fr_savfp < frame || - (vm_offset_t)frame->fr_savfp >= - (vm_offset_t)ebp + KSTACK_PAGES * PAGE_SIZE) + if (frame->f_frame <= frame || + (vm_offset_t)frame->f_frame >= + (vm_offset_t)rbp + KSTACK_PAGES * PAGE_SIZE) break; - - frame = (struct xframe *)frame->fr_savfp; + frame = frame->f_frame; } if (depth < aframes) return 0; else return depth - aframes; -#else - return (0); -#endif } +#ifdef notyet ulong_t dtrace_getreg(struct regs *rp, uint_t reg) { -#ifdef DOODAD #if defined(__amd64) int regmap[] = { REG_GS, /* GS */ @@ -544,10 +531,8 @@ return ((&rp->r_gs)[reg]); #endif -#else -return 0; +} #endif -} static int dtrace_copycheck(uintptr_t uaddr, uintptr_t kaddr, size_t size)