130263Skarels /* 230263Skarels * Copyright (c) 1986 Regents of the University of California. 330263Skarels * All rights reserved. The Berkeley software License Agreement 430263Skarels * specifies the terms and conditions for redistribution. 530263Skarels * 6*30626Skarels * @(#)cpu.h 1.2 (Berkeley) 03/13/87 730263Skarels */ 830263Skarels 930263Skarels /* 1030263Skarels * Assorted definitions unique to TAHOE CPU support. 1130263Skarels */ 1230263Skarels 1330263Skarels #define uncache(v) mtpr(PDCS, (caddr_t)(v)) 1430263Skarels #define movow(a,w) _movow((u_short *)(a), (u_short)(w)) 1530263Skarels #define movob(a,b) _movob((u_char *)(a), (u_char)(b)) 1630263Skarels 1730263Skarels #define resettodr() /* no todr to set */ 1830263Skarels 19*30626Skarels #define MAXCKEY 255 /* maximal allowed code key */ 20*30626Skarels #define MAXDKEY 255 /* maximal allowed data key */ 21*30626Skarels #define NCKEY (MAXCKEY+1) /* # code keys, including 0 (reserved) */ 22*30626Skarels #define NDKEY (MAXDKEY+1) /* # data keys, including 0 (reserved) */ 23*30626Skarels 2430263Skarels #ifndef LOCORE 2530263Skarels #ifdef KERNEL 2630263Skarels char ckey_cache[NCKEY]; /* 1 =>'s key i may be in code cache */ 2730263Skarels short ckey_cnt[NCKEY]; /* code key reference count */ 2830263Skarels char dkey_cache[NDKEY]; /* 1 =>'s key i may be in data cache */ 2930263Skarels short dkey_cnt[NDKEY]; /* data key reference count */ 3030263Skarels #endif 3130263Skarels 3230263Skarels /* 3330263Skarels * Statistics maintained for code and 3430263Skarels * data cache key allocations algorithms. 3530263Skarels */ 3630263Skarels struct keystats { 37*30626Skarels long ks_avail; /* number of keys currently unallocated */ 38*30626Skarels long ks_dirty; /* number of keys currently waiting for purge */ 3930263Skarels long ks_allocs; /* number of keys allocated */ 40*30626Skarels long ks_allocfree; /* key allocated from free slot */ 4130263Skarels long ks_norefs; /* key marked in use, but refcnt 0 */ 4230263Skarels long ks_taken; /* key taken from single process */ 4330263Skarels long ks_shared; /* key taken from multiple processes */ 44*30626Skarels long ks_inval; /* number of times keys exchanged */ 4530263Skarels }; 4630263Skarels #endif 4730263Skarels 4830263Skarels long *user_psl; /* user mode psl for ast's */ 4930263Skarels int intenable; /* interrupts enable startup flag */ 5030263Skarels int clk_enable; /* clock enable startup flag */ 5130263Skarels 5230263Skarels /* 5330263Skarels * Enable realtime clock. 5430263Skarels */ 5530263Skarels #define enablertclock() (clk_enable = 1) 56