m68k.h revision 1.8 1 1.8 fredette /* $NetBSD: m68k.h,v 1.8 2001/06/14 15:49:05 fredette Exp $ */
2 1.1 thorpej
3 1.1 thorpej /*
4 1.1 thorpej * Copyright (c) 1988 University of Utah.
5 1.1 thorpej * Copyright (c) 1982, 1990, 1993
6 1.1 thorpej * The Regents of the University of California. All rights reserved.
7 1.1 thorpej *
8 1.1 thorpej * This code is derived from software contributed to Berkeley by
9 1.1 thorpej * the Systems Programming Group of the University of Utah Computer
10 1.1 thorpej * Science Department.
11 1.1 thorpej *
12 1.1 thorpej * Redistribution and use in source and binary forms, with or without
13 1.1 thorpej * modification, are permitted provided that the following conditions
14 1.1 thorpej * are met:
15 1.1 thorpej * 1. Redistributions of source code must retain the above copyright
16 1.1 thorpej * notice, this list of conditions and the following disclaimer.
17 1.1 thorpej * 2. Redistributions in binary form must reproduce the above copyright
18 1.1 thorpej * notice, this list of conditions and the following disclaimer in the
19 1.1 thorpej * documentation and/or other materials provided with the distribution.
20 1.1 thorpej * 3. All advertising materials mentioning features or use of this software
21 1.1 thorpej * must display the following acknowledgement:
22 1.1 thorpej * This product includes software developed by the University of
23 1.1 thorpej * California, Berkeley and its contributors.
24 1.1 thorpej * 4. Neither the name of the University nor the names of its contributors
25 1.1 thorpej * may be used to endorse or promote products derived from this software
26 1.1 thorpej * without specific prior written permission.
27 1.1 thorpej *
28 1.1 thorpej * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
29 1.1 thorpej * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
30 1.1 thorpej * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
31 1.1 thorpej * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
32 1.1 thorpej * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
33 1.1 thorpej * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
34 1.1 thorpej * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
35 1.1 thorpej * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
36 1.1 thorpej * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
37 1.1 thorpej * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
38 1.1 thorpej * SUCH DAMAGE.
39 1.1 thorpej *
40 1.5 gwr * from: Utah $Hdr: cpu.h 1.16 91/03/25$
41 1.5 gwr * from: @(#)cpu.h 8.4 (Berkeley) 1/5/94
42 1.1 thorpej */
43 1.1 thorpej
44 1.5 gwr #ifndef _M68K_M68K_H_
45 1.5 gwr #define _M68K_M68K_H_
46 1.1 thorpej
47 1.1 thorpej /*
48 1.5 gwr * Declarations for things exported by sources in this directory,
49 1.5 gwr * or required by sources in here and not declared elsewhere.
50 1.1 thorpej *
51 1.5 gwr * These declarations generally do NOT belong in <machine/cpu.h>,
52 1.5 gwr * because that defines the interface between the common code and
53 1.5 gwr * the machine-dependent code, whereas this defines the interface
54 1.5 gwr * between the shared m68k code and the machine-dependent code.
55 1.1 thorpej *
56 1.5 gwr * The MMU stuff is exported separately so it can be used just
57 1.5 gwr * where it is really needed. Same for function codes, etc.
58 1.1 thorpej */
59 1.1 thorpej
60 1.1 thorpej #ifdef _KERNEL
61 1.1 thorpej /*
62 1.1 thorpej * All m68k ports must provide these globals.
63 1.1 thorpej */
64 1.1 thorpej extern int cputype; /* CPU on this host */
65 1.5 gwr extern int ectype; /* external cache on this host */
66 1.1 thorpej extern int fputype; /* FPU on this host */
67 1.1 thorpej extern int mmutype; /* MMU on this host */
68 1.6 gwr #endif /* _KERNEL */
69 1.1 thorpej
70 1.1 thorpej /* values for cputype */
71 1.7 fredette #define CPU_68010 -1 /* 68010 */
72 1.1 thorpej #define CPU_68020 0 /* 68020 */
73 1.1 thorpej #define CPU_68030 1 /* 68030 */
74 1.1 thorpej #define CPU_68040 2 /* 68040 */
75 1.1 thorpej #define CPU_68060 3 /* 68060 */
76 1.1 thorpej
77 1.1 thorpej /* values for ectype */
78 1.1 thorpej #define EC_PHYS -1 /* external physical address cache */
79 1.1 thorpej #define EC_NONE 0 /* no external cache */
80 1.1 thorpej #define EC_VIRT 1 /* external virtual address cache */
81 1.1 thorpej
82 1.1 thorpej /* values for fputype */
83 1.1 thorpej #define FPU_NONE 0 /* no FPU */
84 1.1 thorpej #define FPU_68881 1 /* 68881 FPU */
85 1.1 thorpej #define FPU_68882 2 /* 68882 FPU */
86 1.1 thorpej #define FPU_68040 3 /* 68040 on-chip FPU */
87 1.1 thorpej #define FPU_68060 4 /* 68060 on-chip FPU */
88 1.2 thorpej #define FPU_UNKNOWN 5 /* placeholder; unknown FPU */
89 1.1 thorpej
90 1.1 thorpej /* values for mmutype (assigned for quick testing) */
91 1.1 thorpej #define MMU_68060 -3 /* 68060 on-chip MMU */
92 1.1 thorpej #define MMU_68040 -2 /* 68040 on-chip MMU */
93 1.1 thorpej #define MMU_68030 -1 /* 68030 on-chip subset of 68851 */
94 1.1 thorpej #define MMU_HP 0 /* HP proprietary */
95 1.1 thorpej #define MMU_68851 1 /* Motorola 68851 */
96 1.1 thorpej #define MMU_SUN 2 /* Sun MMU */
97 1.1 thorpej
98 1.1 thorpej
99 1.5 gwr #ifdef _KERNEL
100 1.1 thorpej
101 1.5 gwr struct trapframe;
102 1.1 thorpej
103 1.5 gwr /* copypage.s */
104 1.5 gwr void copypage040 __P((void *fromaddr, void *toaddr));
105 1.3 thorpej void copypage __P((void *fromaddr, void *toaddr));
106 1.3 thorpej void zeropage __P((void *addr));
107 1.4 thorpej
108 1.6 gwr /* locore.s (XXX: move to support.s?) */
109 1.5 gwr int getdfc __P((void));
110 1.5 gwr int getsfc __P((void));
111 1.8 fredette
112 1.8 fredette /* w16copy.s */
113 1.8 fredette void w16zero __P((void *, u_int));
114 1.8 fredette void w16copy __P((const void *, void *, u_int));
115 1.5 gwr
116 1.3 thorpej #ifdef MAPPEDCOPY
117 1.5 gwr /* mappedcopy.c */
118 1.3 thorpej int mappedcopyin __P((void *fromp, void *top, size_t count));
119 1.3 thorpej int mappedcopyout __P((void *fromp, void *top, size_t count));
120 1.3 thorpej extern u_int mappedcopysize;
121 1.3 thorpej #endif /* MAPPEDCOPY */
122 1.4 thorpej
123 1.5 gwr /* regdump.c */
124 1.4 thorpej void regdump __P((struct trapframe *, int));
125 1.5 gwr
126 1.3 thorpej #endif /* _KERNEL */
127 1.5 gwr #endif /* _M68K_M68K_H_ */
128