1 1.88 thorpej /* $NetBSD: cpu.h,v 1.88 2024/01/20 00:15:30 thorpej Exp $ */ 2 1.15 cgd 3 1.1 mw /* 4 1.78 rmind * Copyright (c) 1988 University of Utah. 5 1.1 mw * Copyright (c) 1982, 1990 The Regents of the University of California. 6 1.1 mw * All rights reserved. 7 1.56 agc * 8 1.56 agc * This code is derived from software contributed to Berkeley by 9 1.56 agc * the Systems Programming Group of the University of Utah Computer 10 1.56 agc * Science Department. 11 1.56 agc * 12 1.56 agc * Redistribution and use in source and binary forms, with or without 13 1.56 agc * modification, are permitted provided that the following conditions 14 1.56 agc * are met: 15 1.56 agc * 1. Redistributions of source code must retain the above copyright 16 1.56 agc * notice, this list of conditions and the following disclaimer. 17 1.56 agc * 2. Redistributions in binary form must reproduce the above copyright 18 1.56 agc * notice, this list of conditions and the following disclaimer in the 19 1.56 agc * documentation and/or other materials provided with the distribution. 20 1.56 agc * 3. Neither the name of the University nor the names of its contributors 21 1.56 agc * may be used to endorse or promote products derived from this software 22 1.56 agc * without specific prior written permission. 23 1.56 agc * 24 1.56 agc * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 25 1.56 agc * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 26 1.56 agc * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 27 1.56 agc * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 28 1.56 agc * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 29 1.56 agc * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 30 1.56 agc * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 31 1.56 agc * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 32 1.56 agc * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 33 1.56 agc * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 34 1.56 agc * SUCH DAMAGE. 35 1.56 agc * 36 1.56 agc * from: Utah $Hdr: cpu.h 1.16 91/03/25$ 37 1.56 agc * 38 1.56 agc * @(#)cpu.h 7.7 (Berkeley) 6/27/91 39 1.56 agc */ 40 1.78 rmind 41 1.9 chopps #ifndef _MACHINE_CPU_H_ 42 1.9 chopps #define _MACHINE_CPU_H_ 43 1.1 mw 44 1.52 mrg #if defined(_KERNEL_OPT) 45 1.49 thorpej #include "opt_lockdebug.h" 46 1.49 thorpej #endif 47 1.49 thorpej 48 1.1 mw /* 49 1.36 thorpej * Get common m68k CPU definitions. 50 1.36 thorpej */ 51 1.36 thorpej #include <m68k/cpu.h> 52 1.77 phx 53 1.77 phx #if defined(_KERNEL) 54 1.1 mw /* 55 1.1 mw * The rest of this should probably be moved to ../amiga/amigacpu.h, 56 1.1 mw * although some of it could probably be put into generic 68k headers. 57 1.1 mw */ 58 1.1 mw 59 1.22 chopps /* values for machineid (happen to be AFF_* settings of AttnFlags) */ 60 1.1 mw #define AMIGA_68020 (1L<<1) 61 1.1 mw #define AMIGA_68030 (1L<<2) 62 1.1 mw #define AMIGA_68040 (1L<<3) 63 1.1 mw #define AMIGA_68881 (1L<<4) 64 1.1 mw #define AMIGA_68882 (1L<<5) 65 1.1 mw #define AMIGA_FPU40 (1L<<6) 66 1.26 is #define AMIGA_68060 (1L<<7) 67 1.1 mw 68 1.54 aymeric extern int machineid; 69 1.59 yamt 70 1.29 veego /* 71 1.29 veego * Prototypes from amiga_init.c 72 1.29 veego */ 73 1.71 dsl void *alloc_z2mem(long); 74 1.29 veego 75 1.29 veego /* 76 1.29 veego * Prototypes from autoconf.c 77 1.29 veego */ 78 1.77 phx int is_a600(void); 79 1.71 dsl int is_a1200(void); 80 1.71 dsl int is_a3000(void); 81 1.71 dsl int is_a4000(void); 82 1.35 is #ifdef DRACO 83 1.41 is #define is_draco() ((machineid >> 24) == 0x7d ? (machineid >> 16) & 0xff : 0) 84 1.35 is #endif 85 1.29 veego 86 1.35 is #ifdef DRACO 87 1.35 is /* 88 1.35 is * Prototypes from kbd.c 89 1.35 is */ 90 1.71 dsl void drkbdintr(void); 91 1.35 is 92 1.35 is /* 93 1.35 is * Prototypes from drsc.c 94 1.35 is */ 95 1.71 dsl void drsc_handler(void); 96 1.35 is #endif 97 1.29 veego 98 1.29 veego /* 99 1.29 veego * Prototypes from locore.s 100 1.29 veego */ 101 1.71 dsl void clearseg(vm_offset_t); 102 1.71 dsl void doboot(void) __attribute__((__noreturn__)); 103 1.71 dsl void physcopyseg(vm_offset_t, vm_offset_t); 104 1.71 dsl u_int probeva(u_int, u_int); 105 1.29 veego 106 1.29 veego /* 107 1.29 veego * Prototypes from machdep.c 108 1.29 veego */ 109 1.71 dsl int badaddr(void *); 110 1.71 dsl int badbaddr(void *); 111 1.71 dsl void bootsync(void); 112 1.29 veego 113 1.29 veego /* 114 1.29 veego * Prototypes from pmap.c: 115 1.29 veego */ 116 1.71 dsl void pmap_bootstrap(vm_offset_t, vm_offset_t); 117 1.29 veego 118 1.29 veego #endif /* _KERNEL */ 119 1.8 chopps 120 1.75 phx /* 121 1.75 phx * Reorder protection when accessing device registers. 122 1.75 phx */ 123 1.75 phx #define amiga_membarrier() 124 1.75 phx 125 1.75 phx /* 126 1.75 phx * Finish all bus operations and flush pipelines. 127 1.75 phx */ 128 1.75 phx #define amiga_cpu_sync() __asm volatile ("nop") 129 1.75 phx 130 1.9 chopps #endif /* !_MACHINE_CPU_H_ */ 131