diff options
author | markj <markj@FreeBSD.org> | 2015-09-11 03:24:07 +0000 |
---|---|---|
committer | markj <markj@FreeBSD.org> | 2015-09-11 03:24:07 +0000 |
commit | dfb0cc5c03efdfd24efc1469b804742fd2d9bc5d (patch) | |
tree | 11760d447b62e31159f31afdca3fc3efbac38fae /sys/amd64 | |
parent | 3ff7032ecdcf849960103d5e02a6ff33abfed3ce (diff) | |
download | FreeBSD-src-dfb0cc5c03efdfd24efc1469b804742fd2d9bc5d.zip FreeBSD-src-dfb0cc5c03efdfd24efc1469b804742fd2d9bc5d.tar.gz |
Merge stack(9) implementations for i386 and amd64 under x86/.
Reviewed by: jhb, kib
Sponsored by: EMC / Isilon Storage Division
Differential Revision: https://reviews.freebsd.org/D3255
Diffstat (limited to 'sys/amd64')
-rw-r--r-- | sys/amd64/amd64/stack_machdep.c | 87 | ||||
-rw-r--r-- | sys/amd64/include/stack.h | 42 |
2 files changed, 3 insertions, 126 deletions
diff --git a/sys/amd64/amd64/stack_machdep.c b/sys/amd64/amd64/stack_machdep.c deleted file mode 100644 index 2412c93..0000000 --- a/sys/amd64/amd64/stack_machdep.c +++ /dev/null @@ -1,87 +0,0 @@ -/*- - * Copyright (c) 2005 Antoine Brodin - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - -#include <sys/param.h> -#include <sys/systm.h> -#include <sys/proc.h> -#include <sys/stack.h> - -#include <machine/pcb.h> -#include <machine/stack.h> - -#include <vm/vm.h> -#include <vm/vm_param.h> -#include <vm/pmap.h> - -static void -stack_capture(struct thread *td, struct stack *st, register_t rbp) -{ - struct amd64_frame *frame; - vm_offset_t callpc; - - stack_zero(st); - frame = (struct amd64_frame *)rbp; - while (1) { - if (!INKERNEL((long)frame)) - break; - callpc = frame->f_retaddr; - if (!INKERNEL(callpc)) - break; - if (stack_put(st, callpc) == -1) - break; - if (frame->f_frame <= frame || - (vm_offset_t)frame->f_frame >= td->td_kstack + - td->td_kstack_pages * PAGE_SIZE) - break; - frame = frame->f_frame; - } -} - -void -stack_save_td(struct stack *st, struct thread *td) -{ - register_t rbp; - - if (TD_IS_SWAPPED(td)) - panic("stack_save_td: swapped"); - if (TD_IS_RUNNING(td)) - panic("stack_save_td: running"); - - rbp = td->td_pcb->pcb_rbp; - stack_capture(td, st, rbp); -} - -void -stack_save(struct stack *st) -{ - register_t rbp; - - __asm __volatile("movq %%rbp,%0" : "=r" (rbp)); - stack_capture(curthread, st, rbp); -} diff --git a/sys/amd64/include/stack.h b/sys/amd64/include/stack.h index 8297eae..091ae33 100644 --- a/sys/amd64/include/stack.h +++ b/sys/amd64/include/stack.h @@ -1,42 +1,6 @@ -/*- - * Mach Operating System - * Copyright (c) 1991,1990 Carnegie Mellon University - * All Rights Reserved. - * - * Permission to use, copy, modify and distribute this software and its - * documentation is hereby granted, provided that both the copyright - * notice and this permission notice appear in all copies of the - * software, derivative works or modified versions, and any portions - * thereof, and that both notices appear in supporting documentation. - * - * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS - * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR - * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. - * - * Carnegie Mellon requests users of this software to return to - * - * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU - * School of Computer Science - * Carnegie Mellon University - * Pittsburgh PA 15213-3890 - * - * any improvements or extensions that they make and grant Carnegie the - * rights to redistribute these changes. - * - * $FreeBSD$ - */ - -#ifndef _MACHINE_STACK_H_ -#define _MACHINE_STACK_H_ - /* - * Stack trace. + * This file is in the public domain. */ +/* $FreeBSD$ */ -struct amd64_frame { - struct amd64_frame *f_frame; - long f_retaddr; - long f_arg0; -}; - -#endif /* !_MACHINE_STACK_H_ */ +#include <x86/stack.h> |