11 #include "include/options.h"
14 extern void Interrupts_Setup(void);
15 extern void Arch_LoadBootModules(void);
16 extern void Heap_Install(void);
17 extern void Threads_Init(void);
18 extern void System_Init(const char *Commandline);
19 extern void Time_Setup(void);
20 extern void Debug_int_SerialIRQHandler(int IRQ, void *unused);
21 extern int EHCI_InitController(tPAddr BaseAddress, Uint8 InterruptNum);
25 Uint32 ARMv7_int_HandleSyscalls(Uint32 Num, Uint32 *Args);
30 LogF("Acess2 ARMv7 "PLATFORM" v"EXPAND_STR(KERNEL_VERSION)"\n");
31 LogF(" Git Hash %s\n", gsGitHash);
32 LogF(" Build %i\n", BUILD_NUM);
36 LogF("Heap Setup...\n");
39 LogF("Threads Init...\n");
42 LogF("VFS Init...\n");
46 // - most ARMv7 configs use a GIC
47 Module_EnsureLoaded("armv7_GIC");
48 IRQ_AddHandler(UART0_IRQ, Debug_int_SerialIRQHandler, NULL);
53 LogF("Moving to arch-independent init\n");
54 // ARM_PerPlatformInit(); // Calls System_Init
55 #if PLATFORM_is_tegra2
56 EHCI_InitController(0xc5000000+0x100, 20);
57 EHCI_InitController(0xc5004000+0x100, 21);
58 EHCI_InitController(0xc5005000+0x100, 97);
59 System_Init("Acess2.armv7.bin /Acess=initrd: -VTerm:Video=Tegra2Vid");
61 System_Init("Acess2.armv7.bin /Acess=initrd: -VTerm:Video=PL110");
63 // System_Init("Acess2.armv7.bin /Acess=initrd:");
65 LogF("End of kmain(), for(;;) Threads_Sleep();\n");
70 void Arch_LoadBootModules(void)
74 Uint32 ARMv7_int_HandleSyscalls(Uint32 Num, Uint32 *Args)
76 Uint32 ret = -1, err = 0;
78 ENTER("iNum xArgs[0] xArgs[1] xArgs[2] xArgs[3]",
79 Num, Args[0], Args[1], Args[2], Args[3]
84 // Log_Debug("ARMv7", "__clear_cache(%p, %p)", Args[0], Args[1]);
87 Args[1] += 0xFFF; Args[1] &= ~0xFFF;
89 for( addr = Args[0]; addr < Args[1]; addr += 0x1000 )
91 LOG("addr = %p", addr);
92 __asm__ __volatile__ (
93 "mcrlt p15, 0, %0, c7, c5, 1;\n\t"
94 "mcrlt p15, 0, %0, c7, c6, 1;\n\t"
102 Args[0] = ret; // RetLow
103 Args[1] = 0; // RetHi
104 Args[2] = err; // Errno