1 /* 2 * Copyright (c) 1994 Ludd, University of Lule}, Sweden 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright 9 * notice, this list of conditions and the following disclaimer. 10 * 2. Redistributions in binary form must reproduce the above copyright 11 * notice, this list of conditions and the following disclaimer in the 12 * documentation and/or other materials provided with the distribution. 13 * 3. All advertising materials mentioning features or use of this software 14 * must display the following acknowledgement: 15 * This product includes software developed at Ludd, University of Lule} 16 * 4. The name of the author may not be used to endorse or promote products 17 * derived from this software without specific prior written permission 18 * 19 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 20 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 21 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 22 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 23 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 24 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 28 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 * 30 * $Id: cpu.h,v 1.1 1994/08/02 20:20:13 ragge Exp $ 31 */ 32 /* All bugs are subject to removal without further notice */ 33 34 #include "cdefs.h" 35 #include "vax/include/mtpr.h" 36 37 #define enablertclock() 38 39 #define setsoftclock() mtpr(8,PR_SIRR) 40 41 struct clockframe { 42 int pc; 43 int ps; 44 }; 45 46 struct cpuops { 47 int *nisse; 48 int (*cpu_memenable)(); 49 int (*cpu_memerr)(); 50 int (*cpu_mchk)(); 51 int (*cpu_init)(); 52 }; 53 54 struct percpu { 55 int pc_cputype; 56 int pc_cpuspeed; 57 int pc_nioa; 58 struct iobus *pc_io; 59 struct cpuops *pc_ops; 60 }; 61 62 struct clockops { 63 int (*p1)(); 64 int (*p2)(); 65 int (*p3)(); 66 }; 67 68 /* 69 * Return timeofdayregister 70 */ 71 72 #define todr() mfpr(PR_TODR) 73 /* 74 * The following code are from the hp300 port/ragge. 75 * from: Utah Hdr: cpu.h 1.16 91/03/25 76 * from: @(#)cpu.h 7.7 (Berkeley) 6/27/91 77 * $Id: cpu.h,v 1.1 1994/08/02 20:20:13 ragge Exp $ 78 */ 79 /* 80 * Preempt the current process if in interrupt from user mode, 81 * or after the current trap/syscall if in system mode. 82 */ 83 84 #define need_resched(){ \ 85 want_resched++; \ 86 mtpr(AST_OK,PR_ASTLVL); \ 87 } 88 89 /* 90 * Give a profiling tick to the current process from the softclock 91 * interrupt. On hp300, request an ast to send us through trap(), 92 * marking the proc as needing a profiling tick. 93 */ 94 /* #define profile_tick(p, framep) { (p)->p_flag |= SOWEUPC; aston(); } */ 95 96 /* 97 * Notify the current process (p) that it has a signal pending, 98 * process as soon as possible. 99 */ 100 101 #define signotify(p) mtpr(AST_OK,PR_ASTLVL); 102 103 /* extern int astpending; /* need to trap before returning to user mode */ 104 extern int want_resched; /* resched() was called */ 105 106