1a9643ea8Slogwang /*- 2*22ce4affSfengbojiang * SPDX-License-Identifier: BSD-4-Clause 3*22ce4affSfengbojiang * 4a9643ea8Slogwang * Copyright (c) 1991 Regents of the University of California. 5a9643ea8Slogwang * All rights reserved. 6a9643ea8Slogwang * 7a9643ea8Slogwang * Redistribution and use in source and binary forms, with or without 8a9643ea8Slogwang * modification, are permitted provided that the following conditions 9a9643ea8Slogwang * are met: 10a9643ea8Slogwang * 1. Redistributions of source code must retain the above copyright 11a9643ea8Slogwang * notice, this list of conditions and the following disclaimer. 12a9643ea8Slogwang * 2. Redistributions in binary form must reproduce the above copyright 13a9643ea8Slogwang * notice, this list of conditions and the following disclaimer in the 14a9643ea8Slogwang * documentation and/or other materials provided with the distribution. 15a9643ea8Slogwang * 3. All advertising materials mentioning features or use of this software 16a9643ea8Slogwang * must display the following acknowledgement: 17a9643ea8Slogwang * This product includes software developed by the University of 18a9643ea8Slogwang * California, Berkeley and its contributors. 19a9643ea8Slogwang * 4. Neither the name of the University nor the names of its contributors 20a9643ea8Slogwang * may be used to endorse or promote products derived from this software 21a9643ea8Slogwang * without specific prior written permission. 22a9643ea8Slogwang * 23a9643ea8Slogwang * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 24a9643ea8Slogwang * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 25a9643ea8Slogwang * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 26a9643ea8Slogwang * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 27a9643ea8Slogwang * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 28a9643ea8Slogwang * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 29a9643ea8Slogwang * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 30a9643ea8Slogwang * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 31a9643ea8Slogwang * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 32a9643ea8Slogwang * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 33a9643ea8Slogwang * SUCH DAMAGE. 34a9643ea8Slogwang * 35a9643ea8Slogwang * from: @(#)proc.h 7.1 (Berkeley) 5/15/91 36a9643ea8Slogwang * from: FreeBSD: src/sys/i386/include/proc.h,v 1.11 2001/06/29 37a9643ea8Slogwang * $FreeBSD$ 38a9643ea8Slogwang */ 39a9643ea8Slogwang 40a9643ea8Slogwang #ifndef _MACHINE_PROC_H_ 41a9643ea8Slogwang #define _MACHINE_PROC_H_ 42a9643ea8Slogwang 43a9643ea8Slogwang #include <machine/utrap.h> 44a9643ea8Slogwang 45a9643ea8Slogwang struct md_utrap { 46a9643ea8Slogwang utrap_entry_t *ut_precise[UT_MAX]; /* must be first */ 47a9643ea8Slogwang int ut_refcnt; 48a9643ea8Slogwang }; 49a9643ea8Slogwang 50a9643ea8Slogwang struct mdthread { 51a9643ea8Slogwang int md_spinlock_count; /* (k) */ 52a9643ea8Slogwang register_t md_saved_cspr; /* (k) */ 53a9643ea8Slogwang register_t md_spurflt_addr; /* (k) Spurious page fault address. */ 54a9643ea8Slogwang int md_ptrace_instr; 55a9643ea8Slogwang int md_ptrace_addr; 56a9643ea8Slogwang int md_ptrace_instr_alt; 57a9643ea8Slogwang int md_ptrace_addr_alt; 58a9643ea8Slogwang }; 59a9643ea8Slogwang 60a9643ea8Slogwang struct mdproc { 61a9643ea8Slogwang struct md_utrap *md_utrap; 62a9643ea8Slogwang void *md_sigtramp; 63a9643ea8Slogwang }; 64a9643ea8Slogwang 65a9643ea8Slogwang #define KINFO_PROC_SIZE 816 66a9643ea8Slogwang 67a9643ea8Slogwang #define MAXARGS 8 68a9643ea8Slogwang /* 69a9643ea8Slogwang * This holds the syscall state for a single system call. 70a9643ea8Slogwang * As some syscall arguments may be 64-bit aligned we need to ensure the 71a9643ea8Slogwang * args value is 64-bit aligned. The ABI will then ensure any 64-bit 72a9643ea8Slogwang * arguments are already correctly aligned, even if they were passed in 73a9643ea8Slogwang * via registers, we just need to make sure we copy them to an aligned 74a9643ea8Slogwang * buffer. 75a9643ea8Slogwang */ 76a9643ea8Slogwang struct syscall_args { 77a9643ea8Slogwang u_int code; 78a9643ea8Slogwang struct sysent *callp; 79a9643ea8Slogwang register_t args[MAXARGS]; 80a9643ea8Slogwang } __aligned(8); 81a9643ea8Slogwang 82a9643ea8Slogwang #endif /* !_MACHINE_PROC_H_ */ 83