Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
setup.h
Go to the documentation of this file.
1 /*
2  * linux/include/asm/setup.h
3  *
4  * Copyright (C) 1997-1999 Russell King
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License version 2 as
8  * published by the Free Software Foundation.
9  *
10  * Structure passed to kernel to tell it about the
11  * hardware it's running on. See Documentation/arm/Setup
12  * for more info.
13  */
14 #ifndef _UAPI__ASMARM_SETUP_H
15 #define _UAPI__ASMARM_SETUP_H
16 
17 #include <linux/types.h>
18 
19 #define COMMAND_LINE_SIZE 1024
20 
21 /* The list ends with an ATAG_NONE node. */
22 #define ATAG_NONE 0x00000000
23 
24 struct tag_header {
27 };
28 
29 /* The list must start with an ATAG_CORE node */
30 #define ATAG_CORE 0x54410001
31 
32 struct tag_core {
33  __u32 flags; /* bit 0 = read-only */
36 };
37 
38 /* it is allowed to have multiple ATAG_MEM nodes */
39 #define ATAG_MEM 0x54410002
40 
41 struct tag_mem32 {
43  __u32 start; /* physical start address */
44 };
45 
46 /* VGA text type displays */
47 #define ATAG_VIDEOTEXT 0x54410003
48 
49 struct tag_videotext {
59 };
60 
61 /* describes how the ramdisk will be used in kernel */
62 #define ATAG_RAMDISK 0x54410004
63 
64 struct tag_ramdisk {
65  __u32 flags; /* bit 0 = load, bit 1 = prompt */
66  __u32 size; /* decompressed ramdisk size in _kilo_ bytes */
67  __u32 start; /* starting block of floppy-based RAM disk image */
68 };
69 
70 /* describes where the compressed ramdisk image lives (virtual address) */
71 /*
72  * this one accidentally used virtual addresses - as such,
73  * it's deprecated.
74  */
75 #define ATAG_INITRD 0x54410005
76 
77 /* describes where the compressed ramdisk image lives (physical address) */
78 #define ATAG_INITRD2 0x54420005
79 
80 struct tag_initrd {
81  __u32 start; /* physical start address */
82  __u32 size; /* size of compressed ramdisk image in bytes */
83 };
84 
85 /* board serial number. "64 bits should be enough for everybody" */
86 #define ATAG_SERIAL 0x54410006
87 
88 struct tag_serialnr {
91 };
92 
93 /* board revision */
94 #define ATAG_REVISION 0x54410007
95 
96 struct tag_revision {
98 };
99 
100 /* initial values for vesafb-type framebuffers. see struct screen_info
101  * in include/linux/tty.h
102  */
103 #define ATAG_VIDEOLFB 0x54410008
104 
105 struct tag_videolfb {
120 };
121 
122 /* command line: \0 terminated string */
123 #define ATAG_CMDLINE 0x54410009
124 
125 struct tag_cmdline {
126  char cmdline[1]; /* this is the minimum size */
127 };
128 
129 /* acorn RiscPC specific information */
130 #define ATAG_ACORN 0x41000101
131 
132 struct tag_acorn {
137 };
138 
139 /* footbridge memory clock, see arch/arm/mach-footbridge/arch.c */
140 #define ATAG_MEMCLK 0x41000402
141 
142 struct tag_memclk {
144 };
145 
146 struct tag {
147  struct tag_header hdr;
148  union {
149  struct tag_core core;
150  struct tag_mem32 mem;
158 
159  /*
160  * Acorn specific
161  */
162  struct tag_acorn acorn;
163 
164  /*
165  * DC21285 specific
166  */
168  } u;
169 };
170 
171 struct tagtable {
173  int (*parse)(const struct tag *);
174 };
175 
176 #define tag_member_present(tag,member) \
177  ((unsigned long)(&((struct tag *)0L)->member + 1) \
178  <= (tag)->hdr.size * 4)
179 
180 #define tag_next(t) ((struct tag *)((__u32 *)(t) + (t)->hdr.size))
181 #define tag_size(type) ((sizeof(struct tag_header) + sizeof(struct type)) >> 2)
182 
183 #define for_each_tag(t,base) \
184  for (t = base; t->hdr.size; t = tag_next(t))
185 
186 
187 #endif /* _UAPI__ASMARM_SETUP_H */