ReactOS 0.4.16-dev-109-gf4cb10f
macharm.c File Reference
#include <freeldr.h>
#include <internal/arm/intrin_i.h>
Include dependency graph for macharm.c:

Go to the source code of this file.

Functions

VOID FrLdrCheckCpuCompatibility (VOID)
 
VOID ArmInit (IN PARM_BOARD_CONFIGURATION_BLOCK BootContext)
 
VOID ArmPrepareForReactOS (VOID)
 
PCONFIGURATION_COMPONENT_DATA ArmHwDetect (_In_opt_ PCSTR Options)
 
BOOLEAN ArmInitializeBootDevices (VOID)
 
PFREELDR_MEMORY_DESCRIPTOR ArmMemGetMemoryMap (OUT ULONG *MemoryMapSize)
 
VOID ArmHwIdle (VOID)
 
VOID MachInit (IN PCCH CommandLine)
 

Variables

PARM_BOARD_CONFIGURATION_BLOCK ArmBoardBlock
 
ULONG gDiskReadBuffer
 
ULONG gFileSysBuffer
 
BOOLEAN ArmHwDetectRan
 
PCONFIGURATION_COMPONENT_DATA RootNode
 
BOOLEAN AcpiPresent = FALSE
 
ULONG FirstLevelDcacheSize
 
ULONG FirstLevelDcacheFillSize
 
ULONG FirstLevelIcacheSize
 
ULONG FirstLevelIcacheFillSize
 
ULONG SecondLevelDcacheSize
 
ULONG SecondLevelDcacheFillSize
 
ULONG SecondLevelIcacheSize
 
ULONG SecondLevelIcacheFillSize
 
ULONG reactos_disk_count
 
ULONG SizeBits []
 
ULONG AssocBits []
 
ULONG LenBits []
 
FREELDR_MEMORY_DESCRIPTOR ArmMemoryMap [32]
 

Function Documentation

◆ ArmHwDetect()

PCONFIGURATION_COMPONENT_DATA ArmHwDetect ( _In_opt_ PCSTR  Options)

Definition at line 97 of file macharm.c.

99{
100 ARM_CACHE_REGISTER CacheReg;
101
102 /* Create the root node */
103 if (ArmHwDetectRan++) return RootNode;
105
106 /*
107 * TODO:
108 * There's no such thing as "PnP" on embedded hardware.
109 * The boot loader will send us a device tree, similar to ACPI
110 * or OpenFirmware device trees, and we will convert it to ARC.
111 */
112
113 /* Get cache information */
114 CacheReg = KeArmCacheRegisterGet();
125
126 /* Initialize the RAMDISK Device */
128
129 /* Fill out the ARC disk block */
130 AddReactOSArcDiskInfo("ramdisk(0)", 0xBADAB00F, 0xDEADBABE, TRUE);
132
133 /* Return the root node */
134 return RootNode;
135}
VOID AddReactOSArcDiskInfo(IN PSTR ArcName, IN ULONG Signature, IN ULONG Checksum, IN BOOLEAN ValidPartitionTable)
Definition: archwsup.c:77
VOID FldrCreateSystemKey(_Out_ PCONFIGURATION_COMPONENT_DATA *SystemNode, _In_ PCSTR IdentifierString)
Definition: archwsup.c:135
FORCEINLINE ARM_CACHE_REGISTER KeArmCacheRegisterGet(VOID)
Definition: intrin_i.h:109
ARC_STATUS RamDiskInitialize(IN BOOLEAN InitRamDisk, IN PCSTR LoadOptions OPTIONAL, IN PCSTR DefaultPath OPTIONAL)
Definition: ramdisk.c:206
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
ULONG FirstLevelIcacheFillSize
Definition: macharm.c:28
ULONG LenBits[]
Definition: macharm.c:55
ULONG SecondLevelDcacheSize
Definition: macharm.c:29
ULONG FirstLevelDcacheFillSize
Definition: macharm.c:26
BOOLEAN ArmHwDetectRan
Definition: macharm.c:18
ULONG SizeBits[]
Definition: macharm.c:36
ULONG FirstLevelIcacheSize
Definition: macharm.c:27
ULONG SecondLevelIcacheSize
Definition: macharm.c:31
ULONG SecondLevelIcacheFillSize
Definition: macharm.c:32
ULONG reactos_disk_count
Definition: archwsup.c:68
ULONG FirstLevelDcacheSize
Definition: macharm.c:25
ULONG SecondLevelDcacheFillSize
Definition: macharm.c:30
PCONFIGURATION_COMPONENT_DATA RootNode
Definition: macharm.c:19
#define ASSERT(a)
Definition: mode.c:44

Referenced by ArmInitializeBootDevices(), and MachInit().

◆ ArmHwIdle()

VOID ArmHwIdle ( VOID  )

Definition at line 175 of file macharm.c.

176{
177 /* UNIMPLEMENTED */
178}

Referenced by MachInit().

◆ ArmInit()

VOID ArmInit ( IN PARM_BOARD_CONFIGURATION_BLOCK  BootContext)

Definition at line 71 of file macharm.c.

72{
73 /* Remember the pointer */
74 ArmBoardBlock = BootContext;
75
76 /* Let's make sure we understand the LLB */
79
80 /* This should probably go away once we support more boards */
85
86 /* Call FreeLDR's portable entrypoint with our command-line */
88}
VOID __cdecl BootMain(IN PCCH CmdLine)
Definition: freeldr.c:43
PARM_BOARD_CONFIGURATION_BLOCK ArmBoardBlock
Definition: macharm.c:16
#define MACH_TYPE_OMAP_ZOOM2
Definition: machtype.h:30
#define MACH_TYPE_FEROCEON
Definition: machtype.h:13
#define MACH_TYPE_OMAP3_BEAGLE
Definition: machtype.h:25
#define MACH_TYPE_VERSATILE_PB
Definition: machtype.h:19
#define ARM_BOARD_CONFIGURATION_MINOR_VERSION
Definition: osloader.h:43
#define ARM_BOARD_CONFIGURATION_MAJOR_VERSION
Definition: osloader.h:42

◆ ArmInitializeBootDevices()

BOOLEAN ArmInitializeBootDevices ( VOID  )

Definition at line 138 of file macharm.c.

139{
140 /* Emulate old behavior */
141 if (ArmHwDetect(NULL) == NULL)
142 return FALSE;
143
144 /* On ARM platforms, the loader is always in RAM */
145 strcpy(FrLdrBootPath, "ramdisk(0)");
146 return TRUE;
147}
char * strcpy(char *DstString, const char *SrcString)
Definition: utclib.c:388
#define FALSE
Definition: types.h:117
CCHAR FrLdrBootPath[MAX_PATH]
Definition: freeldr.c:39
PCONFIGURATION_COMPONENT_DATA ArmHwDetect(_In_opt_ PCSTR Options)
Definition: macharm.c:97

Referenced by MachInit().

◆ ArmMemGetMemoryMap()

PFREELDR_MEMORY_DESCRIPTOR ArmMemGetMemoryMap ( OUT ULONG MemoryMapSize)

Definition at line 152 of file macharm.c.

153{
154 ULONG i;
156
157 /* Return whatever the board returned to us (CS0 Base + Size and FLASH0) */
158 for (i = 0; i < ArmBoardBlock->MemoryMapEntryCount; i++)
159 {
164 else
166 }
167
168 *MemoryMapSize = ArmBoardBlock->MemoryMapEntryCount;
169
170 // FIXME
171 return NULL;
172}
#define PAGE_SIZE
Definition: env_spec_w32.h:49
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
FREELDR_MEMORY_DESCRIPTOR ArmMemoryMap[32]
Definition: macharm.c:149
@ BiosMemoryUsable
Definition: osloader.h:22
@ MemoryFirmwarePermanent
Definition: arc.h:214
@ MemoryFree
Definition: arc.h:210
LONGLONG BaseAddress
Definition: osloader.h:33
LONGLONG Length
Definition: osloader.h:34
PBIOS_MEMORY_MAP MemoryMap
Definition: osloader.h:53
TYPE_OF_MEMORY MemoryType
Definition: mm.h:43
PFN_NUMBER PageCount
Definition: mm.h:45
PFN_NUMBER BasePage
Definition: mm.h:44
uint32_t ULONG
Definition: typedefs.h:59

Referenced by MachInit().

◆ ArmPrepareForReactOS()

VOID ArmPrepareForReactOS ( VOID  )

Definition at line 91 of file macharm.c.

92{
93 return;
94}

Referenced by MachInit().

◆ FrLdrCheckCpuCompatibility()

VOID FrLdrCheckCpuCompatibility ( VOID  )

Definition at line 65 of file macharm.c.

66{
67 /* Nothing for now */
68}

Referenced by BootMain().

◆ MachInit()

VOID MachInit ( IN PCCH  CommandLine)

Definition at line 182 of file macharm.c.

183{
184 /* Copy Machine Routines from Firmware Table */
193
194 /* Setup board-specific ARM routines */
195 switch (ArmBoardBlock->BoardType)
196 {
197 /* Check for Feroceon-base boards */
199 TuiPrintf("Not implemented\n");
200 while (TRUE);
201 break;
202
203 /* Check for TI OMAP3 ZOOM-II MDK */
205
206 /* Setup the disk and file system buffers */
207 gDiskReadBuffer = 0x81094000;
208 gFileSysBuffer = 0x81094000;
209 break;
210
211 /* Check for ARM Versatile PB boards */
213
214 /* Setup the disk and file system buffers */
215 gDiskReadBuffer = 0x00090000;
216 gFileSysBuffer = 0x00090000;
217 break;
218
219 /* Check for TI OMAP3 Beagleboard */
221 TuiPrintf("Not implemented\n");
222 while (TRUE);
223 break;
224
225 default:
226 ASSERT(FALSE);
227 }
228
229 /* Setup generic ARM routines for all boards */
235}
MACHVTBL MachVtbl
Definition: arcemul.c:21
PFREELDR_MEMORY_DESCRIPTOR ArmMemGetMemoryMap(OUT ULONG *MemoryMapSize)
Definition: macharm.c:152
ULONG gFileSysBuffer
Definition: macharm.c:17
BOOLEAN ArmInitializeBootDevices(VOID)
Definition: macharm.c:138
VOID ArmHwIdle(VOID)
Definition: macharm.c:175
ULONG gDiskReadBuffer
Definition: macharm.c:17
VOID ArmPrepareForReactOS(VOID)
Definition: macharm.c:91
int(* ConsGetCh)(VOID)
Definition: machine.h:43
VOID(* PrepareForReactOS)(VOID)
Definition: machine.h:59
BOOLEAN(* InitializeBootDevices)(VOID)
Definition: machine.h:76
BOOLEAN(* ConsKbHit)(VOID)
Definition: machine.h:42
TIMEINFO *(* GetTime)(VOID)
Definition: machine.h:72
PFREELDR_MEMORY_DESCRIPTOR(* GetMemoryMap)(PULONG MaxMemoryMapSize)
Definition: machine.h:63
VOID(* VideoPutChar)(int Ch, UCHAR Attr, unsigned X, unsigned Y)
Definition: machine.h:52
VOID(* VideoGetDisplaySize)(PULONG Width, PULONG Height, PULONG Depth)
Definition: machine.h:47
VOID(* VideoClearScreen)(UCHAR Attr)
Definition: machine.h:45
VOID(* HwIdle)(VOID)
Definition: machine.h:78
VIDEODISPLAYMODE(* VideoSetDisplayMode)(char *DisplayMode, BOOLEAN Init)
Definition: machine.h:46
PCONFIGURATION_COMPONENT_DATA(* HwDetect)(_In_opt_ PCSTR Options)
Definition: machine.h:77
VOID(* ConsPutChar)(int Ch)
Definition: machine.h:41
INT TuiPrintf(_In_ PCSTR Format,...)
Definition: tui.c:39

Referenced by BootMain(), and EfiEntry().

Variable Documentation

◆ AcpiPresent

BOOLEAN AcpiPresent = FALSE

Definition at line 22 of file macharm.c.

◆ ArmBoardBlock

Definition at line 16 of file macharm.c.

Referenced by ArmInit(), ArmMemGetMemoryMap(), and MachInit().

◆ ArmHwDetectRan

BOOLEAN ArmHwDetectRan

Definition at line 18 of file macharm.c.

Referenced by ArmHwDetect().

◆ ArmMemoryMap

FREELDR_MEMORY_DESCRIPTOR ArmMemoryMap[32]

Definition at line 149 of file macharm.c.

Referenced by ArmMemGetMemoryMap().

◆ AssocBits

ULONG AssocBits[]
Initial value:
=
{
-1,
-1,
4
}

Definition at line 48 of file macharm.c.

◆ FirstLevelDcacheFillSize

ULONG FirstLevelDcacheFillSize

Definition at line 26 of file macharm.c.

Referenced by ArmHwDetect(), and WinLdrSetupForNt().

◆ FirstLevelDcacheSize

ULONG FirstLevelDcacheSize

Definition at line 25 of file macharm.c.

Referenced by ArmHwDetect(), and WinLdrSetupForNt().

◆ FirstLevelIcacheFillSize

ULONG FirstLevelIcacheFillSize

Definition at line 28 of file macharm.c.

Referenced by ArmHwDetect(), and WinLdrSetupForNt().

◆ FirstLevelIcacheSize

ULONG FirstLevelIcacheSize

Definition at line 27 of file macharm.c.

Referenced by ArmHwDetect(), and WinLdrSetupForNt().

◆ gDiskReadBuffer

ULONG gDiskReadBuffer

Definition at line 17 of file macharm.c.

Referenced by MachInit().

◆ gFileSysBuffer

ULONG gFileSysBuffer

Definition at line 17 of file macharm.c.

Referenced by MachInit().

◆ LenBits

ULONG LenBits[]
Initial value:
=
{
-1,
-1,
8
}

Definition at line 55 of file macharm.c.

Referenced by ArmHwDetect().

◆ reactos_disk_count

ULONG reactos_disk_count
extern

Definition at line 68 of file archwsup.c.

Referenced by ArmHwDetect().

◆ RootNode

◆ SecondLevelDcacheFillSize

ULONG SecondLevelDcacheFillSize

Definition at line 30 of file macharm.c.

Referenced by ArmHwDetect(), and WinLdrSetupForNt().

◆ SecondLevelDcacheSize

ULONG SecondLevelDcacheSize

Definition at line 29 of file macharm.c.

Referenced by ArmHwDetect(), and WinLdrSetupForNt().

◆ SecondLevelIcacheFillSize

ULONG SecondLevelIcacheFillSize

Definition at line 32 of file macharm.c.

Referenced by ArmHwDetect().

◆ SecondLevelIcacheSize

ULONG SecondLevelIcacheSize

Definition at line 31 of file macharm.c.

Referenced by ArmHwDetect(), and WinLdrSetupForNt().

◆ SizeBits

ULONG SizeBits[]
Initial value:
=
{
-1,
-1,
1 << 12,
1 << 13,
1 << 14,
1 << 15,
1 << 16,
1 << 17
}

Definition at line 36 of file macharm.c.

Referenced by ArmHwDetect().