]> git.proxmox.com Git - mirror_edk2.git/blame - ArmPkg/Application/LinuxLoader/Arm/LinuxAtag.h
BeagleBoardPkg/BeagleBoardPkg.dsc: remove the LinuxLoader application
[mirror_edk2.git] / ArmPkg / Application / LinuxLoader / Arm / LinuxAtag.h
CommitLineData
23b01c83
RC
1/** @file\r
2*\r
3* Copyright (c) 2011-2015, ARM Limited. All rights reserved.\r
4*\r
5* This program and the accompanying materials\r
6* are licensed and made available under the terms and conditions of the BSD License\r
7* which accompanies this distribution. The full text of the license may be found at\r
8* http://opensource.org/licenses/bsd-license.php\r
9*\r
10* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
11* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
12*\r
13**/\r
14\r
15#ifndef __LINUX_ATAG_H__\r
16#define __LINUX_ATAG_H__\r
17\r
18//\r
19// ATAG Definitions\r
20//\r
21\r
22#define ATAG_MAX_SIZE 0x3000\r
23\r
24/* ATAG : list of possible tags */\r
25#define ATAG_NONE 0x00000000\r
26#define ATAG_CORE 0x54410001\r
27#define ATAG_MEM 0x54410002\r
28#define ATAG_VIDEOTEXT 0x54410003\r
29#define ATAG_RAMDISK 0x54410004\r
30#define ATAG_INITRD2 0x54420005\r
31#define ATAG_SERIAL 0x54410006\r
32#define ATAG_REVISION 0x54410007\r
33#define ATAG_VIDEOLFB 0x54410008\r
34#define ATAG_CMDLINE 0x54410009\r
35#define ATAG_ARM_MP_CORE 0x5441000A\r
36\r
37#define next_tag_address(t) ((LINUX_ATAG*)((UINT32)(t) + (((t)->header.size) << 2) ))\r
38#define tag_size(type) ((UINT32)((sizeof(LINUX_ATAG_HEADER) + sizeof(type)) >> 2))\r
39\r
40typedef struct {\r
41 UINT32 size; /* length of tag in words including this header */\r
42 UINT32 type; /* tag type */\r
43} LINUX_ATAG_HEADER;\r
44\r
45typedef struct {\r
46 UINT32 flags;\r
47 UINT32 pagesize;\r
48 UINT32 rootdev;\r
49} LINUX_ATAG_CORE;\r
50\r
51typedef struct {\r
52 UINT32 size;\r
53 UINTN start;\r
54} LINUX_ATAG_MEM;\r
55\r
56typedef struct {\r
57 UINT8 x;\r
58 UINT8 y;\r
59 UINT16 video_page;\r
60 UINT8 video_mode;\r
61 UINT8 video_cols;\r
62 UINT16 video_ega_bx;\r
63 UINT8 video_lines;\r
64 UINT8 video_isvga;\r
65 UINT16 video_points;\r
66} LINUX_ATAG_VIDEOTEXT;\r
67\r
68typedef struct {\r
69 UINT32 flags;\r
70 UINT32 size;\r
71 UINTN start;\r
72} LINUX_ATAG_RAMDISK;\r
73\r
74typedef struct {\r
75 UINT32 start;\r
76 UINT32 size;\r
77} LINUX_ATAG_INITRD2;\r
78\r
79typedef struct {\r
80 UINT32 low;\r
81 UINT32 high;\r
82} LINUX_ATAG_SERIALNR;\r
83\r
84typedef struct {\r
85 UINT32 rev;\r
86} LINUX_ATAG_REVISION;\r
87\r
88typedef struct {\r
89 UINT16 lfb_width;\r
90 UINT16 lfb_height;\r
91 UINT16 lfb_depth;\r
92 UINT16 lfb_linelength;\r
93 UINT32 lfb_base;\r
94 UINT32 lfb_size;\r
95 UINT8 red_size;\r
96 UINT8 red_pos;\r
97 UINT8 green_size;\r
98 UINT8 green_pos;\r
99 UINT8 blue_size;\r
100 UINT8 blue_pos;\r
101 UINT8 rsvd_size;\r
102 UINT8 rsvd_pos;\r
103} LINUX_ATAG_VIDEOLFB;\r
104\r
105typedef struct {\r
106 CHAR8 cmdline[1];\r
107} LINUX_ATAG_CMDLINE;\r
108\r
109typedef struct {\r
110 LINUX_ATAG_HEADER header;\r
111 union {\r
112 LINUX_ATAG_CORE core_tag;\r
113 LINUX_ATAG_MEM mem_tag;\r
114 LINUX_ATAG_VIDEOTEXT videotext_tag;\r
115 LINUX_ATAG_RAMDISK ramdisk_tag;\r
116 LINUX_ATAG_INITRD2 initrd2_tag;\r
117 LINUX_ATAG_SERIALNR serialnr_tag;\r
118 LINUX_ATAG_REVISION revision_tag;\r
119 LINUX_ATAG_VIDEOLFB videolfb_tag;\r
120 LINUX_ATAG_CMDLINE cmdline_tag;\r
121 } body;\r
122} LINUX_ATAG;\r
123\r
124#endif /* __LINUX_ATAG_H__ */\r