*/\r
#include "stdio_int.h"\r
#include "lib.h"\r
+#include <stdio.h>\r
+#include <sys/sys.h>\r
\r
#define USE_CPUID 0\r
\r
+// === TYPES ===\r
+typedef struct {\r
+ intptr_t Base;\r
+ char *Name;\r
+} tLoadedLib;\r
+\r
// === PROTOTYPES ===\r
#if USE_CPUID\r
static void cpuid(uint32_t Num, uint32_t *EAX, uint32_t *EBX, uint32_t *EDX, uint32_t *ECX);\r
#endif\r
+ int ErrorHandler(int Fault);\r
+\r
+// === IMPORTS ===\r
+extern tLoadedLib gLoadedLibraries[64];\r
+extern int _SysSetFaultHandler(int (*Handler)(int));\r
\r
// === GLOBALS ===\r
extern char **_envp;\r
{\r
// Init for env.c\r
_envp = envp;\r
+\r
+ #if 0 \r
+ {\r
+ int i = 0;\r
+ char **tmp;\r
+ _SysDebug("envp = %p", envp);\r
+ for(tmp = envp; *tmp; tmp++,i++)\r
+ {\r
+ _SysDebug("envp[%i] = '%s'", i, *tmp);\r
+ }\r
+ }\r
+ #endif\r
\r
// Init FileIO Pointers\r
stdin = &_iob[0];\r
}\r
#endif\r
\r
+ // Set Error handler\r
+ _SysSetFaultHandler(ErrorHandler);\r
+ \r
return 1;\r
}\r
\r
+int ErrorHandler(int Fault)\r
+{\r
+ int i;\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