1/****************************************************************************
2 ****************************************************************************
3 ***
4 ***   This header was automatically generated from a Linux kernel header
5 ***   of the same name, to make information necessary for userspace to
6 ***   call into the kernel available to libc.  It contains only constants,
7 ***   structures, and macros generated from the original header, and thus,
8 ***   contains no copyrightable information.
9 ***
10 ***   To edit the content of this header, modify the corresponding
11 ***   source file (e.g. under external/kernel-headers/original/) then
12 ***   run bionic/libc/kernel/tools/update_all.py
13 ***
14 ***   Any manual change here will be lost the next time this script will
15 ***   be run. You've been warned!
16 ***
17 ****************************************************************************
18 ****************************************************************************/
19#ifndef _UAPI__ASMARM_SETUP_H
20#define _UAPI__ASMARM_SETUP_H
21#include <linux/types.h>
22#define COMMAND_LINE_SIZE 2048
23#define ATAG_NONE 0x00000000
24struct tag_header {
25  __u32 size;
26  __u32 tag;
27};
28#define ATAG_CORE 0x54410001
29struct tag_core {
30  __u32 flags;
31  __u32 pagesize;
32  __u32 rootdev;
33};
34#define ATAG_MEM 0x54410002
35struct tag_mem32 {
36  __u32 size;
37  __u32 start;
38};
39#define ATAG_VIDEOTEXT 0x54410003
40struct tag_videotext {
41  __u8 x;
42  __u8 y;
43  __u16 video_page;
44  __u8 video_mode;
45  __u8 video_cols;
46  __u16 video_ega_bx;
47  __u8 video_lines;
48  __u8 video_isvga;
49  __u16 video_points;
50};
51#define ATAG_RAMDISK 0x54410004
52struct tag_ramdisk {
53  __u32 flags;
54  __u32 size;
55  __u32 start;
56};
57#define ATAG_INITRD 0x54410005
58#define ATAG_INITRD2 0x54420005
59struct tag_initrd {
60  __u32 start;
61  __u32 size;
62};
63#define ATAG_SERIAL 0x54410006
64struct tag_serialnr {
65  __u32 low;
66  __u32 high;
67};
68#define ATAG_REVISION 0x54410007
69struct tag_revision {
70  __u32 rev;
71};
72#define ATAG_VIDEOLFB 0x54410008
73struct tag_videolfb {
74  __u16 lfb_width;
75  __u16 lfb_height;
76  __u16 lfb_depth;
77  __u16 lfb_linelength;
78  __u32 lfb_base;
79  __u32 lfb_size;
80  __u8 red_size;
81  __u8 red_pos;
82  __u8 green_size;
83  __u8 green_pos;
84  __u8 blue_size;
85  __u8 blue_pos;
86  __u8 rsvd_size;
87  __u8 rsvd_pos;
88};
89#define ATAG_CMDLINE 0x54410009
90struct tag_cmdline {
91  char cmdline[1];
92};
93#define ATAG_ACORN 0x41000101
94struct tag_acorn {
95  __u32 memc_control_reg;
96  __u32 vram_pages;
97  __u8 sounddefault;
98  __u8 adfsdrives;
99};
100#define ATAG_MEMCLK 0x41000402
101struct tag_memclk {
102  __u32 fmemclk;
103};
104struct tag {
105  struct tag_header hdr;
106  union {
107    struct tag_core core;
108    struct tag_mem32 mem;
109    struct tag_videotext videotext;
110    struct tag_ramdisk ramdisk;
111    struct tag_initrd initrd;
112    struct tag_serialnr serialnr;
113    struct tag_revision revision;
114    struct tag_videolfb videolfb;
115    struct tag_cmdline cmdline;
116    struct tag_acorn acorn;
117    struct tag_memclk memclk;
118  } u;
119};
120struct tagtable {
121  __u32 tag;
122  int(* parse) (const struct tag *);
123};
124#define tag_member_present(tag,member) ((unsigned long) (& ((struct tag *) 0L)->member + 1) <= (tag)->hdr.size * 4)
125#define tag_next(t) ((struct tag *) ((__u32 *) (t) + (t)->hdr.size))
126#define tag_size(type) ((sizeof(struct tag_header) + sizeof(struct type)) >> 2)
127#define for_each_tag(t,base) for(t = base; t->hdr.size; t = tag_next(t))
128#endif
129