1 1.23 christos /* $NetBSD: pcb.h,v 1.23 2021/10/27 18:20:23 christos Exp $ */ 2 1.1 ws 3 1.1 ws /*- 4 1.1 ws * Copyright (C) 1995, 1996 Wolfgang Solfrank. 5 1.1 ws * Copyright (C) 1995, 1996 TooLs GmbH. 6 1.1 ws * All rights reserved. 7 1.1 ws * 8 1.1 ws * Redistribution and use in source and binary forms, with or without 9 1.1 ws * modification, are permitted provided that the following conditions 10 1.1 ws * are met: 11 1.1 ws * 1. Redistributions of source code must retain the above copyright 12 1.1 ws * notice, this list of conditions and the following disclaimer. 13 1.1 ws * 2. Redistributions in binary form must reproduce the above copyright 14 1.1 ws * notice, this list of conditions and the following disclaimer in the 15 1.1 ws * documentation and/or other materials provided with the distribution. 16 1.1 ws * 3. All advertising materials mentioning features or use of this software 17 1.1 ws * must display the following acknowledgement: 18 1.1 ws * This product includes software developed by TooLs GmbH. 19 1.1 ws * 4. The name of TooLs GmbH may not be used to endorse or promote products 20 1.1 ws * derived from this software without specific prior written permission. 21 1.1 ws * 22 1.1 ws * THIS SOFTWARE IS PROVIDED BY TOOLS GMBH ``AS IS'' AND ANY EXPRESS OR 23 1.1 ws * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 24 1.1 ws * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 25 1.1 ws * IN NO EVENT SHALL TOOLS GMBH BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 26 1.1 ws * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 27 1.1 ws * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 28 1.1 ws * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 29 1.1 ws * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 30 1.1 ws * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 31 1.1 ws * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 32 1.1 ws */ 33 1.11 matt #ifndef _POWERPC_PCB_H_ 34 1.11 matt #define _POWERPC_PCB_H_ 35 1.1 ws 36 1.6 matt #include <powerpc/reg.h> 37 1.23 christos #include <powerpc/frame.h> 38 1.6 matt 39 1.13 matt struct faultbuf { 40 1.13 matt register_t fb_sp; /* R1 */ 41 1.13 matt register_t fb_r2; /* R2 (why?) */ 42 1.22 matt /* 43 1.22 matt * These are ordered so that one could use a stmw to save them. 44 1.22 matt */ 45 1.22 matt register_t fb_msr; /* MSR */ 46 1.22 matt register_t fb_pc; /* PC */ 47 1.13 matt register_t fb_cr; /* CR */ 48 1.13 matt register_t fb_fixreg[19]; /* R13-R31 */ 49 1.13 matt }; 50 1.13 matt 51 1.1 ws struct pcb { 52 1.1 ws struct pmap *pcb_pm; /* pmap of our vmspace */ 53 1.1 ws register_t pcb_sp; /* saved SP */ 54 1.12 matt int pcb_flags; 55 1.17 matt #define PCB_FE1 PSL_FE1 /* 0x100 */ 56 1.17 matt #define PCB_FE0 PSL_FE0 /* 0x800 */ 57 1.13 matt struct faultbuf *pcb_onfault; /* For use during copyin/copyout */ 58 1.12 matt vaddr_t pcb_kmapsr; /* where to map user segment in kernel */ 59 1.12 matt vaddr_t pcb_umapsr; /* the user segment mapped in kernel */ 60 1.18 matt struct fpreg pcb_fpu; /* Floating point processor */ 61 1.14 matt struct vreg pcb_vr __attribute__((aligned(16))); 62 1.22 matt register_t pcb_usprg0; /* User Special-Purpose Register General 0 */ 63 1.1 ws }; 64 1.1 ws 65 1.1 ws struct md_coredump { 66 1.1 ws struct trapframe frame; 67 1.18 matt struct fpreg fpstate; 68 1.6 matt struct vreg vstate; 69 1.1 ws }; 70 1.1 ws 71 1.13 matt #ifdef _KERNEL 72 1.13 matt int setfault(struct faultbuf *); 73 1.1 ws #endif 74 1.5 tsubai 75 1.11 matt #endif /* _POWERPC_PCB_H_ */ 76