1 /*        $NetBSD: pcb.h,v 1.16 2022/12/11 18:02:40 oster Exp $       */
2 
3 /*
4  * Copyright (c) 1994 Ludd, University of Lule}, Sweden.
5  * All rights reserved.
6  *
7  * Redistribution and use in source and binary forms, with or without
8  * modification, are permitted provided that the following conditions
9  * are met:
10  * 1. Redistributions of source code must retain the above copyright
11  *    notice, this list of conditions and the following disclaimer.
12  * 2. Redistributions in binary form must reproduce the above copyright
13  *    notice, this list of conditions and the following disclaimer in the
14  *    documentation and/or other materials provided with the distribution.
15  *
16  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
17  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
18  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
19  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
20  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
21  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
22  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
23  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
25  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26  */
27 
28  /* All bugs are subject to removal without further notice */
29 
30 #ifndef _VAX_PCB_H_
31 #define _VAX_PCB_H_
32 
33 #include <machine/trap.h>
34 
35 struct pcb {
36 
37           /* Hardware registers, based on VAX special instructions */
38 
39           long      KSP;                /*  Kernel Stack Pointer      */
40           long      ESP;                /*  Executive Stack Pointer   */
41           long      SSP;                /*  Supervisor Stack Pointer  */
42           long      USP;                /*  User Stack Pointer        */
43           long      R[12];              /*  Register 0-11             */
44           long      AP;                 /*  Argument Pointer          */
45           long      FP;                 /*  Frame Pointer             */
46           long      PC;                 /*  Program Counter           */
47           long      PSL;                /*  Program Status Longword   */
48           struct    pte *P0BR;          /*  Page 0 Base Register      */
49           long      P0LR;               /*  Page 0 Length Register    */
50           struct    pte *P1BR;          /*  Page 1 Base Register      */
51           long      P1LR;               /*  Page 1 Length Register    */
52           long      ASN;                /*  Address space number      */
53 
54           /* Software registers, only used by kernel software */
55           void   *pcb_onfault;          /* Tells whether fault copy */
56           paddr_t pcb_paddr;  /* physical address of PCB */
57           struct pmap *pcb_pm;          /* owning pmap */
58           struct pcb *pcb_pmnext;       /* next pcb that shares this pmap */
59 };
60 
61 #define   AST_MASK 0x07000000
62 #define   AST_PCB    0x04000000         /* disable AST */
63 #define   AST_ON     0x03000000         /* request AST */
64 
65 /* machine-specific core dump; save trapframe */
66 struct    md_coredump {
67           struct trapframe md_tf;
68 };
69 
70 #endif /* _VAX_PCB_H_ */
71 
72