+
+void Arch_LoadBootModules(void)
+{
+ int i;
+ for( i = 0; i < giArch_NumBootModules; i ++ )
+ {
+ Log_Debug("Arch", "Module %i: %p - %p 0x%x",
+ i, gaArch_BootModules[i].ArgString,
+ gaArch_BootModules[i].Base, gaArch_BootModules[i].Size
+ );
+ Log_Log("Arch", "Loading '%s'", gaArch_BootModules[i].ArgString);
+
+ if( !Module_LoadMem( gaArch_BootModules[i].Base, gaArch_BootModules[i].Size, gaArch_BootModules[i].ArgString ) )
+ {
+ Log_Warning("Arch", "Unable to load module");
+ }
+
+ MM_UnmapHWPages(
+ (tVAddr)gaArch_BootModules[i].Base,
+ (gaArch_BootModules[i].Size + ((Uint)gaArch_BootModules[i].Base&0xFFF) + 0xFFF) >> 12
+ );
+ }
+ Log_Log("Arch", "Boot modules loaded");
+ free( gaArch_BootModules );
+}