summaryrefslogtreecommitdiffstats
path: root/include/asm-mips/bootinfo.h
blob: 594b45b5d9b18b6c85dae44393e7ba9813ab14aa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
/*
 * bootinfo.h -- Definition of the Linux/MIPS boot information structure
 *
 * Copyright (C) 1994 by Waldorf Electronics
 * Written by Ralf Baechle and Andreas Busse
 *
 * Based on Linux/68k linux/include/linux/bootstrap.h
 * Copyright (C) 1992 by Greg Harp
 *
 * This file is subject to the terms and conditions of the GNU General Public
 * License.  See the file README.legal in the main directory of this archive
 * for more details.
 */
#ifndef __ASM_MIPS_BOOTINFO_H
#define __ASM_MIPS_BOOTINFO_H

/*
 * Valid machtype values
 */
#define MACH_UNKNOWN		0		/* whatever...               */
#define MACH_DESKSTATION_RPC44  1               /* Deskstation rPC44         */
#define MACH_DESKSTATION_TYNE	2		/* Deskstation Tyne          */
#define MACH_ACER_PICA_61	3		/* Acer PICA-61 (PICA1)      */
#define MACH_MIPS_MAGNUM_4000	4		/* Mips Magnum 4000 "RC4030" */
#define MACH_OLIVETTI_M700      5               /* Olivetti M700 */

/*
 * Valid cputype values
 */
#define CPU_UNKNOWN		0
#define CPU_R2000		1
#define CPU_R3000		2
#define CPU_R3000A		3
#define CPU_R3041		4
#define CPU_R3051		5
#define CPU_R3052		6
#define CPU_R3081		7
#define CPU_R3081E		8
#define CPU_R4000PC		9
#define CPU_R4000SC		10
#define CPU_R4000MC		11
#define CPU_R4200		12
#define CPU_R4400PC		13
#define CPU_R4400SC		14
#define CPU_R4400MC		15
#define CPU_R4600		16
#define CPU_R6000		17
#define CPU_R6000A		18
#define CPU_R8000		19
#define CPU_R10000		20
#define CPU_LAST                20

#define CPU_NAMES { "UNKNOWN", "R2000", "R3000", "R3000A", "R3041", "R3051", \
        "R3052", "R3081", "R3081E", "R4000PC", "R4000SC", "R4000MC",         \
        "R4200", "R4400PC", "R4400SC", "R4400MC", "R4600", "R6000",          \
        "R6000A", "R8000", "R10000" }

#define CL_SIZE      (80)

#ifndef __LANGUAGE_ASSEMBLY__

/*
 * Some machine parameters passed by MILO. Note that bootinfo
 * *must* be in the data segment since the kernel clears the
 * bss segment directly after startup.
 */

struct drive_info_struct {
	char dummy[32];
	};

struct bootinfo {
	/*
	 * machine type
	 */
	unsigned long machtype;

	/*
	 * system CPU & FPU
	 */
	unsigned long cputype;

	/*
	 * Installed RAM
	 */
	unsigned long memlower;
	unsigned long memupper;

	/*
	 * Cache Sizes (0xffffffff = unknown)
	 */
	unsigned long icache_size;
	unsigned long icache_linesize;
	unsigned long dcache_size;
	unsigned long dcache_linesize;
	unsigned long scache_size;
	unsigned long scache_linesize;

	/*
	 * TLB Info
	 */
	unsigned long tlb_entries;

	/*
	 * DMA buffer size (Deskstation only)
	 */
	unsigned long dma_cache_size;
	unsigned long dma_cache_base;

	/*
	 * Ramdisk Info
	 */
	unsigned long ramdisk_size;		/* ramdisk size in 1024 byte blocks */
	unsigned long ramdisk_base;		/* address of the ram disk in mem */

	/*
	 * Boot flags for the kernel
	 */
	unsigned long mount_root_rdonly;
	struct drive_info_struct drive_info;

	/*
	 * Video ram info (not in tty.h)
	 */
	unsigned long vram_base;		/* video ram base address */
      
	char command_line[CL_SIZE];		/* kernel command line parameters */
  
};

#if 0
/*
 * New style bootinfo
 *
 * Add new tags only at the end of the enum; *never* remove any tags
 * or you'll break compatibility!
 */
enum bi_tag {	
	/*
	 * not a real tag
	 */
	dummy,

	/*
	 * machine type
	 */
	machtype,

	/*
	 * system CPU & FPU
	 */
	cputype,

	/*
	 * Installed RAM
	 */
	memlower,
	memupper,

	/*
	 * Cache Sizes (0xffffffff = unknown)
	 */
	icache_size,
	icache_linesize,
	dcache_size,
	dcache_linesize,
	scache_size,
	scache_linesize,

	/*
	 * TLB Info
	 */
	tlb_entries,

	/*
	 * DMA buffer size (Deskstation only)
	 */
	dma_cache_size,
	dma_cache_base,

	/*
	 * Ramdisk Info
	 */
	ramdisk_size,		/* ramdisk size in 1024 byte blocks */
	ramdisk_base,		/* address of the ram disk in mem */

	/*
	 * Boot flags for the kernel
	 */
	mount_root_rdonly,
	drive_info,

	/*
	 * Video ram info (not in tty.h)
	 */
	vram_base,		/* video ram base address */
      
	command_line		/* kernel command line parameters */
  
};

typedef struct {
	bi_tag		tag;
	unsigned long	size;
} tag;
#endif

extern struct bootinfo boot_info;

/*
 * Defaults, may be overwritten by milo. We initialize
 * them to make sure that both boot_info and screen_info
 * are in the .data segment since the .bss segment is
 * cleared during startup.
 */
#define BOOT_INFO { 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, {{0,}}, 0, "" }
#define SCREEN_INFO {0, 0, {0, }, 52, 3, 80, 4626, 3, 9, 50}

#else /* !__LANGUAGE_ASSEMBLY__ */

/*
 * Same structure, but as offsets for usage within assembler source.
 * Don't mess with struct bootinfo without changing offsets too!
 */

#define OFFSET_BOOTINFO_MACHTYPE           0
#define OFFSET_BOOTINFO_CPUTYPE            4
#define OFFSET_BOOTINFO_MEMLOWER           8
#define OFFSET_BOOTINFO_MEMUPPER          12
#define OFFSET_BOOTINFO_ICACHE_SIZE       16
#define OFFSET_BOOTINFO_ICACHE_LINESIZE   20
#define OFFSET_BOOTINFO_DCACHE_SIZE       24
#define OFFSET_BOOTINFO_DCACHE_LINESIZE   28
#define OFFSET_BOOTINFO_SCACHE_SIZE       32
#define OFFSET_BOOTINFO_SCACHE_LINESIZE   36
#define OFFSET_BOOTINFO_TLB_ENTRIES       40
#define OFFSET_BOOTINFO_DMA_CACHE_SIZE    44
#define OFFSET_BOOTINFO_DMA_CACHE_BASE    48
#define OFFSET_BOOTINFO_RAMDISK_SIZE      52
#define OFFSET_BOOTINFO_RAMDISK_BASE      56
#define OFFSET_BOOTINFO_MOUNT_RD_ONLY     60
#define OFFSET_BOOTINFO_DRIVE_INFO        64
#define OFFSET_BOOTINFO_VRAM_BASE         96
#define OFFSET_BOOTINFO_COMMAND_LINE      100

#endif /* __LANGUAGE_ASSEMBLY__ */

#endif /* __ASM_MIPS_BOOTINFO_H */