+\r
+int ErrorHandler(int Fault)\r
+{\r
+ int i;\r
+\r
+ extern void ldacess_DumpLoadedLibraries(void); \r
+ ldacess_DumpLoadedLibraries();\r
+\r
+ fprintf(stderr, "ErrorHandler: (Fault = %i)\n", Fault);\r
+ fprintf(stderr, "Loaded Libraries:\n");\r
+ for( i = 0; i < 64; i ++ )\r
+ {\r
+ //if(gLoadedLibraries[i].Base == 0) continue;\r
+ // fprintf(stderr, "%02i: %p %s\n", i, gLoadedLibraries[i].Base, gLoadedLibraries[i].Name);\r
+ }\r
+ fprintf(stderr, "\n");\r
+ exit(-1);\r
+ return -1;\r
+}\r
+\r
+#if USE_CPUID\r
+/**\r
+ * \brief Call the CPUID opcode\r
+ */\r
+static void cpuid(uint32_t Num, uint32_t *EAX, uint32_t *EBX, uint32_t *EDX, uint32_t *ECX)\r
+{\r
+ uint32_t eax, ebx, edx, ecx;\r
+ \r
+ __asm__ __volatile__ (\r
+ "cpuid"\r
+ : "=a"(eax), "=c"(ecx), "=d"(edx)\r
+ : "a"(Num)\r
+ );\r
+ \r
+ if(EAX) *EAX = eax;\r
+ if(EBX) *EBX = ebx;\r
+ if(EDX) *EDX = edx;\r
+ if(ECX) *ECX = ecx;\r
+}\r
+#endif\r