1 /*
2 * bootinfo.h -- Definition of the Linux/MIPS boot information structure
3 *
4 * Copyright (C) 1994 by Waldorf Electronics
5 * Written by Ralf Baechle and Andreas Busse
6 *
7 * Based on Linux/68k linux/include/linux/bootstrap.h
8 * Copyright (C) 1992 by Greg Harp
9 *
10 * This file is subject to the terms and conditions of the GNU General Public
11 * License. See the file README.legal in the main directory of this archive
12 * for more details.
13 */
14
15 #ifndef __ASM_MIPS_BOOTINFO_H
16 #define __ASM_MIPS_BOOTINFO_H
17
18 /*
19 * Valid values for machtype field
20 */
21 #define MACH_UNKNOWN 0 /* whatever... */
22 #define MACH_DESKSTATION_TYNE 1 /* Deskstation Tyne */
23 #define MACH_ACER_PICA_61 2 /* Acer PICA-61 (PICA1) */
24 #define MACH_MIPS_MAGNUM_4000 3 /* Mips Magnum 4000 (aka RC4030) */
25
26 /*
27 * Valid values for cputype field
28 */
29 #define CPU_UNKNOWN 0
30 #define CPU_R2000 1
31 #define CPU_R3000 2
32 #define CPU_R3000A 3
33 #define CPU_R3041 4
34 #define CPU_R3051 5
35 #define CPU_R3052 6
36 #define CPU_R3081 7
37 #define CPU_R3081E 8
38 #define CPU_R4000PC 9
39 #define CPU_R4000SC 10
40 #define CPU_R4000MC 11
41 #define CPU_R4200 12
42 #define CPU_R4400PC 13
43 #define CPU_R4400SC 14
44 #define CPU_R4400MC 15
45 #define CPU_R4600 16
46 #define CPU_R6000 17
47 #define CPU_R6000A 18
48 #define CPU_R8000 19
49 #define CPU_R10000 20
50
51 #define CPU_NAMES { "UNKNOWN", "R2000", "R3000", "R3000A", "R3041", "R3051", \
52 "R3052", "R3081", "R3081E", "R4000PC", "R4000SC", "R4000MC", \
53 "R4200", "R4400PC", "R4400SC", "R4400MC", "R4600", "R6000", \
54 "R6000A", "R8000", "R10000" }
55
56 #define CL_SIZE (80)
57
58 #ifndef __ASSEMBLY__
59
60 /*
61 * Some machine parameters passed by MILO. Note that bootinfo
62 * *must* be in the data segment since the kernel clears the
63 * bss segment directly after startup.
64 */
65
66 struct drive_info_struct {
67 char dummy[32];
68 };
69
70 struct bootinfo {
71 unsigned long machtype; /* machine type */
72 unsigned long cputype; /* system CPU & FPU */
73
74 /*
75 * Installed RAM
76 */
77 unsigned long memlower;
78 unsigned long memupper;
79
80 /*
81 * Cache Sizes (0xffffffff = unknown)
82 */
83 unsigned long icache_size;
84 unsigned long icache_linesize;
85 unsigned long dcache_size;
86 unsigned long dcache_linesize;
87 unsigned long scache_size;
88 unsigned long scache_linesize;
89
90 /*
91 * TLB Info
92 */
93 unsigned long tlb_entries;
94
95 /*
96 * DMA buffer size (Deskstation only)
97 */
98 unsigned long dma_cache_size;
99 unsigned long dma_cache_base;
100
101 /*
102 * Ramdisk Info
103 */
104 unsigned long ramdisk_size; /* ramdisk size in 1024 byte blocks */
105 unsigned long ramdisk_base; /* address of the ram disk in mem */
106
107 /*
108 * Boot flags for the kernel
109 */
110 unsigned long mount_root_rdonly;
111 struct drive_info_struct drive_info;
112
113 /*
114 * Video ram info (not in tty.h)
115 */
116 unsigned long vram_base; /* video ram base address */
117
118 char command_line[CL_SIZE]; /* kernel command line parameters */
119
120 };
121
122 extern struct bootinfo boot_info;
123
124 /*
125 * Defaults, may be overwritten by milo. We initialize
126 * them to make sure that both boot_info and screen_info
127 * are in the .data segment since the .bss segment is
128 * cleared during startup.
129 */
130 #define BOOT_INFO { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"" }
131
132 #else /* !__ASSEMBLY__ */
133
134 /*
135 * Same structure, but as offsets for usage within assembler source.
136 * Don't mess with struct bootinfo without changing offsets too!
137 */
138
139 #define OFFSET_BOOTINFO_MACHTYPE 0
140 #define OFFSET_BOOTINFO_CPUTYPE 4
141 #define OFFSET_BOOTINFO_MEMLOWER 8
142 #define OFFSET_BOOTINFO_MEMUPPER 12
143 #define OFFSET_BOOTINFO_ICACHE_SIZE 16
144 #define OFFSET_BOOTINFO_ICACHE_LINESIZE 20
145 #define OFFSET_BOOTINFO_DCACHE_SIZE 24
146 #define OFFSET_BOOTINFO_DCACHE_LINESIZE 28
147 #define OFFSET_BOOTINFO_SCACHE_SIZE 32
148 #define OFFSET_BOOTINFO_SCACHE_LINESIZE 36
149 #define OFFSET_BOOTINFO_TLB_ENTRIES 40
150 #define OFFSET_BOOTINFO_DMA_CACHE_SIZE 44
151 #define OFFSET_BOOTINFO_DMA_CACHE_BASE 48
152 #define OFFSET_BOOTINFO_RAMDISK_SIZE 52
153 #define OFFSET_BOOTINFO_RAMDISK_BASE 56
154 #define OFFSET_BOOTINFO_VRAM_BASE 60
155 #define OFFSET_BOOTINFO_COMMAND_LINE 64
156
157 #endif /* __ASSEMBLY__ */
158
159 #endif /* __ASM_MIPS_BOOTINFO_H */