|
|
1.1 ! root 1: /* ! 2: * Copyright (c) 1988 University of Utah. ! 3: * Copyright (c) 1982, 1990 The Regents of the University of California. ! 4: * All rights reserved. ! 5: * ! 6: * This code is derived from software contributed to Berkeley by ! 7: * the Systems Programming Group of the University of Utah Computer ! 8: * Science Department. ! 9: * ! 10: * Redistribution is only permitted until one year after the first shipment ! 11: * of 4.4BSD by the Regents. Otherwise, redistribution and use in source and ! 12: * binary forms are permitted provided that: (1) source distributions retain ! 13: * this entire copyright notice and comment, and (2) distributions including ! 14: * binaries display the following acknowledgement: This product includes ! 15: * software developed by the University of California, Berkeley and its ! 16: * contributors'' in the documentation or other materials provided with the ! 17: * distribution and in all advertising materials mentioning features or use ! 18: * of this software. Neither the name of the University nor the names of ! 19: * its contributors may be used to endorse or promote products derived from ! 20: * this software without specific prior written permission. ! 21: * THIS SOFTWARE IS PROVIDED AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED ! 22: * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF ! 23: * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ! 24: * ! 25: * from: Utah $Hdr: cpu.h 1.13 89/06/23$ ! 26: * ! 27: * @(#)cpu.h 7.2 (Berkeley) 5/25/90 ! 28: */ ! 29: ! 30: /* values for machineid */ ! 31: #define HP_320 0 /* 16Mhz 68020+HP MMU+16K external cache */ ! 32: #define HP_330 1 /* 16Mhz 68020+68851 MMU */ ! 33: #define HP_350 2 /* 25Mhz 68020+HP MMU+32K external cache */ ! 34: #define HP_360 3 /* 25Mhz 68030 */ ! 35: #define HP_370 4 /* 33Mhz 68030+64K external cache */ ! 36: #define HP_340 5 /* 16Mhz 68030 */ ! 37: #define HP_375 6 /* 50Mhz 68030+32K external cache */ ! 38: ! 39: /* values for mmutype (assigned for quick testing) */ ! 40: #define MMU_68030 -1 /* 68030 on-chip subset of 68851 */ ! 41: #define MMU_HP 0 /* HP proprietary */ ! 42: #define MMU_68851 1 /* Motorola 68851 */ ! 43: ! 44: /* values for ectype */ ! 45: #define EC_PHYS -1 /* external physical address cache */ ! 46: #define EC_NONE 0 /* no external cache */ ! 47: #define EC_VIRT 1 /* external virtual address cache */ ! 48: ! 49: /* values for cpuspeed (not really related to clock speed due to caches) */ ! 50: #define MHZ_8 1 ! 51: #define MHZ_16 2 ! 52: #define MHZ_25 3 ! 53: #define MHZ_33 4 ! 54: #define MHZ_50 6 ! 55: ! 56: #ifdef KERNEL ! 57: extern int machineid, mmutype, ectype; ! 58: extern int IObase; ! 59: ! 60: /* what is this supposed to do? i.e. how is it different than startrtclock? */ ! 61: #define enablertclock() ! 62: ! 63: #endif ! 64: ! 65: /* physical memory sections */ ! 66: #define ROMBASE (0x00000000) ! 67: #define IOBASE (0x00200000) ! 68: #define IOTOP (0x01000000) ! 69: #define MAXADDR (0xFFFFF000) ! 70: ! 71: /* IO space stuff */ ! 72: #define EXTIOBASE (0x00600000) ! 73: #define IOCARDSIZE (0x10000) ! 74: #define IOMAPSIZE (btoc(IOTOP-IOBASE)) ! 75: #define IOP(x) ((x) - IOBASE) ! 76: #define IOV(x) (((x) - IOBASE) + (int)&IObase) ! 77: #define UNIOV(x) ((x) - (int)&IObase + IOBASE) ! 78: ! 79: /* DIO II uncached address space */ ! 80: #define DIOIIBASE (0x01000000) ! 81: #define DIOIITOP (0x20000000) ! 82: #define DIOIICSIZE (0x00400000) ! 83: ! 84: /* offsets for longword read/write */ ! 85: #define MMUSSTP IOP(0x5F4000) ! 86: #define MMUUSTP IOP(0x5F4004) ! 87: #define MMUTBINVAL IOP(0x5F4008) ! 88: #define MMUSTAT IOP(0x5F400C) ! 89: #define MMUCMD MMUSTAT ! 90: ! 91: #define MMU_UMEN 0x0001 /* enable user mapping */ ! 92: #define MMU_SMEN 0x0002 /* enable supervisor mapping */ ! 93: #define MMU_CEN 0x0004 /* enable data cache */ ! 94: #define MMU_BERR 0x0008 /* bus error */ ! 95: #define MMU_IEN 0x0020 /* enable instruction cache */ ! 96: #define MMU_FPE 0x0040 /* enable 68881 FP coprocessor */ ! 97: #define MMU_WPF 0x2000 /* write protect fault */ ! 98: #define MMU_PF 0x4000 /* page fault */ ! 99: #define MMU_PTF 0x8000 /* page table fault */ ! 100: ! 101: #define MMU_FAULT (MMU_PTF|MMU_PF|MMU_WPF|MMU_BERR) ! 102: #define MMU_ENAB (MMU_UMEN|MMU_SMEN|MMU_IEN|MMU_FPE) ! 103: ! 104: #define PMMU_LVLMASK 0x0007 ! 105: #define PMMU_INV 0x0400 ! 106: #define PMMU_WP 0x0800 ! 107: #define PMMU_ALV 0x1000 ! 108: #define PMMU_SO 0x2000 ! 109: #define PMMU_LV 0x4000 ! 110: #define PMMU_BE 0x8000 ! 111: ! 112: #define PMMU_FAULT (PMMU_WP|PMMU_INV) ! 113: ! 114: /* function code for user data space */ ! 115: #define FC_USERD 1 ! 116: /* methinks the following is used to selectively clear TLB entries */ ! 117: #define FC_PURGE 3 ! 118: ! 119: /* fields in the 68020 cache control register */ ! 120: #define IC_ENABLE 0x0001 /* enable instruction cache */ ! 121: #define IC_FREEZE 0x0002 /* freeze instruction cache */ ! 122: #define IC_CE 0x0004 /* clear instruction cache entry */ ! 123: #define IC_CLR 0x0008 /* clear entire instruction cache */ ! 124: ! 125: /* additional fields in the 68030 cache control register */ ! 126: #define IC_BE 0x0010 /* instruction burst enable */ ! 127: #define DC_ENABLE 0x0100 /* data cache enable */ ! 128: #define DC_FREEZE 0x0200 /* data cache freeze */ ! 129: #define DC_CE 0x0400 /* clear data cache entry */ ! 130: #define DC_CLR 0x0800 /* clear entire data cache */ ! 131: #define DC_BE 0x1000 /* data burst enable */ ! 132: #define DC_WA 0x2000 /* write allocate */ ! 133: ! 134: #define CACHE_ON (DC_WA|DC_BE|DC_CLR|DC_ENABLE|IC_BE|IC_CLR|IC_ENABLE) ! 135: #define CACHE_OFF (DC_CLR|IC_CLR) ! 136: #define CACHE_CLR (CACHE_ON) ! 137: #define IC_CLEAR (DC_WA|DC_BE|DC_ENABLE|IC_BE|IC_CLR|IC_ENABLE) ! 138: #define DC_CLEAR (DC_WA|DC_BE|DC_CLR|DC_ENABLE|IC_BE|IC_ENABLE)
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.