2 * PROJECT: ReactOS Boot Loader
3 * LICENSE: BSD - See COPYING.ARM in the top level directory
4 * FILE: boot/armllb/envir.c
5 * PURPOSE: LLB Environment Variable Routines
6 * PROGRAMMERS: ReactOS Portable Systems Group
11 ULONG LlbEnvHwPageSize
;
12 ULONG LlbEnvHwMemStart
;
13 ULONG LlbEnvHwMemSize
;
14 ULONG LlbEnvRamDiskStart
;
15 ULONG LlbEnvRamDiskSize
;
16 CHAR LlbEnvCmdLine
[256];
17 CHAR LlbValueData
[32];
21 LlbEnvParseArguments(IN PATAG Arguments
)
27 while (Atag
->Hdr
.Size
)
30 switch (Atag
->Hdr
.Tag
)
35 LlbEnvHwPageSize
= Atag
->u
.Core
.PageSize
;
40 /* Save RAM start and size */
41 LlbEnvHwMemStart
= Atag
->u
.Mem
.Start
;
42 LlbEnvHwMemSize
= Atag
->u
.Mem
.Size
;
47 /* Save RAMDISK start and size */
48 LlbEnvRamDiskStart
= Atag
->u
.InitRd2
.Start
;
49 LlbEnvRamDiskSize
= Atag
->u
.InitRd2
.Size
;
54 /* Save command line */
55 strncpy(LlbEnvCmdLine
,
56 Atag
->u
.CmdLine
.CmdLine
,
57 Atag
->Hdr
.Size
* sizeof(ULONG
));
60 /* Nothing left to handle */
67 Atag
= (PATAG
)((PULONG
)Atag
+ Atag
->Hdr
.Size
);
71 DbgPrint("[BOOTROM] PageSize: %dKB RAM: %dMB CMDLINE: %s\n",
72 LlbEnvHwPageSize
/ 1024, LlbEnvHwMemSize
/ 1024 / 1024, LlbEnvCmdLine
);
77 LlbEnvGetMemoryInformation(IN PULONG Base
,
80 /* Return RAM information */
81 *Base
= LlbEnvHwMemStart
;
82 *Size
= LlbEnvHwMemSize
;
87 LlbEnvGetRamDiskInformation(IN PULONG Base
,
90 /* Do we have a ramdisk? */
91 if (LlbEnvRamDiskSize
== 0)
99 /* Return ramdisk information */
100 *Base
= LlbEnvRamDiskStart
;
101 *Size
= LlbEnvRamDiskSize
;
107 LlbEnvRead(IN PCHAR ValueName
)
112 /* Search for the value name */
113 ValuePointer
= strstr(LlbEnvCmdLine
, ValueName
);
116 /* Get the value data and its length */
117 ValuePointer
+= strlen(ValueName
) + 1;
118 if (strchr(ValuePointer
, ','))
120 /* Stop before next parameter */
121 Length
= strchr(ValuePointer
, ',') - ValuePointer
;
125 /* Stop before the string ends */
126 Length
= strlen(ValuePointer
);
130 strncpy(LlbValueData
, ValuePointer
, Length
);
133 /* Terminate the data */
134 LlbValueData
[Length
] = ANSI_NULL
;
136 /* Return the data */